texlive[46882] Master/tlpkg: (tl)perl 5.26.1 from siep

commits+karl at tug.org commits+karl at tug.org
Thu Mar 8 01:16:51 CET 2018


Revision: 46882
          http://tug.org/svn/texlive?view=revision&revision=46882
Author:   karl
Date:     2018-03-08 01:16:42 +0100 (Thu, 08 Mar 2018)
Log Message:
-----------
(tl)perl 5.26.1 from siep

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tl-update-bindir
    trunk/Master/tlpkg/doc/releng.txt
    trunk/Master/tlpkg/tlperl/README.TEXLIVE
    trunk/Master/tlpkg/tlperl/bin/libgcc_s_dw2-1.dll
    trunk/Master/tlpkg/tlperl/bin/libstdc++-6.dll
    trunk/Master/tlpkg/tlperl/bin/libwinpthread-1.dll
    trunk/Master/tlpkg/tlperl/bin/perl.exe
    trunk/Master/tlpkg/tlperl/bin/perlglob.exe
    trunk/Master/tlpkg/tlperl/bin/wperl.exe
    trunk/Master/tlpkg/tlperl/lib/.packlist
    trunk/Master/tlpkg/tlperl/lib/App/Cpan.pm
    trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
    trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
    trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm
    trunk/Master/tlpkg/tlperl/lib/App/Prove.pm
    trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
    trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
    trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm
    trunk/Master/tlpkg/tlperl/lib/B/Concise.pm
    trunk/Master/tlpkg/tlperl/lib/B/Debug.pm
    trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm
    trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm
    trunk/Master/tlpkg/tlperl/lib/B/Terse.pm
    trunk/Master/tlpkg/tlperl/lib/B/Xref.pm
    trunk/Master/tlpkg/tlperl/lib/B.pm
    trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h
    trunk/Master/tlpkg/tlperl/lib/CORE/av.h
    trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
    trunk/Master/tlpkg/tlperl/lib/CORE/config.h
    trunk/Master/tlpkg/tlperl/lib/CORE/cop.h
    trunk/Master/tlpkg/tlperl/lib/CORE/dosish.h
    trunk/Master/tlpkg/tlperl/lib/CORE/embed.h
    trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h
    trunk/Master/tlpkg/tlperl/lib/CORE/feature.h
    trunk/Master/tlpkg/tlperl/lib/CORE/gv.h
    trunk/Master/tlpkg/tlperl/lib/CORE/handy.h
    trunk/Master/tlpkg/tlperl/lib/CORE/hv.h
    trunk/Master/tlpkg/tlperl/lib/CORE/hv_func.h
    trunk/Master/tlpkg/tlperl/lib/CORE/inline.h
    trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
    trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h
    trunk/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h
    trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
    trunk/Master/tlpkg/tlperl/lib/CORE/op.h
    trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h
    trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h
    trunk/Master/tlpkg/tlperl/lib/CORE/pad.h
    trunk/Master/tlpkg/tlperl/lib/CORE/parser.h
    trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
    trunk/Master/tlpkg/tlperl/lib/CORE/perl.h
    trunk/Master/tlpkg/tlperl/lib/CORE/perlapi.h
    trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h
    trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h
    trunk/Master/tlpkg/tlperl/lib/CORE/perly.h
    trunk/Master/tlpkg/tlperl/lib/CORE/pp.h
    trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
    trunk/Master/tlpkg/tlperl/lib/CORE/proto.h
    trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
    trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h
    trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h
    trunk/Master/tlpkg/tlperl/lib/CORE/regnodes.h
    trunk/Master/tlpkg/tlperl/lib/CORE/scope.h
    trunk/Master/tlpkg/tlperl/lib/CORE/sv.h
    trunk/Master/tlpkg/tlperl/lib/CORE/time64.h
    trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h
    trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
    trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h
    trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h
    trunk/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h
    trunk/Master/tlpkg/tlperl/lib/CORE/util.h
    trunk/Master/tlpkg/tlperl/lib/CORE/vdir.h
    trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h
    trunk/Master/tlpkg/tlperl/lib/CORE/win32.h
    trunk/Master/tlpkg/tlperl/lib/CORE.pod
    trunk/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Exception/RecursiveDependency.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/FTP.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Index.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Converter.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Feature.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_0.pod
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_1.pod
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_2.pod
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_3.pod
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_4.pod
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/History.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Merge.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Prereqs.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Spec.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Validator.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Meta.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Mirrors.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Module.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Plugin.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN/Shell.pm
    trunk/Master/tlpkg/tlperl/lib/CPAN.pm
    trunk/Master/tlpkg/tlperl/lib/Carp/Heavy.pm
    trunk/Master/tlpkg/tlperl/lib/Carp.pm
    trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm
    trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm
    trunk/Master/tlpkg/tlperl/lib/Compress/Zlib.pm
    trunk/Master/tlpkg/tlperl/lib/Config/Perl/V.pm
    trunk/Master/tlpkg/tlperl/lib/Config.pm
    trunk/Master/tlpkg/tlperl/lib/Config.pm.orig
    trunk/Master/tlpkg/tlperl/lib/Config.pod
    trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl
    trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig
    trunk/Master/tlpkg/tlperl/lib/Cwd.pm
    trunk/Master/tlpkg/tlperl/lib/Data/Dumper.pm
    trunk/Master/tlpkg/tlperl/lib/Devel/PPPort.pm
    trunk/Master/tlpkg/tlperl/lib/Devel/Peek.pm
    trunk/Master/tlpkg/tlperl/lib/Devel/SelfStubber.pm
    trunk/Master/tlpkg/tlperl/lib/Digest/MD5.pm
    trunk/Master/tlpkg/tlperl/lib/Digest/SHA.pm
    trunk/Master/tlpkg/tlperl/lib/DynaLoader.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/Alias.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/CN/HZ.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/MIME/Header/ISO_2022_JP.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/MIME/Name.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/Supported.pod
    trunk/Master/tlpkg/tlperl/lib/Encode/Unicode.pm
    trunk/Master/tlpkg/tlperl/lib/Encode/_T.e2x
    trunk/Master/tlpkg/tlperl/lib/Encode.pm
    trunk/Master/tlpkg/tlperl/lib/Errno.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Command/MM.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Command.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Embed.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Liblist/Kid.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Liblist.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_AIX.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_Any.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_BeOS.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_Cygwin.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_DOS.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_Darwin.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_MacOS.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_NW5.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS2.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_QNX.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_UWIN.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_Unix.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_VMS.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_VOS.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win32.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win95.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MY.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Config.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/FAQ.pod
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Locale.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Tutorial.pod
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/version.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Mkbootstrap.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Mksymlists.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Constants.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/CountLines.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Eval.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Utilities.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pod
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Cmd.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/OutputMap.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Type.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps.pm
    trunk/Master/tlpkg/tlperl/lib/ExtUtils/testlib.pm
    trunk/Master/tlpkg/tlperl/lib/File/Copy.pm
    trunk/Master/tlpkg/tlperl/lib/File/Fetch.pm
    trunk/Master/tlpkg/tlperl/lib/File/Glob.pm
    trunk/Master/tlpkg/tlperl/lib/File/GlobMapper.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
    trunk/Master/tlpkg/tlperl/lib/File/Spec.pm
    trunk/Master/tlpkg/tlperl/lib/FileHandle.pm
    trunk/Master/tlpkg/tlperl/lib/Filter/Simple.pm
    trunk/Master/tlpkg/tlperl/lib/Getopt/Long.pm
    trunk/Master/tlpkg/tlperl/lib/Getopt/Std.pm
    trunk/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm
    trunk/Master/tlpkg/tlperl/lib/Hash/Util.pm
    trunk/Master/tlpkg/tlperl/lib/I18N/LangTags/Detect.pm
    trunk/Master/tlpkg/tlperl/lib/I18N/LangTags.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm
    trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm
    trunk/Master/tlpkg/tlperl/lib/IO.pm
    trunk/Master/tlpkg/tlperl/lib/IPC/Cmd.pm
    trunk/Master/tlpkg/tlperl/lib/JSON/PP.pm
    trunk/Master/tlpkg/tlperl/lib/List/Util/XS.pm
    trunk/Master/tlpkg/tlperl/lib/List/Util.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/API.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Changes.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Constants.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Country.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Country.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Country_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Country_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Currency.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Currency.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Currency_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Currency_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangExt.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangExt.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangExt_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangExt_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangFam.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangFam.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangFam_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangFam_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangVar.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangVar.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangVar_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/LangVar_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Language.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Language.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Language_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Language_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Script.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Script.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Script_Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes/Script_Retired.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Codes.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Country.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Country.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Currency.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Currency.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Language.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Language.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Maketext.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Maketext.pod
    trunk/Master/tlpkg/tlperl/lib/Locale/Script.pm
    trunk/Master/tlpkg/tlperl/lib/Locale/Script.pod
    trunk/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigFloat.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigInt/CalcEmu.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigInt.pm
    trunk/Master/tlpkg/tlperl/lib/Math/BigRat.pm
    trunk/Master/tlpkg/tlperl/lib/Math/Complex.pm
    trunk/Master/tlpkg/tlperl/lib/Module/CoreList/TieHashDelta.pm
    trunk/Master/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
    trunk/Master/tlpkg/tlperl/lib/Module/CoreList.pm
    trunk/Master/tlpkg/tlperl/lib/Module/Load/Conditional.pm
    trunk/Master/tlpkg/tlperl/lib/Module/Metadata.pm
    trunk/Master/tlpkg/tlperl/lib/NEXT.pm
    trunk/Master/tlpkg/tlperl/lib/Net/Cmd.pm
    trunk/Master/tlpkg/tlperl/lib/Net/Config.pm
    trunk/Master/tlpkg/tlperl/lib/Net/Domain.pm
    trunk/Master/tlpkg/tlperl/lib/Net/FTP/A.pm
    trunk/Master/tlpkg/tlperl/lib/Net/FTP/E.pm
    trunk/Master/tlpkg/tlperl/lib/Net/FTP/I.pm
    trunk/Master/tlpkg/tlperl/lib/Net/FTP/L.pm
    trunk/Master/tlpkg/tlperl/lib/Net/FTP/dataconn.pm
    trunk/Master/tlpkg/tlperl/lib/Net/FTP.pm
    trunk/Master/tlpkg/tlperl/lib/Net/NNTP.pm
    trunk/Master/tlpkg/tlperl/lib/Net/Netrc.pm
    trunk/Master/tlpkg/tlperl/lib/Net/POP3.pm
    trunk/Master/tlpkg/tlperl/lib/Net/Ping.pm
    trunk/Master/tlpkg/tlperl/lib/Net/SMTP.pm
    trunk/Master/tlpkg/tlperl/lib/Net/Time.pm
    trunk/Master/tlpkg/tlperl/lib/Net/libnetFAQ.pod
    trunk/Master/tlpkg/tlperl/lib/Opcode.pm
    trunk/Master/tlpkg/tlperl/lib/POSIX.pm
    trunk/Master/tlpkg/tlperl/lib/POSIX.pod
    trunk/Master/tlpkg/tlperl/lib/Parse/CPAN/Meta.pm
    trunk/Master/tlpkg/tlperl/lib/Perl/OSType.pm
    trunk/Master/tlpkg/tlperl/lib/PerlIO/encoding.pm
    trunk/Master/tlpkg/tlperl/lib/PerlIO/scalar.pm
    trunk/Master/tlpkg/tlperl/lib/PerlIO.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Checker.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Functions.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Html.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Man.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/BaseTo.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/GetOptsOO.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToANSI.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToChecker.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToMan.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToNroff.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToPod.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToRtf.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToTerm.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToText.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToTk.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc/ToXml.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Perldoc.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Simple.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Text.pm
    trunk/Master/tlpkg/tlperl/lib/Pod/Usage.pm
    trunk/Master/tlpkg/tlperl/lib/Safe.pm
    trunk/Master/tlpkg/tlperl/lib/Scalar/Util.pm
    trunk/Master/tlpkg/tlperl/lib/Storable.pm
    trunk/Master/tlpkg/tlperl/lib/Sub/Util.pm
    trunk/Master/tlpkg/tlperl/lib/Symbol.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Base.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Harness.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Object.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm
    trunk/Master/tlpkg/tlperl/lib/TAP/Parser.pm
    trunk/Master/tlpkg/tlperl/lib/Term/ANSIColor.pm
    trunk/Master/tlpkg/tlperl/lib/Term/ReadLine.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Builder/Module.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Builder.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Harness.pm
    trunk/Master/tlpkg/tlperl/lib/Test/More.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Simple.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Tester.pm
    trunk/Master/tlpkg/tlperl/lib/Test/use/ok.pm
    trunk/Master/tlpkg/tlperl/lib/Test.pm
    trunk/Master/tlpkg/tlperl/lib/Thread/Queue.pm
    trunk/Master/tlpkg/tlperl/lib/Thread/Semaphore.pm
    trunk/Master/tlpkg/tlperl/lib/Tie/Hash/NamedCapture.pm
    trunk/Master/tlpkg/tlperl/lib/Time/HiRes.pm
    trunk/Master/tlpkg/tlperl/lib/Time/Local.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Big5.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/GB2312.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/JISX0208.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Korean.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Pinyin.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Stroke.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Zhuyin.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/af.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ar.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/as.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/az.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/be.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bn.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ca.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cs.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cy.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/da.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_phone.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ee.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/eo.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es_trad.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/et.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fa.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi_phone.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fil.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fo.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/gu.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ha.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/haw.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hi.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hr.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hu.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hy.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ig.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/is.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ja.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kk.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kl.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kn.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ko.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kok.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ln.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lt.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lv.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mk.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ml.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mr.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mt.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nb.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nn.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nso.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/om.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/or.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pa.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pl.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ro.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sa.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/se.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si_dict.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sk.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sl.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sq.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sr.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv_refo.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ta.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/te.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/th.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tn.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/to.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tr.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/uk.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ur.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vi.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wae.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wo.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/yo.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_big5.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_gb.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_pin.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_strk.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_zhu.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/allkeys.txt
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Normalize.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/UCD.pm
    trunk/Master/tlpkg/tlperl/lib/XSLoader.pm
    trunk/Master/tlpkg/tlperl/lib/_charnames.pm
    trunk/Master/tlpkg/tlperl/lib/arybase.pm
    trunk/Master/tlpkg/tlperl/lib/attributes.pm
    trunk/Master/tlpkg/tlperl/lib/auto/B/B.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
    trunk/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dll
    trunk/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.dll
    trunk/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
    trunk/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
    trunk/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
    trunk/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
    trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dll
    trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dll
    trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.dll
    trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.dll
    trunk/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Socket/Socket.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Storable/Storable.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Tie/Hash/NamedCapture/NamedCapture.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
    trunk/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.dll
    trunk/Master/tlpkg/tlperl/lib/auto/arybase/arybase.dll
    trunk/Master/tlpkg/tlperl/lib/auto/attributes/attributes.dll
    trunk/Master/tlpkg/tlperl/lib/auto/mro/mro.dll
    trunk/Master/tlpkg/tlperl/lib/auto/re/re.dll
    trunk/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.dll
    trunk/Master/tlpkg/tlperl/lib/auto/threads/threads.dll
    trunk/Master/tlpkg/tlperl/lib/base.pm
    trunk/Master/tlpkg/tlperl/lib/bigint.pm
    trunk/Master/tlpkg/tlperl/lib/bignum.pm
    trunk/Master/tlpkg/tlperl/lib/bigrat.pm
    trunk/Master/tlpkg/tlperl/lib/charnames.pm
    trunk/Master/tlpkg/tlperl/lib/diagnostics.pm
    trunk/Master/tlpkg/tlperl/lib/encoding/warnings.pm
    trunk/Master/tlpkg/tlperl/lib/encoding.pm
    trunk/Master/tlpkg/tlperl/lib/feature.pm
    trunk/Master/tlpkg/tlperl/lib/lib.pm
    trunk/Master/tlpkg/tlperl/lib/mro.pm
    trunk/Master/tlpkg/tlperl/lib/ok.pm
    trunk/Master/tlpkg/tlperl/lib/open.pm
    trunk/Master/tlpkg/tlperl/lib/overload.pm
    trunk/Master/tlpkg/tlperl/lib/parent.pm
    trunk/Master/tlpkg/tlperl/lib/perl5db.pl
    trunk/Master/tlpkg/tlperl/lib/perlfaq.pm
    trunk/Master/tlpkg/tlperl/lib/perllocal.pod
    trunk/Master/tlpkg/tlperl/lib/re.pm
    trunk/Master/tlpkg/tlperl/lib/threads/shared.pm
    trunk/Master/tlpkg/tlperl/lib/threads.pm
    trunk/Master/tlpkg/tlperl/lib/unicore/Blocks.txt
    trunk/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/Heavy.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/Name.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/Name.pm
    trunk/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt
    trunk/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Age.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Bc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Bmg.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Bpb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Bpt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Cf.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Ea.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/GCB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Gc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Hst.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/InPC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/InSC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Isc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Jg.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Jt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Lb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Lc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/NFCQC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/NFDQC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/NFKCCF.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/NFKCQC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/NFKDQC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Na1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/NameAlia.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Nt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Nv.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/PerlDeci.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/SB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Sc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Scx.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Tc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Title.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Uc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/WB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/_PerlLB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/To/_PerlWB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/UCD.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/NA.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V11.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V20.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V30.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V31.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V32.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V40.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V41.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V50.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V51.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V52.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V60.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V61.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V70.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V80.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Alpha/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AL.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AN.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/B.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/BN.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/CS.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/EN.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ES.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ET.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/L.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/NSM.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ON.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/R.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bc/WS.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/BidiC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/BidiM/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Blk/NB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/C.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/N.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/O.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CE/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CI/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CWCF/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CWCM/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CWKCF/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CWL/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CWT/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CWU/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Cased/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/A.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/ATAR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/B.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/BR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/DB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NK.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/OV.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/VR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/CompEx/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/DI/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dash/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dep/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dia/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Com.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Enc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Fin.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Font.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Init.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Iso.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Med.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nar.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/NonCanon.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sqr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sub.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sup.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Vert.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ea/A.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ea/H.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ea/N.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ea/Na.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ea/W.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ext/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/CN.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/EX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LV.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LVT.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/SM.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/XX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/C.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cf.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cn.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/L.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/LC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ll.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lm.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lo.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/M.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Me.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mn.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/N.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nd.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nl.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/No.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/P.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pd.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pe.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pf.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pi.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Po.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ps.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/S.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sk.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sm.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/So.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Z.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Zs.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GrBase/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Hex/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Hst/NA.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Hyphen/T.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/IDC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/IDS/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Ideo/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/2_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/2_1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/3_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/3_1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/3_2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/4_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/4_1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/5_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/5_1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/5_2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/6_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/6_1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/6_2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/6_3.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/7_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/8_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Bottom.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Left.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/LeftAndR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/NA.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Overstru.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Right.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Top.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndBo.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndL2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndLe.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndRi.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InPC/VisualOr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Avagraha.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Bindu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Cantilla.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona3.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona4.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona5.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona6.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consonan.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Invisibl.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Nukta.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Number.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Other.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/PureKill.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Syllable.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/ToneMark.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Virama.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Visarga.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Vowel.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelDep.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelInd.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Ain.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Alef.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Beh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Dal.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/FarsiYeh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Feh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Gaf.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Hah.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Kaf.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Lam.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/NoJoinin.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Qaf.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Reh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Sad.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Seen.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Waw.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Yeh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jt/C.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jt/D.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jt/R.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jt/T.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Jt/U.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AI.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AL.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BA.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CJ.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CL.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CM.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/EX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/GL.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/ID.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IN.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IS.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NS.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/OP.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PO.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PR.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/QU.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/SA.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/XX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lower/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Math/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/M.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/N.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/N.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/N.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Di.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nt/None.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Nu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1000.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10000.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/11.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/12.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/13.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/14.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/15.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/16.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/17.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/18.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/19.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_3.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_4.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_8.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/200.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2_3.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/300.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_4.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/400.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/500.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5000.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50000.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/600.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/700.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/800.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/900.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/PatSyn/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Alnum.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Assigned.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Blank.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Graph.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PerlWord.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PosixPun.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Print.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/SpacePer.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Title.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Word.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/XPosixPu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlAny.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCh2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCha.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlFol.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDS.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlNch.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPat.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPr2.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPro.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlQuo.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/QMark/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/AT.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/CL.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/EX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/FO.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/LE.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/LO.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/NU.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/SC.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/ST.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/Sp.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/UP.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SB/XX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/SD/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/STerm/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Arab.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Armn.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Beng.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cham.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cprt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cyrl.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Deva.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Dupl.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Ethi.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Geor.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gran.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Grek.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gujr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Guru.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Han.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hang.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hebr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hira.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hmng.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Kana.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Khar.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Khmr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Knda.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Lana.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Lao.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Latn.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Limb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Linb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mlym.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mong.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mult.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Orya.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Sinh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Talu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Taml.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Telu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Tibt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Xsux.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zinh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zyyy.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zzzz.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Arab.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Armn.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Beng.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bopo.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cakm.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Copt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cprt.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cyrl.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Deva.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Dupl.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Geor.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Glag.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gran.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Grek.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gujr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Guru.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Han.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hang.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hira.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kana.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Knda.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Latn.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Limb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Linb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mlym.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mong.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mult.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mymr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Orya.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Phlp.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Shrd.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sind.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sinh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Syrc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tagb.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Takr.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Taml.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Telu.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Thaa.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tirh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yi.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zinh.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zyyy.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Term/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/UIdeo/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Upper/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/EX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/FO.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/HL.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/KA.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/LE.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/MB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/ML.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/MN.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/NU.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/XX.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/XIDC/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/XIDS/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/version
    trunk/Master/tlpkg/tlperl/lib/version/regex.pm
    trunk/Master/tlpkg/tlperl/lib/version.pm
    trunk/Master/tlpkg/tlperl/lib/warnings.pm
    trunk/Master/tlpkg/tlperl/site/lib/File/Which.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Config.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Message.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Request.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Response.pm
    trunk/Master/tlpkg/tlperl/site/lib/HTTP/Status.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Debug.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/Simple.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
    trunk/Master/tlpkg/tlperl/site/lib/LWP.pm
    trunk/Master/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
    trunk/Master/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
    trunk/Master/tlpkg/tlperl/site/lib/Net/HTTP.pm
    trunk/Master/tlpkg/tlperl/site/lib/Net/HTTPS.pm
    trunk/Master/tlpkg/tlperl/site/lib/Socket.pm
    trunk/Master/tlpkg/tlperl/site/lib/Tk/Config.pm
    trunk/Master/tlpkg/tlperl/site/lib/Tk/Event.pm
    trunk/Master/tlpkg/tlperl/site/lib/Tk/NoteBook.pm
    trunk/Master/tlpkg/tlperl/site/lib/Tk/Table.pod
    trunk/Master/tlpkg/tlperl/site/lib/Tk/getOpenFile.pod
    trunk/Master/tlpkg/tlperl/site/lib/Tk.pm
    trunk/Master/tlpkg/tlperl/site/lib/Try/Tiny.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/Escape.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/IRI.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/Split.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_foreign.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_generic.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_idna.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_ldap.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_login.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_punycode.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_query.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_segment.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_server.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/_userpass.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/data.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/Base.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/ftp.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/gopher.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/http.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/https.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/ldap.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/ldapi.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/ldaps.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/mailto.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/mms.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/news.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/nntp.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/pop.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/rlogin.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/rsync.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/rtsp.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/rtspu.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/sftp.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/sip.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/sips.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/snews.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/ssh.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/telnet.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/tn3270.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI/urn.pm
    trunk/Master/tlpkg/tlperl/site/lib/URI.pm
    trunk/Master/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA1/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA1/SHA1.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Socket/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Canvas/Canvas.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Compound/Compound.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/DirSelect/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Entry/Entry.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Event/Event.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/HList/HList.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/IO/IO.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/JPEG/JPEG.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Listbox/Listbox.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Menubutton/Menubutton.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/NBFrame/NBFrame.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/PNG/PNG.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Pixmap/Pixmap.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Scale/Scale.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Scrollbar/Scrollbar.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/TList/TList.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Text/Text.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/TixGrid/TixGrid.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Tk.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/X/X.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Tk/Xlib/Xlib.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/URI/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/OLE/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/OLE/OLE.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/libwww/lwpcook.pod

Added Paths:
-----------
    trunk/Master/tlpkg/tlperl/bin/perl5.26.1.exe
    trunk/Master/tlpkg/tlperl/bin/perl526.dll
    trunk/Master/tlpkg/tlperl/lib/CORE/libperl526.a
    trunk/Master/tlpkg/tlperl/lib/Internals.pod
    trunk/Master/tlpkg/tlperl/lib/Math/BigInt/Lib.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Builder/Formatter.pm
    trunk/Master/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/
    trunk/Master/tlpkg/tlperl/lib/Test2/API/
    trunk/Master/tlpkg/tlperl/lib/Test2/API/Breakage.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/API/Context.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/API/Instance.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/API/Stack.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/API.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Bail.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Diag.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Encoding.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Exception.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Generic.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Info.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Note.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Ok.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Plan.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Skip.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Subtest.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/TAP/
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event/Waiting.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Event.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Formatter/
    trunk/Master/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Formatter.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Hub/
    trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/
    trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Hub.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/IPC/
    trunk/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/
    trunk/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/IPC/Driver.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/IPC.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Tools/
    trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Transition.pod
    trunk/Master/tlpkg/tlperl/lib/Test2/Util/
    trunk/Master/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Util/HashBase.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Util/Trace.pm
    trunk/Master/tlpkg/tlperl/lib/Test2/Util.pm
    trunk/Master/tlpkg/tlperl/lib/Test2.pm
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_at_ph.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr_ca.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/he.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ug_cyrl.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vo.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Age/V90.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/EB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/GCB/PP.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pc.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/In/9_0.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Lb/EB.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_16.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_16.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/PCM/
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/PCM/Y.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Bhks.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Glag.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Adlm.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lina.pl
    trunk/Master/tlpkg/tlperl/lib/unicore/lib/WB/Extend.pl
    trunk/Master/tlpkg/tlperl/site/lib/Cpanel/
    trunk/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/
    trunk/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS/
    trunk/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS/Boolean.pm
    trunk/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS/Type.pm
    trunk/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
    trunk/Master/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm
    trunk/Master/tlpkg/tlperl/site/lib/Test/Needs.pm
    trunk/Master/tlpkg/tlperl/site/lib/Tk/getSaveFile.pod
    trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/
    trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/
    trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/
    trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
    trunk/Master/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/
    trunk/Master/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Needs/
    trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist

Removed Paths:
-------------
    trunk/Master/tlpkg/tlperl/bin/perl5.24.1.exe
    trunk/Master/tlpkg/tlperl/bin/perl524.dll
    trunk/Master/tlpkg/tlperl/lib/CORE/libperl524.a
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bg.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr.pl
    trunk/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ru.pl
    trunk/Master/tlpkg/tlperl/site/lib/Canary/
    trunk/Master/tlpkg/tlperl/site/lib/JSON/XS/
    trunk/Master/tlpkg/tlperl/site/lib/JSON/XS.pm
    trunk/Master/tlpkg/tlperl/site/lib/JSON/backportPP/
    trunk/Master/tlpkg/tlperl/site/lib/JSON/backportPP.pm
    trunk/Master/tlpkg/tlperl/site/lib/JSON.pm
    trunk/Master/tlpkg/tlperl/site/lib/Types/
    trunk/Master/tlpkg/tlperl/site/lib/Win32/Process.pm
    trunk/Master/tlpkg/tlperl/site/lib/auto/Canary/
    trunk/Master/tlpkg/tlperl/site/lib/auto/JSON/.packlist
    trunk/Master/tlpkg/tlperl/site/lib/auto/JSON/XS/
    trunk/Master/tlpkg/tlperl/site/lib/auto/Types/
    trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Process/
    trunk/Master/tlpkg/tlperl/site/lib/auto/common/
    trunk/Master/tlpkg/tlperl/site/lib/common/

Modified: trunk/Master/tlpkg/bin/tl-update-bindir
===================================================================
--- trunk/Master/tlpkg/bin/tl-update-bindir	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/bin/tl-update-bindir	2018-03-08 00:16:42 UTC (rev 46882)
@@ -98,6 +98,9 @@
   grab="$download -O $download_loc"
   if test x"$USER" = xkarl; then
    case $tlplat in 
+   aarch64-linux)
+    default_bin_loc=$download_loc
+    $grab https://faubox.rrze.uni-erlangen.de/open/MjdwNXE5NW5UcTU4RzVIWlRVUVVI/tl2018/2018-03-04_-r46806/texlive_bin_aarch64-linux.tar.gz;;
    alpha-linux)
     default_bin_loc=/home/preining/alpha-linux.tar.gz;;
    amd64-freebsd)
@@ -120,7 +123,7 @@
     $grab http://boris.lk.net/texlive-2013/armv7l-unknown-linux-gnueabi.tgz;;
    armhf-linux)
     default_bin_loc=$download_loc
-    $grab http://getthingsfixed.co.uk/texlive/builds/2017/texlive-armhf.tar.gz;;
+    $grab http://getthingsfixed.co.uk/texlive/builds/2018/texlive-armhf.tar.gz;;
    hppa-hpux)
     default_bin_loc=$download_loc
     $grab http://www.jtartlabs.com/test/hppa2.0-hp-hpux10.20.tar.gz;;

Modified: trunk/Master/tlpkg/doc/releng.txt
===================================================================
--- trunk/Master/tlpkg/doc/releng.txt	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/doc/releng.txt	2018-03-08 00:16:42 UTC (rev 46882)
@@ -141,14 +141,14 @@
 B. Specifics for tlperl update:
   cd $pg
   find tlperl -type f | \grep -v README.TEXLIVE | sort >/tmp/now
-  tar tf newperl.tgz | \grep -v /\$ | sort >/tmp/new
-    # or zipinfo -1 newperl.zip
-  tar xf ..., or unzip -q ...
+  zipinfo -1 newperl.zip | \grep -v /\$ | sort >/tmp/new
+  unzip -q newperl.zip  # replace All files
   comm -13 /tmp/now /tmp/new >/tmp/c2
   comm -23 /tmp/now /tmp/new >/tmp/c1
+  wc -l /tmp/c1 /tmp/c2 # should not be everything
   svn rm `cat /tmp/c1`
   svn add --parents --no-auto-props `cat /tmp/c2`
-  svn status | fgrep \? # shouldn't be any
+  svn status | fgrep \? # shouldn't be any besides newperl.zip
   find tlperl -name \*.dll -o -name \*.exe | xargs svn propset svn:executable 1
   find tlperl -type d -empty | xargs svn rm  # repeat until no output
   update tlperl/README.TEXLIVE

Modified: trunk/Master/tlpkg/tlperl/README.TEXLIVE
===================================================================
--- trunk/Master/tlpkg/tlperl/README.TEXLIVE	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/README.TEXLIVE	2018-03-08 00:16:42 UTC (rev 46882)
@@ -1,6 +1,6 @@
 (This file public domain.)
 
-This directory contains Perl 5.24.1 compiled for Windows.
+This directory contains Perl 5.26.1 compiled for Windows.
 
 The only purpose of this Perl is to provide support on Windows for
 Perl scripts shipped with TeX Live.  It's not intended for general use.

Modified: trunk/Master/tlpkg/tlperl/bin/libgcc_s_dw2-1.dll
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlperl/bin/libstdc++-6.dll
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlperl/bin/libwinpthread-1.dll
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlperl/bin/perl.exe
===================================================================
(Binary files differ)

Deleted: trunk/Master/tlpkg/tlperl/bin/perl5.24.1.exe
===================================================================
(Binary files differ)

Added: trunk/Master/tlpkg/tlperl/bin/perl5.26.1.exe
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tlperl/bin/perl5.26.1.exe
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perl5.26.1.exe	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/bin/perl5.26.1.exe	2018-03-08 00:16:42 UTC (rev 46882)

Property changes on: trunk/Master/tlpkg/tlperl/bin/perl5.26.1.exe
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Deleted: trunk/Master/tlpkg/tlperl/bin/perl524.dll
===================================================================
(Binary files differ)

Added: trunk/Master/tlpkg/tlperl/bin/perl526.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tlperl/bin/perl526.dll
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perl526.dll	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/bin/perl526.dll	2018-03-08 00:16:42 UTC (rev 46882)

Property changes on: trunk/Master/tlpkg/tlperl/bin/perl526.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/bin/perlglob.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlperl/bin/wperl.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlperl/lib/.packlist
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/.packlist	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/.packlist	2018-03-08 00:16:42 UTC (rev 46882)
@@ -1,1552 +1,1610 @@
-c:\tlperl\bin/c2ph.bat type=file
-c:\tlperl\bin/corelist.bat type=file
-c:\tlperl\bin/cpan.bat type=file
-c:\tlperl\bin/enc2xs.bat type=file
-c:\tlperl\bin/encguess.bat type=file
-c:\tlperl\bin/h2ph.bat type=file
-c:\tlperl\bin/h2xs.bat type=file
-c:\tlperl\bin/instmodsh.bat type=file
-c:\tlperl\bin/json_pp.bat type=file
-c:\tlperl\bin/libnetcfg.bat type=file
-c:\tlperl\bin/perl.exe from=c:\tlperl\bin/perl5.24.1.exe type=link
-c:\tlperl\bin/perl5.24.1.exe type=file
-c:\tlperl\bin/perl524.dll type=file
-c:\tlperl\bin/perlbug.bat type=file
-c:\tlperl\bin/perldoc.bat type=file
-c:\tlperl\bin/perlivp.bat type=file
-c:\tlperl\bin/perlthanks.bat from=c:\tlperl\bin/perlbug.bat type=link
-c:\tlperl\bin/piconv.bat type=file
-c:\tlperl\bin/pl2pm.bat type=file
-c:\tlperl\bin/pod2html.bat type=file
-c:\tlperl\bin/pod2man.bat type=file
-c:\tlperl\bin/pod2text.bat type=file
-c:\tlperl\bin/pod2usage.bat type=file
-c:\tlperl\bin/podchecker.bat type=file
-c:\tlperl\bin/podselect.bat type=file
-c:\tlperl\bin/prove.bat type=file
-c:\tlperl\bin/pstruct.bat from=c:\tlperl\bin/c2ph.bat type=link
-c:\tlperl\bin/ptar.bat type=file
-c:\tlperl\bin/ptardiff.bat type=file
-c:\tlperl\bin/ptargrep.bat type=file
-c:\tlperl\bin/shasum.bat type=file
-c:\tlperl\bin/splain.bat type=file
-c:\tlperl\bin/xsubpp.bat type=file
-c:\tlperl\bin/zipdetails.bat type=file
-c:\tlperl\lib/AnyDBM_File.pm type=file
-c:\tlperl\lib/App/Cpan.pm type=file
-c:\tlperl\lib/App/Prove.pm type=file
-c:\tlperl\lib/App/Prove/State.pm type=file
-c:\tlperl\lib/App/Prove/State/Result.pm type=file
-c:\tlperl\lib/App/Prove/State/Result/Test.pm type=file
-c:\tlperl\lib/Archive/Tar.pm type=file
-c:\tlperl\lib/Archive/Tar/Constant.pm type=file
-c:\tlperl\lib/Archive/Tar/File.pm type=file
-c:\tlperl\lib/Attribute/Handlers.pm type=file
-c:\tlperl\lib/AutoLoader.pm type=file
-c:\tlperl\lib/AutoSplit.pm type=file
-c:\tlperl\lib/B.pm type=file
-c:\tlperl\lib/B/Concise.pm type=file
-c:\tlperl\lib/B/Debug.pm type=file
-c:\tlperl\lib/B/Deparse.pm type=file
-c:\tlperl\lib/B/Op_private.pm type=file
-c:\tlperl\lib/B/Showlex.pm type=file
-c:\tlperl\lib/B/Terse.pm type=file
-c:\tlperl\lib/B/Xref.pm type=file
-c:\tlperl\lib/Benchmark.pm type=file
-c:\tlperl\lib/CORE.pod type=file
-c:\tlperl\lib/CORE/EXTERN.h type=file
-c:\tlperl\lib/CORE/INTERN.h type=file
-c:\tlperl\lib/CORE/XSUB.h type=file
-c:\tlperl\lib/CORE/arpa/inet.h type=file
-c:\tlperl\lib/CORE/av.h type=file
-c:\tlperl\lib/CORE/bitcount.h type=file
-c:\tlperl\lib/CORE/charclass_invlists.h type=file
-c:\tlperl\lib/CORE/config.h type=file
-c:\tlperl\lib/CORE/cop.h type=file
-c:\tlperl\lib/CORE/cv.h type=file
-c:\tlperl\lib/CORE/dirent.h type=file
-c:\tlperl\lib/CORE/dosish.h type=file
-c:\tlperl\lib/CORE/dquote_inline.h type=file
-c:\tlperl\lib/CORE/ebcdic_tables.h type=file
-c:\tlperl\lib/CORE/embed.h type=file
-c:\tlperl\lib/CORE/embedvar.h type=file
-c:\tlperl\lib/CORE/fakesdio.h type=file
-c:\tlperl\lib/CORE/feature.h type=file
-c:\tlperl\lib/CORE/form.h type=file
-c:\tlperl\lib/CORE/git_version.h type=file
-c:\tlperl\lib/CORE/gv.h type=file
-c:\tlperl\lib/CORE/handy.h type=file
-c:\tlperl\lib/CORE/hv.h type=file
-c:\tlperl\lib/CORE/hv_func.h type=file
-c:\tlperl\lib/CORE/inline.h type=file
-c:\tlperl\lib/CORE/intrpvar.h type=file
-c:\tlperl\lib/CORE/invlist_inline.h type=file
-c:\tlperl\lib/CORE/iperlsys.h type=file
-c:\tlperl\lib/CORE/keywords.h type=file
-c:\tlperl\lib/CORE/l1_char_class_tab.h type=file
-c:\tlperl\lib/CORE/libperl524.a type=file
-c:\tlperl\lib/CORE/malloc_ctl.h type=file
-c:\tlperl\lib/CORE/metaconfig.h type=file
-c:\tlperl\lib/CORE/mg.h type=file
-c:\tlperl\lib/CORE/mg_data.h type=file
-c:\tlperl\lib/CORE/mg_raw.h type=file
-c:\tlperl\lib/CORE/mg_vtable.h type=file
-c:\tlperl\lib/CORE/mydtrace.h type=file
-c:\tlperl\lib/CORE/netdb.h type=file
-c:\tlperl\lib/CORE/nostdio.h type=file
-c:\tlperl\lib/CORE/op.h type=file
-c:\tlperl\lib/CORE/op_reg_common.h type=file
-c:\tlperl\lib/CORE/opcode.h type=file
-c:\tlperl\lib/CORE/opnames.h type=file
-c:\tlperl\lib/CORE/overload.h type=file
-c:\tlperl\lib/CORE/pad.h type=file
-c:\tlperl\lib/CORE/parser.h type=file
-c:\tlperl\lib/CORE/patchlevel.h type=file
-c:\tlperl\lib/CORE/perl.h type=file
-c:\tlperl\lib/CORE/perlapi.h type=file
-c:\tlperl\lib/CORE/perlhost.h type=file
-c:\tlperl\lib/CORE/perlio.h type=file
-c:\tlperl\lib/CORE/perliol.h type=file
-c:\tlperl\lib/CORE/perlsdio.h type=file
-c:\tlperl\lib/CORE/perlvars.h type=file
-c:\tlperl\lib/CORE/perly.h type=file
-c:\tlperl\lib/CORE/pp.h type=file
-c:\tlperl\lib/CORE/pp_proto.h type=file
-c:\tlperl\lib/CORE/ppport.h type=file
-c:\tlperl\lib/CORE/proto.h type=file
-c:\tlperl\lib/CORE/reentr.h type=file
-c:\tlperl\lib/CORE/regcharclass.h type=file
-c:\tlperl\lib/CORE/regcomp.h type=file
-c:\tlperl\lib/CORE/regexp.h type=file
-c:\tlperl\lib/CORE/regnodes.h type=file
-c:\tlperl\lib/CORE/scope.h type=file
-c:\tlperl\lib/CORE/sv.h type=file
-c:\tlperl\lib/CORE/sys/errno2.h type=file
-c:\tlperl\lib/CORE/sys/socket.h type=file
-c:\tlperl\lib/CORE/thread.h type=file
-c:\tlperl\lib/CORE/time64.h type=file
-c:\tlperl\lib/CORE/time64_config.h type=file
-c:\tlperl\lib/CORE/uconfig.h type=file
-c:\tlperl\lib/CORE/unicode_constants.h type=file
-c:\tlperl\lib/CORE/unixish.h type=file
-c:\tlperl\lib/CORE/utf8.h type=file
-c:\tlperl\lib/CORE/utfebcdic.h type=file
-c:\tlperl\lib/CORE/util.h type=file
-c:\tlperl\lib/CORE/uudmap.h type=file
-c:\tlperl\lib/CORE/vdir.h type=file
-c:\tlperl\lib/CORE/vmem.h type=file
-c:\tlperl\lib/CORE/vutil.h type=file
-c:\tlperl\lib/CORE/warnings.h type=file
-c:\tlperl\lib/CORE/win32.h type=file
-c:\tlperl\lib/CORE/win32iop-o.h type=file
-c:\tlperl\lib/CORE/win32iop.h type=file
-c:\tlperl\lib/CORE/win32thread.h type=file
-c:\tlperl\lib/CORE/wince.h type=file
-c:\tlperl\lib/CPAN.pm type=file
-c:\tlperl\lib/CPAN/API/HOWTO.pod type=file
-c:\tlperl\lib/CPAN/Author.pm type=file
-c:\tlperl\lib/CPAN/Bundle.pm type=file
-c:\tlperl\lib/CPAN/CacheMgr.pm type=file
-c:\tlperl\lib/CPAN/Complete.pm type=file
-c:\tlperl\lib/CPAN/Debug.pm type=file
-c:\tlperl\lib/CPAN/DeferredCode.pm type=file
-c:\tlperl\lib/CPAN/Distribution.pm type=file
-c:\tlperl\lib/CPAN/Distroprefs.pm type=file
-c:\tlperl\lib/CPAN/Distrostatus.pm type=file
-c:\tlperl\lib/CPAN/Exception/RecursiveDependency.pm type=file
-c:\tlperl\lib/CPAN/Exception/blocked_urllist.pm type=file
-c:\tlperl\lib/CPAN/Exception/yaml_not_installed.pm type=file
-c:\tlperl\lib/CPAN/Exception/yaml_process_error.pm type=file
-c:\tlperl\lib/CPAN/FTP.pm type=file
-c:\tlperl\lib/CPAN/FTP/netrc.pm type=file
-c:\tlperl\lib/CPAN/FirstTime.pm type=file
-c:\tlperl\lib/CPAN/HTTP/Client.pm type=file
-c:\tlperl\lib/CPAN/HTTP/Credentials.pm type=file
-c:\tlperl\lib/CPAN/HandleConfig.pm type=file
-c:\tlperl\lib/CPAN/Index.pm type=file
-c:\tlperl\lib/CPAN/InfoObj.pm type=file
-c:\tlperl\lib/CPAN/Kwalify.pm type=file
-c:\tlperl\lib/CPAN/Kwalify/distroprefs.dd type=file
-c:\tlperl\lib/CPAN/Kwalify/distroprefs.yml type=file
-c:\tlperl\lib/CPAN/LWP/UserAgent.pm type=file
-c:\tlperl\lib/CPAN/Meta.pm type=file
-c:\tlperl\lib/CPAN/Meta/Converter.pm type=file
-c:\tlperl\lib/CPAN/Meta/Feature.pm type=file
-c:\tlperl\lib/CPAN/Meta/History.pm type=file
-c:\tlperl\lib/CPAN/Meta/History/Meta_1_0.pod type=file
-c:\tlperl\lib/CPAN/Meta/History/Meta_1_1.pod type=file
-c:\tlperl\lib/CPAN/Meta/History/Meta_1_2.pod type=file
-c:\tlperl\lib/CPAN/Meta/History/Meta_1_3.pod type=file
-c:\tlperl\lib/CPAN/Meta/History/Meta_1_4.pod type=file
-c:\tlperl\lib/CPAN/Meta/Merge.pm type=file
-c:\tlperl\lib/CPAN/Meta/Prereqs.pm type=file
-c:\tlperl\lib/CPAN/Meta/Requirements.pm type=file
-c:\tlperl\lib/CPAN/Meta/Spec.pm type=file
-c:\tlperl\lib/CPAN/Meta/Validator.pm type=file
-c:\tlperl\lib/CPAN/Meta/YAML.pm type=file
-c:\tlperl\lib/CPAN/Mirrors.pm type=file
-c:\tlperl\lib/CPAN/Module.pm type=file
-c:\tlperl\lib/CPAN/Nox.pm type=file
-c:\tlperl\lib/CPAN/Plugin.pm type=file
-c:\tlperl\lib/CPAN/Plugin/Specfile.pm type=file
-c:\tlperl\lib/CPAN/Prompt.pm type=file
-c:\tlperl\lib/CPAN/Queue.pm type=file
-c:\tlperl\lib/CPAN/Shell.pm type=file
-c:\tlperl\lib/CPAN/Tarzip.pm type=file
-c:\tlperl\lib/CPAN/URL.pm type=file
-c:\tlperl\lib/CPAN/Version.pm type=file
-c:\tlperl\lib/Carp.pm type=file
-c:\tlperl\lib/Carp/Heavy.pm type=file
-c:\tlperl\lib/Class/Struct.pm type=file
-c:\tlperl\lib/Compress/Raw/Bzip2.pm type=file
-c:\tlperl\lib/Compress/Raw/Zlib.pm type=file
-c:\tlperl\lib/Compress/Zlib.pm type=file
-c:\tlperl\lib/Config.pm type=file
-c:\tlperl\lib/Config.pod type=file
-c:\tlperl\lib/Config/Extensions.pm type=file
-c:\tlperl\lib/Config/Perl/V.pm type=file
-c:\tlperl\lib/Config_git.pl type=file
-c:\tlperl\lib/Config_heavy.pl type=file
-c:\tlperl\lib/Cwd.pm type=file
-c:\tlperl\lib/DB.pm type=file
-c:\tlperl\lib/DBM_Filter.pm type=file
-c:\tlperl\lib/DBM_Filter/compress.pm type=file
-c:\tlperl\lib/DBM_Filter/encode.pm type=file
-c:\tlperl\lib/DBM_Filter/int32.pm type=file
-c:\tlperl\lib/DBM_Filter/null.pm type=file
-c:\tlperl\lib/DBM_Filter/utf8.pm type=file
-c:\tlperl\lib/Data/Dumper.pm type=file
-c:\tlperl\lib/Devel/PPPort.pm type=file
-c:\tlperl\lib/Devel/Peek.pm type=file
-c:\tlperl\lib/Devel/SelfStubber.pm type=file
-c:\tlperl\lib/Digest.pm type=file
-c:\tlperl\lib/Digest/MD5.pm type=file
-c:\tlperl\lib/Digest/SHA.pm type=file
-c:\tlperl\lib/Digest/base.pm type=file
-c:\tlperl\lib/Digest/file.pm type=file
-c:\tlperl\lib/DirHandle.pm type=file
-c:\tlperl\lib/Dumpvalue.pm type=file
-c:\tlperl\lib/DynaLoader.pm type=file
-c:\tlperl\lib/Encode.pm type=file
-c:\tlperl\lib/Encode/Alias.pm type=file
-c:\tlperl\lib/Encode/Byte.pm type=file
-c:\tlperl\lib/Encode/CJKConstants.pm type=file
-c:\tlperl\lib/Encode/CN.pm type=file
-c:\tlperl\lib/Encode/CN/HZ.pm type=file
-c:\tlperl\lib/Encode/Changes.e2x type=file
-c:\tlperl\lib/Encode/Config.pm type=file
-c:\tlperl\lib/Encode/ConfigLocal_PM.e2x type=file
-c:\tlperl\lib/Encode/EBCDIC.pm type=file
-c:\tlperl\lib/Encode/Encoder.pm type=file
-c:\tlperl\lib/Encode/Encoding.pm type=file
-c:\tlperl\lib/Encode/GSM0338.pm type=file
-c:\tlperl\lib/Encode/Guess.pm type=file
-c:\tlperl\lib/Encode/JP.pm type=file
-c:\tlperl\lib/Encode/JP/H2Z.pm type=file
-c:\tlperl\lib/Encode/JP/JIS7.pm type=file
-c:\tlperl\lib/Encode/KR.pm type=file
-c:\tlperl\lib/Encode/KR/2022_KR.pm type=file
-c:\tlperl\lib/Encode/MIME/Header.pm type=file
-c:\tlperl\lib/Encode/MIME/Header/ISO_2022_JP.pm type=file
-c:\tlperl\lib/Encode/MIME/Name.pm type=file
-c:\tlperl\lib/Encode/Makefile_PL.e2x type=file
-c:\tlperl\lib/Encode/PerlIO.pod type=file
-c:\tlperl\lib/Encode/README.e2x type=file
-c:\tlperl\lib/Encode/Supported.pod type=file
-c:\tlperl\lib/Encode/Symbol.pm type=file
-c:\tlperl\lib/Encode/TW.pm type=file
-c:\tlperl\lib/Encode/Unicode.pm type=file
-c:\tlperl\lib/Encode/Unicode/UTF7.pm type=file
-c:\tlperl\lib/Encode/_PM.e2x type=file
-c:\tlperl\lib/Encode/_T.e2x type=file
-c:\tlperl\lib/Encode/encode.h type=file
-c:\tlperl\lib/English.pm type=file
-c:\tlperl\lib/Env.pm type=file
-c:\tlperl\lib/Errno.pm type=file
-c:\tlperl\lib/Exporter.pm type=file
-c:\tlperl\lib/Exporter/Heavy.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Base.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/Unix.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/VMS.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/aix.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/android.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/cygwin.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/darwin.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/dec_osf.pm type=file
-c:\tlperl\lib/ExtUtils/CBuilder/Platform/os2.pm type=file
-c:\tlperl\lib/ExtUtils/Command.pm type=file
-c:\tlperl\lib/ExtUtils/Command/MM.pm type=file
-c:\tlperl\lib/ExtUtils/Constant.pm type=file
-c:\tlperl\lib/ExtUtils/Constant/Base.pm type=file
-c:\tlperl\lib/ExtUtils/Constant/ProxySubs.pm type=file
-c:\tlperl\lib/ExtUtils/Constant/Utils.pm type=file
-c:\tlperl\lib/ExtUtils/Constant/XS.pm type=file
-c:\tlperl\lib/ExtUtils/Embed.pm type=file
-c:\tlperl\lib/ExtUtils/Install.pm type=file
-c:\tlperl\lib/ExtUtils/Installed.pm type=file
-c:\tlperl\lib/ExtUtils/Liblist.pm type=file
-c:\tlperl\lib/ExtUtils/Liblist/Kid.pm type=file
-c:\tlperl\lib/ExtUtils/MANIFEST.SKIP type=file
-c:\tlperl\lib/ExtUtils/MM.pm type=file
-c:\tlperl\lib/ExtUtils/MM_AIX.pm type=file
-c:\tlperl\lib/ExtUtils/MM_Any.pm type=file
-c:\tlperl\lib/ExtUtils/MM_BeOS.pm type=file
-c:\tlperl\lib/ExtUtils/MM_Cygwin.pm type=file
-c:\tlperl\lib/ExtUtils/MM_DOS.pm type=file
-c:\tlperl\lib/ExtUtils/MM_Darwin.pm type=file
-c:\tlperl\lib/ExtUtils/MM_MacOS.pm type=file
-c:\tlperl\lib/ExtUtils/MM_NW5.pm type=file
-c:\tlperl\lib/ExtUtils/MM_OS2.pm type=file
-c:\tlperl\lib/ExtUtils/MM_QNX.pm type=file
-c:\tlperl\lib/ExtUtils/MM_UWIN.pm type=file
-c:\tlperl\lib/ExtUtils/MM_Unix.pm type=file
-c:\tlperl\lib/ExtUtils/MM_VMS.pm type=file
-c:\tlperl\lib/ExtUtils/MM_VOS.pm type=file
-c:\tlperl\lib/ExtUtils/MM_Win32.pm type=file
-c:\tlperl\lib/ExtUtils/MM_Win95.pm type=file
-c:\tlperl\lib/ExtUtils/MY.pm type=file
-c:\tlperl\lib/ExtUtils/MakeMaker.pm type=file
-c:\tlperl\lib/ExtUtils/MakeMaker/Config.pm type=file
-c:\tlperl\lib/ExtUtils/MakeMaker/FAQ.pod type=file
-c:\tlperl\lib/ExtUtils/MakeMaker/Locale.pm type=file
-c:\tlperl\lib/ExtUtils/MakeMaker/Tutorial.pod type=file
-c:\tlperl\lib/ExtUtils/MakeMaker/version.pm type=file
-c:\tlperl\lib/ExtUtils/Manifest.pm type=file
-c:\tlperl\lib/ExtUtils/Miniperl.pm type=file
-c:\tlperl\lib/ExtUtils/Mkbootstrap.pm type=file
-c:\tlperl\lib/ExtUtils/Mksymlists.pm type=file
-c:\tlperl\lib/ExtUtils/Packlist.pm type=file
-c:\tlperl\lib/ExtUtils/ParseXS.pm type=file
-c:\tlperl\lib/ExtUtils/ParseXS.pod type=file
-c:\tlperl\lib/ExtUtils/ParseXS/Constants.pm type=file
-c:\tlperl\lib/ExtUtils/ParseXS/CountLines.pm type=file
-c:\tlperl\lib/ExtUtils/ParseXS/Eval.pm type=file
-c:\tlperl\lib/ExtUtils/ParseXS/Utilities.pm type=file
-c:\tlperl\lib/ExtUtils/Typemaps.pm type=file
-c:\tlperl\lib/ExtUtils/Typemaps/Cmd.pm type=file
-c:\tlperl\lib/ExtUtils/Typemaps/InputMap.pm type=file
-c:\tlperl\lib/ExtUtils/Typemaps/OutputMap.pm type=file
-c:\tlperl\lib/ExtUtils/Typemaps/Type.pm type=file
-c:\tlperl\lib/ExtUtils/testlib.pm type=file
-c:\tlperl\lib/ExtUtils/typemap type=file
-c:\tlperl\lib/ExtUtils/xsubpp type=file
-c:\tlperl\lib/Fatal.pm type=file
-c:\tlperl\lib/Fcntl.pm type=file
-c:\tlperl\lib/File/Basename.pm type=file
-c:\tlperl\lib/File/Compare.pm type=file
-c:\tlperl\lib/File/Copy.pm type=file
-c:\tlperl\lib/File/DosGlob.pm type=file
-c:\tlperl\lib/File/Fetch.pm type=file
-c:\tlperl\lib/File/Find.pm type=file
-c:\tlperl\lib/File/Glob.pm type=file
-c:\tlperl\lib/File/GlobMapper.pm type=file
-c:\tlperl\lib/File/Path.pm type=file
-c:\tlperl\lib/File/Spec.pm type=file
-c:\tlperl\lib/File/Spec/AmigaOS.pm type=file
-c:\tlperl\lib/File/Spec/Cygwin.pm type=file
-c:\tlperl\lib/File/Spec/Epoc.pm type=file
-c:\tlperl\lib/File/Spec/Functions.pm type=file
-c:\tlperl\lib/File/Spec/Mac.pm type=file
-c:\tlperl\lib/File/Spec/OS2.pm type=file
-c:\tlperl\lib/File/Spec/Unix.pm type=file
-c:\tlperl\lib/File/Spec/VMS.pm type=file
-c:\tlperl\lib/File/Spec/Win32.pm type=file
-c:\tlperl\lib/File/Temp.pm type=file
-c:\tlperl\lib/File/stat.pm type=file
-c:\tlperl\lib/FileCache.pm type=file
-c:\tlperl\lib/FileHandle.pm type=file
-c:\tlperl\lib/Filter/Simple.pm type=file
-c:\tlperl\lib/Filter/Util/Call.pm type=file
-c:\tlperl\lib/FindBin.pm type=file
-c:\tlperl\lib/Getopt/Long.pm type=file
-c:\tlperl\lib/Getopt/Std.pm type=file
-c:\tlperl\lib/HTTP/Tiny.pm type=file
-c:\tlperl\lib/Hash/Util.pm type=file
-c:\tlperl\lib/Hash/Util/FieldHash.pm type=file
-c:\tlperl\lib/I18N/Collate.pm type=file
-c:\tlperl\lib/I18N/LangTags.pm type=file
-c:\tlperl\lib/I18N/LangTags/Detect.pm type=file
-c:\tlperl\lib/I18N/LangTags/List.pm type=file
-c:\tlperl\lib/IO.pm type=file
-c:\tlperl\lib/IO/Compress/Adapter/Bzip2.pm type=file
-c:\tlperl\lib/IO/Compress/Adapter/Deflate.pm type=file
-c:\tlperl\lib/IO/Compress/Adapter/Identity.pm type=file
-c:\tlperl\lib/IO/Compress/Base.pm type=file
-c:\tlperl\lib/IO/Compress/Base/Common.pm type=file
-c:\tlperl\lib/IO/Compress/Bzip2.pm type=file
-c:\tlperl\lib/IO/Compress/Deflate.pm type=file
-c:\tlperl\lib/IO/Compress/FAQ.pod type=file
-c:\tlperl\lib/IO/Compress/Gzip.pm type=file
-c:\tlperl\lib/IO/Compress/Gzip/Constants.pm type=file
-c:\tlperl\lib/IO/Compress/RawDeflate.pm type=file
-c:\tlperl\lib/IO/Compress/Zip.pm type=file
-c:\tlperl\lib/IO/Compress/Zip/Constants.pm type=file
-c:\tlperl\lib/IO/Compress/Zlib/Constants.pm type=file
-c:\tlperl\lib/IO/Compress/Zlib/Extra.pm type=file
-c:\tlperl\lib/IO/Dir.pm type=file
-c:\tlperl\lib/IO/File.pm type=file
-c:\tlperl\lib/IO/Handle.pm type=file
-c:\tlperl\lib/IO/Pipe.pm type=file
-c:\tlperl\lib/IO/Poll.pm type=file
-c:\tlperl\lib/IO/Seekable.pm type=file
-c:\tlperl\lib/IO/Select.pm type=file
-c:\tlperl\lib/IO/Socket.pm type=file
-c:\tlperl\lib/IO/Socket/INET.pm type=file
-c:\tlperl\lib/IO/Socket/IP.pm type=file
-c:\tlperl\lib/IO/Socket/UNIX.pm type=file
-c:\tlperl\lib/IO/Uncompress/Adapter/Bunzip2.pm type=file
-c:\tlperl\lib/IO/Uncompress/Adapter/Identity.pm type=file
-c:\tlperl\lib/IO/Uncompress/Adapter/Inflate.pm type=file
-c:\tlperl\lib/IO/Uncompress/AnyInflate.pm type=file
-c:\tlperl\lib/IO/Uncompress/AnyUncompress.pm type=file
-c:\tlperl\lib/IO/Uncompress/Base.pm type=file
-c:\tlperl\lib/IO/Uncompress/Bunzip2.pm type=file
-c:\tlperl\lib/IO/Uncompress/Gunzip.pm type=file
-c:\tlperl\lib/IO/Uncompress/Inflate.pm type=file
-c:\tlperl\lib/IO/Uncompress/RawInflate.pm type=file
-c:\tlperl\lib/IO/Uncompress/Unzip.pm type=file
-c:\tlperl\lib/IO/Zlib.pm type=file
-c:\tlperl\lib/IPC/Cmd.pm type=file
-c:\tlperl\lib/IPC/Open2.pm type=file
-c:\tlperl\lib/IPC/Open3.pm type=file
-c:\tlperl\lib/JSON/PP.pm type=file
-c:\tlperl\lib/JSON/PP/Boolean.pm type=file
-c:\tlperl\lib/List/Util.pm type=file
-c:\tlperl\lib/List/Util/XS.pm type=file
-c:\tlperl\lib/Locale/Codes.pm type=file
-c:\tlperl\lib/Locale/Codes.pod type=file
-c:\tlperl\lib/Locale/Codes/API.pod type=file
-c:\tlperl\lib/Locale/Codes/Changes.pod type=file
-c:\tlperl\lib/Locale/Codes/Constants.pm type=file
-c:\tlperl\lib/Locale/Codes/Country.pm type=file
-c:\tlperl\lib/Locale/Codes/Country.pod type=file
-c:\tlperl\lib/Locale/Codes/Country_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/Country_Retired.pm type=file
-c:\tlperl\lib/Locale/Codes/Currency.pm type=file
-c:\tlperl\lib/Locale/Codes/Currency.pod type=file
-c:\tlperl\lib/Locale/Codes/Currency_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/Currency_Retired.pm type=file
-c:\tlperl\lib/Locale/Codes/LangExt.pm type=file
-c:\tlperl\lib/Locale/Codes/LangExt.pod type=file
-c:\tlperl\lib/Locale/Codes/LangExt_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/LangExt_Retired.pm type=file
-c:\tlperl\lib/Locale/Codes/LangFam.pm type=file
-c:\tlperl\lib/Locale/Codes/LangFam.pod type=file
-c:\tlperl\lib/Locale/Codes/LangFam_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/LangFam_Retired.pm type=file
-c:\tlperl\lib/Locale/Codes/LangVar.pm type=file
-c:\tlperl\lib/Locale/Codes/LangVar.pod type=file
-c:\tlperl\lib/Locale/Codes/LangVar_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/LangVar_Retired.pm type=file
-c:\tlperl\lib/Locale/Codes/Language.pm type=file
-c:\tlperl\lib/Locale/Codes/Language.pod type=file
-c:\tlperl\lib/Locale/Codes/Language_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/Language_Retired.pm type=file
-c:\tlperl\lib/Locale/Codes/Script.pm type=file
-c:\tlperl\lib/Locale/Codes/Script.pod type=file
-c:\tlperl\lib/Locale/Codes/Script_Codes.pm type=file
-c:\tlperl\lib/Locale/Codes/Script_Retired.pm type=file
-c:\tlperl\lib/Locale/Country.pm type=file
-c:\tlperl\lib/Locale/Country.pod type=file
-c:\tlperl\lib/Locale/Currency.pm type=file
-c:\tlperl\lib/Locale/Currency.pod type=file
-c:\tlperl\lib/Locale/Language.pm type=file
-c:\tlperl\lib/Locale/Language.pod type=file
-c:\tlperl\lib/Locale/Maketext.pm type=file
-c:\tlperl\lib/Locale/Maketext.pod type=file
-c:\tlperl\lib/Locale/Maketext/Cookbook.pod type=file
-c:\tlperl\lib/Locale/Maketext/Guts.pm type=file
-c:\tlperl\lib/Locale/Maketext/GutsLoader.pm type=file
-c:\tlperl\lib/Locale/Maketext/Simple.pm type=file
-c:\tlperl\lib/Locale/Maketext/TPJ13.pod type=file
-c:\tlperl\lib/Locale/Script.pm type=file
-c:\tlperl\lib/Locale/Script.pod type=file
-c:\tlperl\lib/MIME/Base64.pm type=file
-c:\tlperl\lib/MIME/QuotedPrint.pm type=file
-c:\tlperl\lib/Math/BigFloat.pm type=file
-c:\tlperl\lib/Math/BigFloat/Trace.pm type=file
-c:\tlperl\lib/Math/BigInt.pm type=file
-c:\tlperl\lib/Math/BigInt/Calc.pm type=file
-c:\tlperl\lib/Math/BigInt/CalcEmu.pm type=file
-c:\tlperl\lib/Math/BigInt/FastCalc.pm type=file
-c:\tlperl\lib/Math/BigInt/Trace.pm type=file
-c:\tlperl\lib/Math/BigRat.pm type=file
-c:\tlperl\lib/Math/Complex.pm type=file
-c:\tlperl\lib/Math/Trig.pm type=file
-c:\tlperl\lib/Memoize.pm type=file
-c:\tlperl\lib/Memoize/AnyDBM_File.pm type=file
-c:\tlperl\lib/Memoize/Expire.pm type=file
-c:\tlperl\lib/Memoize/ExpireFile.pm type=file
-c:\tlperl\lib/Memoize/ExpireTest.pm type=file
-c:\tlperl\lib/Memoize/NDBM_File.pm type=file
-c:\tlperl\lib/Memoize/SDBM_File.pm type=file
-c:\tlperl\lib/Memoize/Storable.pm type=file
-c:\tlperl\lib/Module/CoreList.pm type=file
-c:\tlperl\lib/Module/CoreList.pod type=file
-c:\tlperl\lib/Module/CoreList/TieHashDelta.pm type=file
-c:\tlperl\lib/Module/CoreList/Utils.pm type=file
-c:\tlperl\lib/Module/Load.pm type=file
-c:\tlperl\lib/Module/Load/Conditional.pm type=file
-c:\tlperl\lib/Module/Loaded.pm type=file
-c:\tlperl\lib/Module/Metadata.pm type=file
-c:\tlperl\lib/NEXT.pm type=file
-c:\tlperl\lib/Net/Cmd.pm type=file
-c:\tlperl\lib/Net/Config.pm type=file
-c:\tlperl\lib/Net/Domain.pm type=file
-c:\tlperl\lib/Net/FTP.pm type=file
-c:\tlperl\lib/Net/FTP/A.pm type=file
-c:\tlperl\lib/Net/FTP/E.pm type=file
-c:\tlperl\lib/Net/FTP/I.pm type=file
-c:\tlperl\lib/Net/FTP/L.pm type=file
-c:\tlperl\lib/Net/FTP/dataconn.pm type=file
-c:\tlperl\lib/Net/NNTP.pm type=file
-c:\tlperl\lib/Net/Netrc.pm type=file
-c:\tlperl\lib/Net/POP3.pm type=file
-c:\tlperl\lib/Net/Ping.pm type=file
-c:\tlperl\lib/Net/SMTP.pm type=file
-c:\tlperl\lib/Net/Time.pm type=file
-c:\tlperl\lib/Net/hostent.pm type=file
-c:\tlperl\lib/Net/libnetFAQ.pod type=file
-c:\tlperl\lib/Net/netent.pm type=file
-c:\tlperl\lib/Net/protoent.pm type=file
-c:\tlperl\lib/Net/servent.pm type=file
-c:\tlperl\lib/O.pm type=file
-c:\tlperl\lib/Opcode.pm type=file
-c:\tlperl\lib/POSIX.pm type=file
-c:\tlperl\lib/POSIX.pod type=file
-c:\tlperl\lib/Params/Check.pm type=file
-c:\tlperl\lib/Parse/CPAN/Meta.pm type=file
-c:\tlperl\lib/Perl/OSType.pm type=file
-c:\tlperl\lib/PerlIO.pm type=file
-c:\tlperl\lib/PerlIO/encoding.pm type=file
-c:\tlperl\lib/PerlIO/mmap.pm type=file
-c:\tlperl\lib/PerlIO/scalar.pm type=file
-c:\tlperl\lib/PerlIO/via.pm type=file
-c:\tlperl\lib/PerlIO/via/QuotedPrint.pm type=file
-c:\tlperl\lib/Pod/Checker.pm type=file
-c:\tlperl\lib/Pod/Escapes.pm type=file
-c:\tlperl\lib/Pod/Find.pm type=file
-c:\tlperl\lib/Pod/Functions.pm type=file
-c:\tlperl\lib/Pod/Html.pm type=file
-c:\tlperl\lib/Pod/InputObjects.pm type=file
-c:\tlperl\lib/Pod/Man.pm type=file
-c:\tlperl\lib/Pod/ParseLink.pm type=file
-c:\tlperl\lib/Pod/ParseUtils.pm type=file
-c:\tlperl\lib/Pod/Parser.pm type=file
-c:\tlperl\lib/Pod/Perldoc.pm type=file
-c:\tlperl\lib/Pod/Perldoc/BaseTo.pm type=file
-c:\tlperl\lib/Pod/Perldoc/GetOptsOO.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToANSI.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToChecker.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToMan.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToNroff.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToPod.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToRtf.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToTerm.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToText.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToTk.pm type=file
-c:\tlperl\lib/Pod/Perldoc/ToXml.pm type=file
-c:\tlperl\lib/Pod/PlainText.pm type=file
-c:\tlperl\lib/Pod/Select.pm type=file
-c:\tlperl\lib/Pod/Simple.pm type=file
-c:\tlperl\lib/Pod/Simple.pod type=file
-c:\tlperl\lib/Pod/Simple/BlackBox.pm type=file
-c:\tlperl\lib/Pod/Simple/Checker.pm type=file
-c:\tlperl\lib/Pod/Simple/Debug.pm type=file
-c:\tlperl\lib/Pod/Simple/DumpAsText.pm type=file
-c:\tlperl\lib/Pod/Simple/DumpAsXML.pm type=file
-c:\tlperl\lib/Pod/Simple/HTML.pm type=file
-c:\tlperl\lib/Pod/Simple/HTMLBatch.pm type=file
-c:\tlperl\lib/Pod/Simple/HTMLLegacy.pm type=file
-c:\tlperl\lib/Pod/Simple/LinkSection.pm type=file
-c:\tlperl\lib/Pod/Simple/Methody.pm type=file
-c:\tlperl\lib/Pod/Simple/Progress.pm type=file
-c:\tlperl\lib/Pod/Simple/PullParser.pm type=file
-c:\tlperl\lib/Pod/Simple/PullParserEndToken.pm type=file
-c:\tlperl\lib/Pod/Simple/PullParserStartToken.pm type=file
-c:\tlperl\lib/Pod/Simple/PullParserTextToken.pm type=file
-c:\tlperl\lib/Pod/Simple/PullParserToken.pm type=file
-c:\tlperl\lib/Pod/Simple/RTF.pm type=file
-c:\tlperl\lib/Pod/Simple/Search.pm type=file
-c:\tlperl\lib/Pod/Simple/SimpleTree.pm type=file
-c:\tlperl\lib/Pod/Simple/Subclassing.pod type=file
-c:\tlperl\lib/Pod/Simple/Text.pm type=file
-c:\tlperl\lib/Pod/Simple/TextContent.pm type=file
-c:\tlperl\lib/Pod/Simple/TiedOutFH.pm type=file
-c:\tlperl\lib/Pod/Simple/Transcode.pm type=file
-c:\tlperl\lib/Pod/Simple/TranscodeDumb.pm type=file
-c:\tlperl\lib/Pod/Simple/TranscodeSmart.pm type=file
-c:\tlperl\lib/Pod/Simple/XHTML.pm type=file
-c:\tlperl\lib/Pod/Simple/XMLOutStream.pm type=file
-c:\tlperl\lib/Pod/Text.pm type=file
-c:\tlperl\lib/Pod/Text/Color.pm type=file
-c:\tlperl\lib/Pod/Text/Overstrike.pm type=file
-c:\tlperl\lib/Pod/Text/Termcap.pm type=file
-c:\tlperl\lib/Pod/Usage.pm type=file
-c:\tlperl\lib/SDBM_File.pm type=file
-c:\tlperl\lib/Safe.pm type=file
-c:\tlperl\lib/Scalar/Util.pm type=file
-c:\tlperl\lib/Search/Dict.pm type=file
-c:\tlperl\lib/SelectSaver.pm type=file
-c:\tlperl\lib/SelfLoader.pm type=file
-c:\tlperl\lib/Socket.pm type=file
-c:\tlperl\lib/Storable.pm type=file
-c:\tlperl\lib/Sub/Util.pm type=file
-c:\tlperl\lib/Symbol.pm type=file
-c:\tlperl\lib/Sys/Hostname.pm type=file
-c:\tlperl\lib/TAP/Base.pm type=file
-c:\tlperl\lib/TAP/Formatter/Base.pm type=file
-c:\tlperl\lib/TAP/Formatter/Color.pm type=file
-c:\tlperl\lib/TAP/Formatter/Console.pm type=file
-c:\tlperl\lib/TAP/Formatter/Console/ParallelSession.pm type=file
-c:\tlperl\lib/TAP/Formatter/Console/Session.pm type=file
-c:\tlperl\lib/TAP/Formatter/File.pm type=file
-c:\tlperl\lib/TAP/Formatter/File/Session.pm type=file
-c:\tlperl\lib/TAP/Formatter/Session.pm type=file
-c:\tlperl\lib/TAP/Harness.pm type=file
-c:\tlperl\lib/TAP/Harness/Beyond.pod type=file
-c:\tlperl\lib/TAP/Harness/Env.pm type=file
-c:\tlperl\lib/TAP/Object.pm type=file
-c:\tlperl\lib/TAP/Parser.pm type=file
-c:\tlperl\lib/TAP/Parser/Aggregator.pm type=file
-c:\tlperl\lib/TAP/Parser/Grammar.pm type=file
-c:\tlperl\lib/TAP/Parser/Iterator.pm type=file
-c:\tlperl\lib/TAP/Parser/Iterator/Array.pm type=file
-c:\tlperl\lib/TAP/Parser/Iterator/Process.pm type=file
-c:\tlperl\lib/TAP/Parser/Iterator/Stream.pm type=file
-c:\tlperl\lib/TAP/Parser/IteratorFactory.pm type=file
-c:\tlperl\lib/TAP/Parser/Multiplexer.pm type=file
-c:\tlperl\lib/TAP/Parser/Result.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Bailout.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Comment.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Plan.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Pragma.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Test.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Unknown.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/Version.pm type=file
-c:\tlperl\lib/TAP/Parser/Result/YAML.pm type=file
-c:\tlperl\lib/TAP/Parser/ResultFactory.pm type=file
-c:\tlperl\lib/TAP/Parser/Scheduler.pm type=file
-c:\tlperl\lib/TAP/Parser/Scheduler/Job.pm type=file
-c:\tlperl\lib/TAP/Parser/Scheduler/Spinner.pm type=file
-c:\tlperl\lib/TAP/Parser/Source.pm type=file
-c:\tlperl\lib/TAP/Parser/SourceHandler.pm type=file
-c:\tlperl\lib/TAP/Parser/SourceHandler/Executable.pm type=file
-c:\tlperl\lib/TAP/Parser/SourceHandler/File.pm type=file
-c:\tlperl\lib/TAP/Parser/SourceHandler/Handle.pm type=file
-c:\tlperl\lib/TAP/Parser/SourceHandler/Perl.pm type=file
-c:\tlperl\lib/TAP/Parser/SourceHandler/RawTAP.pm type=file
-c:\tlperl\lib/TAP/Parser/YAMLish/Reader.pm type=file
-c:\tlperl\lib/TAP/Parser/YAMLish/Writer.pm type=file
-c:\tlperl\lib/Term/ANSIColor.pm type=file
-c:\tlperl\lib/Term/Cap.pm type=file
-c:\tlperl\lib/Term/Complete.pm type=file
-c:\tlperl\lib/Term/ReadLine.pm type=file
-c:\tlperl\lib/Test.pm type=file
-c:\tlperl\lib/Test/Builder.pm type=file
-c:\tlperl\lib/Test/Builder/IO/Scalar.pm type=file
-c:\tlperl\lib/Test/Builder/Module.pm type=file
-c:\tlperl\lib/Test/Builder/Tester.pm type=file
-c:\tlperl\lib/Test/Builder/Tester/Color.pm type=file
-c:\tlperl\lib/Test/Harness.pm type=file
-c:\tlperl\lib/Test/More.pm type=file
-c:\tlperl\lib/Test/Simple.pm type=file
-c:\tlperl\lib/Test/Tester.pm type=file
-c:\tlperl\lib/Test/Tester/Capture.pm type=file
-c:\tlperl\lib/Test/Tester/CaptureRunner.pm type=file
-c:\tlperl\lib/Test/Tester/Delegate.pm type=file
-c:\tlperl\lib/Test/Tutorial.pod type=file
-c:\tlperl\lib/Test/use/ok.pm type=file
-c:\tlperl\lib/Text/Abbrev.pm type=file
-c:\tlperl\lib/Text/Balanced.pm type=file
-c:\tlperl\lib/Text/ParseWords.pm type=file
-c:\tlperl\lib/Text/Tabs.pm type=file
-c:\tlperl\lib/Text/Wrap.pm type=file
-c:\tlperl\lib/Thread.pm type=file
-c:\tlperl\lib/Thread/Queue.pm type=file
-c:\tlperl\lib/Thread/Semaphore.pm type=file
-c:\tlperl\lib/Tie/Array.pm type=file
-c:\tlperl\lib/Tie/File.pm type=file
-c:\tlperl\lib/Tie/Handle.pm type=file
-c:\tlperl\lib/Tie/Hash.pm type=file
-c:\tlperl\lib/Tie/Hash/NamedCapture.pm type=file
-c:\tlperl\lib/Tie/Memoize.pm type=file
-c:\tlperl\lib/Tie/RefHash.pm type=file
-c:\tlperl\lib/Tie/Scalar.pm type=file
-c:\tlperl\lib/Tie/StdHandle.pm type=file
-c:\tlperl\lib/Tie/SubstrHash.pm type=file
-c:\tlperl\lib/Time/HiRes.pm type=file
-c:\tlperl\lib/Time/Local.pm type=file
-c:\tlperl\lib/Time/Piece.pm type=file
-c:\tlperl\lib/Time/Seconds.pm type=file
-c:\tlperl\lib/Time/gmtime.pm type=file
-c:\tlperl\lib/Time/localtime.pm type=file
-c:\tlperl\lib/Time/tm.pm type=file
-c:\tlperl\lib/UNIVERSAL.pm type=file
-c:\tlperl\lib/Unicode/Collate.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/Big5.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/GB2312.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/JISX0208.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/Korean.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/Pinyin.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/Stroke.pm type=file
-c:\tlperl\lib/Unicode/Collate/CJK/Zhuyin.pm type=file
-c:\tlperl\lib/Unicode/Collate/Locale.pm type=file
-c:\tlperl\lib/Unicode/Collate/Locale/af.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ar.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/as.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/az.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/be.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/bg.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/bn.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ca.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/cs.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/cy.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/da.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/de_phone.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ee.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/eo.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/es.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/es_trad.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/et.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/fa.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/fi.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/fi_phone.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/fil.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/fo.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/fr.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/gu.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ha.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/haw.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/hi.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/hr.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/hu.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/hy.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ig.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/is.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ja.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/kk.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/kl.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/kn.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ko.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/kok.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ln.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/lt.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/lv.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/mk.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ml.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/mr.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/mt.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/nb.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/nn.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/nso.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/om.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/or.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/pa.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/pl.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ro.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ru.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sa.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/se.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/si.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/si_dict.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sk.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sl.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sq.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sr.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sv.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/sv_refo.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ta.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/te.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/th.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/tn.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/to.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/tr.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/uk.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/ur.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/vi.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/wae.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/wo.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/yo.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/zh.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/zh_big5.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/zh_gb.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/zh_pin.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/zh_strk.pl type=file
-c:\tlperl\lib/Unicode/Collate/Locale/zh_zhu.pl type=file
-c:\tlperl\lib/Unicode/Collate/allkeys.txt type=file
-c:\tlperl\lib/Unicode/Collate/keys.txt type=file
-c:\tlperl\lib/Unicode/Normalize.pm type=file
-c:\tlperl\lib/Unicode/UCD.pm type=file
-c:\tlperl\lib/User/grent.pm type=file
-c:\tlperl\lib/User/pwent.pm type=file
-c:\tlperl\lib/Win32.pm type=file
-c:\tlperl\lib/Win32API/File.pm type=file
-c:\tlperl\lib/Win32API/File/cFile.pc type=file
-c:\tlperl\lib/Win32CORE.pm type=file
-c:\tlperl\lib/XSLoader.pm type=file
-c:\tlperl\lib/_charnames.pm type=file
-c:\tlperl\lib/arybase.pm type=file
-c:\tlperl\lib/attributes.pm type=file
-c:\tlperl\lib/auto/B/B.dll type=file
-c:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.dll type=file
-c:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.dll type=file
-c:\tlperl\lib/auto/Cwd/Cwd.dll type=file
-c:\tlperl\lib/auto/Data/Dumper/Dumper.dll type=file
-c:\tlperl\lib/auto/Devel/Peek/Peek.dll type=file
-c:\tlperl\lib/auto/Digest/MD5/MD5.dll type=file
-c:\tlperl\lib/auto/Digest/SHA/SHA.dll type=file
-c:\tlperl\lib/auto/Encode/Byte/Byte.dll type=file
-c:\tlperl\lib/auto/Encode/CN/CN.dll type=file
-c:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.dll type=file
-c:\tlperl\lib/auto/Encode/Encode.dll type=file
-c:\tlperl\lib/auto/Encode/JP/JP.dll type=file
-c:\tlperl\lib/auto/Encode/KR/KR.dll type=file
-c:\tlperl\lib/auto/Encode/Symbol/Symbol.dll type=file
-c:\tlperl\lib/auto/Encode/TW/TW.dll type=file
-c:\tlperl\lib/auto/Encode/Unicode/Unicode.dll type=file
-c:\tlperl\lib/auto/Fcntl/Fcntl.dll type=file
-c:\tlperl\lib/auto/File/DosGlob/DosGlob.dll type=file
-c:\tlperl\lib/auto/File/Glob/Glob.dll type=file
-c:\tlperl\lib/auto/Filter/Util/Call/Call.dll type=file
-c:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.dll type=file
-c:\tlperl\lib/auto/Hash/Util/Util.dll type=file
-c:\tlperl\lib/auto/IO/IO.dll type=file
-c:\tlperl\lib/auto/List/Util/Util.dll type=file
-c:\tlperl\lib/auto/MIME/Base64/Base64.dll type=file
-c:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.dll type=file
-c:\tlperl\lib/auto/Opcode/Opcode.dll type=file
-c:\tlperl\lib/auto/POSIX/POSIX.dll type=file
-c:\tlperl\lib/auto/PerlIO/encoding/encoding.dll type=file
-c:\tlperl\lib/auto/PerlIO/mmap/mmap.dll type=file
-c:\tlperl\lib/auto/PerlIO/scalar/scalar.dll type=file
-c:\tlperl\lib/auto/PerlIO/via/via.dll type=file
-c:\tlperl\lib/auto/SDBM_File/SDBM_File.dll type=file
-c:\tlperl\lib/auto/Socket/Socket.dll type=file
-c:\tlperl\lib/auto/Storable/Storable.dll type=file
-c:\tlperl\lib/auto/Sys/Hostname/Hostname.dll type=file
-c:\tlperl\lib/auto/Tie/Hash/NamedCapture/NamedCapture.dll type=file
-c:\tlperl\lib/auto/Time/HiRes/HiRes.dll type=file
-c:\tlperl\lib/auto/Time/Piece/Piece.dll type=file
-c:\tlperl\lib/auto/Unicode/Collate/Collate.dll type=file
-c:\tlperl\lib/auto/Unicode/Normalize/Normalize.dll type=file
-c:\tlperl\lib/auto/Win32/Win32.dll type=file
-c:\tlperl\lib/auto/Win32API/File/File.dll type=file
-c:\tlperl\lib/auto/Win32CORE/extralibs.ld type=file
-c:\tlperl\lib/auto/arybase/arybase.dll type=file
-c:\tlperl\lib/auto/attributes/attributes.dll type=file
-c:\tlperl\lib/auto/mro/mro.dll type=file
-c:\tlperl\lib/auto/re/re.dll type=file
-c:\tlperl\lib/auto/threads/shared/shared.dll type=file
-c:\tlperl\lib/auto/threads/threads.dll type=file
-c:\tlperl\lib/autodie.pm type=file
-c:\tlperl\lib/autodie/Scope/Guard.pm type=file
-c:\tlperl\lib/autodie/Scope/GuardStack.pm type=file
-c:\tlperl\lib/autodie/Util.pm type=file
-c:\tlperl\lib/autodie/exception.pm type=file
-c:\tlperl\lib/autodie/exception/system.pm type=file
-c:\tlperl\lib/autodie/hints.pm type=file
-c:\tlperl\lib/autodie/skip.pm type=file
-c:\tlperl\lib/autouse.pm type=file
-c:\tlperl\lib/base.pm type=file
-c:\tlperl\lib/bigint.pm type=file
-c:\tlperl\lib/bignum.pm type=file
-c:\tlperl\lib/bigrat.pm type=file
-c:\tlperl\lib/blib.pm type=file
-c:\tlperl\lib/bytes.pm type=file
-c:\tlperl\lib/bytes_heavy.pl type=file
-c:\tlperl\lib/charnames.pm type=file
-c:\tlperl\lib/constant.pm type=file
-c:\tlperl\lib/deprecate.pm type=file
-c:\tlperl\lib/diagnostics.pm type=file
-c:\tlperl\lib/dumpvar.pl type=file
-c:\tlperl\lib/encoding.pm type=file
-c:\tlperl\lib/encoding/warnings.pm type=file
-c:\tlperl\lib/experimental.pm type=file
-c:\tlperl\lib/feature.pm type=file
-c:\tlperl\lib/fields.pm type=file
-c:\tlperl\lib/filetest.pm type=file
-c:\tlperl\lib/if.pm type=file
-c:\tlperl\lib/integer.pm type=file
-c:\tlperl\lib/less.pm type=file
-c:\tlperl\lib/lib.pm type=file
-c:\tlperl\lib/locale.pm type=file
-c:\tlperl\lib/meta_notation.pm type=file
-c:\tlperl\lib/mro.pm type=file
-c:\tlperl\lib/ok.pm type=file
-c:\tlperl\lib/open.pm type=file
-c:\tlperl\lib/ops.pm type=file
-c:\tlperl\lib/overload.pm type=file
-c:\tlperl\lib/overload/numbers.pm type=file
-c:\tlperl\lib/overloading.pm type=file
-c:\tlperl\lib/parent.pm type=file
-c:\tlperl\lib/perl5db.pl type=file
-c:\tlperl\lib/perlfaq.pm type=file
-c:\tlperl\lib/pods/perl.pod type=file
-c:\tlperl\lib/pods/perl5004delta.pod type=file
-c:\tlperl\lib/pods/perl5005delta.pod type=file
-c:\tlperl\lib/pods/perl5100delta.pod type=file
-c:\tlperl\lib/pods/perl5101delta.pod type=file
-c:\tlperl\lib/pods/perl5120delta.pod type=file
-c:\tlperl\lib/pods/perl5121delta.pod type=file
-c:\tlperl\lib/pods/perl5122delta.pod type=file
-c:\tlperl\lib/pods/perl5123delta.pod type=file
-c:\tlperl\lib/pods/perl5124delta.pod type=file
-c:\tlperl\lib/pods/perl5125delta.pod type=file
-c:\tlperl\lib/pods/perl5140delta.pod type=file
-c:\tlperl\lib/pods/perl5141delta.pod type=file
-c:\tlperl\lib/pods/perl5142delta.pod type=file
-c:\tlperl\lib/pods/perl5143delta.pod type=file
-c:\tlperl\lib/pods/perl5144delta.pod type=file
-c:\tlperl\lib/pods/perl5160delta.pod type=file
-c:\tlperl\lib/pods/perl5161delta.pod type=file
-c:\tlperl\lib/pods/perl5162delta.pod type=file
-c:\tlperl\lib/pods/perl5163delta.pod type=file
-c:\tlperl\lib/pods/perl5180delta.pod type=file
-c:\tlperl\lib/pods/perl5181delta.pod type=file
-c:\tlperl\lib/pods/perl5182delta.pod type=file
-c:\tlperl\lib/pods/perl5184delta.pod type=file
-c:\tlperl\lib/pods/perl5200delta.pod type=file
-c:\tlperl\lib/pods/perl5201delta.pod type=file
-c:\tlperl\lib/pods/perl5202delta.pod type=file
-c:\tlperl\lib/pods/perl5203delta.pod type=file
-c:\tlperl\lib/pods/perl5220delta.pod type=file
-c:\tlperl\lib/pods/perl5221delta.pod type=file
-c:\tlperl\lib/pods/perl5222delta.pod type=file
-c:\tlperl\lib/pods/perl5240delta.pod type=file
-c:\tlperl\lib/pods/perl5241delta.pod type=file
-c:\tlperl\lib/pods/perl561delta.pod type=file
-c:\tlperl\lib/pods/perl56delta.pod type=file
-c:\tlperl\lib/pods/perl581delta.pod type=file
-c:\tlperl\lib/pods/perl582delta.pod type=file
-c:\tlperl\lib/pods/perl583delta.pod type=file
-c:\tlperl\lib/pods/perl584delta.pod type=file
-c:\tlperl\lib/pods/perl585delta.pod type=file
-c:\tlperl\lib/pods/perl586delta.pod type=file
-c:\tlperl\lib/pods/perl587delta.pod type=file
-c:\tlperl\lib/pods/perl588delta.pod type=file
-c:\tlperl\lib/pods/perl589delta.pod type=file
-c:\tlperl\lib/pods/perl58delta.pod type=file
-c:\tlperl\lib/pods/perlaix.pod type=file
-c:\tlperl\lib/pods/perlamiga.pod type=file
-c:\tlperl\lib/pods/perlandroid.pod type=file
-c:\tlperl\lib/pods/perlapi.pod type=file
-c:\tlperl\lib/pods/perlapio.pod type=file
-c:\tlperl\lib/pods/perlartistic.pod type=file
-c:\tlperl\lib/pods/perlbook.pod type=file
-c:\tlperl\lib/pods/perlboot.pod type=file
-c:\tlperl\lib/pods/perlbot.pod type=file
-c:\tlperl\lib/pods/perlbs2000.pod type=file
-c:\tlperl\lib/pods/perlcall.pod type=file
-c:\tlperl\lib/pods/perlce.pod type=file
-c:\tlperl\lib/pods/perlcheat.pod type=file
-c:\tlperl\lib/pods/perlclib.pod type=file
-c:\tlperl\lib/pods/perlcn.pod type=file
-c:\tlperl\lib/pods/perlcommunity.pod type=file
-c:\tlperl\lib/pods/perlcygwin.pod type=file
-c:\tlperl\lib/pods/perldata.pod type=file
-c:\tlperl\lib/pods/perldbmfilter.pod type=file
-c:\tlperl\lib/pods/perldebguts.pod type=file
-c:\tlperl\lib/pods/perldebtut.pod type=file
-c:\tlperl\lib/pods/perldebug.pod type=file
-c:\tlperl\lib/pods/perldelta.pod type=file
-c:\tlperl\lib/pods/perldiag.pod type=file
-c:\tlperl\lib/pods/perldoc.pod type=file
-c:\tlperl\lib/pods/perldos.pod type=file
-c:\tlperl\lib/pods/perldsc.pod type=file
-c:\tlperl\lib/pods/perldtrace.pod type=file
-c:\tlperl\lib/pods/perlebcdic.pod type=file
-c:\tlperl\lib/pods/perlembed.pod type=file
-c:\tlperl\lib/pods/perlexperiment.pod type=file
-c:\tlperl\lib/pods/perlfaq.pod type=file
-c:\tlperl\lib/pods/perlfaq1.pod type=file
-c:\tlperl\lib/pods/perlfaq2.pod type=file
-c:\tlperl\lib/pods/perlfaq3.pod type=file
-c:\tlperl\lib/pods/perlfaq4.pod type=file
-c:\tlperl\lib/pods/perlfaq5.pod type=file
-c:\tlperl\lib/pods/perlfaq6.pod type=file
-c:\tlperl\lib/pods/perlfaq7.pod type=file
-c:\tlperl\lib/pods/perlfaq8.pod type=file
-c:\tlperl\lib/pods/perlfaq9.pod type=file
-c:\tlperl\lib/pods/perlfilter.pod type=file
-c:\tlperl\lib/pods/perlfork.pod type=file
-c:\tlperl\lib/pods/perlform.pod type=file
-c:\tlperl\lib/pods/perlfreebsd.pod type=file
-c:\tlperl\lib/pods/perlfunc.pod type=file
-c:\tlperl\lib/pods/perlgit.pod type=file
-c:\tlperl\lib/pods/perlglossary.pod type=file
-c:\tlperl\lib/pods/perlgpl.pod type=file
-c:\tlperl\lib/pods/perlguts.pod type=file
-c:\tlperl\lib/pods/perlhack.pod type=file
-c:\tlperl\lib/pods/perlhacktips.pod type=file
-c:\tlperl\lib/pods/perlhacktut.pod type=file
-c:\tlperl\lib/pods/perlhaiku.pod type=file
-c:\tlperl\lib/pods/perlhist.pod type=file
-c:\tlperl\lib/pods/perlhpux.pod type=file
-c:\tlperl\lib/pods/perlhurd.pod type=file
-c:\tlperl\lib/pods/perlintern.pod type=file
-c:\tlperl\lib/pods/perlinterp.pod type=file
-c:\tlperl\lib/pods/perlintro.pod type=file
-c:\tlperl\lib/pods/perliol.pod type=file
-c:\tlperl\lib/pods/perlipc.pod type=file
-c:\tlperl\lib/pods/perlirix.pod type=file
-c:\tlperl\lib/pods/perljp.pod type=file
-c:\tlperl\lib/pods/perlko.pod type=file
-c:\tlperl\lib/pods/perllexwarn.pod type=file
-c:\tlperl\lib/pods/perllinux.pod type=file
-c:\tlperl\lib/pods/perllocale.pod type=file
-c:\tlperl\lib/pods/perllol.pod type=file
-c:\tlperl\lib/pods/perlmacos.pod type=file
-c:\tlperl\lib/pods/perlmacosx.pod type=file
-c:\tlperl\lib/pods/perlmod.pod type=file
-c:\tlperl\lib/pods/perlmodinstall.pod type=file
-c:\tlperl\lib/pods/perlmodlib.pod type=file
-c:\tlperl\lib/pods/perlmodstyle.pod type=file
-c:\tlperl\lib/pods/perlmroapi.pod type=file
-c:\tlperl\lib/pods/perlnetware.pod type=file
-c:\tlperl\lib/pods/perlnewmod.pod type=file
-c:\tlperl\lib/pods/perlnumber.pod type=file
-c:\tlperl\lib/pods/perlobj.pod type=file
-c:\tlperl\lib/pods/perlootut.pod type=file
-c:\tlperl\lib/pods/perlop.pod type=file
-c:\tlperl\lib/pods/perlopenbsd.pod type=file
-c:\tlperl\lib/pods/perlopentut.pod type=file
-c:\tlperl\lib/pods/perlos2.pod type=file
-c:\tlperl\lib/pods/perlos390.pod type=file
-c:\tlperl\lib/pods/perlos400.pod type=file
-c:\tlperl\lib/pods/perlpacktut.pod type=file
-c:\tlperl\lib/pods/perlperf.pod type=file
-c:\tlperl\lib/pods/perlplan9.pod type=file
-c:\tlperl\lib/pods/perlpod.pod type=file
-c:\tlperl\lib/pods/perlpodspec.pod type=file
-c:\tlperl\lib/pods/perlpodstyle.pod type=file
-c:\tlperl\lib/pods/perlpolicy.pod type=file
-c:\tlperl\lib/pods/perlport.pod type=file
-c:\tlperl\lib/pods/perlpragma.pod type=file
-c:\tlperl\lib/pods/perlqnx.pod type=file
-c:\tlperl\lib/pods/perlre.pod type=file
-c:\tlperl\lib/pods/perlreapi.pod type=file
-c:\tlperl\lib/pods/perlrebackslash.pod type=file
-c:\tlperl\lib/pods/perlrecharclass.pod type=file
-c:\tlperl\lib/pods/perlref.pod type=file
-c:\tlperl\lib/pods/perlreftut.pod type=file
-c:\tlperl\lib/pods/perlreguts.pod type=file
-c:\tlperl\lib/pods/perlrepository.pod type=file
-c:\tlperl\lib/pods/perlrequick.pod type=file
-c:\tlperl\lib/pods/perlreref.pod type=file
-c:\tlperl\lib/pods/perlretut.pod type=file
-c:\tlperl\lib/pods/perlriscos.pod type=file
-c:\tlperl\lib/pods/perlrun.pod type=file
-c:\tlperl\lib/pods/perlsec.pod type=file
-c:\tlperl\lib/pods/perlsolaris.pod type=file
-c:\tlperl\lib/pods/perlsource.pod type=file
-c:\tlperl\lib/pods/perlstyle.pod type=file
-c:\tlperl\lib/pods/perlsub.pod type=file
-c:\tlperl\lib/pods/perlsymbian.pod type=file
-c:\tlperl\lib/pods/perlsyn.pod type=file
-c:\tlperl\lib/pods/perlsynology.pod type=file
-c:\tlperl\lib/pods/perlthrtut.pod type=file
-c:\tlperl\lib/pods/perltie.pod type=file
-c:\tlperl\lib/pods/perltoc.pod type=file
-c:\tlperl\lib/pods/perltodo.pod type=file
-c:\tlperl\lib/pods/perltooc.pod type=file
-c:\tlperl\lib/pods/perltoot.pod type=file
-c:\tlperl\lib/pods/perltrap.pod type=file
-c:\tlperl\lib/pods/perltru64.pod type=file
-c:\tlperl\lib/pods/perltw.pod type=file
-c:\tlperl\lib/pods/perlunicode.pod type=file
-c:\tlperl\lib/pods/perlunicook.pod type=file
-c:\tlperl\lib/pods/perlunifaq.pod type=file
-c:\tlperl\lib/pods/perluniintro.pod type=file
-c:\tlperl\lib/pods/perluniprops.pod type=file
-c:\tlperl\lib/pods/perlunitut.pod type=file
-c:\tlperl\lib/pods/perlutil.pod type=file
-c:\tlperl\lib/pods/perlvar.pod type=file
-c:\tlperl\lib/pods/perlvms.pod type=file
-c:\tlperl\lib/pods/perlvos.pod type=file
-c:\tlperl\lib/pods/perlwin32.pod type=file
-c:\tlperl\lib/pods/perlxs.pod type=file
-c:\tlperl\lib/pods/perlxstut.pod type=file
-c:\tlperl\lib/pods/perlxstypemap.pod type=file
-c:\tlperl\lib/re.pm type=file
-c:\tlperl\lib/sigtrap.pm type=file
-c:\tlperl\lib/sort.pm type=file
-c:\tlperl\lib/strict.pm type=file
-c:\tlperl\lib/subs.pm type=file
-c:\tlperl\lib/threads.pm type=file
-c:\tlperl\lib/threads/shared.pm type=file
-c:\tlperl\lib/unicore/Blocks.txt type=file
-c:\tlperl\lib/unicore/CombiningClass.pl type=file
-c:\tlperl\lib/unicore/Decomposition.pl type=file
-c:\tlperl\lib/unicore/Heavy.pl type=file
-c:\tlperl\lib/unicore/Name.pl type=file
-c:\tlperl\lib/unicore/Name.pm type=file
-c:\tlperl\lib/unicore/NamedSequences.txt type=file
-c:\tlperl\lib/unicore/SpecialCasing.txt type=file
-c:\tlperl\lib/unicore/To/Age.pl type=file
-c:\tlperl\lib/unicore/To/Bc.pl type=file
-c:\tlperl\lib/unicore/To/Bmg.pl type=file
-c:\tlperl\lib/unicore/To/Bpb.pl type=file
-c:\tlperl\lib/unicore/To/Bpt.pl type=file
-c:\tlperl\lib/unicore/To/Cf.pl type=file
-c:\tlperl\lib/unicore/To/Digit.pl type=file
-c:\tlperl\lib/unicore/To/Ea.pl type=file
-c:\tlperl\lib/unicore/To/Fold.pl type=file
-c:\tlperl\lib/unicore/To/GCB.pl type=file
-c:\tlperl\lib/unicore/To/Gc.pl type=file
-c:\tlperl\lib/unicore/To/Hst.pl type=file
-c:\tlperl\lib/unicore/To/InPC.pl type=file
-c:\tlperl\lib/unicore/To/InSC.pl type=file
-c:\tlperl\lib/unicore/To/Isc.pl type=file
-c:\tlperl\lib/unicore/To/Jg.pl type=file
-c:\tlperl\lib/unicore/To/Jt.pl type=file
-c:\tlperl\lib/unicore/To/Lb.pl type=file
-c:\tlperl\lib/unicore/To/Lc.pl type=file
-c:\tlperl\lib/unicore/To/Lower.pl type=file
-c:\tlperl\lib/unicore/To/NFCQC.pl type=file
-c:\tlperl\lib/unicore/To/NFDQC.pl type=file
-c:\tlperl\lib/unicore/To/NFKCCF.pl type=file
-c:\tlperl\lib/unicore/To/NFKCQC.pl type=file
-c:\tlperl\lib/unicore/To/NFKDQC.pl type=file
-c:\tlperl\lib/unicore/To/Na1.pl type=file
-c:\tlperl\lib/unicore/To/NameAlia.pl type=file
-c:\tlperl\lib/unicore/To/Nt.pl type=file
-c:\tlperl\lib/unicore/To/Nv.pl type=file
-c:\tlperl\lib/unicore/To/PerlDeci.pl type=file
-c:\tlperl\lib/unicore/To/SB.pl type=file
-c:\tlperl\lib/unicore/To/Sc.pl type=file
-c:\tlperl\lib/unicore/To/Scx.pl type=file
-c:\tlperl\lib/unicore/To/Tc.pl type=file
-c:\tlperl\lib/unicore/To/Title.pl type=file
-c:\tlperl\lib/unicore/To/Uc.pl type=file
-c:\tlperl\lib/unicore/To/Upper.pl type=file
-c:\tlperl\lib/unicore/To/WB.pl type=file
-c:\tlperl\lib/unicore/To/_PerlLB.pl type=file
-c:\tlperl\lib/unicore/To/_PerlWB.pl type=file
-c:\tlperl\lib/unicore/UCD.pl type=file
-c:\tlperl\lib/unicore/lib/Age/NA.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V11.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V20.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V30.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V31.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V32.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V40.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V41.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V50.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V51.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V52.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V60.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V61.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V70.pl type=file
-c:\tlperl\lib/unicore/lib/Age/V80.pl type=file
-c:\tlperl\lib/unicore/lib/Alpha/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/AL.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/AN.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/B.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/BN.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/CS.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/EN.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/ES.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/ET.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/L.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/NSM.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/ON.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/R.pl type=file
-c:\tlperl\lib/unicore/lib/Bc/WS.pl type=file
-c:\tlperl\lib/unicore/lib/BidiC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/BidiM/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Blk/NB.pl type=file
-c:\tlperl\lib/unicore/lib/Bpt/C.pl type=file
-c:\tlperl\lib/unicore/lib/Bpt/N.pl type=file
-c:\tlperl\lib/unicore/lib/Bpt/O.pl type=file
-c:\tlperl\lib/unicore/lib/CE/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CI/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CWCF/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CWCM/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CWKCF/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CWL/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CWT/Y.pl type=file
-c:\tlperl\lib/unicore/lib/CWU/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Cased/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/A.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/AR.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/ATAR.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/B.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/BR.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/DB.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/NK.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/NR.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/OV.pl type=file
-c:\tlperl\lib/unicore/lib/Ccc/VR.pl type=file
-c:\tlperl\lib/unicore/lib/CompEx/Y.pl type=file
-c:\tlperl\lib/unicore/lib/DI/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Dash/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Dep/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Dia/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Com.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Enc.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Fin.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Font.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Init.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Iso.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Med.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Nar.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Nb.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/NonCanon.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Sqr.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Sub.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Sup.pl type=file
-c:\tlperl\lib/unicore/lib/Dt/Vert.pl type=file
-c:\tlperl\lib/unicore/lib/Ea/A.pl type=file
-c:\tlperl\lib/unicore/lib/Ea/H.pl type=file
-c:\tlperl\lib/unicore/lib/Ea/N.pl type=file
-c:\tlperl\lib/unicore/lib/Ea/Na.pl type=file
-c:\tlperl\lib/unicore/lib/Ea/W.pl type=file
-c:\tlperl\lib/unicore/lib/Ext/Y.pl type=file
-c:\tlperl\lib/unicore/lib/GCB/CN.pl type=file
-c:\tlperl\lib/unicore/lib/GCB/EX.pl type=file
-c:\tlperl\lib/unicore/lib/GCB/LV.pl type=file
-c:\tlperl\lib/unicore/lib/GCB/LVT.pl type=file
-c:\tlperl\lib/unicore/lib/GCB/SM.pl type=file
-c:\tlperl\lib/unicore/lib/GCB/XX.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/C.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Cf.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Cn.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/L.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/LC.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Ll.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Lm.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Lo.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Lu.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/M.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Mc.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Me.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Mn.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/N.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Nd.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Nl.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/No.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/P.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Pd.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Pe.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Pf.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Pi.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Po.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Ps.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/S.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Sc.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Sk.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Sm.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/So.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Z.pl type=file
-c:\tlperl\lib/unicore/lib/Gc/Zs.pl type=file
-c:\tlperl\lib/unicore/lib/GrBase/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Hex/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Hst/NA.pl type=file
-c:\tlperl\lib/unicore/lib/Hyphen/T.pl type=file
-c:\tlperl\lib/unicore/lib/IDC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/IDS/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Ideo/Y.pl type=file
-c:\tlperl\lib/unicore/lib/In/2_0.pl type=file
-c:\tlperl\lib/unicore/lib/In/2_1.pl type=file
-c:\tlperl\lib/unicore/lib/In/3_0.pl type=file
-c:\tlperl\lib/unicore/lib/In/3_1.pl type=file
-c:\tlperl\lib/unicore/lib/In/3_2.pl type=file
-c:\tlperl\lib/unicore/lib/In/4_0.pl type=file
-c:\tlperl\lib/unicore/lib/In/4_1.pl type=file
-c:\tlperl\lib/unicore/lib/In/5_0.pl type=file
-c:\tlperl\lib/unicore/lib/In/5_1.pl type=file
-c:\tlperl\lib/unicore/lib/In/5_2.pl type=file
-c:\tlperl\lib/unicore/lib/In/6_0.pl type=file
-c:\tlperl\lib/unicore/lib/In/6_1.pl type=file
-c:\tlperl\lib/unicore/lib/In/6_2.pl type=file
-c:\tlperl\lib/unicore/lib/In/6_3.pl type=file
-c:\tlperl\lib/unicore/lib/In/7_0.pl type=file
-c:\tlperl\lib/unicore/lib/In/8_0.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/Bottom.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/Left.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/LeftAndR.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/NA.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/Overstru.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/Right.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/Top.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/TopAndBo.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/TopAndL2.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/TopAndLe.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/TopAndRi.pl type=file
-c:\tlperl\lib/unicore/lib/InPC/VisualOr.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Avagraha.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Bindu.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Cantilla.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Consona2.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Consona3.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Consona4.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Consona5.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Consona6.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Consonan.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Invisibl.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Nukta.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Number.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Other.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/PureKill.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Syllable.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/ToneMark.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Virama.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Visarga.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/Vowel.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/VowelDep.pl type=file
-c:\tlperl\lib/unicore/lib/InSC/VowelInd.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Ain.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Alef.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Beh.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Dal.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/FarsiYeh.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Feh.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Gaf.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Hah.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Kaf.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Lam.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/NoJoinin.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Qaf.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Reh.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Sad.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Seen.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Waw.pl type=file
-c:\tlperl\lib/unicore/lib/Jg/Yeh.pl type=file
-c:\tlperl\lib/unicore/lib/Jt/C.pl type=file
-c:\tlperl\lib/unicore/lib/Jt/D.pl type=file
-c:\tlperl\lib/unicore/lib/Jt/R.pl type=file
-c:\tlperl\lib/unicore/lib/Jt/T.pl type=file
-c:\tlperl\lib/unicore/lib/Jt/U.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/AI.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/AL.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/BA.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/BB.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/CJ.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/CL.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/CM.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/EX.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/GL.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/ID.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/IN.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/IS.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/NS.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/OP.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/PO.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/PR.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/QU.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/SA.pl type=file
-c:\tlperl\lib/unicore/lib/Lb/XX.pl type=file
-c:\tlperl\lib/unicore/lib/Lower/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Math/Y.pl type=file
-c:\tlperl\lib/unicore/lib/NFCQC/M.pl type=file
-c:\tlperl\lib/unicore/lib/NFCQC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/NFDQC/N.pl type=file
-c:\tlperl\lib/unicore/lib/NFDQC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/NFKCQC/N.pl type=file
-c:\tlperl\lib/unicore/lib/NFKCQC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/NFKDQC/N.pl type=file
-c:\tlperl\lib/unicore/lib/NFKDQC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Nt/Di.pl type=file
-c:\tlperl\lib/unicore/lib/Nt/None.pl type=file
-c:\tlperl\lib/unicore/lib/Nt/Nu.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/0.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/1.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/10.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/100.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/1000.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/10000.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/11.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/12.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/13.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/14.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/15.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/16.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/17.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/18.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/19.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/1_2.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/1_3.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/1_4.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/1_8.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/2.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/20.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/200.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/2_3.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/3.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/30.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/300.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/3_4.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/4.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/40.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/400.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/5.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/50.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/500.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/5000.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/50000.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/6.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/60.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/600.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/7.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/70.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/700.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/8.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/80.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/800.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/9.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/90.pl type=file
-c:\tlperl\lib/unicore/lib/Nv/900.pl type=file
-c:\tlperl\lib/unicore/lib/PatSyn/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Alnum.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Assigned.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Blank.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Graph.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/PerlWord.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/PosixPun.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Print.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/SpacePer.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Title.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/Word.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/XPosixPu.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlAny.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlCh2.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlCha.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlFol.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlIDC.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlIDS.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlNch.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlPat.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlPr2.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlPro.pl type=file
-c:\tlperl\lib/unicore/lib/Perl/_PerlQuo.pl type=file
-c:\tlperl\lib/unicore/lib/QMark/Y.pl type=file
-c:\tlperl\lib/unicore/lib/SB/AT.pl type=file
-c:\tlperl\lib/unicore/lib/SB/CL.pl type=file
-c:\tlperl\lib/unicore/lib/SB/EX.pl type=file
-c:\tlperl\lib/unicore/lib/SB/FO.pl type=file
-c:\tlperl\lib/unicore/lib/SB/LE.pl type=file
-c:\tlperl\lib/unicore/lib/SB/LO.pl type=file
-c:\tlperl\lib/unicore/lib/SB/NU.pl type=file
-c:\tlperl\lib/unicore/lib/SB/SC.pl type=file
-c:\tlperl\lib/unicore/lib/SB/ST.pl type=file
-c:\tlperl\lib/unicore/lib/SB/Sp.pl type=file
-c:\tlperl\lib/unicore/lib/SB/UP.pl type=file
-c:\tlperl\lib/unicore/lib/SB/XX.pl type=file
-c:\tlperl\lib/unicore/lib/SD/Y.pl type=file
-c:\tlperl\lib/unicore/lib/STerm/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Arab.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Armn.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Beng.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Cham.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Cprt.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Cyrl.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Deva.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Dupl.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Ethi.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Geor.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Gran.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Grek.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Gujr.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Guru.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Han.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Hang.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Hebr.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Hira.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Hmng.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Kana.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Khar.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Khmr.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Knda.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Lana.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Lao.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Latn.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Limb.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Linb.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Mlym.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Mong.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Mult.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Orya.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Sinh.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Talu.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Taml.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Telu.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Tibt.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Xsux.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Zinh.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Zyyy.pl type=file
-c:\tlperl\lib/unicore/lib/Sc/Zzzz.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Arab.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Armn.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Beng.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Bopo.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Cakm.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Copt.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Cprt.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Cyrl.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Deva.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Dupl.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Geor.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Glag.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Gran.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Grek.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Gujr.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Guru.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Han.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Hang.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Hira.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Kana.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Knda.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Latn.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Limb.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Linb.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Mlym.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Mong.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Mult.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Mymr.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Orya.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Phlp.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Shrd.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Sind.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Sinh.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Syrc.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Tagb.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Takr.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Taml.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Telu.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Thaa.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Tirh.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Yi.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Zinh.pl type=file
-c:\tlperl\lib/unicore/lib/Scx/Zyyy.pl type=file
-c:\tlperl\lib/unicore/lib/Term/Y.pl type=file
-c:\tlperl\lib/unicore/lib/UIdeo/Y.pl type=file
-c:\tlperl\lib/unicore/lib/Upper/Y.pl type=file
-c:\tlperl\lib/unicore/lib/WB/EX.pl type=file
-c:\tlperl\lib/unicore/lib/WB/FO.pl type=file
-c:\tlperl\lib/unicore/lib/WB/HL.pl type=file
-c:\tlperl\lib/unicore/lib/WB/KA.pl type=file
-c:\tlperl\lib/unicore/lib/WB/LE.pl type=file
-c:\tlperl\lib/unicore/lib/WB/MB.pl type=file
-c:\tlperl\lib/unicore/lib/WB/ML.pl type=file
-c:\tlperl\lib/unicore/lib/WB/MN.pl type=file
-c:\tlperl\lib/unicore/lib/WB/NU.pl type=file
-c:\tlperl\lib/unicore/lib/WB/XX.pl type=file
-c:\tlperl\lib/unicore/lib/XIDC/Y.pl type=file
-c:\tlperl\lib/unicore/lib/XIDS/Y.pl type=file
-c:\tlperl\lib/unicore/version type=file
-c:\tlperl\lib/utf8.pm type=file
-c:\tlperl\lib/utf8_heavy.pl type=file
-c:\tlperl\lib/vars.pm type=file
-c:\tlperl\lib/version.pm type=file
-c:\tlperl\lib/version.pod type=file
-c:\tlperl\lib/version/Internals.pod type=file
-c:\tlperl\lib/version/regex.pm type=file
-c:\tlperl\lib/vmsish.pm type=file
-c:\tlperl\lib/warnings.pm type=file
-c:\tlperl\lib/warnings/register.pm type=file
+c:\tlperl526\bin/corelist.bat type=file
+c:\tlperl526\bin/cpan.bat type=file
+c:\tlperl526\bin/enc2xs.bat type=file
+c:\tlperl526\bin/encguess.bat type=file
+c:\tlperl526\bin/h2ph.bat type=file
+c:\tlperl526\bin/h2xs.bat type=file
+c:\tlperl526\bin/instmodsh.bat type=file
+c:\tlperl526\bin/json_pp.bat type=file
+c:\tlperl526\bin/libnetcfg.bat type=file
+c:\tlperl526\bin/perl.exe from=c:\tlperl526\bin/perl5.26.1.exe type=link
+c:\tlperl526\bin/perl5.26.1.exe type=file
+c:\tlperl526\bin/perl526.dll type=file
+c:\tlperl526\bin/perlbug.bat type=file
+c:\tlperl526\bin/perldoc.bat type=file
+c:\tlperl526\bin/perlivp.bat type=file
+c:\tlperl526\bin/perlthanks.bat from=c:\tlperl526\bin/perlbug.bat type=link
+c:\tlperl526\bin/piconv.bat type=file
+c:\tlperl526\bin/pl2pm.bat type=file
+c:\tlperl526\bin/pod2html.bat type=file
+c:\tlperl526\bin/pod2man.bat type=file
+c:\tlperl526\bin/pod2text.bat type=file
+c:\tlperl526\bin/pod2usage.bat type=file
+c:\tlperl526\bin/podchecker.bat type=file
+c:\tlperl526\bin/podselect.bat type=file
+c:\tlperl526\bin/prove.bat type=file
+c:\tlperl526\bin/ptar.bat type=file
+c:\tlperl526\bin/ptardiff.bat type=file
+c:\tlperl526\bin/ptargrep.bat type=file
+c:\tlperl526\bin/shasum.bat type=file
+c:\tlperl526\bin/splain.bat type=file
+c:\tlperl526\bin/xsubpp.bat type=file
+c:\tlperl526\bin/zipdetails.bat type=file
+c:\tlperl526\lib/AnyDBM_File.pm type=file
+c:\tlperl526\lib/App/Cpan.pm type=file
+c:\tlperl526\lib/App/Prove.pm type=file
+c:\tlperl526\lib/App/Prove/State.pm type=file
+c:\tlperl526\lib/App/Prove/State/Result.pm type=file
+c:\tlperl526\lib/App/Prove/State/Result/Test.pm type=file
+c:\tlperl526\lib/Archive/Tar.pm type=file
+c:\tlperl526\lib/Archive/Tar/Constant.pm type=file
+c:\tlperl526\lib/Archive/Tar/File.pm type=file
+c:\tlperl526\lib/Attribute/Handlers.pm type=file
+c:\tlperl526\lib/AutoLoader.pm type=file
+c:\tlperl526\lib/AutoSplit.pm type=file
+c:\tlperl526\lib/B.pm type=file
+c:\tlperl526\lib/B/Concise.pm type=file
+c:\tlperl526\lib/B/Debug.pm type=file
+c:\tlperl526\lib/B/Deparse.pm type=file
+c:\tlperl526\lib/B/Op_private.pm type=file
+c:\tlperl526\lib/B/Showlex.pm type=file
+c:\tlperl526\lib/B/Terse.pm type=file
+c:\tlperl526\lib/B/Xref.pm type=file
+c:\tlperl526\lib/Benchmark.pm type=file
+c:\tlperl526\lib/CORE.pod type=file
+c:\tlperl526\lib/CORE/EXTERN.h type=file
+c:\tlperl526\lib/CORE/INTERN.h type=file
+c:\tlperl526\lib/CORE/XSUB.h type=file
+c:\tlperl526\lib/CORE/arpa/inet.h type=file
+c:\tlperl526\lib/CORE/av.h type=file
+c:\tlperl526\lib/CORE/bitcount.h type=file
+c:\tlperl526\lib/CORE/charclass_invlists.h type=file
+c:\tlperl526\lib/CORE/config.h type=file
+c:\tlperl526\lib/CORE/cop.h type=file
+c:\tlperl526\lib/CORE/cv.h type=file
+c:\tlperl526\lib/CORE/dirent.h type=file
+c:\tlperl526\lib/CORE/dosish.h type=file
+c:\tlperl526\lib/CORE/dquote_inline.h type=file
+c:\tlperl526\lib/CORE/ebcdic_tables.h type=file
+c:\tlperl526\lib/CORE/embed.h type=file
+c:\tlperl526\lib/CORE/embedvar.h type=file
+c:\tlperl526\lib/CORE/fakesdio.h type=file
+c:\tlperl526\lib/CORE/feature.h type=file
+c:\tlperl526\lib/CORE/form.h type=file
+c:\tlperl526\lib/CORE/git_version.h type=file
+c:\tlperl526\lib/CORE/gv.h type=file
+c:\tlperl526\lib/CORE/handy.h type=file
+c:\tlperl526\lib/CORE/hv.h type=file
+c:\tlperl526\lib/CORE/hv_func.h type=file
+c:\tlperl526\lib/CORE/inline.h type=file
+c:\tlperl526\lib/CORE/intrpvar.h type=file
+c:\tlperl526\lib/CORE/invlist_inline.h type=file
+c:\tlperl526\lib/CORE/iperlsys.h type=file
+c:\tlperl526\lib/CORE/keywords.h type=file
+c:\tlperl526\lib/CORE/l1_char_class_tab.h type=file
+c:\tlperl526\lib/CORE/libperl526.a type=file
+c:\tlperl526\lib/CORE/malloc_ctl.h type=file
+c:\tlperl526\lib/CORE/metaconfig.h type=file
+c:\tlperl526\lib/CORE/mg.h type=file
+c:\tlperl526\lib/CORE/mg_data.h type=file
+c:\tlperl526\lib/CORE/mg_raw.h type=file
+c:\tlperl526\lib/CORE/mg_vtable.h type=file
+c:\tlperl526\lib/CORE/mydtrace.h type=file
+c:\tlperl526\lib/CORE/netdb.h type=file
+c:\tlperl526\lib/CORE/nostdio.h type=file
+c:\tlperl526\lib/CORE/op.h type=file
+c:\tlperl526\lib/CORE/op_reg_common.h type=file
+c:\tlperl526\lib/CORE/opcode.h type=file
+c:\tlperl526\lib/CORE/opnames.h type=file
+c:\tlperl526\lib/CORE/overload.h type=file
+c:\tlperl526\lib/CORE/pad.h type=file
+c:\tlperl526\lib/CORE/parser.h type=file
+c:\tlperl526\lib/CORE/patchlevel.h type=file
+c:\tlperl526\lib/CORE/perl.h type=file
+c:\tlperl526\lib/CORE/perlapi.h type=file
+c:\tlperl526\lib/CORE/perlhost.h type=file
+c:\tlperl526\lib/CORE/perlio.h type=file
+c:\tlperl526\lib/CORE/perliol.h type=file
+c:\tlperl526\lib/CORE/perlsdio.h type=file
+c:\tlperl526\lib/CORE/perlvars.h type=file
+c:\tlperl526\lib/CORE/perly.h type=file
+c:\tlperl526\lib/CORE/pp.h type=file
+c:\tlperl526\lib/CORE/pp_proto.h type=file
+c:\tlperl526\lib/CORE/proto.h type=file
+c:\tlperl526\lib/CORE/reentr.h type=file
+c:\tlperl526\lib/CORE/regcharclass.h type=file
+c:\tlperl526\lib/CORE/regcomp.h type=file
+c:\tlperl526\lib/CORE/regexp.h type=file
+c:\tlperl526\lib/CORE/regnodes.h type=file
+c:\tlperl526\lib/CORE/scope.h type=file
+c:\tlperl526\lib/CORE/sv.h type=file
+c:\tlperl526\lib/CORE/sys/errno2.h type=file
+c:\tlperl526\lib/CORE/sys/socket.h type=file
+c:\tlperl526\lib/CORE/thread.h type=file
+c:\tlperl526\lib/CORE/time64.h type=file
+c:\tlperl526\lib/CORE/time64_config.h type=file
+c:\tlperl526\lib/CORE/uconfig.h type=file
+c:\tlperl526\lib/CORE/unicode_constants.h type=file
+c:\tlperl526\lib/CORE/unixish.h type=file
+c:\tlperl526\lib/CORE/utf8.h type=file
+c:\tlperl526\lib/CORE/utfebcdic.h type=file
+c:\tlperl526\lib/CORE/util.h type=file
+c:\tlperl526\lib/CORE/uudmap.h type=file
+c:\tlperl526\lib/CORE/vdir.h type=file
+c:\tlperl526\lib/CORE/vmem.h type=file
+c:\tlperl526\lib/CORE/vutil.h type=file
+c:\tlperl526\lib/CORE/warnings.h type=file
+c:\tlperl526\lib/CORE/win32.h type=file
+c:\tlperl526\lib/CORE/win32iop-o.h type=file
+c:\tlperl526\lib/CORE/win32iop.h type=file
+c:\tlperl526\lib/CORE/win32thread.h type=file
+c:\tlperl526\lib/CORE/wince.h type=file
+c:\tlperl526\lib/CPAN.pm type=file
+c:\tlperl526\lib/CPAN/API/HOWTO.pod type=file
+c:\tlperl526\lib/CPAN/Author.pm type=file
+c:\tlperl526\lib/CPAN/Bundle.pm type=file
+c:\tlperl526\lib/CPAN/CacheMgr.pm type=file
+c:\tlperl526\lib/CPAN/Complete.pm type=file
+c:\tlperl526\lib/CPAN/Debug.pm type=file
+c:\tlperl526\lib/CPAN/DeferredCode.pm type=file
+c:\tlperl526\lib/CPAN/Distribution.pm type=file
+c:\tlperl526\lib/CPAN/Distroprefs.pm type=file
+c:\tlperl526\lib/CPAN/Distrostatus.pm type=file
+c:\tlperl526\lib/CPAN/Exception/RecursiveDependency.pm type=file
+c:\tlperl526\lib/CPAN/Exception/blocked_urllist.pm type=file
+c:\tlperl526\lib/CPAN/Exception/yaml_not_installed.pm type=file
+c:\tlperl526\lib/CPAN/Exception/yaml_process_error.pm type=file
+c:\tlperl526\lib/CPAN/FTP.pm type=file
+c:\tlperl526\lib/CPAN/FTP/netrc.pm type=file
+c:\tlperl526\lib/CPAN/FirstTime.pm type=file
+c:\tlperl526\lib/CPAN/HTTP/Client.pm type=file
+c:\tlperl526\lib/CPAN/HTTP/Credentials.pm type=file
+c:\tlperl526\lib/CPAN/HandleConfig.pm type=file
+c:\tlperl526\lib/CPAN/Index.pm type=file
+c:\tlperl526\lib/CPAN/InfoObj.pm type=file
+c:\tlperl526\lib/CPAN/Kwalify.pm type=file
+c:\tlperl526\lib/CPAN/Kwalify/distroprefs.dd type=file
+c:\tlperl526\lib/CPAN/Kwalify/distroprefs.yml type=file
+c:\tlperl526\lib/CPAN/LWP/UserAgent.pm type=file
+c:\tlperl526\lib/CPAN/Meta.pm type=file
+c:\tlperl526\lib/CPAN/Meta/Converter.pm type=file
+c:\tlperl526\lib/CPAN/Meta/Feature.pm type=file
+c:\tlperl526\lib/CPAN/Meta/History.pm type=file
+c:\tlperl526\lib/CPAN/Meta/History/Meta_1_0.pod type=file
+c:\tlperl526\lib/CPAN/Meta/History/Meta_1_1.pod type=file
+c:\tlperl526\lib/CPAN/Meta/History/Meta_1_2.pod type=file
+c:\tlperl526\lib/CPAN/Meta/History/Meta_1_3.pod type=file
+c:\tlperl526\lib/CPAN/Meta/History/Meta_1_4.pod type=file
+c:\tlperl526\lib/CPAN/Meta/Merge.pm type=file
+c:\tlperl526\lib/CPAN/Meta/Prereqs.pm type=file
+c:\tlperl526\lib/CPAN/Meta/Requirements.pm type=file
+c:\tlperl526\lib/CPAN/Meta/Spec.pm type=file
+c:\tlperl526\lib/CPAN/Meta/Validator.pm type=file
+c:\tlperl526\lib/CPAN/Meta/YAML.pm type=file
+c:\tlperl526\lib/CPAN/Mirrors.pm type=file
+c:\tlperl526\lib/CPAN/Module.pm type=file
+c:\tlperl526\lib/CPAN/Nox.pm type=file
+c:\tlperl526\lib/CPAN/Plugin.pm type=file
+c:\tlperl526\lib/CPAN/Plugin/Specfile.pm type=file
+c:\tlperl526\lib/CPAN/Prompt.pm type=file
+c:\tlperl526\lib/CPAN/Queue.pm type=file
+c:\tlperl526\lib/CPAN/Shell.pm type=file
+c:\tlperl526\lib/CPAN/Tarzip.pm type=file
+c:\tlperl526\lib/CPAN/URL.pm type=file
+c:\tlperl526\lib/CPAN/Version.pm type=file
+c:\tlperl526\lib/Carp.pm type=file
+c:\tlperl526\lib/Carp/Heavy.pm type=file
+c:\tlperl526\lib/Class/Struct.pm type=file
+c:\tlperl526\lib/Compress/Raw/Bzip2.pm type=file
+c:\tlperl526\lib/Compress/Raw/Zlib.pm type=file
+c:\tlperl526\lib/Compress/Zlib.pm type=file
+c:\tlperl526\lib/Config.pm type=file
+c:\tlperl526\lib/Config.pod type=file
+c:\tlperl526\lib/Config/Extensions.pm type=file
+c:\tlperl526\lib/Config/Perl/V.pm type=file
+c:\tlperl526\lib/Config_git.pl type=file
+c:\tlperl526\lib/Config_heavy.pl type=file
+c:\tlperl526\lib/Cwd.pm type=file
+c:\tlperl526\lib/DB.pm type=file
+c:\tlperl526\lib/DBM_Filter.pm type=file
+c:\tlperl526\lib/DBM_Filter/compress.pm type=file
+c:\tlperl526\lib/DBM_Filter/encode.pm type=file
+c:\tlperl526\lib/DBM_Filter/int32.pm type=file
+c:\tlperl526\lib/DBM_Filter/null.pm type=file
+c:\tlperl526\lib/DBM_Filter/utf8.pm type=file
+c:\tlperl526\lib/Data/Dumper.pm type=file
+c:\tlperl526\lib/Devel/PPPort.pm type=file
+c:\tlperl526\lib/Devel/Peek.pm type=file
+c:\tlperl526\lib/Devel/SelfStubber.pm type=file
+c:\tlperl526\lib/Digest.pm type=file
+c:\tlperl526\lib/Digest/MD5.pm type=file
+c:\tlperl526\lib/Digest/SHA.pm type=file
+c:\tlperl526\lib/Digest/base.pm type=file
+c:\tlperl526\lib/Digest/file.pm type=file
+c:\tlperl526\lib/DirHandle.pm type=file
+c:\tlperl526\lib/Dumpvalue.pm type=file
+c:\tlperl526\lib/DynaLoader.pm type=file
+c:\tlperl526\lib/Encode.pm type=file
+c:\tlperl526\lib/Encode/Alias.pm type=file
+c:\tlperl526\lib/Encode/Byte.pm type=file
+c:\tlperl526\lib/Encode/CJKConstants.pm type=file
+c:\tlperl526\lib/Encode/CN.pm type=file
+c:\tlperl526\lib/Encode/CN/HZ.pm type=file
+c:\tlperl526\lib/Encode/Changes.e2x type=file
+c:\tlperl526\lib/Encode/Config.pm type=file
+c:\tlperl526\lib/Encode/ConfigLocal_PM.e2x type=file
+c:\tlperl526\lib/Encode/EBCDIC.pm type=file
+c:\tlperl526\lib/Encode/Encoder.pm type=file
+c:\tlperl526\lib/Encode/Encoding.pm type=file
+c:\tlperl526\lib/Encode/GSM0338.pm type=file
+c:\tlperl526\lib/Encode/Guess.pm type=file
+c:\tlperl526\lib/Encode/JP.pm type=file
+c:\tlperl526\lib/Encode/JP/H2Z.pm type=file
+c:\tlperl526\lib/Encode/JP/JIS7.pm type=file
+c:\tlperl526\lib/Encode/KR.pm type=file
+c:\tlperl526\lib/Encode/KR/2022_KR.pm type=file
+c:\tlperl526\lib/Encode/MIME/Header.pm type=file
+c:\tlperl526\lib/Encode/MIME/Header/ISO_2022_JP.pm type=file
+c:\tlperl526\lib/Encode/MIME/Name.pm type=file
+c:\tlperl526\lib/Encode/Makefile_PL.e2x type=file
+c:\tlperl526\lib/Encode/PerlIO.pod type=file
+c:\tlperl526\lib/Encode/README.e2x type=file
+c:\tlperl526\lib/Encode/Supported.pod type=file
+c:\tlperl526\lib/Encode/Symbol.pm type=file
+c:\tlperl526\lib/Encode/TW.pm type=file
+c:\tlperl526\lib/Encode/Unicode.pm type=file
+c:\tlperl526\lib/Encode/Unicode/UTF7.pm type=file
+c:\tlperl526\lib/Encode/_PM.e2x type=file
+c:\tlperl526\lib/Encode/_T.e2x type=file
+c:\tlperl526\lib/Encode/encode.h type=file
+c:\tlperl526\lib/English.pm type=file
+c:\tlperl526\lib/Env.pm type=file
+c:\tlperl526\lib/Errno.pm type=file
+c:\tlperl526\lib/Exporter.pm type=file
+c:\tlperl526\lib/Exporter/Heavy.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Base.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/Unix.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/VMS.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/Windows.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/aix.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/android.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/cygwin.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/darwin.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/dec_osf.pm type=file
+c:\tlperl526\lib/ExtUtils/CBuilder/Platform/os2.pm type=file
+c:\tlperl526\lib/ExtUtils/Command.pm type=file
+c:\tlperl526\lib/ExtUtils/Command/MM.pm type=file
+c:\tlperl526\lib/ExtUtils/Constant.pm type=file
+c:\tlperl526\lib/ExtUtils/Constant/Base.pm type=file
+c:\tlperl526\lib/ExtUtils/Constant/ProxySubs.pm type=file
+c:\tlperl526\lib/ExtUtils/Constant/Utils.pm type=file
+c:\tlperl526\lib/ExtUtils/Constant/XS.pm type=file
+c:\tlperl526\lib/ExtUtils/Embed.pm type=file
+c:\tlperl526\lib/ExtUtils/Install.pm type=file
+c:\tlperl526\lib/ExtUtils/Installed.pm type=file
+c:\tlperl526\lib/ExtUtils/Liblist.pm type=file
+c:\tlperl526\lib/ExtUtils/Liblist/Kid.pm type=file
+c:\tlperl526\lib/ExtUtils/MANIFEST.SKIP type=file
+c:\tlperl526\lib/ExtUtils/MM.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_AIX.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_Any.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_BeOS.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_Cygwin.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_DOS.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_Darwin.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_MacOS.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_NW5.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_OS2.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_QNX.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_UWIN.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_Unix.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_VMS.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_VOS.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_Win32.pm type=file
+c:\tlperl526\lib/ExtUtils/MM_Win95.pm type=file
+c:\tlperl526\lib/ExtUtils/MY.pm type=file
+c:\tlperl526\lib/ExtUtils/MakeMaker.pm type=file
+c:\tlperl526\lib/ExtUtils/MakeMaker/Config.pm type=file
+c:\tlperl526\lib/ExtUtils/MakeMaker/FAQ.pod type=file
+c:\tlperl526\lib/ExtUtils/MakeMaker/Locale.pm type=file
+c:\tlperl526\lib/ExtUtils/MakeMaker/Tutorial.pod type=file
+c:\tlperl526\lib/ExtUtils/MakeMaker/version.pm type=file
+c:\tlperl526\lib/ExtUtils/Manifest.pm type=file
+c:\tlperl526\lib/ExtUtils/Miniperl.pm type=file
+c:\tlperl526\lib/ExtUtils/Mkbootstrap.pm type=file
+c:\tlperl526\lib/ExtUtils/Mksymlists.pm type=file
+c:\tlperl526\lib/ExtUtils/Packlist.pm type=file
+c:\tlperl526\lib/ExtUtils/ParseXS.pm type=file
+c:\tlperl526\lib/ExtUtils/ParseXS.pod type=file
+c:\tlperl526\lib/ExtUtils/ParseXS/Constants.pm type=file
+c:\tlperl526\lib/ExtUtils/ParseXS/CountLines.pm type=file
+c:\tlperl526\lib/ExtUtils/ParseXS/Eval.pm type=file
+c:\tlperl526\lib/ExtUtils/ParseXS/Utilities.pm type=file
+c:\tlperl526\lib/ExtUtils/Typemaps.pm type=file
+c:\tlperl526\lib/ExtUtils/Typemaps/Cmd.pm type=file
+c:\tlperl526\lib/ExtUtils/Typemaps/InputMap.pm type=file
+c:\tlperl526\lib/ExtUtils/Typemaps/OutputMap.pm type=file
+c:\tlperl526\lib/ExtUtils/Typemaps/Type.pm type=file
+c:\tlperl526\lib/ExtUtils/testlib.pm type=file
+c:\tlperl526\lib/ExtUtils/typemap type=file
+c:\tlperl526\lib/ExtUtils/xsubpp type=file
+c:\tlperl526\lib/Fatal.pm type=file
+c:\tlperl526\lib/Fcntl.pm type=file
+c:\tlperl526\lib/File/Basename.pm type=file
+c:\tlperl526\lib/File/Compare.pm type=file
+c:\tlperl526\lib/File/Copy.pm type=file
+c:\tlperl526\lib/File/DosGlob.pm type=file
+c:\tlperl526\lib/File/Fetch.pm type=file
+c:\tlperl526\lib/File/Find.pm type=file
+c:\tlperl526\lib/File/Glob.pm type=file
+c:\tlperl526\lib/File/GlobMapper.pm type=file
+c:\tlperl526\lib/File/Path.pm type=file
+c:\tlperl526\lib/File/Spec.pm type=file
+c:\tlperl526\lib/File/Spec/AmigaOS.pm type=file
+c:\tlperl526\lib/File/Spec/Cygwin.pm type=file
+c:\tlperl526\lib/File/Spec/Epoc.pm type=file
+c:\tlperl526\lib/File/Spec/Functions.pm type=file
+c:\tlperl526\lib/File/Spec/Mac.pm type=file
+c:\tlperl526\lib/File/Spec/OS2.pm type=file
+c:\tlperl526\lib/File/Spec/Unix.pm type=file
+c:\tlperl526\lib/File/Spec/VMS.pm type=file
+c:\tlperl526\lib/File/Spec/Win32.pm type=file
+c:\tlperl526\lib/File/Temp.pm type=file
+c:\tlperl526\lib/File/stat.pm type=file
+c:\tlperl526\lib/FileCache.pm type=file
+c:\tlperl526\lib/FileHandle.pm type=file
+c:\tlperl526\lib/Filter/Simple.pm type=file
+c:\tlperl526\lib/Filter/Util/Call.pm type=file
+c:\tlperl526\lib/FindBin.pm type=file
+c:\tlperl526\lib/Getopt/Long.pm type=file
+c:\tlperl526\lib/Getopt/Std.pm type=file
+c:\tlperl526\lib/HTTP/Tiny.pm type=file
+c:\tlperl526\lib/Hash/Util.pm type=file
+c:\tlperl526\lib/Hash/Util/FieldHash.pm type=file
+c:\tlperl526\lib/I18N/Collate.pm type=file
+c:\tlperl526\lib/I18N/LangTags.pm type=file
+c:\tlperl526\lib/I18N/LangTags/Detect.pm type=file
+c:\tlperl526\lib/I18N/LangTags/List.pm type=file
+c:\tlperl526\lib/IO.pm type=file
+c:\tlperl526\lib/IO/Compress/Adapter/Bzip2.pm type=file
+c:\tlperl526\lib/IO/Compress/Adapter/Deflate.pm type=file
+c:\tlperl526\lib/IO/Compress/Adapter/Identity.pm type=file
+c:\tlperl526\lib/IO/Compress/Base.pm type=file
+c:\tlperl526\lib/IO/Compress/Base/Common.pm type=file
+c:\tlperl526\lib/IO/Compress/Bzip2.pm type=file
+c:\tlperl526\lib/IO/Compress/Deflate.pm type=file
+c:\tlperl526\lib/IO/Compress/FAQ.pod type=file
+c:\tlperl526\lib/IO/Compress/Gzip.pm type=file
+c:\tlperl526\lib/IO/Compress/Gzip/Constants.pm type=file
+c:\tlperl526\lib/IO/Compress/RawDeflate.pm type=file
+c:\tlperl526\lib/IO/Compress/Zip.pm type=file
+c:\tlperl526\lib/IO/Compress/Zip/Constants.pm type=file
+c:\tlperl526\lib/IO/Compress/Zlib/Constants.pm type=file
+c:\tlperl526\lib/IO/Compress/Zlib/Extra.pm type=file
+c:\tlperl526\lib/IO/Dir.pm type=file
+c:\tlperl526\lib/IO/File.pm type=file
+c:\tlperl526\lib/IO/Handle.pm type=file
+c:\tlperl526\lib/IO/Pipe.pm type=file
+c:\tlperl526\lib/IO/Poll.pm type=file
+c:\tlperl526\lib/IO/Seekable.pm type=file
+c:\tlperl526\lib/IO/Select.pm type=file
+c:\tlperl526\lib/IO/Socket.pm type=file
+c:\tlperl526\lib/IO/Socket/INET.pm type=file
+c:\tlperl526\lib/IO/Socket/IP.pm type=file
+c:\tlperl526\lib/IO/Socket/UNIX.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Adapter/Bunzip2.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Adapter/Identity.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Adapter/Inflate.pm type=file
+c:\tlperl526\lib/IO/Uncompress/AnyInflate.pm type=file
+c:\tlperl526\lib/IO/Uncompress/AnyUncompress.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Base.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Bunzip2.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Gunzip.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Inflate.pm type=file
+c:\tlperl526\lib/IO/Uncompress/RawInflate.pm type=file
+c:\tlperl526\lib/IO/Uncompress/Unzip.pm type=file
+c:\tlperl526\lib/IO/Zlib.pm type=file
+c:\tlperl526\lib/IPC/Cmd.pm type=file
+c:\tlperl526\lib/IPC/Open2.pm type=file
+c:\tlperl526\lib/IPC/Open3.pm type=file
+c:\tlperl526\lib/Internals.pod type=file
+c:\tlperl526\lib/JSON/PP.pm type=file
+c:\tlperl526\lib/JSON/PP/Boolean.pm type=file
+c:\tlperl526\lib/List/Util.pm type=file
+c:\tlperl526\lib/List/Util/XS.pm type=file
+c:\tlperl526\lib/Locale/Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes.pod type=file
+c:\tlperl526\lib/Locale/Codes/API.pod type=file
+c:\tlperl526\lib/Locale/Codes/Changes.pod type=file
+c:\tlperl526\lib/Locale/Codes/Constants.pm type=file
+c:\tlperl526\lib/Locale/Codes/Country.pm type=file
+c:\tlperl526\lib/Locale/Codes/Country.pod type=file
+c:\tlperl526\lib/Locale/Codes/Country_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/Country_Retired.pm type=file
+c:\tlperl526\lib/Locale/Codes/Currency.pm type=file
+c:\tlperl526\lib/Locale/Codes/Currency.pod type=file
+c:\tlperl526\lib/Locale/Codes/Currency_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/Currency_Retired.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangExt.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangExt.pod type=file
+c:\tlperl526\lib/Locale/Codes/LangExt_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangExt_Retired.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangFam.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangFam.pod type=file
+c:\tlperl526\lib/Locale/Codes/LangFam_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangFam_Retired.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangVar.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangVar.pod type=file
+c:\tlperl526\lib/Locale/Codes/LangVar_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/LangVar_Retired.pm type=file
+c:\tlperl526\lib/Locale/Codes/Language.pm type=file
+c:\tlperl526\lib/Locale/Codes/Language.pod type=file
+c:\tlperl526\lib/Locale/Codes/Language_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/Language_Retired.pm type=file
+c:\tlperl526\lib/Locale/Codes/Script.pm type=file
+c:\tlperl526\lib/Locale/Codes/Script.pod type=file
+c:\tlperl526\lib/Locale/Codes/Script_Codes.pm type=file
+c:\tlperl526\lib/Locale/Codes/Script_Retired.pm type=file
+c:\tlperl526\lib/Locale/Country.pm type=file
+c:\tlperl526\lib/Locale/Country.pod type=file
+c:\tlperl526\lib/Locale/Currency.pm type=file
+c:\tlperl526\lib/Locale/Currency.pod type=file
+c:\tlperl526\lib/Locale/Language.pm type=file
+c:\tlperl526\lib/Locale/Language.pod type=file
+c:\tlperl526\lib/Locale/Maketext.pm type=file
+c:\tlperl526\lib/Locale/Maketext.pod type=file
+c:\tlperl526\lib/Locale/Maketext/Cookbook.pod type=file
+c:\tlperl526\lib/Locale/Maketext/Guts.pm type=file
+c:\tlperl526\lib/Locale/Maketext/GutsLoader.pm type=file
+c:\tlperl526\lib/Locale/Maketext/Simple.pm type=file
+c:\tlperl526\lib/Locale/Maketext/TPJ13.pod type=file
+c:\tlperl526\lib/Locale/Script.pm type=file
+c:\tlperl526\lib/Locale/Script.pod type=file
+c:\tlperl526\lib/MIME/Base64.pm type=file
+c:\tlperl526\lib/MIME/QuotedPrint.pm type=file
+c:\tlperl526\lib/Math/BigFloat.pm type=file
+c:\tlperl526\lib/Math/BigFloat/Trace.pm type=file
+c:\tlperl526\lib/Math/BigInt.pm type=file
+c:\tlperl526\lib/Math/BigInt/Calc.pm type=file
+c:\tlperl526\lib/Math/BigInt/CalcEmu.pm type=file
+c:\tlperl526\lib/Math/BigInt/FastCalc.pm type=file
+c:\tlperl526\lib/Math/BigInt/Lib.pm type=file
+c:\tlperl526\lib/Math/BigInt/Trace.pm type=file
+c:\tlperl526\lib/Math/BigRat.pm type=file
+c:\tlperl526\lib/Math/Complex.pm type=file
+c:\tlperl526\lib/Math/Trig.pm type=file
+c:\tlperl526\lib/Memoize.pm type=file
+c:\tlperl526\lib/Memoize/AnyDBM_File.pm type=file
+c:\tlperl526\lib/Memoize/Expire.pm type=file
+c:\tlperl526\lib/Memoize/ExpireFile.pm type=file
+c:\tlperl526\lib/Memoize/ExpireTest.pm type=file
+c:\tlperl526\lib/Memoize/NDBM_File.pm type=file
+c:\tlperl526\lib/Memoize/SDBM_File.pm type=file
+c:\tlperl526\lib/Memoize/Storable.pm type=file
+c:\tlperl526\lib/Module/CoreList.pm type=file
+c:\tlperl526\lib/Module/CoreList.pod type=file
+c:\tlperl526\lib/Module/CoreList/TieHashDelta.pm type=file
+c:\tlperl526\lib/Module/CoreList/Utils.pm type=file
+c:\tlperl526\lib/Module/Load.pm type=file
+c:\tlperl526\lib/Module/Load/Conditional.pm type=file
+c:\tlperl526\lib/Module/Loaded.pm type=file
+c:\tlperl526\lib/Module/Metadata.pm type=file
+c:\tlperl526\lib/NEXT.pm type=file
+c:\tlperl526\lib/Net/Cmd.pm type=file
+c:\tlperl526\lib/Net/Config.pm type=file
+c:\tlperl526\lib/Net/Domain.pm type=file
+c:\tlperl526\lib/Net/FTP.pm type=file
+c:\tlperl526\lib/Net/FTP/A.pm type=file
+c:\tlperl526\lib/Net/FTP/E.pm type=file
+c:\tlperl526\lib/Net/FTP/I.pm type=file
+c:\tlperl526\lib/Net/FTP/L.pm type=file
+c:\tlperl526\lib/Net/FTP/dataconn.pm type=file
+c:\tlperl526\lib/Net/NNTP.pm type=file
+c:\tlperl526\lib/Net/Netrc.pm type=file
+c:\tlperl526\lib/Net/POP3.pm type=file
+c:\tlperl526\lib/Net/Ping.pm type=file
+c:\tlperl526\lib/Net/SMTP.pm type=file
+c:\tlperl526\lib/Net/Time.pm type=file
+c:\tlperl526\lib/Net/hostent.pm type=file
+c:\tlperl526\lib/Net/libnetFAQ.pod type=file
+c:\tlperl526\lib/Net/netent.pm type=file
+c:\tlperl526\lib/Net/protoent.pm type=file
+c:\tlperl526\lib/Net/servent.pm type=file
+c:\tlperl526\lib/O.pm type=file
+c:\tlperl526\lib/Opcode.pm type=file
+c:\tlperl526\lib/POSIX.pm type=file
+c:\tlperl526\lib/POSIX.pod type=file
+c:\tlperl526\lib/Params/Check.pm type=file
+c:\tlperl526\lib/Parse/CPAN/Meta.pm type=file
+c:\tlperl526\lib/Perl/OSType.pm type=file
+c:\tlperl526\lib/PerlIO.pm type=file
+c:\tlperl526\lib/PerlIO/encoding.pm type=file
+c:\tlperl526\lib/PerlIO/mmap.pm type=file
+c:\tlperl526\lib/PerlIO/scalar.pm type=file
+c:\tlperl526\lib/PerlIO/via.pm type=file
+c:\tlperl526\lib/PerlIO/via/QuotedPrint.pm type=file
+c:\tlperl526\lib/Pod/Checker.pm type=file
+c:\tlperl526\lib/Pod/Escapes.pm type=file
+c:\tlperl526\lib/Pod/Find.pm type=file
+c:\tlperl526\lib/Pod/Functions.pm type=file
+c:\tlperl526\lib/Pod/Html.pm type=file
+c:\tlperl526\lib/Pod/InputObjects.pm type=file
+c:\tlperl526\lib/Pod/Man.pm type=file
+c:\tlperl526\lib/Pod/ParseLink.pm type=file
+c:\tlperl526\lib/Pod/ParseUtils.pm type=file
+c:\tlperl526\lib/Pod/Parser.pm type=file
+c:\tlperl526\lib/Pod/Perldoc.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/BaseTo.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/GetOptsOO.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToANSI.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToChecker.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToMan.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToNroff.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToPod.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToRtf.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToTerm.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToText.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToTk.pm type=file
+c:\tlperl526\lib/Pod/Perldoc/ToXml.pm type=file
+c:\tlperl526\lib/Pod/PlainText.pm type=file
+c:\tlperl526\lib/Pod/Select.pm type=file
+c:\tlperl526\lib/Pod/Simple.pm type=file
+c:\tlperl526\lib/Pod/Simple.pod type=file
+c:\tlperl526\lib/Pod/Simple/BlackBox.pm type=file
+c:\tlperl526\lib/Pod/Simple/Checker.pm type=file
+c:\tlperl526\lib/Pod/Simple/Debug.pm type=file
+c:\tlperl526\lib/Pod/Simple/DumpAsText.pm type=file
+c:\tlperl526\lib/Pod/Simple/DumpAsXML.pm type=file
+c:\tlperl526\lib/Pod/Simple/HTML.pm type=file
+c:\tlperl526\lib/Pod/Simple/HTMLBatch.pm type=file
+c:\tlperl526\lib/Pod/Simple/HTMLLegacy.pm type=file
+c:\tlperl526\lib/Pod/Simple/LinkSection.pm type=file
+c:\tlperl526\lib/Pod/Simple/Methody.pm type=file
+c:\tlperl526\lib/Pod/Simple/Progress.pm type=file
+c:\tlperl526\lib/Pod/Simple/PullParser.pm type=file
+c:\tlperl526\lib/Pod/Simple/PullParserEndToken.pm type=file
+c:\tlperl526\lib/Pod/Simple/PullParserStartToken.pm type=file
+c:\tlperl526\lib/Pod/Simple/PullParserTextToken.pm type=file
+c:\tlperl526\lib/Pod/Simple/PullParserToken.pm type=file
+c:\tlperl526\lib/Pod/Simple/RTF.pm type=file
+c:\tlperl526\lib/Pod/Simple/Search.pm type=file
+c:\tlperl526\lib/Pod/Simple/SimpleTree.pm type=file
+c:\tlperl526\lib/Pod/Simple/Subclassing.pod type=file
+c:\tlperl526\lib/Pod/Simple/Text.pm type=file
+c:\tlperl526\lib/Pod/Simple/TextContent.pm type=file
+c:\tlperl526\lib/Pod/Simple/TiedOutFH.pm type=file
+c:\tlperl526\lib/Pod/Simple/Transcode.pm type=file
+c:\tlperl526\lib/Pod/Simple/TranscodeDumb.pm type=file
+c:\tlperl526\lib/Pod/Simple/TranscodeSmart.pm type=file
+c:\tlperl526\lib/Pod/Simple/XHTML.pm type=file
+c:\tlperl526\lib/Pod/Simple/XMLOutStream.pm type=file
+c:\tlperl526\lib/Pod/Text.pm type=file
+c:\tlperl526\lib/Pod/Text/Color.pm type=file
+c:\tlperl526\lib/Pod/Text/Overstrike.pm type=file
+c:\tlperl526\lib/Pod/Text/Termcap.pm type=file
+c:\tlperl526\lib/Pod/Usage.pm type=file
+c:\tlperl526\lib/SDBM_File.pm type=file
+c:\tlperl526\lib/Safe.pm type=file
+c:\tlperl526\lib/Scalar/Util.pm type=file
+c:\tlperl526\lib/Search/Dict.pm type=file
+c:\tlperl526\lib/SelectSaver.pm type=file
+c:\tlperl526\lib/SelfLoader.pm type=file
+c:\tlperl526\lib/Socket.pm type=file
+c:\tlperl526\lib/Storable.pm type=file
+c:\tlperl526\lib/Sub/Util.pm type=file
+c:\tlperl526\lib/Symbol.pm type=file
+c:\tlperl526\lib/Sys/Hostname.pm type=file
+c:\tlperl526\lib/TAP/Base.pm type=file
+c:\tlperl526\lib/TAP/Formatter/Base.pm type=file
+c:\tlperl526\lib/TAP/Formatter/Color.pm type=file
+c:\tlperl526\lib/TAP/Formatter/Console.pm type=file
+c:\tlperl526\lib/TAP/Formatter/Console/ParallelSession.pm type=file
+c:\tlperl526\lib/TAP/Formatter/Console/Session.pm type=file
+c:\tlperl526\lib/TAP/Formatter/File.pm type=file
+c:\tlperl526\lib/TAP/Formatter/File/Session.pm type=file
+c:\tlperl526\lib/TAP/Formatter/Session.pm type=file
+c:\tlperl526\lib/TAP/Harness.pm type=file
+c:\tlperl526\lib/TAP/Harness/Beyond.pod type=file
+c:\tlperl526\lib/TAP/Harness/Env.pm type=file
+c:\tlperl526\lib/TAP/Object.pm type=file
+c:\tlperl526\lib/TAP/Parser.pm type=file
+c:\tlperl526\lib/TAP/Parser/Aggregator.pm type=file
+c:\tlperl526\lib/TAP/Parser/Grammar.pm type=file
+c:\tlperl526\lib/TAP/Parser/Iterator.pm type=file
+c:\tlperl526\lib/TAP/Parser/Iterator/Array.pm type=file
+c:\tlperl526\lib/TAP/Parser/Iterator/Process.pm type=file
+c:\tlperl526\lib/TAP/Parser/Iterator/Stream.pm type=file
+c:\tlperl526\lib/TAP/Parser/IteratorFactory.pm type=file
+c:\tlperl526\lib/TAP/Parser/Multiplexer.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Bailout.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Comment.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Plan.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Pragma.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Test.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Unknown.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/Version.pm type=file
+c:\tlperl526\lib/TAP/Parser/Result/YAML.pm type=file
+c:\tlperl526\lib/TAP/Parser/ResultFactory.pm type=file
+c:\tlperl526\lib/TAP/Parser/Scheduler.pm type=file
+c:\tlperl526\lib/TAP/Parser/Scheduler/Job.pm type=file
+c:\tlperl526\lib/TAP/Parser/Scheduler/Spinner.pm type=file
+c:\tlperl526\lib/TAP/Parser/Source.pm type=file
+c:\tlperl526\lib/TAP/Parser/SourceHandler.pm type=file
+c:\tlperl526\lib/TAP/Parser/SourceHandler/Executable.pm type=file
+c:\tlperl526\lib/TAP/Parser/SourceHandler/File.pm type=file
+c:\tlperl526\lib/TAP/Parser/SourceHandler/Handle.pm type=file
+c:\tlperl526\lib/TAP/Parser/SourceHandler/Perl.pm type=file
+c:\tlperl526\lib/TAP/Parser/SourceHandler/RawTAP.pm type=file
+c:\tlperl526\lib/TAP/Parser/YAMLish/Reader.pm type=file
+c:\tlperl526\lib/TAP/Parser/YAMLish/Writer.pm type=file
+c:\tlperl526\lib/Term/ANSIColor.pm type=file
+c:\tlperl526\lib/Term/Cap.pm type=file
+c:\tlperl526\lib/Term/Complete.pm type=file
+c:\tlperl526\lib/Term/ReadLine.pm type=file
+c:\tlperl526\lib/Test.pm type=file
+c:\tlperl526\lib/Test/Builder.pm type=file
+c:\tlperl526\lib/Test/Builder/Formatter.pm type=file
+c:\tlperl526\lib/Test/Builder/IO/Scalar.pm type=file
+c:\tlperl526\lib/Test/Builder/Module.pm type=file
+c:\tlperl526\lib/Test/Builder/Tester.pm type=file
+c:\tlperl526\lib/Test/Builder/Tester/Color.pm type=file
+c:\tlperl526\lib/Test/Builder/TodoDiag.pm type=file
+c:\tlperl526\lib/Test/Harness.pm type=file
+c:\tlperl526\lib/Test/More.pm type=file
+c:\tlperl526\lib/Test/Simple.pm type=file
+c:\tlperl526\lib/Test/Tester.pm type=file
+c:\tlperl526\lib/Test/Tester/Capture.pm type=file
+c:\tlperl526\lib/Test/Tester/CaptureRunner.pm type=file
+c:\tlperl526\lib/Test/Tester/Delegate.pm type=file
+c:\tlperl526\lib/Test/Tutorial.pod type=file
+c:\tlperl526\lib/Test/use/ok.pm type=file
+c:\tlperl526\lib/Test2.pm type=file
+c:\tlperl526\lib/Test2/API.pm type=file
+c:\tlperl526\lib/Test2/API/Breakage.pm type=file
+c:\tlperl526\lib/Test2/API/Context.pm type=file
+c:\tlperl526\lib/Test2/API/Instance.pm type=file
+c:\tlperl526\lib/Test2/API/Stack.pm type=file
+c:\tlperl526\lib/Test2/Event.pm type=file
+c:\tlperl526\lib/Test2/Event/Bail.pm type=file
+c:\tlperl526\lib/Test2/Event/Diag.pm type=file
+c:\tlperl526\lib/Test2/Event/Encoding.pm type=file
+c:\tlperl526\lib/Test2/Event/Exception.pm type=file
+c:\tlperl526\lib/Test2/Event/Generic.pm type=file
+c:\tlperl526\lib/Test2/Event/Info.pm type=file
+c:\tlperl526\lib/Test2/Event/Note.pm type=file
+c:\tlperl526\lib/Test2/Event/Ok.pm type=file
+c:\tlperl526\lib/Test2/Event/Plan.pm type=file
+c:\tlperl526\lib/Test2/Event/Skip.pm type=file
+c:\tlperl526\lib/Test2/Event/Subtest.pm type=file
+c:\tlperl526\lib/Test2/Event/TAP/Version.pm type=file
+c:\tlperl526\lib/Test2/Event/Waiting.pm type=file
+c:\tlperl526\lib/Test2/Formatter.pm type=file
+c:\tlperl526\lib/Test2/Formatter/TAP.pm type=file
+c:\tlperl526\lib/Test2/Hub.pm type=file
+c:\tlperl526\lib/Test2/Hub/Interceptor.pm type=file
+c:\tlperl526\lib/Test2/Hub/Interceptor/Terminator.pm type=file
+c:\tlperl526\lib/Test2/Hub/Subtest.pm type=file
+c:\tlperl526\lib/Test2/IPC.pm type=file
+c:\tlperl526\lib/Test2/IPC/Driver.pm type=file
+c:\tlperl526\lib/Test2/IPC/Driver/Files.pm type=file
+c:\tlperl526\lib/Test2/Tools/Tiny.pm type=file
+c:\tlperl526\lib/Test2/Transition.pod type=file
+c:\tlperl526\lib/Test2/Util.pm type=file
+c:\tlperl526\lib/Test2/Util/ExternalMeta.pm type=file
+c:\tlperl526\lib/Test2/Util/HashBase.pm type=file
+c:\tlperl526\lib/Test2/Util/Trace.pm type=file
+c:\tlperl526\lib/Text/Abbrev.pm type=file
+c:\tlperl526\lib/Text/Balanced.pm type=file
+c:\tlperl526\lib/Text/ParseWords.pm type=file
+c:\tlperl526\lib/Text/Tabs.pm type=file
+c:\tlperl526\lib/Text/Wrap.pm type=file
+c:\tlperl526\lib/Thread.pm type=file
+c:\tlperl526\lib/Thread/Queue.pm type=file
+c:\tlperl526\lib/Thread/Semaphore.pm type=file
+c:\tlperl526\lib/Tie/Array.pm type=file
+c:\tlperl526\lib/Tie/File.pm type=file
+c:\tlperl526\lib/Tie/Handle.pm type=file
+c:\tlperl526\lib/Tie/Hash.pm type=file
+c:\tlperl526\lib/Tie/Hash/NamedCapture.pm type=file
+c:\tlperl526\lib/Tie/Memoize.pm type=file
+c:\tlperl526\lib/Tie/RefHash.pm type=file
+c:\tlperl526\lib/Tie/Scalar.pm type=file
+c:\tlperl526\lib/Tie/StdHandle.pm type=file
+c:\tlperl526\lib/Tie/SubstrHash.pm type=file
+c:\tlperl526\lib/Time/HiRes.pm type=file
+c:\tlperl526\lib/Time/Local.pm type=file
+c:\tlperl526\lib/Time/Piece.pm type=file
+c:\tlperl526\lib/Time/Seconds.pm type=file
+c:\tlperl526\lib/Time/gmtime.pm type=file
+c:\tlperl526\lib/Time/localtime.pm type=file
+c:\tlperl526\lib/Time/tm.pm type=file
+c:\tlperl526\lib/UNIVERSAL.pm type=file
+c:\tlperl526\lib/Unicode/Collate.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/Big5.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/GB2312.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/JISX0208.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/Korean.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/Pinyin.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/Stroke.pm type=file
+c:\tlperl526\lib/Unicode/Collate/CJK/Zhuyin.pm type=file
+c:\tlperl526\lib/Unicode/Collate/Locale.pm type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/af.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ar.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/as.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/az.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/be.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/bn.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ca.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/cs.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/cy.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/da.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/de_at_ph.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/de_phone.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ee.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/eo.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/es.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/es_trad.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/et.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/fa.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/fi.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/fi_phone.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/fil.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/fo.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/fr_ca.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/gu.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ha.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/haw.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/he.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/hi.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/hr.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/hu.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/hy.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ig.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/is.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ja.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/kk.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/kl.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/kn.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ko.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/kok.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ln.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/lt.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/lv.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/mk.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ml.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/mr.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/mt.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/nb.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/nn.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/nso.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/om.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/or.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/pa.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/pl.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ro.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sa.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/se.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/si.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/si_dict.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sk.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sl.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sq.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sr.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sv.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/sv_refo.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ta.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/te.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/th.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/tn.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/to.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/tr.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ug_cyrl.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/uk.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/ur.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/vi.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/vo.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/wae.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/wo.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/yo.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/zh.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/zh_big5.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/zh_gb.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/zh_pin.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/zh_strk.pl type=file
+c:\tlperl526\lib/Unicode/Collate/Locale/zh_zhu.pl type=file
+c:\tlperl526\lib/Unicode/Collate/allkeys.txt type=file
+c:\tlperl526\lib/Unicode/Collate/keys.txt type=file
+c:\tlperl526\lib/Unicode/Normalize.pm type=file
+c:\tlperl526\lib/Unicode/UCD.pm type=file
+c:\tlperl526\lib/User/grent.pm type=file
+c:\tlperl526\lib/User/pwent.pm type=file
+c:\tlperl526\lib/Win32.pm type=file
+c:\tlperl526\lib/Win32API/File.pm type=file
+c:\tlperl526\lib/Win32API/File/cFile.pc type=file
+c:\tlperl526\lib/Win32CORE.pm type=file
+c:\tlperl526\lib/XSLoader.pm type=file
+c:\tlperl526\lib/_charnames.pm type=file
+c:\tlperl526\lib/arybase.pm type=file
+c:\tlperl526\lib/attributes.pm type=file
+c:\tlperl526\lib/auto/B/B.dll type=file
+c:\tlperl526\lib/auto/Compress/Raw/Bzip2/Bzip2.dll type=file
+c:\tlperl526\lib/auto/Compress/Raw/Zlib/Zlib.dll type=file
+c:\tlperl526\lib/auto/Cwd/Cwd.dll type=file
+c:\tlperl526\lib/auto/Data/Dumper/Dumper.dll type=file
+c:\tlperl526\lib/auto/Devel/Peek/Peek.dll type=file
+c:\tlperl526\lib/auto/Digest/MD5/MD5.dll type=file
+c:\tlperl526\lib/auto/Digest/SHA/SHA.dll type=file
+c:\tlperl526\lib/auto/Encode/Byte/Byte.dll type=file
+c:\tlperl526\lib/auto/Encode/CN/CN.dll type=file
+c:\tlperl526\lib/auto/Encode/EBCDIC/EBCDIC.dll type=file
+c:\tlperl526\lib/auto/Encode/Encode.dll type=file
+c:\tlperl526\lib/auto/Encode/JP/JP.dll type=file
+c:\tlperl526\lib/auto/Encode/KR/KR.dll type=file
+c:\tlperl526\lib/auto/Encode/Symbol/Symbol.dll type=file
+c:\tlperl526\lib/auto/Encode/TW/TW.dll type=file
+c:\tlperl526\lib/auto/Encode/Unicode/Unicode.dll type=file
+c:\tlperl526\lib/auto/Fcntl/Fcntl.dll type=file
+c:\tlperl526\lib/auto/File/DosGlob/DosGlob.dll type=file
+c:\tlperl526\lib/auto/File/Glob/Glob.dll type=file
+c:\tlperl526\lib/auto/Filter/Util/Call/Call.dll type=file
+c:\tlperl526\lib/auto/Hash/Util/FieldHash/FieldHash.dll type=file
+c:\tlperl526\lib/auto/Hash/Util/Util.dll type=file
+c:\tlperl526\lib/auto/IO/IO.dll type=file
+c:\tlperl526\lib/auto/List/Util/Util.dll type=file
+c:\tlperl526\lib/auto/MIME/Base64/Base64.dll type=file
+c:\tlperl526\lib/auto/Math/BigInt/FastCalc/FastCalc.dll type=file
+c:\tlperl526\lib/auto/Opcode/Opcode.dll type=file
+c:\tlperl526\lib/auto/POSIX/POSIX.dll type=file
+c:\tlperl526\lib/auto/PerlIO/encoding/encoding.dll type=file
+c:\tlperl526\lib/auto/PerlIO/mmap/mmap.dll type=file
+c:\tlperl526\lib/auto/PerlIO/scalar/scalar.dll type=file
+c:\tlperl526\lib/auto/PerlIO/via/via.dll type=file
+c:\tlperl526\lib/auto/SDBM_File/SDBM_File.dll type=file
+c:\tlperl526\lib/auto/Socket/Socket.dll type=file
+c:\tlperl526\lib/auto/Storable/Storable.dll type=file
+c:\tlperl526\lib/auto/Sys/Hostname/Hostname.dll type=file
+c:\tlperl526\lib/auto/Tie/Hash/NamedCapture/NamedCapture.dll type=file
+c:\tlperl526\lib/auto/Time/HiRes/HiRes.dll type=file
+c:\tlperl526\lib/auto/Time/Piece/Piece.dll type=file
+c:\tlperl526\lib/auto/Unicode/Collate/Collate.dll type=file
+c:\tlperl526\lib/auto/Unicode/Normalize/Normalize.dll type=file
+c:\tlperl526\lib/auto/Win32/Win32.dll type=file
+c:\tlperl526\lib/auto/Win32API/File/File.dll type=file
+c:\tlperl526\lib/auto/Win32CORE/extralibs.ld type=file
+c:\tlperl526\lib/auto/arybase/arybase.dll type=file
+c:\tlperl526\lib/auto/attributes/attributes.dll type=file
+c:\tlperl526\lib/auto/mro/mro.dll type=file
+c:\tlperl526\lib/auto/re/re.dll type=file
+c:\tlperl526\lib/auto/threads/shared/shared.dll type=file
+c:\tlperl526\lib/auto/threads/threads.dll type=file
+c:\tlperl526\lib/autodie.pm type=file
+c:\tlperl526\lib/autodie/Scope/Guard.pm type=file
+c:\tlperl526\lib/autodie/Scope/GuardStack.pm type=file
+c:\tlperl526\lib/autodie/Util.pm type=file
+c:\tlperl526\lib/autodie/exception.pm type=file
+c:\tlperl526\lib/autodie/exception/system.pm type=file
+c:\tlperl526\lib/autodie/hints.pm type=file
+c:\tlperl526\lib/autodie/skip.pm type=file
+c:\tlperl526\lib/autouse.pm type=file
+c:\tlperl526\lib/base.pm type=file
+c:\tlperl526\lib/bigint.pm type=file
+c:\tlperl526\lib/bignum.pm type=file
+c:\tlperl526\lib/bigrat.pm type=file
+c:\tlperl526\lib/blib.pm type=file
+c:\tlperl526\lib/bytes.pm type=file
+c:\tlperl526\lib/bytes_heavy.pl type=file
+c:\tlperl526\lib/charnames.pm type=file
+c:\tlperl526\lib/constant.pm type=file
+c:\tlperl526\lib/deprecate.pm type=file
+c:\tlperl526\lib/diagnostics.pm type=file
+c:\tlperl526\lib/dumpvar.pl type=file
+c:\tlperl526\lib/encoding.pm type=file
+c:\tlperl526\lib/encoding/warnings.pm type=file
+c:\tlperl526\lib/experimental.pm type=file
+c:\tlperl526\lib/feature.pm type=file
+c:\tlperl526\lib/fields.pm type=file
+c:\tlperl526\lib/filetest.pm type=file
+c:\tlperl526\lib/if.pm type=file
+c:\tlperl526\lib/integer.pm type=file
+c:\tlperl526\lib/less.pm type=file
+c:\tlperl526\lib/lib.pm type=file
+c:\tlperl526\lib/locale.pm type=file
+c:\tlperl526\lib/meta_notation.pm type=file
+c:\tlperl526\lib/mro.pm type=file
+c:\tlperl526\lib/ok.pm type=file
+c:\tlperl526\lib/open.pm type=file
+c:\tlperl526\lib/ops.pm type=file
+c:\tlperl526\lib/overload.pm type=file
+c:\tlperl526\lib/overload/numbers.pm type=file
+c:\tlperl526\lib/overloading.pm type=file
+c:\tlperl526\lib/parent.pm type=file
+c:\tlperl526\lib/perl5db.pl type=file
+c:\tlperl526\lib/perlfaq.pm type=file
+c:\tlperl526\lib/pods/perl.pod type=file
+c:\tlperl526\lib/pods/perl5004delta.pod type=file
+c:\tlperl526\lib/pods/perl5005delta.pod type=file
+c:\tlperl526\lib/pods/perl5100delta.pod type=file
+c:\tlperl526\lib/pods/perl5101delta.pod type=file
+c:\tlperl526\lib/pods/perl5120delta.pod type=file
+c:\tlperl526\lib/pods/perl5121delta.pod type=file
+c:\tlperl526\lib/pods/perl5122delta.pod type=file
+c:\tlperl526\lib/pods/perl5123delta.pod type=file
+c:\tlperl526\lib/pods/perl5124delta.pod type=file
+c:\tlperl526\lib/pods/perl5125delta.pod type=file
+c:\tlperl526\lib/pods/perl5140delta.pod type=file
+c:\tlperl526\lib/pods/perl5141delta.pod type=file
+c:\tlperl526\lib/pods/perl5142delta.pod type=file
+c:\tlperl526\lib/pods/perl5143delta.pod type=file
+c:\tlperl526\lib/pods/perl5144delta.pod type=file
+c:\tlperl526\lib/pods/perl5160delta.pod type=file
+c:\tlperl526\lib/pods/perl5161delta.pod type=file
+c:\tlperl526\lib/pods/perl5162delta.pod type=file
+c:\tlperl526\lib/pods/perl5163delta.pod type=file
+c:\tlperl526\lib/pods/perl5180delta.pod type=file
+c:\tlperl526\lib/pods/perl5181delta.pod type=file
+c:\tlperl526\lib/pods/perl5182delta.pod type=file
+c:\tlperl526\lib/pods/perl5184delta.pod type=file
+c:\tlperl526\lib/pods/perl5200delta.pod type=file
+c:\tlperl526\lib/pods/perl5201delta.pod type=file
+c:\tlperl526\lib/pods/perl5202delta.pod type=file
+c:\tlperl526\lib/pods/perl5203delta.pod type=file
+c:\tlperl526\lib/pods/perl5220delta.pod type=file
+c:\tlperl526\lib/pods/perl5221delta.pod type=file
+c:\tlperl526\lib/pods/perl5222delta.pod type=file
+c:\tlperl526\lib/pods/perl5223delta.pod type=file
+c:\tlperl526\lib/pods/perl5224delta.pod type=file
+c:\tlperl526\lib/pods/perl5240delta.pod type=file
+c:\tlperl526\lib/pods/perl5241delta.pod type=file
+c:\tlperl526\lib/pods/perl5242delta.pod type=file
+c:\tlperl526\lib/pods/perl5260delta.pod type=file
+c:\tlperl526\lib/pods/perl5261delta.pod type=file
+c:\tlperl526\lib/pods/perl561delta.pod type=file
+c:\tlperl526\lib/pods/perl56delta.pod type=file
+c:\tlperl526\lib/pods/perl581delta.pod type=file
+c:\tlperl526\lib/pods/perl582delta.pod type=file
+c:\tlperl526\lib/pods/perl583delta.pod type=file
+c:\tlperl526\lib/pods/perl584delta.pod type=file
+c:\tlperl526\lib/pods/perl585delta.pod type=file
+c:\tlperl526\lib/pods/perl586delta.pod type=file
+c:\tlperl526\lib/pods/perl587delta.pod type=file
+c:\tlperl526\lib/pods/perl588delta.pod type=file
+c:\tlperl526\lib/pods/perl589delta.pod type=file
+c:\tlperl526\lib/pods/perl58delta.pod type=file
+c:\tlperl526\lib/pods/perlaix.pod type=file
+c:\tlperl526\lib/pods/perlamiga.pod type=file
+c:\tlperl526\lib/pods/perlandroid.pod type=file
+c:\tlperl526\lib/pods/perlapi.pod type=file
+c:\tlperl526\lib/pods/perlapio.pod type=file
+c:\tlperl526\lib/pods/perlartistic.pod type=file
+c:\tlperl526\lib/pods/perlbook.pod type=file
+c:\tlperl526\lib/pods/perlboot.pod type=file
+c:\tlperl526\lib/pods/perlbot.pod type=file
+c:\tlperl526\lib/pods/perlbs2000.pod type=file
+c:\tlperl526\lib/pods/perlcall.pod type=file
+c:\tlperl526\lib/pods/perlce.pod type=file
+c:\tlperl526\lib/pods/perlcheat.pod type=file
+c:\tlperl526\lib/pods/perlclib.pod type=file
+c:\tlperl526\lib/pods/perlcn.pod type=file
+c:\tlperl526\lib/pods/perlcommunity.pod type=file
+c:\tlperl526\lib/pods/perlcygwin.pod type=file
+c:\tlperl526\lib/pods/perldata.pod type=file
+c:\tlperl526\lib/pods/perldbmfilter.pod type=file
+c:\tlperl526\lib/pods/perldebguts.pod type=file
+c:\tlperl526\lib/pods/perldebtut.pod type=file
+c:\tlperl526\lib/pods/perldebug.pod type=file
+c:\tlperl526\lib/pods/perldelta.pod type=file
+c:\tlperl526\lib/pods/perldeprecation.pod type=file
+c:\tlperl526\lib/pods/perldiag.pod type=file
+c:\tlperl526\lib/pods/perldoc.pod type=file
+c:\tlperl526\lib/pods/perldos.pod type=file
+c:\tlperl526\lib/pods/perldsc.pod type=file
+c:\tlperl526\lib/pods/perldtrace.pod type=file
+c:\tlperl526\lib/pods/perlebcdic.pod type=file
+c:\tlperl526\lib/pods/perlembed.pod type=file
+c:\tlperl526\lib/pods/perlexperiment.pod type=file
+c:\tlperl526\lib/pods/perlfaq.pod type=file
+c:\tlperl526\lib/pods/perlfaq1.pod type=file
+c:\tlperl526\lib/pods/perlfaq2.pod type=file
+c:\tlperl526\lib/pods/perlfaq3.pod type=file
+c:\tlperl526\lib/pods/perlfaq4.pod type=file
+c:\tlperl526\lib/pods/perlfaq5.pod type=file
+c:\tlperl526\lib/pods/perlfaq6.pod type=file
+c:\tlperl526\lib/pods/perlfaq7.pod type=file
+c:\tlperl526\lib/pods/perlfaq8.pod type=file
+c:\tlperl526\lib/pods/perlfaq9.pod type=file
+c:\tlperl526\lib/pods/perlfilter.pod type=file
+c:\tlperl526\lib/pods/perlfork.pod type=file
+c:\tlperl526\lib/pods/perlform.pod type=file
+c:\tlperl526\lib/pods/perlfreebsd.pod type=file
+c:\tlperl526\lib/pods/perlfunc.pod type=file
+c:\tlperl526\lib/pods/perlgit.pod type=file
+c:\tlperl526\lib/pods/perlglossary.pod type=file
+c:\tlperl526\lib/pods/perlgpl.pod type=file
+c:\tlperl526\lib/pods/perlguts.pod type=file
+c:\tlperl526\lib/pods/perlhack.pod type=file
+c:\tlperl526\lib/pods/perlhacktips.pod type=file
+c:\tlperl526\lib/pods/perlhacktut.pod type=file
+c:\tlperl526\lib/pods/perlhaiku.pod type=file
+c:\tlperl526\lib/pods/perlhist.pod type=file
+c:\tlperl526\lib/pods/perlhpux.pod type=file
+c:\tlperl526\lib/pods/perlhurd.pod type=file
+c:\tlperl526\lib/pods/perlintern.pod type=file
+c:\tlperl526\lib/pods/perlinterp.pod type=file
+c:\tlperl526\lib/pods/perlintro.pod type=file
+c:\tlperl526\lib/pods/perliol.pod type=file
+c:\tlperl526\lib/pods/perlipc.pod type=file
+c:\tlperl526\lib/pods/perlirix.pod type=file
+c:\tlperl526\lib/pods/perljp.pod type=file
+c:\tlperl526\lib/pods/perlko.pod type=file
+c:\tlperl526\lib/pods/perllexwarn.pod type=file
+c:\tlperl526\lib/pods/perllinux.pod type=file
+c:\tlperl526\lib/pods/perllocale.pod type=file
+c:\tlperl526\lib/pods/perllol.pod type=file
+c:\tlperl526\lib/pods/perlmacos.pod type=file
+c:\tlperl526\lib/pods/perlmacosx.pod type=file
+c:\tlperl526\lib/pods/perlmod.pod type=file
+c:\tlperl526\lib/pods/perlmodinstall.pod type=file
+c:\tlperl526\lib/pods/perlmodlib.pod type=file
+c:\tlperl526\lib/pods/perlmodstyle.pod type=file
+c:\tlperl526\lib/pods/perlmroapi.pod type=file
+c:\tlperl526\lib/pods/perlnetware.pod type=file
+c:\tlperl526\lib/pods/perlnewmod.pod type=file
+c:\tlperl526\lib/pods/perlnumber.pod type=file
+c:\tlperl526\lib/pods/perlobj.pod type=file
+c:\tlperl526\lib/pods/perlootut.pod type=file
+c:\tlperl526\lib/pods/perlop.pod type=file
+c:\tlperl526\lib/pods/perlopenbsd.pod type=file
+c:\tlperl526\lib/pods/perlopentut.pod type=file
+c:\tlperl526\lib/pods/perlos2.pod type=file
+c:\tlperl526\lib/pods/perlos390.pod type=file
+c:\tlperl526\lib/pods/perlos400.pod type=file
+c:\tlperl526\lib/pods/perlpacktut.pod type=file
+c:\tlperl526\lib/pods/perlperf.pod type=file
+c:\tlperl526\lib/pods/perlplan9.pod type=file
+c:\tlperl526\lib/pods/perlpod.pod type=file
+c:\tlperl526\lib/pods/perlpodspec.pod type=file
+c:\tlperl526\lib/pods/perlpodstyle.pod type=file
+c:\tlperl526\lib/pods/perlpolicy.pod type=file
+c:\tlperl526\lib/pods/perlport.pod type=file
+c:\tlperl526\lib/pods/perlpragma.pod type=file
+c:\tlperl526\lib/pods/perlqnx.pod type=file
+c:\tlperl526\lib/pods/perlre.pod type=file
+c:\tlperl526\lib/pods/perlreapi.pod type=file
+c:\tlperl526\lib/pods/perlrebackslash.pod type=file
+c:\tlperl526\lib/pods/perlrecharclass.pod type=file
+c:\tlperl526\lib/pods/perlref.pod type=file
+c:\tlperl526\lib/pods/perlreftut.pod type=file
+c:\tlperl526\lib/pods/perlreguts.pod type=file
+c:\tlperl526\lib/pods/perlrepository.pod type=file
+c:\tlperl526\lib/pods/perlrequick.pod type=file
+c:\tlperl526\lib/pods/perlreref.pod type=file
+c:\tlperl526\lib/pods/perlretut.pod type=file
+c:\tlperl526\lib/pods/perlriscos.pod type=file
+c:\tlperl526\lib/pods/perlrun.pod type=file
+c:\tlperl526\lib/pods/perlsec.pod type=file
+c:\tlperl526\lib/pods/perlsolaris.pod type=file
+c:\tlperl526\lib/pods/perlsource.pod type=file
+c:\tlperl526\lib/pods/perlstyle.pod type=file
+c:\tlperl526\lib/pods/perlsub.pod type=file
+c:\tlperl526\lib/pods/perlsymbian.pod type=file
+c:\tlperl526\lib/pods/perlsyn.pod type=file
+c:\tlperl526\lib/pods/perlsynology.pod type=file
+c:\tlperl526\lib/pods/perlthrtut.pod type=file
+c:\tlperl526\lib/pods/perltie.pod type=file
+c:\tlperl526\lib/pods/perltoc.pod type=file
+c:\tlperl526\lib/pods/perltodo.pod type=file
+c:\tlperl526\lib/pods/perltooc.pod type=file
+c:\tlperl526\lib/pods/perltoot.pod type=file
+c:\tlperl526\lib/pods/perltrap.pod type=file
+c:\tlperl526\lib/pods/perltru64.pod type=file
+c:\tlperl526\lib/pods/perltw.pod type=file
+c:\tlperl526\lib/pods/perlunicode.pod type=file
+c:\tlperl526\lib/pods/perlunicook.pod type=file
+c:\tlperl526\lib/pods/perlunifaq.pod type=file
+c:\tlperl526\lib/pods/perluniintro.pod type=file
+c:\tlperl526\lib/pods/perluniprops.pod type=file
+c:\tlperl526\lib/pods/perlunitut.pod type=file
+c:\tlperl526\lib/pods/perlutil.pod type=file
+c:\tlperl526\lib/pods/perlvar.pod type=file
+c:\tlperl526\lib/pods/perlvms.pod type=file
+c:\tlperl526\lib/pods/perlvos.pod type=file
+c:\tlperl526\lib/pods/perlwin32.pod type=file
+c:\tlperl526\lib/pods/perlxs.pod type=file
+c:\tlperl526\lib/pods/perlxstut.pod type=file
+c:\tlperl526\lib/pods/perlxstypemap.pod type=file
+c:\tlperl526\lib/re.pm type=file
+c:\tlperl526\lib/sigtrap.pm type=file
+c:\tlperl526\lib/sort.pm type=file
+c:\tlperl526\lib/strict.pm type=file
+c:\tlperl526\lib/subs.pm type=file
+c:\tlperl526\lib/threads.pm type=file
+c:\tlperl526\lib/threads/shared.pm type=file
+c:\tlperl526\lib/unicore/Blocks.txt type=file
+c:\tlperl526\lib/unicore/CombiningClass.pl type=file
+c:\tlperl526\lib/unicore/Decomposition.pl type=file
+c:\tlperl526\lib/unicore/Heavy.pl type=file
+c:\tlperl526\lib/unicore/Name.pl type=file
+c:\tlperl526\lib/unicore/Name.pm type=file
+c:\tlperl526\lib/unicore/NamedSequences.txt type=file
+c:\tlperl526\lib/unicore/SpecialCasing.txt type=file
+c:\tlperl526\lib/unicore/To/Age.pl type=file
+c:\tlperl526\lib/unicore/To/Bc.pl type=file
+c:\tlperl526\lib/unicore/To/Bmg.pl type=file
+c:\tlperl526\lib/unicore/To/Bpb.pl type=file
+c:\tlperl526\lib/unicore/To/Bpt.pl type=file
+c:\tlperl526\lib/unicore/To/Cf.pl type=file
+c:\tlperl526\lib/unicore/To/Digit.pl type=file
+c:\tlperl526\lib/unicore/To/Ea.pl type=file
+c:\tlperl526\lib/unicore/To/Fold.pl type=file
+c:\tlperl526\lib/unicore/To/GCB.pl type=file
+c:\tlperl526\lib/unicore/To/Gc.pl type=file
+c:\tlperl526\lib/unicore/To/Hst.pl type=file
+c:\tlperl526\lib/unicore/To/InPC.pl type=file
+c:\tlperl526\lib/unicore/To/InSC.pl type=file
+c:\tlperl526\lib/unicore/To/Isc.pl type=file
+c:\tlperl526\lib/unicore/To/Jg.pl type=file
+c:\tlperl526\lib/unicore/To/Jt.pl type=file
+c:\tlperl526\lib/unicore/To/Lb.pl type=file
+c:\tlperl526\lib/unicore/To/Lc.pl type=file
+c:\tlperl526\lib/unicore/To/Lower.pl type=file
+c:\tlperl526\lib/unicore/To/NFCQC.pl type=file
+c:\tlperl526\lib/unicore/To/NFDQC.pl type=file
+c:\tlperl526\lib/unicore/To/NFKCCF.pl type=file
+c:\tlperl526\lib/unicore/To/NFKCQC.pl type=file
+c:\tlperl526\lib/unicore/To/NFKDQC.pl type=file
+c:\tlperl526\lib/unicore/To/Na1.pl type=file
+c:\tlperl526\lib/unicore/To/NameAlia.pl type=file
+c:\tlperl526\lib/unicore/To/Nt.pl type=file
+c:\tlperl526\lib/unicore/To/Nv.pl type=file
+c:\tlperl526\lib/unicore/To/PerlDeci.pl type=file
+c:\tlperl526\lib/unicore/To/SB.pl type=file
+c:\tlperl526\lib/unicore/To/Sc.pl type=file
+c:\tlperl526\lib/unicore/To/Scx.pl type=file
+c:\tlperl526\lib/unicore/To/Tc.pl type=file
+c:\tlperl526\lib/unicore/To/Title.pl type=file
+c:\tlperl526\lib/unicore/To/Uc.pl type=file
+c:\tlperl526\lib/unicore/To/Upper.pl type=file
+c:\tlperl526\lib/unicore/To/WB.pl type=file
+c:\tlperl526\lib/unicore/To/_PerlLB.pl type=file
+c:\tlperl526\lib/unicore/To/_PerlWB.pl type=file
+c:\tlperl526\lib/unicore/UCD.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/NA.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V11.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V20.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V30.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V31.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V32.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V40.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V41.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V50.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V51.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V52.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V60.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V61.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V70.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V80.pl type=file
+c:\tlperl526\lib/unicore/lib/Age/V90.pl type=file
+c:\tlperl526\lib/unicore/lib/Alpha/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/AL.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/AN.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/B.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/BN.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/CS.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/EN.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/ES.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/ET.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/L.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/NSM.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/ON.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/R.pl type=file
+c:\tlperl526\lib/unicore/lib/Bc/WS.pl type=file
+c:\tlperl526\lib/unicore/lib/BidiC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/BidiM/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Blk/NB.pl type=file
+c:\tlperl526\lib/unicore/lib/Bpt/C.pl type=file
+c:\tlperl526\lib/unicore/lib/Bpt/N.pl type=file
+c:\tlperl526\lib/unicore/lib/Bpt/O.pl type=file
+c:\tlperl526\lib/unicore/lib/CE/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CI/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CWCF/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CWCM/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CWKCF/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CWL/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CWT/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/CWU/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Cased/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/A.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/AR.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/ATAR.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/B.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/BR.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/DB.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/NK.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/NR.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/OV.pl type=file
+c:\tlperl526\lib/unicore/lib/Ccc/VR.pl type=file
+c:\tlperl526\lib/unicore/lib/CompEx/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/DI/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Dash/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Dep/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Dia/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Com.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Enc.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Fin.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Font.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Init.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Iso.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Med.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Nar.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Nb.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/NonCanon.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Sqr.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Sub.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Sup.pl type=file
+c:\tlperl526\lib/unicore/lib/Dt/Vert.pl type=file
+c:\tlperl526\lib/unicore/lib/Ea/A.pl type=file
+c:\tlperl526\lib/unicore/lib/Ea/H.pl type=file
+c:\tlperl526\lib/unicore/lib/Ea/N.pl type=file
+c:\tlperl526\lib/unicore/lib/Ea/Na.pl type=file
+c:\tlperl526\lib/unicore/lib/Ea/W.pl type=file
+c:\tlperl526\lib/unicore/lib/Ext/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/CN.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/EB.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/EX.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/LV.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/LVT.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/PP.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/SM.pl type=file
+c:\tlperl526\lib/unicore/lib/GCB/XX.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/C.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Cf.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Cn.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/L.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/LC.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Ll.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Lm.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Lo.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Lu.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/M.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Mc.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Me.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Mn.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/N.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Nd.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Nl.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/No.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/P.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Pc.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Pd.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Pe.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Pf.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Pi.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Po.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Ps.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/S.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Sc.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Sk.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Sm.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/So.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Z.pl type=file
+c:\tlperl526\lib/unicore/lib/Gc/Zs.pl type=file
+c:\tlperl526\lib/unicore/lib/GrBase/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Hex/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Hst/NA.pl type=file
+c:\tlperl526\lib/unicore/lib/Hyphen/T.pl type=file
+c:\tlperl526\lib/unicore/lib/IDC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/IDS/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Ideo/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/In/2_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/2_1.pl type=file
+c:\tlperl526\lib/unicore/lib/In/3_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/3_1.pl type=file
+c:\tlperl526\lib/unicore/lib/In/3_2.pl type=file
+c:\tlperl526\lib/unicore/lib/In/4_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/4_1.pl type=file
+c:\tlperl526\lib/unicore/lib/In/5_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/5_1.pl type=file
+c:\tlperl526\lib/unicore/lib/In/5_2.pl type=file
+c:\tlperl526\lib/unicore/lib/In/6_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/6_1.pl type=file
+c:\tlperl526\lib/unicore/lib/In/6_2.pl type=file
+c:\tlperl526\lib/unicore/lib/In/6_3.pl type=file
+c:\tlperl526\lib/unicore/lib/In/7_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/8_0.pl type=file
+c:\tlperl526\lib/unicore/lib/In/9_0.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/Bottom.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/Left.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/LeftAndR.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/NA.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/Overstru.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/Right.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/Top.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/TopAndBo.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/TopAndL2.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/TopAndLe.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/TopAndRi.pl type=file
+c:\tlperl526\lib/unicore/lib/InPC/VisualOr.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Avagraha.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Bindu.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Cantilla.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Consona2.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Consona3.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Consona4.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Consona5.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Consona6.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Consonan.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Invisibl.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Nukta.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Number.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Other.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/PureKill.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Syllable.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/ToneMark.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Virama.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Visarga.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/Vowel.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/VowelDep.pl type=file
+c:\tlperl526\lib/unicore/lib/InSC/VowelInd.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Ain.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Alef.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Beh.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Dal.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/FarsiYeh.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Feh.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Gaf.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Hah.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Kaf.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Lam.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/NoJoinin.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Qaf.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Reh.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Sad.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Seen.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Waw.pl type=file
+c:\tlperl526\lib/unicore/lib/Jg/Yeh.pl type=file
+c:\tlperl526\lib/unicore/lib/Jt/C.pl type=file
+c:\tlperl526\lib/unicore/lib/Jt/D.pl type=file
+c:\tlperl526\lib/unicore/lib/Jt/R.pl type=file
+c:\tlperl526\lib/unicore/lib/Jt/T.pl type=file
+c:\tlperl526\lib/unicore/lib/Jt/U.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/AI.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/AL.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/BA.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/BB.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/CJ.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/CL.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/CM.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/EB.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/EX.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/GL.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/ID.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/IN.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/IS.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/NS.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/OP.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/PO.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/PR.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/QU.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/SA.pl type=file
+c:\tlperl526\lib/unicore/lib/Lb/XX.pl type=file
+c:\tlperl526\lib/unicore/lib/Lower/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Math/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/NFCQC/M.pl type=file
+c:\tlperl526\lib/unicore/lib/NFCQC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/NFDQC/N.pl type=file
+c:\tlperl526\lib/unicore/lib/NFDQC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/NFKCQC/N.pl type=file
+c:\tlperl526\lib/unicore/lib/NFKCQC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/NFKDQC/N.pl type=file
+c:\tlperl526\lib/unicore/lib/NFKDQC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Nt/Di.pl type=file
+c:\tlperl526\lib/unicore/lib/Nt/None.pl type=file
+c:\tlperl526\lib/unicore/lib/Nt/Nu.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/0.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/10.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/100.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1000.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/10000.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/11.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/12.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/13.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/14.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/15.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/16.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/17.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/18.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/19.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1_16.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1_2.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1_3.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1_4.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/1_8.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/2.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/20.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/200.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/2_3.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/3.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/30.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/300.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/3_16.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/3_4.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/4.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/40.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/400.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/5.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/50.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/500.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/5000.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/50000.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/6.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/60.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/600.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/7.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/70.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/700.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/8.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/80.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/800.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/9.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/90.pl type=file
+c:\tlperl526\lib/unicore/lib/Nv/900.pl type=file
+c:\tlperl526\lib/unicore/lib/PCM/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/PatSyn/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Alnum.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Assigned.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Blank.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Graph.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/PerlWord.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/PosixPun.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Print.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/SpacePer.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Title.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/Word.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/XPosixPu.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlAny.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlCh2.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlCha.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlFol.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlIDC.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlIDS.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlNch.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlPat.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlPr2.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlPro.pl type=file
+c:\tlperl526\lib/unicore/lib/Perl/_PerlQuo.pl type=file
+c:\tlperl526\lib/unicore/lib/QMark/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/AT.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/CL.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/EX.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/FO.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/LE.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/LO.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/NU.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/SC.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/ST.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/Sp.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/UP.pl type=file
+c:\tlperl526\lib/unicore/lib/SB/XX.pl type=file
+c:\tlperl526\lib/unicore/lib/SD/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/STerm/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Arab.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Armn.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Beng.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Bhks.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Cham.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Cprt.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Cyrl.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Deva.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Dupl.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Ethi.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Geor.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Glag.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Gran.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Grek.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Gujr.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Guru.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Han.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Hang.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Hebr.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Hira.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Hmng.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Kana.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Khar.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Khmr.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Knda.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Lana.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Lao.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Latn.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Limb.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Linb.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Mlym.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Mong.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Mult.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Orya.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Sinh.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Talu.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Taml.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Telu.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Tibt.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Xsux.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Zinh.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Zyyy.pl type=file
+c:\tlperl526\lib/unicore/lib/Sc/Zzzz.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Adlm.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Arab.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Armn.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Beng.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Bopo.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Cakm.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Copt.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Cprt.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Cyrl.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Deva.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Dupl.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Geor.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Glag.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Gran.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Grek.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Gujr.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Guru.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Han.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Hang.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Hira.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Kana.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Knda.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Latn.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Limb.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Lina.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Linb.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Mlym.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Mong.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Mult.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Mymr.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Orya.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Phlp.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Shrd.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Sind.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Sinh.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Syrc.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Tagb.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Takr.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Taml.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Telu.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Thaa.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Tirh.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Yi.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Zinh.pl type=file
+c:\tlperl526\lib/unicore/lib/Scx/Zyyy.pl type=file
+c:\tlperl526\lib/unicore/lib/Term/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/UIdeo/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/Upper/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/EX.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/Extend.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/FO.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/HL.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/KA.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/LE.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/MB.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/ML.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/MN.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/NU.pl type=file
+c:\tlperl526\lib/unicore/lib/WB/XX.pl type=file
+c:\tlperl526\lib/unicore/lib/XIDC/Y.pl type=file
+c:\tlperl526\lib/unicore/lib/XIDS/Y.pl type=file
+c:\tlperl526\lib/unicore/version type=file
+c:\tlperl526\lib/utf8.pm type=file
+c:\tlperl526\lib/utf8_heavy.pl type=file
+c:\tlperl526\lib/vars.pm type=file
+c:\tlperl526\lib/version.pm type=file
+c:\tlperl526\lib/version.pod type=file
+c:\tlperl526\lib/version/Internals.pod type=file
+c:\tlperl526\lib/version/regex.pm type=file
+c:\tlperl526\lib/vmsish.pm type=file
+c:\tlperl526\lib/warnings.pm type=file
+c:\tlperl526\lib/warnings/register.pm type=file

Modified: trunk/Master/tlpkg/tlperl/lib/App/Cpan.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Cpan.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/App/Cpan.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -6,7 +6,7 @@
 
 use if $] < 5.008 => 'IO::Scalar';
 
-$VERSION = '1.63_01';
+$VERSION = '1.66';
 
 =head1 NAME
 
@@ -34,7 +34,7 @@
 	cpan
 
 	# without arguments, but some switches
-	cpan [-ahpruvACDLOP]
+	cpan [-ahpruvACDLOPX]
 
 =head1 DESCRIPTION
 
@@ -104,7 +104,7 @@
 Print a help message and exit. When you specify C<-h>, it ignores all
 of the other options and arguments.
 
-=item -i
+=item -i module [ module ... ]
 
 Install the specified modules. With no other switches, this switch
 is implied.
@@ -164,8 +164,13 @@
 
 Recompiles dynamically loaded modules with CPAN::Shell->recompile.
 
-=item -t
+=item -s
 
+Drop in the CPAN.pm shell. This command does this automatically if you don't
+specify any arguments.
+
+=item -t module [ module ... ]
+
 Run a `make test` on the specified modules.
 
 =item -T
@@ -192,6 +197,16 @@
 Turn on cpan warnings. This checks various things, like directory permissions,
 and tells you about problems you might have.
 
+=item -x module [ module ... ]
+
+Find close matches to the named modules that you think you might have
+mistyped. This requires the optional installation of Text::Levenshtein or
+Text::Levenshtein::Damerau.
+
+=item -X
+
+Dump all the namespaces to standard output.
+
 =back
 
 =head2 Examples
@@ -299,7 +314,7 @@
 use vars qw( @META_OPTIONS $Default %CPAN_METHODS @CPAN_OPTIONS  @option_order
 	%Method_table %Method_table_index );
 
- at META_OPTIONS = qw( h v V I g G M: C A D O l L a r p P j: J w T);
+ at META_OPTIONS = qw( h v V I g G M: C A D O l L a r p P j: J w x X );
 
 $Default = 'default';
 
@@ -312,6 +327,7 @@
 	't'      => 'test',
 	'u'      => 'upgrade',
 	'T'      => 'notest',
+	's'      => 'shell',
 	);
 @CPAN_OPTIONS = grep { $_ ne $Default } sort keys %CPAN_METHODS;
 
@@ -332,6 +348,7 @@
 	h =>  [ \&_print_help,        NO_ARGS, GOOD_EXIT, 'Printing help'                ],
 	v =>  [ \&_print_version,     NO_ARGS, GOOD_EXIT, 'Printing version'             ],
 	V =>  [ \&_print_details,     NO_ARGS, GOOD_EXIT, 'Printing detailed version'    ],
+	X =>  [ \&_list_all_namespaces, NO_ARGS, GOOD_EXIT, 'Listing all namespaces'      ],
 
 	# options that affect other options
 	j =>  [ \&_load_config,          ARGS, GOOD_EXIT, 'Use specified config file'    ],
@@ -343,8 +360,8 @@
     w =>  [ \&_turn_on_warnings,  NO_ARGS, GOOD_EXIT, 'Turning on warnings'          ],
 
 	# options that do their one thing
-	g =>  [ \&_download,          NO_ARGS, GOOD_EXIT, 'Download the latest distro'        ],
-	G =>  [ \&_gitify,            NO_ARGS, GOOD_EXIT, 'Down and gitify the latest distro' ],
+	g =>  [ \&_download,             ARGS, GOOD_EXIT, 'Download the latest distro'        ],
+	G =>  [ \&_gitify,               ARGS, GOOD_EXIT, 'Down and gitify the latest distro' ],
 
 	C =>  [ \&_show_Changes,         ARGS, GOOD_EXIT, 'Showing Changes file'         ],
 	A =>  [ \&_show_Author,          ARGS, GOOD_EXIT, 'Showing Author'               ],
@@ -358,7 +375,9 @@
 
 	r =>  [ \&_recompile,         NO_ARGS, GOOD_EXIT, 'Recompiling'                  ],
 	u =>  [ \&_upgrade,           NO_ARGS, GOOD_EXIT, 'Running `make test`'          ],
+   's' => [ \&_shell,            NO_ARGS, GOOD_EXIT, 'Running `make test`'          ],
 
+   'x' => [ \&_guess_namespace,      ARGS, GOOD_EXIT, 'Guessing namespaces'          ],
 	c =>  [ \&_default,              ARGS, GOOD_EXIT, 'Running `make clean`'         ],
 	f =>  [ \&_default,              ARGS, GOOD_EXIT, 'Installing with force'        ],
 	i =>  [ \&_default,              ARGS, GOOD_EXIT, 'Running `make install`'       ],
@@ -510,7 +529,7 @@
 			last OPTION;
 			}
 
-		$logger->info( "$description -- ignoring other arguments" )
+		$logger->info( "[$option] $description -- ignoring other arguments" )
 			if( @ARGV && ! $takes_args );
 
 		$return_value = $sub->( \ @ARGV, $options );
@@ -533,12 +552,12 @@
 # load a module without searching the default entry for the current
 # directory
 sub _safe_load_module {
-  my $name = shift;
+    my $name = shift;
 
-  local @INC = @INC;
-  pop @INC if $INC[-1] eq '.';
+    local @INC = @INC;
+    pop @INC if $INC[-1] eq '.';
 
-  eval "require $name; 1";
+    eval "require $name; 1";
 }
 
 sub _init_logger
@@ -547,7 +566,7 @@
 
     unless( $log4perl_loaded )
         {
-        print "Loading internal null logger. Install Log::Log4perl for logging messages\n";
+        print STDERR "Loading internal null logger. Install Log::Log4perl for logging messages\n";
         $logger = Local::Null::Logger->new;
         return $logger;
         }
@@ -608,6 +627,12 @@
 
 	foreach my $arg ( @$args )
 		{
+		# check the argument and perhaps capture typos
+		my $module = _expand_module( $arg ) or do {
+			$logger->error( "Skipping $arg because I couldn't find a matching namespace." );
+			next;
+			};
+
 		_clear_cpanpm_output();
 		$action->( $arg );
 
@@ -796,8 +821,7 @@
         $CPAN::Frontend->myprint("\n");
       }
 
-	my $mirrors   = CPAN::Mirrors->new(  );
-	$mirrors->parse_mirrored_by( File::Spec->catfile($CPAN::Config->{keep_source_where},'MIRRORED.BY') );
+	my $mirrors   = CPAN::Mirrors->new( _mirror_file() );
 	my @continents = $mirrors->find_best_continents;
 
 	my @mirrors   = $mirrors->get_mirrors_by_continents( $continents[0] );
@@ -918,9 +942,7 @@
 	$uri->scheme eq 'file'
 	}
 
-sub _find_good_mirrors {
-	require CPAN::Mirrors;
-
+sub _mirror_file {
 	my $file = do {
 		my $file = 'MIRRORED.BY';
 		my $local_path = File::Spec->catfile(
@@ -933,8 +955,13 @@
 			$local_path;
 			}
 		};
-	my $mirrors = CPAN::Mirrors->new( $file );
+	}
 
+sub _find_good_mirrors {
+	require CPAN::Mirrors;
+
+	my $mirrors = CPAN::Mirrors->new( _mirror_file() );
+
 	my @mirrors = $mirrors->best_mirrors(
 		how_many   => 5,
 		verbose    => 1,
@@ -1006,7 +1033,7 @@
 
 	my $rc = _safe_load_module("local::lib");
 	unless( $rc ) {
-		$logger->die( "Could not load local::lib" );
+		$logger->logdie( "Could not load local::lib" );
 		}
 
 	local::lib->import;
@@ -1018,7 +1045,7 @@
 	{
 	$logger->debug( "Setting per session mirrors" );
 	unless( $_[0] ) {
-		$logger->die( "The -M switch requires a comma-separated list of mirrors" );
+		$logger->logdie( "The -M switch requires a comma-separated list of mirrors" );
 		}
 
 	$CPAN::Config->{urllist} = [ split /,/, $_[0] ];
@@ -1055,6 +1082,15 @@
 	return HEY_IT_WORKED;
 	}
 
+sub _shell
+	{
+	$logger->info( "Dropping into shell" );
+
+	CPAN::shell();
+
+	return HEY_IT_WORKED;
+	}
+
 sub _load_config # -j
 	{
 	my $file = shift || '';
@@ -1113,14 +1149,17 @@
 
 	my %paths;
 
-	foreach my $module ( @$args )
-		{
-		$logger->info( "Checking $module" );
-		my $path = CPAN::Shell->expand( "Module", $module )->cpan_file;
+	foreach my $arg ( @$args ) {
+		$logger->info( "Checking $arg" );
 
+		my $module = _expand_module( $arg ) or next;
+		my $path = $module->cpan_file;
+
 		$logger->debug( "Inst file would be $path\n" );
 
-		$paths{$module} = _get_file( _make_path( $path ) );
+		$paths{$arg} = _get_file( _make_path( $path ) );
+
+		$logger->info( "Downloaded [$arg] to [$paths{$module}]" );
 		}
 
 	return \%paths;
@@ -1160,16 +1199,14 @@
 
 	my $starting_dir = cwd();
 
-	foreach my $module ( @$args )
+	foreach my $arg ( @$args )
 		{
-		$logger->info( "Checking $module" );
-		my $path = CPAN::Shell->expand( "Module", $module )->cpan_file;
+		$logger->info( "Checking $arg" );
+		my $store_paths = _download( [ $arg ] );
+		$logger->debug( "gitify Store path is $store_paths->{$arg}" );
+		my $dirname = dirname( $store_paths->{$arg} );
 
-		my $store_paths = _download( [ $module ] );
-		$logger->debug( "gitify Store path is $store_paths->{$module}" );
-		my $dirname = dirname( $store_paths->{$module} );
-
-		my $ae = Archive::Extract->new( archive => $store_paths->{$module} );
+		my $ae = Archive::Extract->new( archive => $store_paths->{$arg} );
 		$ae->extract( to => $dirname );
 
 		chdir $ae->extract_path;
@@ -1197,7 +1234,8 @@
 		{
 		$logger->info( "Checking $arg\n" );
 
-		my $module = eval { CPAN::Shell->expand( "Module", $arg ) };
+		my $module = _expand_module( $arg ) or next;
+
 		my $out = _get_cpanpm_output();
 
 		next unless eval { $module->inst_file };
@@ -1244,7 +1282,8 @@
 
 	foreach my $arg ( @$args )
 		{
-		my $module = CPAN::Shell->expand( "Module", $arg );
+		my $module = _expand_module( $arg ) or next;
+
 		unless( $module )
 			{
 			$logger->info( "Didn't find a $arg module, so no author!" );
@@ -1268,7 +1307,7 @@
 
 	foreach my $arg ( @$args )
 		{
-		my $module = CPAN::Shell->expand( "Module", $arg );
+		my $module = _expand_module( $arg ) or next;
 		my $author = CPAN::Shell->expand( "Author", $module->userid );
 
 		next unless $module->userid;
@@ -1290,16 +1329,26 @@
 	return HEY_IT_WORKED;
 	}
 
+BEGIN {
+my $modules;
+sub _get_all_namespaces
+	{
+	return $modules if $modules;
+	$modules = [ map { $_->id } CPAN::Shell->expand( "Module", "/./" ) ];
+	}
+}
+
 sub _show_out_of_date
 	{
-	my @modules = CPAN::Shell->expand( "Module", "/./" );
+	my $modules = _get_all_namespaces();
 
 	printf "%-40s  %6s  %6s\n", "Module Name", "Local", "CPAN";
 	print "-" x 73, "\n";
 
-	foreach my $module ( @modules )
+	foreach my $module ( @$modules )
 		{
-		next unless $module->inst_file;
+                next unless $module = _expand_module($module);
+                next unless $module->inst_file;
 		next if $module->uptodate;
 		printf "%-40s  %.4f  %.4f\n",
 			$module->id,
@@ -1316,10 +1365,9 @@
 
 	my %hash = map { lc $_, 1 } @$args;
 
-	my @modules = CPAN::Shell->expand( "Module", "/./" );
+	my $modules = _get_all_namespaces();
 
-	foreach my $module ( @modules )
-		{
+	foreach my $module ( @$modules ) {
 		next unless exists $hash{ lc $module->userid };
 		print $module->id, "\n";
 		}
@@ -1439,6 +1487,109 @@
 	return $module_name;
 	}
 
+
+sub _expand_module
+	{
+	my( $module ) = @_;
+
+	my $expanded = CPAN::Shell->expandany( $module );
+        return $expanded if $expanded;
+        $expanded = CPAN::Shell->expand( "Module", $module );
+	unless( defined $expanded ) {
+		$logger->error( "Could not expand [$module]. Check the module name." );
+		my $threshold = (
+			grep { int }
+			sort { length $a <=> length $b }
+				length($module)/4, 4
+			)[0];
+
+		my $guesses = _guess_at_module_name( $module, $threshold );
+		if( defined $guesses and @$guesses ) {
+			$logger->info( "Perhaps you meant one of these:" );
+			foreach my $guess ( @$guesses ) {
+				$logger->info( "\t$guess" );
+				}
+			}
+		return;
+		}
+
+	return $expanded;
+	}
+
+my $guessers = [
+	[ qw( Text::Levenshtein::XS distance 7 ) ],
+	[ qw( Text::Levenshtein::Damerau::XS     xs_edistance 7 ) ],
+
+	[ qw( Text::Levenshtein     distance 7 ) ],
+	[ qw( Text::Levenshtein::Damerau::PP     pp_edistance 7 ) ],
+
+	];
+
+# for -x
+sub _guess_namespace
+	{
+	my $args = shift;
+
+	foreach my $arg ( @$args )
+		{
+		$logger->debug( "Checking $arg" );
+		my $guesses = _guess_at_module_name( $arg );
+
+		foreach my $guess ( @$guesses ) {
+			print $guess, "\n";
+			}
+		}
+
+	return HEY_IT_WORKED;
+	}
+
+sub _list_all_namespaces {
+	my $modules = _get_all_namespaces();
+
+	foreach my $module ( @$modules ) {
+		print $module, "\n";
+		}
+	}
+
+BEGIN {
+my $distance;
+sub _guess_at_module_name
+	{
+	my( $target, $threshold ) = @_;
+
+	unless( defined $distance ) {
+		foreach my $try ( @$guessers ) {
+			my $can_guess = eval "require $try->[0]; 1" or next;
+
+			no strict 'refs';
+			$distance = \&{ join "::", @$try[0,1] };
+			$threshold ||= $try->[2];
+			}
+		}
+
+	unless( $distance ) {
+		my $modules = join ", ", map { $_->[0] } @$guessers;
+		substr $modules, rindex( $modules, ',' ), 1, ', and';
+
+		$logger->info( "I can suggest names if you install one of $modules" );
+		return;
+		}
+
+	my $modules = _get_all_namespaces();
+	$logger->info( "Checking " . @$modules . " namespaces for close match suggestions" );
+
+	my %guesses;
+	foreach my $guess ( @$modules ) {
+		my $distance = $distance->( $target, $guess );
+		next if $distance > $threshold;
+		$guesses{$guess} = $distance;
+		}
+
+	my @guesses = sort { $guesses{$a} <=> $guesses{$b} } keys %guesses;
+	return [ grep { defined } @guesses[0..9] ];
+	}
+}
+
 1;
 
 =back
@@ -1471,8 +1622,6 @@
 
 * Check then exit
 
-* no test option
-
 =head1 BUGS
 
 * none noted
@@ -1508,7 +1657,7 @@
 
 =head1 COPYRIGHT
 
-Copyright (c) 2001-2014, brian d foy, All Rights Reserved.
+Copyright (c) 2001-2015, brian d foy, All Rights Reserved.
 
 You may redistribute this under the same terms as Perl itself.
 

Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -9,11 +9,11 @@
 
 =head1 VERSION
 
-Version 3.36
+Version 3.38
 
 =cut
 
-our $VERSION = '3.36_01';
+our $VERSION = '3.38';
 
 =head1 DESCRIPTION
 

Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -14,11 +14,11 @@
 
 =head1 VERSION
 
-Version 3.36
+Version 3.38
 
 =cut
 
-our $VERSION = '3.36_01';
+our $VERSION = '3.38';
 
 =head1 DESCRIPTION
 

Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -25,11 +25,11 @@
 
 =head1 VERSION
 
-Version 3.36
+Version 3.38
 
 =cut
 
-our $VERSION = '3.36_01';
+our $VERSION = '3.38';
 
 =head1 DESCRIPTION
 

Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -18,11 +18,11 @@
 
 =head1 VERSION
 
-Version 3.36
+Version 3.38
 
 =cut
 
-our $VERSION = '3.36_01';
+our $VERSION = '3.38';
 
 =head1 DESCRIPTION
 

Modified: trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -3,7 +3,7 @@
 BEGIN {
     require Exporter;
 
-    $VERSION    = '2.04_01';
+    $VERSION    = '2.24';
     @ISA        = qw[Exporter];
 
     require Time::Local if $^O eq "MacOS";
@@ -11,6 +11,9 @@
 
 @EXPORT = Archive::Tar::Constant->_list_consts( __PACKAGE__ );
 
+use strict;
+use warnings;
+
 use constant FILE           => 0;
 use constant HARDLINK       => 1;
 use constant SYMLINK        => 2;
@@ -50,7 +53,7 @@
 use constant STRIP_MODE     => sub { shift() & 0777 };
 use constant CHECK_SUM      => "      ";
 
-use constant UNPACK         => 'A100 A8 A8 A8 a12 A12 A8 A1 A100 A6 A2 A32 A32 A8 A8 A155 x12';	# cdrake - size must be a12 - not A12 - or else screws up huge file sizes (>8gb)
+use constant UNPACK         => 'a100 a8 a8 a8 a12 a12 a8 a1 a100 A6 a2 a32 a32 a8 a8 a155 x12';	# cdrake - size must be a12 - not A12 - or else screws up huge file sizes (>8gb)
 use constant PACK           => 'a100 a8 a8 a8 a12 a12 A8 a1 a100 a6 a2 a32 a32 a8 a8 a155 x12';
 use constant NAME_LENGTH    => 100;
 use constant PREFIX_LENGTH  => 155;

Modified: trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -13,7 +13,7 @@
 
 use vars qw[@ISA $VERSION];
 #@ISA        = qw[Archive::Tar];
-$VERSION    = '2.04_01';
+$VERSION    = '2.24';
 
 ### set value to 1 to oct() it during the unpack ###
 

Modified: trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -31,7 +31,7 @@
 $DEBUG                  = 0;
 $WARN                   = 1;
 $FOLLOW_SYMLINK         = 0;
-$VERSION                = "2.04_01";
+$VERSION                = "2.24";
 $CHOWN                  = 1;
 $CHMOD                  = 1;
 $SAME_PERMISSIONS       = $> == 0 ? 1 : 0;
@@ -263,7 +263,7 @@
 
             ### different reader/writer modules, different error vars... sigh
             if( MODE_READ->($mode) ) {
-                $fh = IO::Uncompress::Bunzip2->new( $file ) or do {
+                $fh = IO::Uncompress::Bunzip2->new( $file, MultiStream => 1 ) or do {
                     $self->_error( qq[Could not read '$file': ] .
                         $IO::Uncompress::Bunzip2::Bunzip2Error
                     );

Modified: trunk/Master/tlpkg/tlperl/lib/B/Concise.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Concise.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B/Concise.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -14,7 +14,7 @@
 
 use Exporter (); # use #5
 
-our $VERSION   = "0.996";
+our $VERSION   = "0.999";
 our @ISA       = qw(Exporter);
 our @EXPORT_OK = qw( set_style set_style_standard add_callback
 		     concise_subref concise_cv concise_main
@@ -28,6 +28,8 @@
 # use #6
 use B qw(class ppname main_start main_root main_cv cstring svref_2object
 	 SVf_IOK SVf_NOK SVf_POK SVf_IVisUV SVf_FAKE OPf_KIDS OPf_SPECIAL
+         OPf_STACKED
+         OPpSPLIT_ASSIGN OPpSPLIT_LEX
 	 CVf_ANON PAD_FAKELEX_ANON PAD_FAKELEX_MULTI SVf_ROK);
 
 my %style =
@@ -595,31 +597,43 @@
 our %hints; # used to display each COP's op_hints values
 
 # strict refs, subs, vars
- at hints{2,512,1024,32,64,128} = ('$', '&', '*', 'x$', 'x&', 'x*');
+ at hints{0x2,0x200,0x400,0x20,0x40,0x80} = ('$', '&', '*', 'x$', 'x&', 'x*');
 # integers, locale, bytes
- at hints{1,4,8,16} = ('i', 'l', 'b');
+ at hints{0x1,0x4,0x8,0x10} = ('i', 'l', 'b');
 # block scope, localise %^H, $^OPEN (in), $^OPEN (out)
- at hints{256,131072,262144,524288} = ('{','%','<','>');
+ at hints{0x100,0x20000,0x40000,0x80000} = ('{','%','<','>');
 # overload new integer, float, binary, string, re
- at hints{4096,8192,16384,32768,65536} = ('I', 'F', 'B', 'S', 'R');
+ at hints{0x1000,0x2000,0x4000,0x8000,0x10000} = ('I', 'F', 'B', 'S', 'R');
 # taint and eval
- at hints{1048576,2097152} = ('T', 'E');
-# filetest access, UTF-8
- at hints{4194304,8388608} = ('X', 'U');
+ at hints{0x100000,0x200000} = ('T', 'E');
+# filetest access, use utf8, unicode_strings feature
+ at hints{0x400000,0x800000,0x800} = ('X', 'U', 'us');
 
-sub _flags {
-    my($hash, $x) = @_;
+# pick up the feature hints constants.
+# Note that we're relying on non-API parts of feature.pm,
+# but its less naughty than just blindly copying those constants into
+# this src file.
+#
+require feature;
+
+sub hints_flags {
+    my($x) = @_;
     my @s;
-    for my $flag (sort {$b <=> $a} keys %$hash) {
-	if ($hash->{$flag} and $x & $flag and $x >= $flag) {
+    for my $flag (sort {$b <=> $a} keys %hints) {
+	if ($hints{$flag} and $x & $flag and $x >= $flag) {
 	    $x -= $flag;
-	    push @s, $hash->{$flag};
+	    push @s, $hints{$flag};
 	}
     }
-    push @s, $x if $x;
+    if ($x & $feature::hint_mask) {
+        push @s, "fea=" . (($x & $feature::hint_mask) >> $feature::hint_shift);
+        $x &= ~$feature::hint_mask;
+    }
+    push @s, sprintf "0x%x", $x if $x;
     return join(",", @s);
 }
 
+
 # return a string like 'LVINTRO,1' for the op $name with op_private
 # value $x
 
@@ -677,11 +691,6 @@
     return join ",", @flags;
 }
 
-sub hints_flags {
-    my($x) = @_;
-    _flags(\%hints, $x);
-}
-
 sub concise_sv {
     my($sv, $hr, $preferpv) = @_;
     $hr->{svclass} = class($sv);
@@ -755,6 +764,50 @@
     $srclines{$fullnm} = \@l;
 }
 
+# Given a pad target, return the pad var's name and cop range /
+# fakeness, or failing that, its target number.
+# e.g.
+#   ('$i', '$i:5,7')
+# or
+#   ('$i', '$i:fake:a')
+# or
+#   ('t5', 't5')
+
+sub padname {
+    my ($targ) = @_;
+
+    my ($targarg, $targarglife);
+    my $padname = (($curcv->PADLIST->ARRAY)[0]->ARRAY)[$targ];
+    if (defined $padname and class($padname) ne "SPECIAL" and
+        $padname->LEN)
+    {
+        $targarg  = $padname->PVX;
+        if ($padname->FLAGS & SVf_FAKE) {
+            # These changes relate to the jumbo closure fix.
+            # See changes 19939 and 20005
+            my $fake = '';
+            $fake .= 'a'
+                if $padname->PARENT_FAKELEX_FLAGS & PAD_FAKELEX_ANON;
+            $fake .= 'm'
+                if $padname->PARENT_FAKELEX_FLAGS & PAD_FAKELEX_MULTI;
+            $fake .= ':' . $padname->PARENT_PAD_INDEX
+                if $curcv->CvFLAGS & CVf_ANON;
+            $targarglife = "$targarg:FAKE:$fake";
+        }
+        else {
+            my $intro = $padname->COP_SEQ_RANGE_LOW - $cop_seq_base;
+            my $finish = int($padname->COP_SEQ_RANGE_HIGH) - $cop_seq_base;
+            $finish = "end" if $finish == 999999999 - $cop_seq_base;
+            $targarglife = "$targarg:$intro,$finish";
+        }
+    } else {
+        $targarglife = $targarg = "t" . $targ;
+    }
+    return $targarg, $targarglife;
+}
+
+
+
 sub concise_op {
     my ($op, $level, $format) = @_;
     my %h;
@@ -787,33 +840,7 @@
             : 1;
 	my (@targarg, @targarglife);
 	for my $i (0..$count-1) {
-	    my ($targarg, $targarglife);
-	    my $padname = (($curcv->PADLIST->ARRAY)[0]->ARRAY)[$h{targ}+$i];
-	    if (defined $padname and class($padname) ne "SPECIAL" and
-		$padname->LEN)
-	    {
-		$targarg  = $padname->PVX;
-		if ($padname->FLAGS & SVf_FAKE) {
-		    # These changes relate to the jumbo closure fix.
-		    # See changes 19939 and 20005
-		    my $fake = '';
-		    $fake .= 'a'
-			if $padname->PARENT_FAKELEX_FLAGS & PAD_FAKELEX_ANON;
-		    $fake .= 'm'
-			if $padname->PARENT_FAKELEX_FLAGS & PAD_FAKELEX_MULTI;
-		    $fake .= ':' . $padname->PARENT_PAD_INDEX
-			if $curcv->CvFLAGS & CVf_ANON;
-		    $targarglife = "$targarg:FAKE:$fake";
-		}
-		else {
-		    my $intro = $padname->COP_SEQ_RANGE_LOW - $cop_seq_base;
-		    my $finish = int($padname->COP_SEQ_RANGE_HIGH) - $cop_seq_base;
-		    $finish = "end" if $finish == 999999999 - $cop_seq_base;
-		    $targarglife = "$targarg:$intro,$finish";
-		}
-	    } else {
-		$targarglife = $targarg = "t" . ($h{targ}+$i);
-	    }
+	    my ($targarg, $targarglife) = padname($h{targ} + $i);
 	    push @targarg,     $targarg;
 	    push @targarglife, $targarglife;
 	}
@@ -820,6 +847,7 @@
 	$h{targarg}     = join '; ', @targarg;
 	$h{targarglife} = join '; ', @targarglife;
     }
+
     $h{arg} = "";
     $h{svclass} = $h{svaddr} = $h{svval} = "";
     if ($h{class} eq "PMOP") {
@@ -837,22 +865,35 @@
 		$extra = " replstart->" . seq($op->pmreplstart);
 	    }
 	}
-	elsif ($op->name eq 'pushre') {
-	    # with C<@stash_array = split(/pat/, str);>,
-	    #  *stash_array is stored in /pat/'s pmreplroot.
-	    my $gv = $op->pmreplroot;
-	    if (!ref($gv)) {
-		# threaded: the value is actually a pad offset for where
-		# the GV is kept (op_pmtargetoff)
-		if ($gv) {
-		    $gv = (($curcv->PADLIST->ARRAY)[1]->ARRAY)[$gv]->NAME;
-		}
-	    }
-	    else {
-		# unthreaded: its a GV (if it exists)
-		$gv = (ref($gv) eq "B::GV") ? $gv->NAME : undef;
-	    }
-	    $extra = " => \@$gv" if $gv;
+	elsif ($op->name eq 'split') {
+            if (    ($op->private & OPpSPLIT_ASSIGN) # @array  = split
+                 && (not $op->flags & OPf_STACKED))  # @{expr} = split
+            {
+                # with C<@array = split(/pat/, str);>,
+                #  array is stored in /pat/'s pmreplroot; either
+                # as an integer index into the pad (for a lexical array)
+                # or as GV for a package array (which will be a pad index
+                # on threaded builds)
+
+                if ($op->private & $B::Op_private::defines{'OPpSPLIT_LEX'}) {
+                    my $off = $op->pmreplroot; # union with op_pmtargetoff
+                    my ($name, $full) = padname($off);
+                    $extra = " => $full";
+                }
+                else {
+                    # union with op_pmtargetoff, op_pmtargetgv
+                    my $gv = $op->pmreplroot;
+                    if (!ref($gv)) {
+                        # the value is actually a pad offset
+                        $gv = (($curcv->PADLIST->ARRAY)[1]->ARRAY)[$gv]->NAME;
+                    }
+                    else {
+                        # unthreaded: its a GV
+                        $gv = $gv->NAME;
+                    }
+                    $extra = " => \@$gv";
+                }
+            }
 	}
 	$h{arg} = "($precomp$extra)";
     } elsif ($h{class} eq "PVOP" and $h{name} !~ '^transr?\z') {
@@ -884,6 +925,11 @@
 	undef $lastnext;
 	$h{arg} = "(other->" . seq($op->other) . ")";
 	$h{otheraddr} = sprintf("%#x", $ {$op->other});
+        if ($h{name} eq "argdefelem") {
+            # targ used for element index
+            $h{targarglife} = $h{targarg} = "";
+            $h{arg} .= "[" . $op->targ . "]";
+        }
     }
     elsif ($h{class} eq "SVOP" or $h{class} eq "PADOP") {
 	unless ($h{name} eq 'aelemfast' and $op->flags & OPf_SPECIAL) {
@@ -1591,6 +1637,9 @@
     X filetest access
     U utf-8
 
+    us      use feature 'unicode_strings'
+    fea=NNN feature bundle number
+
 =item B<#hintsval>
 
 The numeric value of the COP's hint flags, or an empty string if this is not

Modified: trunk/Master/tlpkg/tlperl/lib/B/Debug.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Debug.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B/Debug.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -1,6 +1,6 @@
 package B::Debug;
 
-our $VERSION = '1.23';
+our $VERSION = '1.24';
 
 use strict;
 require 5.006;

Modified: trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -16,6 +16,7 @@
 	 OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
 	 OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER OPpREPEAT_DOLIST
 	 OPpSORT_REVERSE OPpMULTIDEREF_EXISTS OPpMULTIDEREF_DELETE
+         OPpSPLIT_ASSIGN OPpSPLIT_LEX
 	 SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG
 	 SVs_PADTMP SVpad_TYPED
          CVf_METHOD CVf_LVALUE
@@ -46,7 +47,7 @@
         MDEREF_SHIFT
     );
 
-$VERSION = '1.37';
+$VERSION = '1.40';
 use strict;
 use vars qw/$AUTOLOAD/;
 use warnings ();
@@ -460,6 +461,7 @@
 sub pessimise {
     my ($self, $root, $start) = @_;
 
+    no warnings 'recursion';
     # walk tree in root-to-branch order
     $self->_pessimise_walk($root);
 
@@ -474,6 +476,9 @@
     return class($op) eq "NULL";
 }
 
+
+# Add a CV to the list of subs that still need deparsing.
+
 sub todo {
     my $self = shift;
     my($cv, $is_form, $name) = @_;
@@ -490,55 +495,27 @@
     push @{$self->{'subs_todo'}}, [$seq, $cv, $is_form, $name];
 }
 
+
+# Pop the next sub from the todo list and deparse it
+
 sub next_todo {
     my $self = shift;
     my $ent = shift @{$self->{'subs_todo'}};
-    my $cv = $ent->[1];
-    if (ref $ent->[3]) { # lexical sub
-	my @text;
+    my ($seq, $cv, $is_form, $name) = @$ent;
 
-	# At this point, we may not yet have deparsed the hints that allow
-	# lexical subroutines to be recognized.  So adjust the current
-	# hints and deparse them.
-	# When lex subs cease being experimental, we should be able to
-	# remove this code.
-	{
-	    local $^H = $self->{'hints'};
-	    local %^H = %{ $self->{'hinthash'} || {} };
-	    local ${^WARNING_BITS} = $self->{'warnings'};
-	    feature->import("lexical_subs");
-	    warnings->unimport("experimental::lexical_subs");
-	    # Here we depend on the fact that individual features
-	    # will always set the feature bundle to ‘custom’
-	    # (== $feature::hint_mask).  If we had another specific bundle
-	    # enabled previously, normalise it.
-	    if (($self->{'hints'} & $feature::hint_mask)
-		    != $feature::hint_mask)
-	    {
-		if ($self->{'hinthash'}) {
-		    delete $self->{'hinthash'}{$_}
-			for grep /^feature_/, keys %{$self->{'hinthash'}};
-		}
-		else { $self->{'hinthash'} = {} }
-		$self->{'hinthash'}
-		    = _features_from_bundle(@$self{'hints','hinthash'});
-	    }
-	    push @text, $self->declare_hinthash($self->{'hinthash'}, \%^H,
-						$self->{indent_size}, $^H);
-	    push @text, $self->declare_warnings($self->{'warnings'},
-						${^WARNING_BITS})
-		unless ($self->{'warnings'} // 'u')
-		    eq (${^WARNING_BITS   } // 'u');
-	    $self->{'warnings'} = ${^WARNING_BITS};
-	    $self->{'hints'} = $^H;
-	    $self->{'hinthash'} = {%^H};
-	}
+    # any 'use strict; package foo' that should come before the sub
+    # declaration to sync with the first COP of the sub
+    my $pragmata = '';
+    if ($cv and !null($cv->START) and is_state($cv->START))  {
+        $pragmata = $self->pragmata($cv->START);
+    }
 
-	# Now emit the sub itself.
-	my $padname = $ent->[3];
-	my $flags = $padname->FLAGS;
+    if (ref $name) { # lexical sub
+	# emit the sub.
+	my @text;
+	my $flags = $name->FLAGS;
 	push @text,
-	    !$cv || $ent->[0] <= $padname->COP_SEQ_RANGE_LOW
+	    !$cv || $seq <= $name->COP_SEQ_RANGE_LOW
 		? $self->keyword($flags & SVpad_OUR
 				    ? "our"
 				    : $flags & SVpad_STATE
@@ -548,7 +525,7 @@
 	# XXX We would do $self->keyword("sub"), but ‘my CORE::sub’
 	#     doesn’t work and ‘my sub’ ignores a &sub in scope.  I.e.,
 	#     we have a core bug here.
-	push @text, "sub " . substr $padname->PVX, 1;
+	push @text, "sub " . substr $name->PVX, 1;
 	if ($cv) {
 	    # my sub foo { }
 	    push @text,  " " . $self->deparse_sub($cv);
@@ -558,19 +535,31 @@
 	    # my sub foo;
 	    push @text, ";\n";
 	}
-	return join "", @text;
+	return $pragmata . join "", @text;
     }
+
     my $gv = $cv->GV;
-    my $name = $ent->[3] // $self->gv_name($gv);
-    if ($ent->[2]) {
-	return $self->keyword("format") . " $name =\n"
-	    . $self->deparse_format($ent->[1]). "\n";
+    $name //= $self->gv_name($gv);
+    if ($is_form) {
+	return $pragmata . $self->keyword("format") . " $name =\n"
+	    . $self->deparse_format($cv). "\n";
     } else {
 	my $use_dec;
 	if ($name eq "BEGIN") {
 	    $use_dec = $self->begin_is_use($cv);
 	    if (defined ($use_dec) and $self->{'expand'} < 5) {
-		return () if 0 == length($use_dec);
+		return $pragmata if 0 == length($use_dec);
+
+                #  XXX bit of a hack: Test::More's use_ok() method
+                #  builds a fake use statement which deparses as, e.g.
+                #      use Net::Ping (@{$args[0];});
+                #  As well as being superfluous (the use_ok() is deparsed
+                #  too) and ugly, it fails under use strict and otherwise
+                #  makes use of a lexical var that's not in scope.
+                #  So strip it out.
+                return $pragmata
+                            if $use_dec =~ /^use \S+ \(@\{\$args\[0\];\}\);/;
+
 		$use_dec =~ s/^(use|no)\b/$self->keyword($1)/e;
 	    }
 	}
@@ -591,7 +580,7 @@
 	    }
 	}
 	if ($use_dec) {
-	    return "$p$l$use_dec";
+	    return "$pragmata$p$l$use_dec";
 	}
         if ( $name !~ /::/ and $self->lex_in_scope("&$name")
                             || $self->lex_in_scope("&$name", 1) )
@@ -600,7 +589,7 @@
         } elsif (defined $stash) {
             $name =~ s/^\Q$stash\E::(?!\z|.*::)//;
         }
-	my $ret = "${p}${l}" . $self->keyword("sub") . " $name "
+	my $ret = "$pragmata${p}${l}" . $self->keyword("sub") . " $name "
 	      . $self->deparse_sub($cv);
 	$self->{'subs_declared'}{$name} = 1;
 	return $ret;
@@ -607,6 +596,7 @@
     }
 }
 
+
 # Return a "use" declaration for this BEGIN block, if appropriate
 sub begin_is_use {
     my ($self, $cv) = @_;
@@ -1221,22 +1211,132 @@
 	sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}}, @todo
 }
 
+
+# deparse_argops(): deparse, if possible, a sequence of argcheck + argelem
+# ops into a subroutine signature. If successful, return the first op
+# following the signature ops plus the signature string; else return the
+# empty list.
+#
+# Normally a bunch of argelem ops will have been generated by the
+# signature parsing, but it's possible that ops have been added manually
+# or altered. In this case we "return ()" and fall back to general
+# deparsing of the individual sigelems as 'my $x = $_[N]' etc.
+#
+# We're only called if the first two ops are nextstate and argcheck.
+
+sub deparse_argops {
+    my ($self, $firstop, $cv) = @_;
+
+    my @sig;
+    my $o = $firstop;
+    return if $o->label; #first nextstate;
+
+    # OP_ARGCHECK
+
+    $o = $o->sibling;
+    my ($params, $opt_params, $slurpy) = $o->aux_list($cv);
+    my $mandatory = $params - $opt_params;
+    my $seen_slurpy = 0;
+    my $last_ix = -1;
+
+    # keep looking for valid nextstate + argelem pairs
+
+    while (1) {
+        # OP_NEXTSTATE
+        $o = $o->sibling;
+        last unless $$o;
+        last unless $o->name =~ /^(next|db)state$/;
+        last if $o->label;
+
+        # OP_ARGELEM
+        my $o2 = $o->sibling;
+        last unless $$o2;
+
+        if ($o2->name eq 'argelem') {
+            my $ix  = $o2->string($cv);
+            while (++$last_ix < $ix) {
+                push @sig, $last_ix <  $mandatory ? '$' : '$=';
+            }
+            my $var = $self->padname($o2->targ);
+            if ($var =~ /^[@%]/) {
+                return if $seen_slurpy;
+                $seen_slurpy = 1;
+                return if $ix != $params or !$slurpy
+                            or substr($var,0,1) ne $slurpy;
+            }
+            else {
+                return if $ix >= $params;
+            }
+            if ($o2->flags & OPf_KIDS) {
+                my $kid = $o2->first;
+                return unless $$kid and $kid->name eq 'argdefelem';
+                my $def = $self->deparse($kid->first, 7);
+                $def = "($def)" if $kid->first->flags & OPf_PARENS;
+                $var .= " = $def";
+            }
+            push @sig, $var;
+        }
+        elsif ($o2->name eq 'null'
+               and ($o2->flags & OPf_KIDS)
+               and $o2->first->name eq 'argdefelem')
+        {
+            # special case - a void context default expression: $ = expr
+
+            my $defop = $o2->first;
+            my $ix = $defop->targ;
+            while (++$last_ix < $ix) {
+                push @sig, $last_ix <  $mandatory ? '$' : '$=';
+            }
+            return if $last_ix >= $params
+                    or $last_ix < $mandatory;
+            my $def = $self->deparse($defop->first, 7);
+            $def = "($def)" if $defop->first->flags & OPf_PARENS;
+            push @sig, '$ = ' . $def;
+        }
+        else {
+            last;
+        }
+
+        $o = $o2;
+    }
+
+    while (++$last_ix < $params) {
+        push @sig, $last_ix <  $mandatory ? '$' : '$=';
+    }
+    push @sig, $slurpy if $slurpy and !$seen_slurpy;
+
+    return ($o, join(', ', @sig));
+}
+
+# Deparse a sub. Returns everything except the 'sub foo',
+# e.g.  ($$) : method { ...; }
+# or    ($a, $b) : prototype($$) lvalue;
+
 sub deparse_sub {
     my $self = shift;
     my $cv = shift;
-    my $proto = "";
+    my @attrs;
+    my $protosig; # prototype or signature (what goes in the (....))
+
 Carp::confess("NULL in deparse_sub") if !defined($cv) || $cv->isa("B::NULL");
 Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
     local $self->{'curcop'} = $self->{'curcop'};
+
+    my $has_sig = $self->{hinthash}{feature_signatures};
     if ($cv->FLAGS & SVf_POK) {
-	$proto = "(". $cv->PV . ") ";
+	my $proto = $cv->PV;
+	if ($has_sig) {
+            push @attrs, "prototype($proto)";
+        }
+        else {
+            $protosig = $proto;
+        }
     }
     if ($cv->CvFLAGS & (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ANONCONST)) {
-        $proto .= ": ";
-        $proto .= "lvalue " if $cv->CvFLAGS & CVf_LVALUE;
-        $proto .= "locked " if $cv->CvFLAGS & CVf_LOCKED;
-        $proto .= "method " if $cv->CvFLAGS & CVf_METHOD;
-        $proto .= "const "  if $cv->CvFLAGS & CVf_ANONCONST;
+        push @attrs, "lvalue" if $cv->CvFLAGS & CVf_LVALUE;
+        push @attrs, "locked" if $cv->CvFLAGS & CVf_LOCKED;
+        push @attrs, "method" if $cv->CvFLAGS & CVf_METHOD;
+        push @attrs, "const"  if $cv->CvFLAGS & CVf_ANONCONST;
     }
 
     local($self->{'curcv'}) = $cv;
@@ -1251,11 +1351,36 @@
 	$self->pessimise($root, $cv->START);
 	my $lineseq = $root->first;
 	if ($lineseq->name eq "lineseq") {
-	    my @ops;
-	    for(my$o=$lineseq->first; $$o; $o=$o->sibling) {
+	    my $firstop = $lineseq->first;
+
+            if ($has_sig) {
+                my $o2;
+                # try to deparse first few ops as a signature if possible
+                if (     $$firstop
+                     and $firstop->name =~  /^(next|db)state$/
+                     and (($o2 = $firstop->sibling))
+                     and $$o2)
+                {
+                    if ($o2->name eq 'argcheck') {
+                        my ($nexto, $sig) = $self->deparse_argops($firstop, $cv);
+                        if (defined $nexto) {
+                            $firstop = $nexto;
+                            $protosig = $sig;
+                        }
+                    }
+                }
+            }
+
+            my @ops;
+	    for (my $o = $firstop; $$o; $o=$o->sibling) {
 		push @ops, $o;
 	    }
 	    $body = $self->lineseq(undef, 0, @ops).";";
+            if (!$has_sig and $ops[-1]->name =~ /^(next|db)state$/) {
+                # this handles void context in
+                #   use feature signatures; sub ($=1) {}
+                $body .= "\n()";
+            }
 	    my $scope_en = $self->find_scope_en($lineseq);
 	    if (defined $scope_en) {
 		my $subs = join"", $self->seq_subs($scope_en);
@@ -1265,17 +1390,21 @@
 	else {
 	    $body = $self->deparse($root->first, 0);
 	}
+        $body = "{\n\t$body\n\b}";
     }
     else {
 	my $sv = $cv->const_sv;
 	if ($$sv) {
 	    # uh-oh. inlinable sub... format it differently
-	    return $proto . "{ " . $self->const($sv, 0) . " }\n";
+	    $body = "{ " . $self->const($sv, 0) . " }\n";
 	} else { # XSUB? (or just a declaration)
-	    return "$proto;\n";
+	    $body = ';'
 	}
     }
-    return $proto ."{\n\t$body\n\b}" ."\n";
+    $protosig = defined $protosig ? "($protosig) " : "";
+    my $attrs = '';
+    $attrs = ': ' . join('', map "$_ ", @attrs) if @attrs;
+    return "$protosig$attrs$body\n";
 }
 
 sub deparse_format {
@@ -1934,18 +2063,15 @@
     return $hh;
 }
 
-# Notice how subs and formats are inserted between statements here;
-# also $[ assignments and pragmas.
-sub pp_nextstate {
+# generate any pragmas, 'package foo' etc needed to synchronise
+# with the given cop
+
+sub pragmata {
     my $self = shift;
-    my($op, $cx) = @_;
-    $self->{'curcop'} = $op;
+    my($op) = @_;
+
     my @text;
-    push @text, $self->cop_subs($op);
-    if (@text) {
-	# Special marker to swallow up the semicolon
-	push @text, "\cK";
-    }
+
     my $stash = $op->stashpv;
     if ($stash ne $self->{'curstash'}) {
 	push @text, $self->keyword("package") . " $stash;\n";
@@ -2024,6 +2150,29 @@
 	$self->{'hinthash'} = $newhh;
     }
 
+    return join("", @text);
+}
+
+
+# Notice how subs and formats are inserted between statements here;
+# also $[ assignments and pragmas.
+sub pp_nextstate {
+    my $self = shift;
+    my($op, $cx) = @_;
+    $self->{'curcop'} = $op;
+
+    my @text;
+
+    my @subs = $self->cop_subs($op);
+    if (@subs) {
+	# Special marker to swallow up the semicolon
+	push @subs, "\cK";
+    }
+    push @text, @subs;
+
+    push @text, $self->pragmata($op);
+
+
     # This should go after of any branches that add statements, to
     # increase the chances that it refers to the same line it did in
     # the original program.
@@ -4021,7 +4170,11 @@
 
     if ($op->first && ($op->first->flags & OPf_KIDS)) {
         # arbitrary initial expression, e.g. f(1,2,3)->[...]
-        $text .=  $self->deparse($op->first, 24);
+        my $expr = $self->deparse($op->first, 24);
+        # stop "exists (expr)->{...}" being interpreted as
+        #"(exists (expr))->{...}"
+        $expr = "+$expr" if $expr =~ /^\(/;
+        $text .=  $expr;
     }
 
     my @items = $op->aux_list($self->{curcv});
@@ -5478,7 +5631,7 @@
     my($op, $cx, $name, $delim) = @_;
     my $kid = $op->first;
     my ($binop, $var, $re) = ("", "", "");
-    if ($op->flags & OPf_STACKED) {
+    if ($op->name ne 'split' && $op->flags & OPf_STACKED) {
 	$binop = 1;
 	$var = $self->deparse($kid, 20);
 	$kid = $kid->sibling;
@@ -5517,7 +5670,13 @@
     } elsif (!$have_kid) {
 	$re = re_uninterp(escape_re(re_unback($op->precomp)));
     } elsif ($kid->name ne 'regcomp') {
-	carp("found ".$kid->name." where regcomp expected");
+        if ($op->name eq 'split') {
+            # split has other kids, not just regcomp
+            $re = re_uninterp(escape_re(re_unback($op->precomp)));
+        }
+        else {
+            carp("found ".$kid->name." where regcomp expected");
+        }
     } else {
 	($re, $quote) = $self->regcomp($kid, 21);
     }
@@ -5557,64 +5716,58 @@
 }
 
 sub pp_match { matchop(@_, "m", "/") }
-sub pp_pushre { matchop(@_, "m", "/") }
 sub pp_qr { matchop(@_, "qr", "") }
 
 sub pp_runcv { unop(@_, "__SUB__"); }
 
 sub pp_split {
-    maybe_targmy(@_, \&split);
-}
-sub split {
     my $self = shift;
     my($op, $cx) = @_;
     my($kid, @exprs, $ary, $expr);
+    my $stacked = $op->flags & OPf_STACKED;
+
     $kid = $op->first;
+    $kid = $kid->sibling if $kid->name eq 'regcomp';
+    for (; !null($kid); $kid = $kid->sibling) {
+	push @exprs, $self->deparse($kid, 6);
+    }
 
-    # For our kid (an OP_PUSHRE), pmreplroot is never actually the
-    # root of a replacement; it's either empty, or abused to point to
-    # the GV for an array we split into (an optimization to save
-    # assignment overhead). Depending on whether we're using ithreads,
-    # this OP* holds either a GV* or a PADOFFSET. Luckily, B.xs
-    # figures out for us which it is.
-    my $replroot = $kid->pmreplroot;
-    my $gv = 0;
-    my $stacked = $op->flags & OPf_STACKED;
-    if (ref($replroot) eq "B::GV") {
-	$gv = $replroot;
-    } elsif (!ref($replroot) and $replroot > 0) {
-	$gv = $self->padval($replroot);
-    } elsif ($kid->targ) {
-	$ary = $self->padname($kid->targ)
-    } elsif ($stacked) {
-	$ary = $self->deparse($op->last, 7);
-    }
-    $ary = $self->maybe_local(@_,
+    unshift @exprs, $self->matchop($op, $cx, "m", "/");
+
+    if ($op->private & OPpSPLIT_ASSIGN) {
+        # With C<@array = split(/pat/, str);>,
+        #  array is stored in split's pmreplroot; either
+        # as an integer index into the pad (for a lexical array)
+        # or as GV for a package array (which will be a pad index
+        # on threaded builds)
+        # With my/our @array = split(/pat/, str), the array is instead
+        # accessed via an extra padav/rv2av op at the end of the
+        # split's kid ops.
+
+        if ($stacked) {
+            $ary = pop @exprs;
+        }
+        else {
+            if ($op->private & OPpSPLIT_LEX) {
+                $ary = $self->padname($op->pmreplroot);
+            }
+            else {
+                # union with op_pmtargetoff, op_pmtargetgv
+                my $gv = $op->pmreplroot;
+                $gv = $self->padval($gv) if !ref($gv);
+                $ary = $self->maybe_local(@_,
 			      $self->stash_variable('@',
 						     $self->gv_name($gv),
 						     $cx))
-	if $gv;
-
-    # Skip the last kid when OPf_STACKED is set, since it is the array
-    # on the left.
-    for (; !null($stacked ? $kid->sibling : $kid); $kid = $kid->sibling) {
-	push @exprs, $self->deparse($kid, 6);
+            }
+            if ($op->private & OPpLVAL_INTRO) {
+                $ary = $op->private & OPpSPLIT_LEX ? "my $ary" : "local $ary";
+            }
+        }
     }
 
     # handle special case of split(), and split(' ') that compiles to /\s+/
-    # Under 5.10, the reflags may be undef if the split regexp isn't a constant
-    # Under 5.17.5-5.17.9, the special flag is on split itself.
-    $kid = $op->first;
-    if ( $op->flags & OPf_SPECIAL
-         or (
-            $kid->flags & OPf_SPECIAL
-            and ( $] < 5.009 ? $kid->pmflags & PMf_SKIPWHITE()
-                             : ($kid->reflags || 0) & RXf_SKIPWHITE()
-            )
-         )
-    ) {
-	$exprs[0] = "' '";
-    }
+    $exprs[0] = q{' '} if ($op->reflags // 0) & RXf_SKIPWHITE();
 
     $expr = "split(" . join(", ", @exprs) . ")";
     if ($ary) {
@@ -5772,6 +5925,63 @@
 		: &pp_padsv)  . ')'
 }
 
+
+sub pp_argcheck {
+    my $self = shift;
+    my($op, $cx) = @_;
+    my ($params, $opt_params, $slurpy) = $op->aux_list($self->{curcv});
+    my $mandatory = $params - $opt_params;
+    my $check = '';
+
+    $check .= <<EOF if !$slurpy;
+die sprintf("Too many arguments for subroutine at %s line %d.\\n", (caller)[1, 2]) unless \@_ <= $params;
+EOF
+
+    $check .= <<EOF if $mandatory > 0;
+die sprintf("Too few arguments for subroutine at %s line %d.\\n", (caller)[1, 2]) unless \@_ >= $mandatory;
+EOF
+
+    my $cond = ($params & 1) ? 'unless' : 'if';
+    $check .= <<EOF if $slurpy eq '%';
+die sprintf("Odd name/value argument for subroutine at %s line %d.\\n", (caller)[1, 2]) if \@_ > $params && ((\@_ - $params) & 1);
+EOF
+
+    $check =~ s/;\n\z//;
+    return $check;
+}
+
+
+sub pp_argelem {
+    my $self = shift;
+    my($op, $cx) = @_;
+    my $var = $self->padname($op->targ);
+    my $ix  = $op->string($self->{curcv});
+    my $expr;
+    if ($op->flags & OPf_KIDS) {
+        $expr = $self->deparse($op->first, 7);
+    }
+    elsif ($var =~ /^[@%]/) {
+        $expr = $ix ? "\@_[$ix .. \$#_]" : '@_';
+    }
+    else {
+        $expr = "\$_[$ix]";
+    }
+    return "my $var = $expr";
+}
+
+
+sub pp_argdefelem {
+    my $self = shift;
+    my($op, $cx) = @_;
+    my $ix  = $op->targ;
+    my $expr = "\@_ >= " . ($ix+1) . " ? \$_[$ix] : ";
+    my $def = $self->deparse($op->first, 7);
+    $def = "($def)" if $op->first->flags & OPf_PARENS;
+    $expr .= $self->deparse($op->first, $cx);
+    return $expr;
+}
+
+
 1;
 __END__
 
@@ -6256,7 +6466,7 @@
 =item *
 
 Lexical (my) variables declared in scopes external to a subroutine
-appear in code2ref output text as package variables.  This is a tricky
+appear in coderef2text output text as package variables.  This is a tricky
 problem, as perl has no native facility for referring to a lexical variable
 defined within a different scope, although L<PadWalker> is a good start.
 

Modified: trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -118,7 +118,7 @@
 our %bits;
 
 
-our $VERSION = "5.024001";
+our $VERSION = "5.026001";
 
 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
 $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
@@ -133,10 +133,10 @@
 $bits{$_}{1} = 'OPpITER_REVERSED' for qw(enteriter iter);
 $bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop);
 $bits{$_}{6} = 'OPpLVAL_DEFER' for qw(aelem helem multideref);
-$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv);
+$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split);
 $bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign);
 $bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign);
-$bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem aslice av2arylen helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr vec);
+$bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr vec);
 $bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(padhv rv2hv);
 $bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray);
 $bits{$_}{5} = 'OPpOPEN_IN_CRLF' for qw(backtick open);
@@ -147,7 +147,6 @@
 $bits{$_}{6} = 'OPpPAD_STATE' for qw(lvavref lvref padav padhv padsv pushmark refassign);
 $bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo);
 $bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite);
-$bits{$_}{6} = 'OPpRUNTIME' for qw(match pushre qr subst substcont);
 $bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv);
 $bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid);
 $bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr);
@@ -175,6 +174,13 @@
         bitmask   => 3,
     },
     {
+        label     => 'offset',
+        mask_def  => 'OPpAVHVSWITCH_MASK',
+        bitmin    => 0,
+        bitmax    => 1,
+        bitmask   => 3,
+    },
+    {
         label     => '-',
         mask_def  => 'OPpARG3_MASK',
         bitmin    => 0,
@@ -189,7 +195,7 @@
         bitmask   => 15,
     },
     {
-        label     => '-',
+        label     => 'range',
         mask_def  => 'OPpPADRANGE_COUNTMASK',
         bitcount_def => 'OPpPADRANGE_COUNTSHIFT',
         bitmin    => 0,
@@ -197,12 +203,23 @@
         bitmask   => 127,
     },
     {
-        label     => '-',
+        label     => 'key',
         bitmin    => 0,
         bitmax    => 7,
         bitmask   => 255,
     },
     {
+        mask_def  => 'OPpARGELEM_MASK',
+        bitmin    => 1,
+        bitmax    => 2,
+        bitmask   => 6,
+        enum      => [
+            0, 'OPpARGELEM_SV', 'SV',
+            1, 'OPpARGELEM_AV', 'AV',
+            2, 'OPpARGELEM_HV', 'HV',
+        ],
+    },
+    {
         mask_def  => 'OPpDEREF',
         bitmin    => 4,
         bitmax    => 5,
@@ -229,52 +246,56 @@
 
 @{$bits{aassign}}{6,5,4,1,0} = ('OPpASSIGN_COMMON_SCALAR', 'OPpASSIGN_COMMON_RC1', 'OPpASSIGN_COMMON_AGG', $bf[1], $bf[1]);
 $bits{abs}{0} = $bf[0];
-@{$bits{accept}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{accept}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{add}}{1,0} = ($bf[1], $bf[1]);
 $bits{aeach}{0} = $bf[0];
-@{$bits{aelem}}{5,4,1,0} = ($bf[6], $bf[6], $bf[1], $bf[1]);
-@{$bits{aelemfast}}{7,6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
-@{$bits{aelemfast_lex}}{7,6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
+@{$bits{aelem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]);
+@{$bits{aelemfast}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
+@{$bits{aelemfast_lex}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
 $bits{akeys}{0} = $bf[0];
 $bits{alarm}{0} = $bf[0];
 $bits{and}{0} = $bf[0];
 $bits{andassign}{0} = $bf[0];
 $bits{anonconst}{0} = $bf[0];
-@{$bits{anonhash}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{anonlist}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{atan2}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{anonhash}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{anonlist}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+$bits{argcheck}{0} = $bf[0];
+$bits{argdefelem}{0} = $bf[0];
+@{$bits{argelem}}{2,1,0} = ($bf[7], $bf[7], $bf[0]);
+@{$bits{atan2}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{av2arylen}{0} = $bf[0];
 $bits{avalues}{0} = $bf[0];
+@{$bits{avhvswitch}}{1,0} = ($bf[2], $bf[2]);
 $bits{backtick}{0} = $bf[0];
-@{$bits{bind}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{binmode}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{bind}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{binmode}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{bit_and}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{bit_or}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{bless}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{caller}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{chdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{chmod}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{bless}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{caller}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{chdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{chmod}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{chomp}{0} = $bf[0];
 $bits{chop}{0} = $bf[0];
-@{$bits{chown}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{chown}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{chr}{0} = $bf[0];
 $bits{chroot}{0} = $bf[0];
-@{$bits{close}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{close}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{closedir}{0} = $bf[0];
 $bits{complement}{0} = $bf[0];
 @{$bits{concat}}{1,0} = ($bf[1], $bf[1]);
 $bits{cond_expr}{0} = $bf[0];
-@{$bits{connect}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{connect}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{const}}{6,4,3,2,1} = ('OPpCONST_BARE', 'OPpCONST_ENTERED', 'OPpCONST_STRICT', 'OPpCONST_SHORTCIRCUIT', 'OPpCONST_NOVER');
 @{$bits{coreargs}}{7,6,1,0} = ('OPpCOREARGS_PUSHMARK', 'OPpCOREARGS_SCALARMOD', 'OPpCOREARGS_DEREF2', 'OPpCOREARGS_DEREF1');
 $bits{cos}{0} = $bf[0];
-@{$bits{crypt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{crypt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{dbmclose}{0} = $bf[0];
-@{$bits{dbmopen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{dbmopen}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{defined}{0} = $bf[0];
 @{$bits{delete}}{6,0} = ('OPpSLICE', $bf[0]);
-@{$bits{die}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{die}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{divide}}{1,0} = ($bf[1], $bf[1]);
 $bits{dofile}{0} = $bf[0];
 $bits{dor}{0} = $bf[0];
@@ -284,23 +305,23 @@
 @{$bits{entereval}}{5,4,3,2,1,0} = ('OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]);
 $bits{entergiven}{0} = $bf[0];
 $bits{enteriter}{3} = 'OPpITER_DEF';
-@{$bits{entersub}}{5,4,0} = ($bf[6], $bf[6], 'OPpENTERSUB_INARGS');
+@{$bits{entersub}}{5,4,0} = ($bf[8], $bf[8], 'OPpENTERSUB_INARGS');
 $bits{entertry}{0} = $bf[0];
 $bits{enterwhen}{0} = $bf[0];
-@{$bits{enterwrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{eof}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{enterwrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{eof}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{eq}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{exec}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{exec}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{exists}}{6,0} = ('OPpEXISTS_SUB', $bf[0]);
-@{$bits{exit}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{exit}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{exp}{0} = $bf[0];
 $bits{fc}{0} = $bf[0];
-@{$bits{fcntl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{fileno}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{fcntl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{fileno}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{flip}{0} = $bf[0];
-@{$bits{flock}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{flock}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{flop}{0} = $bf[0];
-@{$bits{formline}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{formline}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{ftatime}{0} = $bf[0];
 $bits{ftbinary}{0} = $bf[0];
 $bits{ftblk}{0} = $bf[0];
@@ -330,32 +351,32 @@
 $bits{ftzero}{0} = $bf[0];
 @{$bits{ge}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{gelem}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{getc}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{getc}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{getpeername}{0} = $bf[0];
-@{$bits{getpgrp}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{getpriority}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{getpgrp}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{getpriority}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{getsockname}{0} = $bf[0];
 $bits{ggrgid}{0} = $bf[0];
 $bits{ggrnam}{0} = $bf[0];
-@{$bits{ghbyaddr}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{ghbyaddr}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{ghbyname}{0} = $bf[0];
-@{$bits{glob}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{gmtime}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{gnbyaddr}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{glob}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{gmtime}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{gnbyaddr}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{gnbyname}{0} = $bf[0];
 $bits{goto}{0} = $bf[0];
 $bits{gpbyname}{0} = $bf[0];
-@{$bits{gpbynumber}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{gpbynumber}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{gpwnam}{0} = $bf[0];
 $bits{gpwuid}{0} = $bf[0];
 $bits{grepstart}{0} = $bf[0];
 $bits{grepwhile}{0} = $bf[0];
-@{$bits{gsbyname}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{gsbyport}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{gsockopt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{gsbyname}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{gsbyport}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{gsockopt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{gt}}{1,0} = ($bf[1], $bf[1]);
 $bits{gv}{5} = 'OPpEARLY_CV';
-@{$bits{helem}}{5,4,1,0} = ($bf[6], $bf[6], $bf[1], $bf[1]);
+@{$bits{helem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]);
 $bits{hex}{0} = $bf[0];
 @{$bits{i_add}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{i_divide}}{1,0} = ($bf[1], $bf[1]);
@@ -374,12 +395,12 @@
 $bits{i_predec}{0} = $bf[0];
 $bits{i_preinc}{0} = $bf[0];
 @{$bits{i_subtract}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{index}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{index}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{int}{0} = $bf[0];
-@{$bits{ioctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{join}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{ioctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{join}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{keys}{0} = $bf[0];
-@{$bits{kill}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{kill}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{last}{0} = $bf[0];
 $bits{lc}{0} = $bf[0];
 $bits{lcfirst}{0} = $bf[0];
@@ -393,9 +414,9 @@
 $bits{leavewrite}{0} = $bf[0];
 @{$bits{left_shift}}{1,0} = ($bf[1], $bf[1]);
 $bits{length}{0} = $bf[0];
-@{$bits{link}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{link}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{list}{6} = 'OPpLIST_GUESSED';
-@{$bits{listen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{listen}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{localtime}{0} = $bf[0];
 $bits{lock}{0} = $bf[0];
 $bits{log}{0} = $bf[0];
@@ -403,7 +424,7 @@
 $bits{lstat}{0} = $bf[0];
 @{$bits{lt}}{1,0} = ($bf[1], $bf[1]);
 $bits{lvavref}{0} = $bf[0];
-@{$bits{lvref}}{5,4,0} = ($bf[7], $bf[7], $bf[0]);
+@{$bits{lvref}}{5,4,0} = ($bf[9], $bf[9], $bf[0]);
 $bits{mapstart}{0} = $bf[0];
 $bits{mapwhile}{0} = $bf[0];
 $bits{method}{0} = $bf[0];
@@ -411,12 +432,12 @@
 $bits{method_redir}{0} = $bf[0];
 $bits{method_redir_super}{0} = $bf[0];
 $bits{method_super}{0} = $bf[0];
-@{$bits{mkdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{mkdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{modulo}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{msgctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{msgget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{msgrcv}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{msgsnd}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{msgctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{msgget}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{msgrcv}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{msgsnd}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{multideref}}{5,4,0} = ('OPpMULTIDEREF_DELETE', 'OPpMULTIDEREF_EXISTS', $bf[0]);
 @{$bits{multiply}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{nbit_and}}{1,0} = ($bf[1], $bf[1]);
@@ -430,15 +451,15 @@
 $bits{not}{0} = $bf[0];
 $bits{oct}{0} = $bf[0];
 $bits{once}{0} = $bf[0];
-@{$bits{open}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{open_dir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{open}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{open_dir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{or}{0} = $bf[0];
 $bits{orassign}{0} = $bf[0];
 $bits{ord}{0} = $bf[0];
-@{$bits{pack}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4], $bf[4], $bf[4], $bf[4]);
-@{$bits{padsv}}{5,4} = ($bf[6], $bf[6]);
-@{$bits{pipe_op}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{pack}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
+@{$bits{padsv}}{5,4} = ($bf[8], $bf[8]);
+@{$bits{pipe_op}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{pop}{0} = $bf[0];
 $bits{pos}{0} = $bf[0];
 $bits{postdec}{0} = $bf[0];
@@ -447,36 +468,36 @@
 $bits{predec}{0} = $bf[0];
 $bits{preinc}{0} = $bf[0];
 $bits{prototype}{0} = $bf[0];
-@{$bits{push}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{push}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{quotemeta}{0} = $bf[0];
-@{$bits{rand}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{rand}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{range}{0} = $bf[0];
-@{$bits{read}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{read}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{readdir}{0} = $bf[0];
 $bits{readline}{0} = $bf[0];
 $bits{readlink}{0} = $bf[0];
-@{$bits{recv}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{recv}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{redo}{0} = $bf[0];
 $bits{ref}{0} = $bf[0];
-@{$bits{refassign}}{5,4,1,0} = ($bf[7], $bf[7], $bf[1], $bf[1]);
+@{$bits{refassign}}{5,4,1,0} = ($bf[9], $bf[9], $bf[1], $bf[1]);
 $bits{refgen}{0} = $bf[0];
 $bits{regcmaybe}{0} = $bf[0];
 $bits{regcomp}{0} = $bf[0];
 $bits{regcreset}{0} = $bf[0];
-@{$bits{rename}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{rename}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{repeat}}{6,1,0} = ('OPpREPEAT_DOLIST', $bf[1], $bf[1]);
 $bits{require}{0} = $bf[0];
-@{$bits{reset}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{reset}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{reverse}}{3,0} = ('OPpREVERSE_INPLACE', $bf[0]);
 $bits{rewinddir}{0} = $bf[0];
 @{$bits{right_shift}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{rindex}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{rindex}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{rmdir}{0} = $bf[0];
 $bits{rv2av}{0} = $bf[0];
 @{$bits{rv2cv}}{7,5,0} = ('OPpENTERSUB_NOPAREN', 'OPpMAY_RETURN_CONSTANT', $bf[0]);
-@{$bits{rv2gv}}{6,5,4,2,0} = ('OPpALLOW_FAKE', $bf[6], $bf[6], 'OPpDONT_INIT_GV', $bf[0]);
+@{$bits{rv2gv}}{6,5,4,2,0} = ('OPpALLOW_FAKE', $bf[8], $bf[8], 'OPpDONT_INIT_GV', $bf[0]);
 $bits{rv2hv}{0} = $bf[0];
-@{$bits{rv2sv}}{5,4,0} = ($bf[6], $bf[6], $bf[0]);
+@{$bits{rv2sv}}{5,4,0} = ($bf[8], $bf[8], $bf[0]);
 @{$bits{sassign}}{7,6,1,0} = ('OPpASSIGN_CV_TO_GV', 'OPpASSIGN_BACKWARDS', $bf[1], $bf[1]);
 @{$bits{sbit_and}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{sbit_or}}{1,0} = ($bf[1], $bf[1]);
@@ -486,76 +507,76 @@
 $bits{schop}{0} = $bf[0];
 @{$bits{scmp}}{1,0} = ($bf[1], $bf[1]);
 $bits{scomplement}{0} = $bf[0];
-@{$bits{seek}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{seekdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{select}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{semctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{semget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{semop}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{send}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{seek}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{seekdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{select}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{semctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{semget}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{semop}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{send}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{seq}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{setpgrp}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{setpriority}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{setpgrp}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{setpriority}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{sge}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{sgt}}{1,0} = ($bf[1], $bf[1]);
 $bits{shift}{0} = $bf[0];
-@{$bits{shmctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{shmget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{shmread}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{shmwrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{shmctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{shmget}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{shmread}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{shmwrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{shostent}{0} = $bf[0];
-@{$bits{shutdown}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{shutdown}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{sin}{0} = $bf[0];
 @{$bits{sle}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{sleep}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{sleep}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{slt}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{smartmatch}}{1,0} = ($bf[1], $bf[1]);
 @{$bits{sne}}{1,0} = ($bf[1], $bf[1]);
 $bits{snetent}{0} = $bf[0];
-@{$bits{socket}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{sockpair}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{socket}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{sockpair}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{sort}}{6,5,4,3,2,1,0} = ('OPpSORT_STABLE', 'OPpSORT_QSORT', 'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 'OPpSORT_NUMERIC');
-@{$bits{splice}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-$bits{split}{7} = 'OPpSPLIT_IMPLIM';
-@{$bits{sprintf}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{splice}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{split}}{4,3,2} = ('OPpSPLIT_ASSIGN', 'OPpSPLIT_LEX', 'OPpSPLIT_IMPLIM');
+@{$bits{sprintf}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{sprotoent}{0} = $bf[0];
 $bits{sqrt}{0} = $bf[0];
-@{$bits{srand}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{srand}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{srefgen}{0} = $bf[0];
-@{$bits{sselect}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{sselect}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{sservent}{0} = $bf[0];
-@{$bits{ssockopt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{ssockopt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{stat}{0} = $bf[0];
-@{$bits{stringify}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{stringify}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{study}{0} = $bf[0];
 $bits{substcont}{0} = $bf[0];
-@{$bits{substr}}{4,2,1,0} = ('OPpSUBSTR_REPL_FIRST', $bf[2], $bf[2], $bf[2]);
+@{$bits{substr}}{4,2,1,0} = ('OPpSUBSTR_REPL_FIRST', $bf[3], $bf[3], $bf[3]);
 @{$bits{subtract}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{symlink}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{syscall}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{sysopen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{sysread}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{sysseek}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{system}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{syswrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{tell}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{symlink}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{syscall}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{sysopen}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{sysread}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{sysseek}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{system}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{syswrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{tell}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{telldir}{0} = $bf[0];
-@{$bits{tie}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{tie}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{tied}{0} = $bf[0];
-@{$bits{truncate}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{truncate}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{uc}{0} = $bf[0];
 $bits{ucfirst}{0} = $bf[0];
-@{$bits{umask}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{umask}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{undef}{0} = $bf[0];
-@{$bits{unlink}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{unpack}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{unshift}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{unlink}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{unpack}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{unshift}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{untie}{0} = $bf[0];
-@{$bits{utime}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{utime}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 $bits{values}{0} = $bf[0];
 @{$bits{vec}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{waitpid}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
-@{$bits{warn}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
+@{$bits{waitpid}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{warn}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{xor}}{1,0} = ($bf[1], $bf[1]);
 
 
@@ -565,11 +586,16 @@
     OPpARG2_MASK             =>   3,
     OPpARG3_MASK             =>   7,
     OPpARG4_MASK             =>  15,
+    OPpARGELEM_AV            =>   2,
+    OPpARGELEM_HV            =>   4,
+    OPpARGELEM_MASK          =>   6,
+    OPpARGELEM_SV            =>   0,
     OPpASSIGN_BACKWARDS      =>  64,
     OPpASSIGN_COMMON_AGG     =>  16,
     OPpASSIGN_COMMON_RC1     =>  32,
     OPpASSIGN_COMMON_SCALAR  =>  64,
     OPpASSIGN_CV_TO_GV       => 128,
+    OPpAVHVSWITCH_MASK       =>   3,
     OPpCONST_BARE            =>  64,
     OPpCONST_ENTERED         =>  16,
     OPpCONST_NOVER           =>   2,
@@ -634,7 +660,6 @@
     OPpREFCOUNTED            =>  64,
     OPpREPEAT_DOLIST         =>  64,
     OPpREVERSE_INPLACE       =>   8,
-    OPpRUNTIME               =>  64,
     OPpSLICE                 =>  64,
     OPpSLICEWARNING          =>   4,
     OPpSORT_DESCEND          =>  16,
@@ -644,7 +669,9 @@
     OPpSORT_QSORT            =>  32,
     OPpSORT_REVERSE          =>   4,
     OPpSORT_STABLE           =>  64,
-    OPpSPLIT_IMPLIM          => 128,
+    OPpSPLIT_ASSIGN          =>  16,
+    OPpSPLIT_IMPLIM          =>   4,
+    OPpSPLIT_LEX             =>   8,
     OPpSUBSTR_REPL_FIRST     =>  16,
     OPpTARGET_MY             =>  16,
     OPpTRANS_COMPLEMENT      =>  32,
@@ -659,6 +686,9 @@
 
 our %labels = (
     OPpALLOW_FAKE            => 'FAKE',
+    OPpARGELEM_AV            => 'AV',
+    OPpARGELEM_HV            => 'HV',
+    OPpARGELEM_SV            => 'SV',
     OPpASSIGN_BACKWARDS      => 'BKWARD',
     OPpASSIGN_COMMON_AGG     => 'COM_AGG',
     OPpASSIGN_COMMON_RC1     => 'COM_RC1',
@@ -724,7 +754,6 @@
     OPpREFCOUNTED            => 'REFC',
     OPpREPEAT_DOLIST         => 'DOLIST',
     OPpREVERSE_INPLACE       => 'INPLACE',
-    OPpRUNTIME               => 'RTIME',
     OPpSLICE                 => 'SLICE',
     OPpSLICEWARNING          => 'SLICEWARN',
     OPpSORT_DESCEND          => 'DESC',
@@ -734,7 +763,9 @@
     OPpSORT_QSORT            => 'QSORT',
     OPpSORT_REVERSE          => 'REV',
     OPpSORT_STABLE           => 'STABLE',
+    OPpSPLIT_ASSIGN          => 'ASSIGN',
     OPpSPLIT_IMPLIM          => 'IMPLIM',
+    OPpSPLIT_LEX             => 'LEX',
     OPpSUBSTR_REPL_FIRST     => 'REPL1ST',
     OPpTARGET_MY             => 'TARGMY',
     OPpTRANS_COMPLEMENT      => 'COMPL',
@@ -770,9 +801,9 @@
     OPpLIST_GUESSED          => [qw(list)],
     OPpLVALUE                => [qw(leave leaveloop)],
     OPpLVAL_DEFER            => [qw(aelem helem multideref)],
-    OPpLVAL_INTRO            => [qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv)],
+    OPpLVAL_INTRO            => [qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split)],
     OPpLVREF_ELEM            => [qw(lvref refassign)],
-    OPpMAYBE_LVSUB           => [qw(aassign aelem aslice av2arylen helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr vec)],
+    OPpMAYBE_LVSUB           => [qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr vec)],
     OPpMAYBE_TRUEBOOL        => [qw(padhv rv2hv)],
     OPpMULTIDEREF_DELETE     => [qw(multideref)],
     OPpOFFBYONE              => [qw(caller runcv wantarray)],
@@ -783,11 +814,10 @@
     OPpREFCOUNTED            => [qw(leave leaveeval leavesub leavesublv leavewrite)],
     OPpREPEAT_DOLIST         => [qw(repeat)],
     OPpREVERSE_INPLACE       => [qw(reverse)],
-    OPpRUNTIME               => [qw(match pushre qr subst substcont)],
     OPpSLICE                 => [qw(delete)],
     OPpSLICEWARNING          => [qw(aslice hslice padav padhv rv2av rv2hv)],
     OPpSORT_DESCEND          => [qw(sort)],
-    OPpSPLIT_IMPLIM          => [qw(split)],
+    OPpSPLIT_ASSIGN          => [qw(split)],
     OPpSUBSTR_REPL_FIRST     => [qw(substr)],
     OPpTARGET_MY             => [qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid)],
     OPpTRANS_COMPLEMENT      => [qw(trans transr)],
@@ -824,6 +854,8 @@
 $ops_using{OPpSORT_QSORT} = $ops_using{OPpSORT_DESCEND};
 $ops_using{OPpSORT_REVERSE} = $ops_using{OPpSORT_DESCEND};
 $ops_using{OPpSORT_STABLE} = $ops_using{OPpSORT_DESCEND};
+$ops_using{OPpSPLIT_IMPLIM} = $ops_using{OPpSPLIT_ASSIGN};
+$ops_using{OPpSPLIT_LEX} = $ops_using{OPpSPLIT_ASSIGN};
 $ops_using{OPpTRANS_DELETE} = $ops_using{OPpTRANS_COMPLEMENT};
 $ops_using{OPpTRANS_FROM_UTF} = $ops_using{OPpTRANS_COMPLEMENT};
 $ops_using{OPpTRANS_GROWS} = $ops_using{OPpTRANS_COMPLEMENT};

Modified: trunk/Master/tlpkg/tlperl/lib/B/Terse.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Terse.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B/Terse.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -1,6 +1,6 @@
 package B::Terse;
 
-our $VERSION = '1.06';
+our $VERSION = '1.07';
 
 use strict;
 use B qw(class @specialsv_name);
@@ -33,7 +33,7 @@
 # Don't use this, at least on OPs in subroutines: it has no way of
 # getting to the pad, and will give wrong answers or crash.
 sub B::OP::terse {
-    carp "B::OP::terse is deprecated; use B::Concise instead";
+    carp "B::OP::terse is deprecated and will go away in Perl 5.28; use B::Concise instead";
     B::Concise::b_terse(@_);
 }
 

Modified: trunk/Master/tlpkg/tlperl/lib/B/Xref.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Xref.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B/Xref.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -1,6 +1,6 @@
 package B::Xref;
 
-our $VERSION = '1.05';
+our $VERSION = '1.06';
 
 =head1 NAME
 
@@ -449,7 +449,7 @@
 	    last OPTION;
 	} elsif ($opt eq "o") {
 	    $arg ||= shift @options;
-	    open(STDOUT, ">$arg") or return "$arg: $!\n";
+	    open(STDOUT, '>', $arg) or return "$arg: $!\n";
 	} elsif ($opt eq "d") {
 	    $nodefs = 1;
 	} elsif ($opt eq "r") {

Modified: trunk/Master/tlpkg/tlperl/lib/B.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/B.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -15,7 +15,7 @@
 # walkoptree comes from B.xs
 
 BEGIN {
-    $B::VERSION = '1.62';
+    $B::VERSION = '1.68';
     @B::EXPORT_OK = ();
 
     # Our BOOT code needs $VERSION set, and will append to @EXPORT_OK.

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -93,12 +93,7 @@
 */
 
 #ifndef PERL_UNUSED_ARG
-#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-#    include <note.h>
-#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
-#  else
-#    define PERL_UNUSED_ARG(x) ((void)x)
-#  endif
+#  define PERL_UNUSED_ARG(x) ((void)x)
 #endif
 #ifndef PERL_UNUSED_VAR
 #  define PERL_UNUSED_VAR(x) ((void)x)
@@ -164,13 +159,8 @@
 
 #define dITEMS I32 items = (I32)(SP - MARK)
 
-#if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-#  define dXSARGS \
-	NOTE(ARGUNUSED(cv)) \
+#define dXSARGS \
 	dSP; dAXMARK; dITEMS
-#else
-#  define dXSARGS \
-	dSP; dAXMARK; dITEMS
 /* These 3 macros are replacements for dXSARGS macro only in bootstrap.
    They factor out common code in every BOOT XSUB. Computation of vars mark
    and items will optimize away in most BOOT functions. Var ax can never be
@@ -177,19 +167,18 @@
    optimized away since BOOT must return &PL_sv_yes by default from xsubpp.
    Note these macros are not drop in replacements for dXSARGS since they set
    PL_xsubfilename. */
-#  define dXSBOOTARGSXSAPIVERCHK  \
+#define dXSBOOTARGSXSAPIVERCHK  \
 	I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK;	\
 	SV **mark = PL_stack_base + ax; dSP; dITEMS
-#  define dXSBOOTARGSAPIVERCHK  \
+#define dXSBOOTARGSAPIVERCHK  \
 	I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK;	\
 	SV **mark = PL_stack_base + ax; dSP; dITEMS
 /* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do
 #undef dXSBOOTARGSXSAPIVERCHK
 #define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK */
-#  define dXSBOOTARGSNOVERCHK  \
+#define dXSBOOTARGSNOVERCHK  \
 	I32 ax = XS_SETXSUBFN_POPMARK;  \
 	SV **mark = PL_stack_base + ax; dSP; dITEMS
-#endif
 
 #define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
 			     ? PAD_SV(PL_op->op_targ) : sv_newmortal())

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/av.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/av.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/av.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -81,14 +81,12 @@
 			 ? mg_size(MUTABLE_SV(av)) : AvFILLp(av))
 #define av_tindex(av)   av_top_index(av)
 
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
 /* Note that it doesn't make sense to do this:
  *      SvGETMAGIC(av); IV x = av_tindex_nomg(av);
- * This name is controversial, and so is restricted by the #ifdef to the places
- * it already occurs
  */
-#   define av_tindex_nomg(av)  (__ASSERT_(SvTYPE(av) == SVt_PVAV) AvFILLp(av))
-#endif
+#   define av_top_index_skip_len_mg(av)                                     \
+                            (__ASSERT_(SvTYPE(av) == SVt_PVAV) AvFILLp(av))
+#   define av_tindex_skip_len_mg(av)  av_top_index_skip_len_mg(av)
 
 #define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES"
 

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -42,8 +42,1291 @@
 	0x80
 };
 
+static const UV Assigned_invlist[] = { /* for ASCII/Latin1 */
+	1276,	/* Number of elements */
+	148565664, /* Version and data structure type */
+	0,	/* 0 if the list starts at 0;
+		   1 if it starts at the element beyond 0 */
+	0x0,
+	0x378,
+	0x37A,
+	0x380,
+	0x384,
+	0x38B,
+	0x38C,
+	0x38D,
+	0x38E,
+	0x3A2,
+	0x3A3,
+	0x530,
+	0x531,
+	0x557,
+	0x559,
+	0x560,
+	0x561,
+	0x588,
+	0x589,
+	0x58B,
+	0x58D,
+	0x590,
+	0x591,
+	0x5C8,
+	0x5D0,
+	0x5EB,
+	0x5F0,
+	0x5F5,
+	0x600,
+	0x61D,
+	0x61E,
+	0x70E,
+	0x70F,
+	0x74B,
+	0x74D,
+	0x7B2,
+	0x7C0,
+	0x7FB,
+	0x800,
+	0x82E,
+	0x830,
+	0x83F,
+	0x840,
+	0x85C,
+	0x85E,
+	0x85F,
+	0x8A0,
+	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x984,
+	0x985,
+	0x98D,
+	0x98F,
+	0x991,
+	0x993,
+	0x9A9,
+	0x9AA,
+	0x9B1,
+	0x9B2,
+	0x9B3,
+	0x9B6,
+	0x9BA,
+	0x9BC,
+	0x9C5,
+	0x9C7,
+	0x9C9,
+	0x9CB,
+	0x9CF,
+	0x9D7,
+	0x9D8,
+	0x9DC,
+	0x9DE,
+	0x9DF,
+	0x9E4,
+	0x9E6,
+	0x9FC,
+	0xA01,
+	0xA04,
+	0xA05,
+	0xA0B,
+	0xA0F,
+	0xA11,
+	0xA13,
+	0xA29,
+	0xA2A,
+	0xA31,
+	0xA32,
+	0xA34,
+	0xA35,
+	0xA37,
+	0xA38,
+	0xA3A,
+	0xA3C,
+	0xA3D,
+	0xA3E,
+	0xA43,
+	0xA47,
+	0xA49,
+	0xA4B,
+	0xA4E,
+	0xA51,
+	0xA52,
+	0xA59,
+	0xA5D,
+	0xA5E,
+	0xA5F,
+	0xA66,
+	0xA76,
+	0xA81,
+	0xA84,
+	0xA85,
+	0xA8E,
+	0xA8F,
+	0xA92,
+	0xA93,
+	0xAA9,
+	0xAAA,
+	0xAB1,
+	0xAB2,
+	0xAB4,
+	0xAB5,
+	0xABA,
+	0xABC,
+	0xAC6,
+	0xAC7,
+	0xACA,
+	0xACB,
+	0xACE,
+	0xAD0,
+	0xAD1,
+	0xAE0,
+	0xAE4,
+	0xAE6,
+	0xAF2,
+	0xAF9,
+	0xAFA,
+	0xB01,
+	0xB04,
+	0xB05,
+	0xB0D,
+	0xB0F,
+	0xB11,
+	0xB13,
+	0xB29,
+	0xB2A,
+	0xB31,
+	0xB32,
+	0xB34,
+	0xB35,
+	0xB3A,
+	0xB3C,
+	0xB45,
+	0xB47,
+	0xB49,
+	0xB4B,
+	0xB4E,
+	0xB56,
+	0xB58,
+	0xB5C,
+	0xB5E,
+	0xB5F,
+	0xB64,
+	0xB66,
+	0xB78,
+	0xB82,
+	0xB84,
+	0xB85,
+	0xB8B,
+	0xB8E,
+	0xB91,
+	0xB92,
+	0xB96,
+	0xB99,
+	0xB9B,
+	0xB9C,
+	0xB9D,
+	0xB9E,
+	0xBA0,
+	0xBA3,
+	0xBA5,
+	0xBA8,
+	0xBAB,
+	0xBAE,
+	0xBBA,
+	0xBBE,
+	0xBC3,
+	0xBC6,
+	0xBC9,
+	0xBCA,
+	0xBCE,
+	0xBD0,
+	0xBD1,
+	0xBD7,
+	0xBD8,
+	0xBE6,
+	0xBFB,
+	0xC00,
+	0xC04,
+	0xC05,
+	0xC0D,
+	0xC0E,
+	0xC11,
+	0xC12,
+	0xC29,
+	0xC2A,
+	0xC3A,
+	0xC3D,
+	0xC45,
+	0xC46,
+	0xC49,
+	0xC4A,
+	0xC4E,
+	0xC55,
+	0xC57,
+	0xC58,
+	0xC5B,
+	0xC60,
+	0xC64,
+	0xC66,
+	0xC70,
+	0xC78,
+	0xC84,
+	0xC85,
+	0xC8D,
+	0xC8E,
+	0xC91,
+	0xC92,
+	0xCA9,
+	0xCAA,
+	0xCB4,
+	0xCB5,
+	0xCBA,
+	0xCBC,
+	0xCC5,
+	0xCC6,
+	0xCC9,
+	0xCCA,
+	0xCCE,
+	0xCD5,
+	0xCD7,
+	0xCDE,
+	0xCDF,
+	0xCE0,
+	0xCE4,
+	0xCE6,
+	0xCF0,
+	0xCF1,
+	0xCF3,
+	0xD01,
+	0xD04,
+	0xD05,
+	0xD0D,
+	0xD0E,
+	0xD11,
+	0xD12,
+	0xD3B,
+	0xD3D,
+	0xD45,
+	0xD46,
+	0xD49,
+	0xD4A,
+	0xD50,
+	0xD54,
+	0xD64,
+	0xD66,
+	0xD80,
+	0xD82,
+	0xD84,
+	0xD85,
+	0xD97,
+	0xD9A,
+	0xDB2,
+	0xDB3,
+	0xDBC,
+	0xDBD,
+	0xDBE,
+	0xDC0,
+	0xDC7,
+	0xDCA,
+	0xDCB,
+	0xDCF,
+	0xDD5,
+	0xDD6,
+	0xDD7,
+	0xDD8,
+	0xDE0,
+	0xDE6,
+	0xDF0,
+	0xDF2,
+	0xDF5,
+	0xE01,
+	0xE3B,
+	0xE3F,
+	0xE5C,
+	0xE81,
+	0xE83,
+	0xE84,
+	0xE85,
+	0xE87,
+	0xE89,
+	0xE8A,
+	0xE8B,
+	0xE8D,
+	0xE8E,
+	0xE94,
+	0xE98,
+	0xE99,
+	0xEA0,
+	0xEA1,
+	0xEA4,
+	0xEA5,
+	0xEA6,
+	0xEA7,
+	0xEA8,
+	0xEAA,
+	0xEAC,
+	0xEAD,
+	0xEBA,
+	0xEBB,
+	0xEBE,
+	0xEC0,
+	0xEC5,
+	0xEC6,
+	0xEC7,
+	0xEC8,
+	0xECE,
+	0xED0,
+	0xEDA,
+	0xEDC,
+	0xEE0,
+	0xF00,
+	0xF48,
+	0xF49,
+	0xF6D,
+	0xF71,
+	0xF98,
+	0xF99,
+	0xFBD,
+	0xFBE,
+	0xFCD,
+	0xFCE,
+	0xFDB,
+	0x1000,
+	0x10C6,
+	0x10C7,
+	0x10C8,
+	0x10CD,
+	0x10CE,
+	0x10D0,
+	0x1249,
+	0x124A,
+	0x124E,
+	0x1250,
+	0x1257,
+	0x1258,
+	0x1259,
+	0x125A,
+	0x125E,
+	0x1260,
+	0x1289,
+	0x128A,
+	0x128E,
+	0x1290,
+	0x12B1,
+	0x12B2,
+	0x12B6,
+	0x12B8,
+	0x12BF,
+	0x12C0,
+	0x12C1,
+	0x12C2,
+	0x12C6,
+	0x12C8,
+	0x12D7,
+	0x12D8,
+	0x1311,
+	0x1312,
+	0x1316,
+	0x1318,
+	0x135B,
+	0x135D,
+	0x137D,
+	0x1380,
+	0x139A,
+	0x13A0,
+	0x13F6,
+	0x13F8,
+	0x13FE,
+	0x1400,
+	0x169D,
+	0x16A0,
+	0x16F9,
+	0x1700,
+	0x170D,
+	0x170E,
+	0x1715,
+	0x1720,
+	0x1737,
+	0x1740,
+	0x1754,
+	0x1760,
+	0x176D,
+	0x176E,
+	0x1771,
+	0x1772,
+	0x1774,
+	0x1780,
+	0x17DE,
+	0x17E0,
+	0x17EA,
+	0x17F0,
+	0x17FA,
+	0x1800,
+	0x180F,
+	0x1810,
+	0x181A,
+	0x1820,
+	0x1878,
+	0x1880,
+	0x18AB,
+	0x18B0,
+	0x18F6,
+	0x1900,
+	0x191F,
+	0x1920,
+	0x192C,
+	0x1930,
+	0x193C,
+	0x1940,
+	0x1941,
+	0x1944,
+	0x196E,
+	0x1970,
+	0x1975,
+	0x1980,
+	0x19AC,
+	0x19B0,
+	0x19CA,
+	0x19D0,
+	0x19DB,
+	0x19DE,
+	0x1A1C,
+	0x1A1E,
+	0x1A5F,
+	0x1A60,
+	0x1A7D,
+	0x1A7F,
+	0x1A8A,
+	0x1A90,
+	0x1A9A,
+	0x1AA0,
+	0x1AAE,
+	0x1AB0,
+	0x1ABF,
+	0x1B00,
+	0x1B4C,
+	0x1B50,
+	0x1B7D,
+	0x1B80,
+	0x1BF4,
+	0x1BFC,
+	0x1C38,
+	0x1C3B,
+	0x1C4A,
+	0x1C4D,
+	0x1C89,
+	0x1CC0,
+	0x1CC8,
+	0x1CD0,
+	0x1CF7,
+	0x1CF8,
+	0x1CFA,
+	0x1D00,
+	0x1DF6,
+	0x1DFB,
+	0x1F16,
+	0x1F18,
+	0x1F1E,
+	0x1F20,
+	0x1F46,
+	0x1F48,
+	0x1F4E,
+	0x1F50,
+	0x1F58,
+	0x1F59,
+	0x1F5A,
+	0x1F5B,
+	0x1F5C,
+	0x1F5D,
+	0x1F5E,
+	0x1F5F,
+	0x1F7E,
+	0x1F80,
+	0x1FB5,
+	0x1FB6,
+	0x1FC5,
+	0x1FC6,
+	0x1FD4,
+	0x1FD6,
+	0x1FDC,
+	0x1FDD,
+	0x1FF0,
+	0x1FF2,
+	0x1FF5,
+	0x1FF6,
+	0x1FFF,
+	0x2000,
+	0x2065,
+	0x2066,
+	0x2072,
+	0x2074,
+	0x208F,
+	0x2090,
+	0x209D,
+	0x20A0,
+	0x20BF,
+	0x20D0,
+	0x20F1,
+	0x2100,
+	0x218C,
+	0x2190,
+	0x23FF,
+	0x2400,
+	0x2427,
+	0x2440,
+	0x244B,
+	0x2460,
+	0x2B74,
+	0x2B76,
+	0x2B96,
+	0x2B98,
+	0x2BBA,
+	0x2BBD,
+	0x2BC9,
+	0x2BCA,
+	0x2BD2,
+	0x2BEC,
+	0x2BF0,
+	0x2C00,
+	0x2C2F,
+	0x2C30,
+	0x2C5F,
+	0x2C60,
+	0x2CF4,
+	0x2CF9,
+	0x2D26,
+	0x2D27,
+	0x2D28,
+	0x2D2D,
+	0x2D2E,
+	0x2D30,
+	0x2D68,
+	0x2D6F,
+	0x2D71,
+	0x2D7F,
+	0x2D97,
+	0x2DA0,
+	0x2DA7,
+	0x2DA8,
+	0x2DAF,
+	0x2DB0,
+	0x2DB7,
+	0x2DB8,
+	0x2DBF,
+	0x2DC0,
+	0x2DC7,
+	0x2DC8,
+	0x2DCF,
+	0x2DD0,
+	0x2DD7,
+	0x2DD8,
+	0x2DDF,
+	0x2DE0,
+	0x2E45,
+	0x2E80,
+	0x2E9A,
+	0x2E9B,
+	0x2EF4,
+	0x2F00,
+	0x2FD6,
+	0x2FF0,
+	0x2FFC,
+	0x3000,
+	0x3040,
+	0x3041,
+	0x3097,
+	0x3099,
+	0x3100,
+	0x3105,
+	0x312E,
+	0x3131,
+	0x318F,
+	0x3190,
+	0x31BB,
+	0x31C0,
+	0x31E4,
+	0x31F0,
+	0x321F,
+	0x3220,
+	0x32FF,
+	0x3300,
+	0x4DB6,
+	0x4DC0,
+	0x9FD6,
+	0xA000,
+	0xA48D,
+	0xA490,
+	0xA4C7,
+	0xA4D0,
+	0xA62C,
+	0xA640,
+	0xA6F8,
+	0xA700,
+	0xA7AF,
+	0xA7B0,
+	0xA7B8,
+	0xA7F7,
+	0xA82C,
+	0xA830,
+	0xA83A,
+	0xA840,
+	0xA878,
+	0xA880,
+	0xA8C6,
+	0xA8CE,
+	0xA8DA,
+	0xA8E0,
+	0xA8FE,
+	0xA900,
+	0xA954,
+	0xA95F,
+	0xA97D,
+	0xA980,
+	0xA9CE,
+	0xA9CF,
+	0xA9DA,
+	0xA9DE,
+	0xA9FF,
+	0xAA00,
+	0xAA37,
+	0xAA40,
+	0xAA4E,
+	0xAA50,
+	0xAA5A,
+	0xAA5C,
+	0xAAC3,
+	0xAADB,
+	0xAAF7,
+	0xAB01,
+	0xAB07,
+	0xAB09,
+	0xAB0F,
+	0xAB11,
+	0xAB17,
+	0xAB20,
+	0xAB27,
+	0xAB28,
+	0xAB2F,
+	0xAB30,
+	0xAB66,
+	0xAB70,
+	0xABEE,
+	0xABF0,
+	0xABFA,
+	0xAC00,
+	0xD7A4,
+	0xD7B0,
+	0xD7C7,
+	0xD7CB,
+	0xD7FC,
+	0xD800,
+	0xFA6E,
+	0xFA70,
+	0xFADA,
+	0xFB00,
+	0xFB07,
+	0xFB13,
+	0xFB18,
+	0xFB1D,
+	0xFB37,
+	0xFB38,
+	0xFB3D,
+	0xFB3E,
+	0xFB3F,
+	0xFB40,
+	0xFB42,
+	0xFB43,
+	0xFB45,
+	0xFB46,
+	0xFBC2,
+	0xFBD3,
+	0xFD40,
+	0xFD50,
+	0xFD90,
+	0xFD92,
+	0xFDC8,
+	0xFDF0,
+	0xFDFE,
+	0xFE00,
+	0xFE1A,
+	0xFE20,
+	0xFE53,
+	0xFE54,
+	0xFE67,
+	0xFE68,
+	0xFE6C,
+	0xFE70,
+	0xFE75,
+	0xFE76,
+	0xFEFD,
+	0xFEFF,
+	0xFF00,
+	0xFF01,
+	0xFFBF,
+	0xFFC2,
+	0xFFC8,
+	0xFFCA,
+	0xFFD0,
+	0xFFD2,
+	0xFFD8,
+	0xFFDA,
+	0xFFDD,
+	0xFFE0,
+	0xFFE7,
+	0xFFE8,
+	0xFFEF,
+	0xFFF9,
+	0xFFFE,
+	0x10000,
+	0x1000C,
+	0x1000D,
+	0x10027,
+	0x10028,
+	0x1003B,
+	0x1003C,
+	0x1003E,
+	0x1003F,
+	0x1004E,
+	0x10050,
+	0x1005E,
+	0x10080,
+	0x100FB,
+	0x10100,
+	0x10103,
+	0x10107,
+	0x10134,
+	0x10137,
+	0x1018F,
+	0x10190,
+	0x1019C,
+	0x101A0,
+	0x101A1,
+	0x101D0,
+	0x101FE,
+	0x10280,
+	0x1029D,
+	0x102A0,
+	0x102D1,
+	0x102E0,
+	0x102FC,
+	0x10300,
+	0x10324,
+	0x10330,
+	0x1034B,
+	0x10350,
+	0x1037B,
+	0x10380,
+	0x1039E,
+	0x1039F,
+	0x103C4,
+	0x103C8,
+	0x103D6,
+	0x10400,
+	0x1049E,
+	0x104A0,
+	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
+	0x10500,
+	0x10528,
+	0x10530,
+	0x10564,
+	0x1056F,
+	0x10570,
+	0x10600,
+	0x10737,
+	0x10740,
+	0x10756,
+	0x10760,
+	0x10768,
+	0x10800,
+	0x10806,
+	0x10808,
+	0x10809,
+	0x1080A,
+	0x10836,
+	0x10837,
+	0x10839,
+	0x1083C,
+	0x1083D,
+	0x1083F,
+	0x10856,
+	0x10857,
+	0x1089F,
+	0x108A7,
+	0x108B0,
+	0x108E0,
+	0x108F3,
+	0x108F4,
+	0x108F6,
+	0x108FB,
+	0x1091C,
+	0x1091F,
+	0x1093A,
+	0x1093F,
+	0x10940,
+	0x10980,
+	0x109B8,
+	0x109BC,
+	0x109D0,
+	0x109D2,
+	0x10A04,
+	0x10A05,
+	0x10A07,
+	0x10A0C,
+	0x10A14,
+	0x10A15,
+	0x10A18,
+	0x10A19,
+	0x10A34,
+	0x10A38,
+	0x10A3B,
+	0x10A3F,
+	0x10A48,
+	0x10A50,
+	0x10A59,
+	0x10A60,
+	0x10AA0,
+	0x10AC0,
+	0x10AE7,
+	0x10AEB,
+	0x10AF7,
+	0x10B00,
+	0x10B36,
+	0x10B39,
+	0x10B56,
+	0x10B58,
+	0x10B73,
+	0x10B78,
+	0x10B92,
+	0x10B99,
+	0x10B9D,
+	0x10BA9,
+	0x10BB0,
+	0x10C00,
+	0x10C49,
+	0x10C80,
+	0x10CB3,
+	0x10CC0,
+	0x10CF3,
+	0x10CFA,
+	0x10D00,
+	0x10E60,
+	0x10E7F,
+	0x11000,
+	0x1104E,
+	0x11052,
+	0x11070,
+	0x1107F,
+	0x110C2,
+	0x110D0,
+	0x110E9,
+	0x110F0,
+	0x110FA,
+	0x11100,
+	0x11135,
+	0x11136,
+	0x11144,
+	0x11150,
+	0x11177,
+	0x11180,
+	0x111CE,
+	0x111D0,
+	0x111E0,
+	0x111E1,
+	0x111F5,
+	0x11200,
+	0x11212,
+	0x11213,
+	0x1123F,
+	0x11280,
+	0x11287,
+	0x11288,
+	0x11289,
+	0x1128A,
+	0x1128E,
+	0x1128F,
+	0x1129E,
+	0x1129F,
+	0x112AA,
+	0x112B0,
+	0x112EB,
+	0x112F0,
+	0x112FA,
+	0x11300,
+	0x11304,
+	0x11305,
+	0x1130D,
+	0x1130F,
+	0x11311,
+	0x11313,
+	0x11329,
+	0x1132A,
+	0x11331,
+	0x11332,
+	0x11334,
+	0x11335,
+	0x1133A,
+	0x1133C,
+	0x11345,
+	0x11347,
+	0x11349,
+	0x1134B,
+	0x1134E,
+	0x11350,
+	0x11351,
+	0x11357,
+	0x11358,
+	0x1135D,
+	0x11364,
+	0x11366,
+	0x1136D,
+	0x11370,
+	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
+	0x11480,
+	0x114C8,
+	0x114D0,
+	0x114DA,
+	0x11580,
+	0x115B6,
+	0x115B8,
+	0x115DE,
+	0x11600,
+	0x11645,
+	0x11650,
+	0x1165A,
+	0x11660,
+	0x1166D,
+	0x11680,
+	0x116B8,
+	0x116C0,
+	0x116CA,
+	0x11700,
+	0x1171A,
+	0x1171D,
+	0x1172C,
+	0x11730,
+	0x11740,
+	0x118A0,
+	0x118F3,
+	0x118FF,
+	0x11900,
+	0x11AC0,
+	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
+	0x12000,
+	0x1239A,
+	0x12400,
+	0x1246F,
+	0x12470,
+	0x12475,
+	0x12480,
+	0x12544,
+	0x13000,
+	0x1342F,
+	0x14400,
+	0x14647,
+	0x16800,
+	0x16A39,
+	0x16A40,
+	0x16A5F,
+	0x16A60,
+	0x16A6A,
+	0x16A6E,
+	0x16A70,
+	0x16AD0,
+	0x16AEE,
+	0x16AF0,
+	0x16AF6,
+	0x16B00,
+	0x16B46,
+	0x16B50,
+	0x16B5A,
+	0x16B5B,
+	0x16B62,
+	0x16B63,
+	0x16B78,
+	0x16B7D,
+	0x16B90,
+	0x16F00,
+	0x16F45,
+	0x16F50,
+	0x16F7F,
+	0x16F8F,
+	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
+	0x1B000,
+	0x1B002,
+	0x1BC00,
+	0x1BC6B,
+	0x1BC70,
+	0x1BC7D,
+	0x1BC80,
+	0x1BC89,
+	0x1BC90,
+	0x1BC9A,
+	0x1BC9C,
+	0x1BCA4,
+	0x1D000,
+	0x1D0F6,
+	0x1D100,
+	0x1D127,
+	0x1D129,
+	0x1D1E9,
+	0x1D200,
+	0x1D246,
+	0x1D300,
+	0x1D357,
+	0x1D360,
+	0x1D372,
+	0x1D400,
+	0x1D455,
+	0x1D456,
+	0x1D49D,
+	0x1D49E,
+	0x1D4A0,
+	0x1D4A2,
+	0x1D4A3,
+	0x1D4A5,
+	0x1D4A7,
+	0x1D4A9,
+	0x1D4AD,
+	0x1D4AE,
+	0x1D4BA,
+	0x1D4BB,
+	0x1D4BC,
+	0x1D4BD,
+	0x1D4C4,
+	0x1D4C5,
+	0x1D506,
+	0x1D507,
+	0x1D50B,
+	0x1D50D,
+	0x1D515,
+	0x1D516,
+	0x1D51D,
+	0x1D51E,
+	0x1D53A,
+	0x1D53B,
+	0x1D53F,
+	0x1D540,
+	0x1D545,
+	0x1D546,
+	0x1D547,
+	0x1D54A,
+	0x1D551,
+	0x1D552,
+	0x1D6A6,
+	0x1D6A8,
+	0x1D7CC,
+	0x1D7CE,
+	0x1DA8C,
+	0x1DA9B,
+	0x1DAA0,
+	0x1DAA1,
+	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
+	0x1E800,
+	0x1E8C5,
+	0x1E8C7,
+	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
+	0x1EE00,
+	0x1EE04,
+	0x1EE05,
+	0x1EE20,
+	0x1EE21,
+	0x1EE23,
+	0x1EE24,
+	0x1EE25,
+	0x1EE27,
+	0x1EE28,
+	0x1EE29,
+	0x1EE33,
+	0x1EE34,
+	0x1EE38,
+	0x1EE39,
+	0x1EE3A,
+	0x1EE3B,
+	0x1EE3C,
+	0x1EE42,
+	0x1EE43,
+	0x1EE47,
+	0x1EE48,
+	0x1EE49,
+	0x1EE4A,
+	0x1EE4B,
+	0x1EE4C,
+	0x1EE4D,
+	0x1EE50,
+	0x1EE51,
+	0x1EE53,
+	0x1EE54,
+	0x1EE55,
+	0x1EE57,
+	0x1EE58,
+	0x1EE59,
+	0x1EE5A,
+	0x1EE5B,
+	0x1EE5C,
+	0x1EE5D,
+	0x1EE5E,
+	0x1EE5F,
+	0x1EE60,
+	0x1EE61,
+	0x1EE63,
+	0x1EE64,
+	0x1EE65,
+	0x1EE67,
+	0x1EE6B,
+	0x1EE6C,
+	0x1EE73,
+	0x1EE74,
+	0x1EE78,
+	0x1EE79,
+	0x1EE7D,
+	0x1EE7E,
+	0x1EE7F,
+	0x1EE80,
+	0x1EE8A,
+	0x1EE8B,
+	0x1EE9C,
+	0x1EEA1,
+	0x1EEA4,
+	0x1EEA5,
+	0x1EEAA,
+	0x1EEAB,
+	0x1EEBC,
+	0x1EEF0,
+	0x1EEF2,
+	0x1F000,
+	0x1F02C,
+	0x1F030,
+	0x1F094,
+	0x1F0A0,
+	0x1F0AF,
+	0x1F0B1,
+	0x1F0C0,
+	0x1F0C1,
+	0x1F0D0,
+	0x1F0D1,
+	0x1F0F6,
+	0x1F100,
+	0x1F10D,
+	0x1F110,
+	0x1F12F,
+	0x1F130,
+	0x1F16C,
+	0x1F170,
+	0x1F1AD,
+	0x1F1E6,
+	0x1F203,
+	0x1F210,
+	0x1F23C,
+	0x1F240,
+	0x1F249,
+	0x1F250,
+	0x1F252,
+	0x1F300,
+	0x1F6D3,
+	0x1F6E0,
+	0x1F6ED,
+	0x1F6F0,
+	0x1F6F7,
+	0x1F700,
+	0x1F774,
+	0x1F780,
+	0x1F7D5,
+	0x1F800,
+	0x1F80C,
+	0x1F810,
+	0x1F848,
+	0x1F850,
+	0x1F85A,
+	0x1F860,
+	0x1F888,
+	0x1F890,
+	0x1F8AE,
+	0x1F910,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
+	0x1F980,
+	0x1F992,
+	0x1F9C0,
+	0x1F9C1,
+	0x20000,
+	0x2A6D7,
+	0x2A700,
+	0x2B735,
+	0x2B740,
+	0x2B81E,
+	0x2B820,
+	0x2CEA2,
+	0x2F800,
+	0x2FA1E,
+	0xE0001,
+	0xE0002,
+	0xE0020,
+	0xE0080,
+	0xE0100,
+	0xE01F0,
+	0xF0000,
+	0xFFFFE,
+	0x100000,
+	0x10FFFE
+};
+
 static const UV Cased_invlist[] = { /* for ASCII/Latin1 */
-	263,	/* Number of elements */
+	271,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -112,6 +1395,8 @@
 	0x13F6,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D00,
 	0x1DC0,
 	0x1E00,
@@ -217,7 +1502,7 @@
 	0xA78B,
 	0xA78F,
 	0xA790,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F8,
@@ -238,6 +1523,10 @@
 	0xFF5B,
 	0x10400,
 	0x10450,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10C80,
 	0x10CB3,
 	0x10CC0,
@@ -304,6 +1593,8 @@
 	0x1D7C3,
 	0x1D7C4,
 	0x1D7CC,
+	0x1E900,
+	0x1E944,
 	0x1F130,
 	0x1F14A,
 	0x1F150,
@@ -369,7 +1660,7 @@
 };
 
 static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */
-	247,	/* Number of elements */
+	253,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -419,8 +1710,6 @@
 	0x265,
 	0x267,
 	0x268,
-	0x26A,
-	0x26B,
 	0x26D,
 	0x26F,
 	0x270,
@@ -500,6 +1789,8 @@
 	0x13F6,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D79,
 	0x1D7A,
 	0x1D7D,
@@ -597,7 +1888,7 @@
 	0xA790,
 	0xA794,
 	0xA796,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xAB53,
@@ -614,12 +1905,18 @@
 	0xFF5B,
 	0x10400,
 	0x10450,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10C80,
 	0x10CB3,
 	0x10CC0,
 	0x10CF3,
 	0x118A0,
-	0x118E0
+	0x118E0,
+	0x1E900,
+	0x1E944
 };
 
 static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for ASCII/Latin1 */
@@ -693,7 +1990,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
-	1502,	/* Number of elements */
+	1615,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -760,6 +2057,8 @@
 	0x82E,
 	0x859,
 	0x85C,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x903,
 	0x904,
@@ -908,6 +2207,7 @@
 	0xD4A,
 	0xD4D,
 	0xD4E,
+	0xD4F,
 	0xD57,
 	0xD58,
 	0xD62,
@@ -1016,6 +2316,8 @@
 	0x180B,
 	0x180E,
 	0x180F,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x1920,
@@ -1102,10 +2404,11 @@
 	0x1CFA,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x200B,
 	0x200C,
+	0x200D,
 	0x200E,
 	0x2010,
 	0x2028,
@@ -1114,6 +2417,14 @@
 	0x2070,
 	0x20D0,
 	0x20F1,
+	0x261D,
+	0x261E,
+	0x26F9,
+	0x26FA,
+	0x270A,
+	0x270E,
+	0x2764,
+	0x2765,
 	0x2CEF,
 	0x2CF2,
 	0x2D7F,
@@ -1146,7 +2457,7 @@
 	0xA882,
 	0xA8B4,
 	0xA8C4,
-	0xA8C5,
+	0xA8C6,
 	0xA8E0,
 	0xA8F2,
 	0xA926,
@@ -2073,6 +3384,8 @@
 	0x111B6,
 	0x111BF,
 	0x111C1,
+	0x111C2,
+	0x111C4,
 	0x111CA,
 	0x111CD,
 	0x1122C,
@@ -2082,6 +3395,8 @@
 	0x11235,
 	0x11236,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x112DF,
 	0x112E0,
 	0x112E3,
@@ -2108,6 +3423,13 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11435,
+	0x11438,
+	0x11440,
+	0x11442,
+	0x11445,
+	0x11446,
+	0x11447,
 	0x114B0,
 	0x114B1,
 	0x114B3,
@@ -2152,6 +3474,22 @@
 	0x11726,
 	0x11727,
 	0x1172C,
+	0x11C2F,
+	0x11C30,
+	0x11C37,
+	0x11C38,
+	0x11C3E,
+	0x11C3F,
+	0x11C40,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CAA,
+	0x11CB1,
+	0x11CB2,
+	0x11CB4,
+	0x11CB5,
+	0x11CB7,
 	0x16AF0,
 	0x16AF5,
 	0x16B30,
@@ -2191,11 +3529,83 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E944,
+	0x1E94B,
 	0x1F1E6,
 	0x1F200,
+	0x1F385,
+	0x1F386,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
+	0x1F3FB,
+	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
+	0x1F48B,
+	0x1F48C,
+	0x1F4AA,
+	0x1F4AB,
+	0x1F575,
+	0x1F576,
+	0x1F57A,
+	0x1F57B,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
+	0x1F5E8,
+	0x1F5E9,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
+	0x1F650,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
 	0xE0000,
+	0xE0020,
+	0xE0080,
 	0xE0100,
 	0xE01F0,
 	0xE1000
@@ -2205,23 +3615,28 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define GCB_ENUM_COUNT 14
+#define GCB_ENUM_COUNT 19
 
 typedef enum {
 	GCB_Other = 0,
 	GCB_CR = 1,
 	GCB_Control = 2,
-	GCB_Extend = 3,
-	GCB_L = 4,
-	GCB_LF = 5,
-	GCB_LV = 6,
-	GCB_LVT = 7,
-	GCB_Prepend = 8,
-	GCB_Regional_Indicator = 9,
-	GCB_SpacingMark = 10,
-	GCB_T = 11,
-	GCB_V = 12,
-	GCB_EDGE = 13
+	GCB_E_Base = 3,
+	GCB_E_Base_GAZ = 4,
+	GCB_E_Modifier = 5,
+	GCB_Extend = 6,
+	GCB_Glue_After_Zwj = 7,
+	GCB_L = 8,
+	GCB_LF = 9,
+	GCB_LV = 10,
+	GCB_LVT = 11,
+	GCB_Prepend = 12,
+	GCB_Regional_Indicator = 13,
+	GCB_SpacingMark = 14,
+	GCB_T = 15,
+	GCB_V = 16,
+	GCB_ZWJ = 17,
+	GCB_EDGE = 18
 } GCB_enum;
 
 static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
@@ -2249,7 +3664,7 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -2260,7 +3675,7 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -2268,7 +3683,7 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -2289,6 +3704,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Prepend,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Other,
 	GCB_Extend,
@@ -2435,6 +3852,7 @@
 	GCB_Other,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -2547,6 +3965,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -2634,6 +4054,7 @@
 	GCB_Other,
 	GCB_Control,
 	GCB_Extend,
+	GCB_ZWJ,
 	GCB_Control,
 	GCB_Other,
 	GCB_Control,
@@ -2642,6 +4063,14 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
@@ -3584,7 +5013,7 @@
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -3601,6 +5030,8 @@
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Other,
+	GCB_Prepend,
+	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_SpacingMark,
@@ -3611,6 +5042,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
@@ -3636,11 +5069,14 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -3647,6 +5083,10 @@
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -3680,16 +5120,32 @@
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_Control,
 	GCB_Other,
 	GCB_Extend,
@@ -3721,11 +5177,83 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_Regional_Indicator,
 	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Modifier,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base_GAZ,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
 	GCB_Control,
 	GCB_Extend,
 	GCB_Control,
+	GCB_Extend,
+	GCB_Control,
 	GCB_Other
 };
 
@@ -3734,7 +5262,7 @@
 #if defined(PERL_IN_UTF8_C)
 
 static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
-	1317,	/* Number of elements */
+	1367,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -3839,6 +5367,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x964,
 	0x966,
@@ -4017,7 +5549,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -4059,7 +5591,7 @@
 	0xD49,
 	0xD4A,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -4295,6 +5827,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -4303,7 +5837,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -4472,7 +6006,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -4480,7 +6014,7 @@
 	0xA840,
 	0xA874,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -4657,6 +6191,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -4761,6 +6299,8 @@
 	0x11212,
 	0x11213,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -4805,6 +6345,10 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C6,
 	0x114C7,
@@ -4839,6 +6383,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -4875,6 +6433,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -4973,10 +6537,24 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -5058,7 +6636,7 @@
 };
 
 static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
-	1129,	/* Number of elements */
+	1161,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -5163,6 +6741,8 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
 	0x904,
 	0x93A,
 	0x93D,
@@ -5291,6 +6871,8 @@
 	0xC5B,
 	0xC60,
 	0xC62,
+	0xC80,
+	0xC81,
 	0xC85,
 	0xC8D,
 	0xC8E,
@@ -5319,6 +6901,8 @@
 	0xD3E,
 	0xD4E,
 	0xD4F,
+	0xD54,
+	0xD57,
 	0xD5F,
 	0xD62,
 	0xD7A,
@@ -5513,6 +7097,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -5680,7 +7266,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -5867,6 +7453,10 @@
 	0x103D6,
 	0x10400,
 	0x1049E,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -5989,6 +7579,10 @@
 	0x11351,
 	0x1135D,
 	0x11362,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -6013,6 +7607,14 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C40,
+	0x11C41,
+	0x11C72,
+	0x11C90,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -6043,6 +7645,12 @@
 	0x16F51,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -6115,6 +7723,8 @@
 	0x1D7CC,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -6198,7 +7808,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
-	2156,	/* Number of elements */
+	2267,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -6344,6 +7954,8 @@
 	0x82E,
 	0x859,
 	0x85C,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -6641,6 +8253,8 @@
 	0x180F,
 	0x1810,
 	0x181A,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x1920,
@@ -6705,7 +8319,7 @@
 	0x1CFA,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1FFD,
 	0x1FFE,
@@ -6714,6 +8328,8 @@
 	0x2008,
 	0x200B,
 	0x200C,
+	0x200D,
+	0x200E,
 	0x2010,
 	0x2011,
 	0x2012,
@@ -6796,6 +8412,8 @@
 	0x2618,
 	0x2619,
 	0x261A,
+	0x261D,
+	0x261E,
 	0x2620,
 	0x2639,
 	0x263C,
@@ -6822,15 +8440,19 @@
 	0x26F1,
 	0x26F6,
 	0x26F7,
+	0x26F9,
+	0x26FA,
 	0x26FB,
 	0x26FD,
 	0x2705,
 	0x2708,
+	0x270A,
 	0x270E,
 	0x275B,
 	0x2761,
 	0x2762,
 	0x2764,
+	0x2765,
 	0x2768,
 	0x2769,
 	0x276A,
@@ -6935,6 +8557,7 @@
 	0x2E40,
 	0x2E42,
 	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -7085,7 +8708,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8D0,
 	0xA8DA,
@@ -8060,6 +9683,15 @@
 	0xFF71,
 	0xFF9E,
 	0xFFA0,
+	0xFFBF,
+	0xFFC2,
+	0xFFC8,
+	0xFFCA,
+	0xFFD0,
+	0xFFD2,
+	0xFFD8,
+	0xFFDA,
+	0xFFDD,
 	0xFFE0,
 	0xFFE1,
 	0xFFE2,
@@ -8152,6 +9784,8 @@
 	0x1123A,
 	0x1123B,
 	0x1123D,
+	0x1123E,
+	0x1123F,
 	0x112A9,
 	0x112AA,
 	0x112DF,
@@ -8176,6 +9810,14 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x1144F,
+	0x11450,
+	0x1145A,
+	0x1145B,
+	0x1145C,
 	0x114B0,
 	0x114C4,
 	0x114D0,
@@ -8196,6 +9838,8 @@
 	0x11643,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x116AB,
 	0x116B8,
 	0x116C0,
@@ -8208,6 +9852,21 @@
 	0x1173F,
 	0x118E0,
 	0x118EA,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C46,
+	0x11C50,
+	0x11C5A,
+	0x11C70,
+	0x11C71,
+	0x11C72,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12470,
 	0x12475,
 	0x13258,
@@ -8244,6 +9903,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16F93,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC9D,
@@ -8276,30 +9941,37 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1F000,
-	0x1F02C,
-	0x1F030,
-	0x1F094,
-	0x1F0A0,
-	0x1F0AF,
-	0x1F0B1,
-	0x1F0C0,
-	0x1F0C1,
-	0x1F0D0,
-	0x1F0D1,
-	0x1F0F6,
+	0x1F100,
+	0x1F10D,
+	0x1F110,
+	0x1F12F,
+	0x1F130,
+	0x1F16C,
+	0x1F170,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F200,
-	0x1F203,
-	0x1F210,
-	0x1F23B,
-	0x1F240,
-	0x1F249,
-	0x1F250,
-	0x1F252,
-	0x1F300,
+	0x1F385,
+	0x1F386,
 	0x1F39C,
 	0x1F39E,
 	0x1F3B5,
@@ -8306,8 +9978,28 @@
 	0x1F3B7,
 	0x1F3BC,
 	0x1F3BD,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
 	0x1F3FB,
 	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
 	0x1F4A0,
 	0x1F4A1,
 	0x1F4A2,
@@ -8314,6 +10006,8 @@
 	0x1F4A3,
 	0x1F4A4,
 	0x1F4A5,
+	0x1F4AA,
+	0x1F4AB,
 	0x1F4AF,
 	0x1F4B0,
 	0x1F4B1,
@@ -8324,30 +10018,57 @@
 	0x1F525,
 	0x1F532,
 	0x1F54A,
+	0x1F575,
+	0x1F576,
 	0x1F57A,
 	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
 	0x1F5D4,
 	0x1F5DC,
 	0x1F5F4,
 	0x1F5FA,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
 	0x1F650,
 	0x1F676,
 	0x1F679,
 	0x1F67C,
 	0x1F680,
-	0x1F6D1,
-	0x1F6E0,
-	0x1F6ED,
-	0x1F6F0,
-	0x1F6F4,
-	0x1F910,
-	0x1F919,
-	0x1F980,
-	0x1F985,
-	0x1F9C0,
-	0x1F9C1,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F700,
+	0x1F774,
+	0x1F780,
+	0x1F7D5,
+	0x1F800,
+	0x1F80C,
+	0x1F810,
+	0x1F848,
+	0x1F850,
+	0x1F85A,
+	0x1F860,
+	0x1F888,
+	0x1F890,
+	0x1F8AE,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
+	0x1FFFE,
 	0x20000,
 	0x2FFFE,
 	0x30000,
@@ -8364,7 +10085,7 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define LB_ENUM_COUNT 36
+#define LB_ENUM_COUNT 39
 
 typedef enum {
 	LB_Alphabetic = 0,
@@ -8377,32 +10098,35 @@
 	LB_Close_Punctuation = 7,
 	LB_Combining_Mark = 8,
 	LB_Contingent_Break = 9,
-	LB_Exclamation = 10,
-	LB_Glue = 11,
-	LB_H2 = 12,
-	LB_H3 = 13,
-	LB_Hebrew_Letter = 14,
-	LB_Hyphen = 15,
-	LB_Ideographic = 16,
-	LB_Infix_Numeric = 17,
-	LB_Inseparable = 18,
-	LB_JL = 19,
-	LB_JT = 20,
-	LB_JV = 21,
-	LB_Line_Feed = 22,
-	LB_Mandatory_Break = 23,
-	LB_Next_Line = 24,
-	LB_Nonstarter = 25,
-	LB_Numeric = 26,
-	LB_Open_Punctuation = 27,
-	LB_Postfix_Numeric = 28,
-	LB_Prefix_Numeric = 29,
-	LB_Quotation = 30,
-	LB_Regional_Indicator = 31,
-	LB_Space = 32,
-	LB_Word_Joiner = 33,
-	LB_ZWSpace = 34,
-	LB_EDGE = 35
+	LB_E_Base = 10,
+	LB_E_Modifier = 11,
+	LB_Exclamation = 12,
+	LB_Glue = 13,
+	LB_H2 = 14,
+	LB_H3 = 15,
+	LB_Hebrew_Letter = 16,
+	LB_Hyphen = 17,
+	LB_Ideographic = 18,
+	LB_Infix_Numeric = 19,
+	LB_Inseparable = 20,
+	LB_JL = 21,
+	LB_JT = 22,
+	LB_JV = 23,
+	LB_Line_Feed = 24,
+	LB_Mandatory_Break = 25,
+	LB_Next_Line = 26,
+	LB_Nonstarter = 27,
+	LB_Numeric = 28,
+	LB_Open_Punctuation = 29,
+	LB_Postfix_Numeric = 30,
+	LB_Prefix_Numeric = 31,
+	LB_Quotation = 32,
+	LB_Regional_Indicator = 33,
+	LB_Space = 34,
+	LB_Word_Joiner = 35,
+	LB_ZWJ = 36,
+	LB_ZWSpace = 37,
+	LB_EDGE = 38
 } LB_enum;
 
 static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
@@ -8557,6 +10281,8 @@
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Numeric,
 	LB_Alphabetic,
@@ -8851,6 +10577,8 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Exclamation,
 	LB_Numeric,
 	LB_Alphabetic,
@@ -8918,6 +10646,8 @@
 	LB_Break_After,
 	LB_ZWSpace,
 	LB_Combining_Mark,
+	LB_ZWJ,
+	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Glue,
 	LB_Break_After,
@@ -9000,6 +10730,8 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -9026,14 +10758,18 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
 	LB_Alphabetic,
 	LB_Quotation,
 	LB_Alphabetic,
 	LB_Exclamation,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
@@ -9138,6 +10874,7 @@
 	LB_Alphabetic,
 	LB_Break_After,
 	LB_Open_Punctuation,
+	LB_Break_After,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -10259,11 +11996,20 @@
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
 	LB_Nonstarter,
-	LB_Alphabetic,
+	LB_Ideographic,
 	LB_Nonstarter,
-	LB_Alphabetic,
+	LB_Ideographic,
 	LB_Nonstarter,
+	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Postfix_Numeric,
 	LB_Prefix_Numeric,
 	LB_Ideographic,
@@ -10356,6 +12102,8 @@
 	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
 	LB_Combining_Mark,
@@ -10382,11 +12130,19 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
 	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
 	LB_Break_Before,
 	LB_Break_After,
 	LB_Exclamation,
@@ -10400,6 +12156,8 @@
 	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Break_Before,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Numeric,
@@ -10412,8 +12170,23 @@
 	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
+	LB_Break_Before,
+	LB_Exclamation,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
 	LB_Alphabetic,
@@ -10448,8 +12221,14 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Nonstarter,
+	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Combining_Mark,
@@ -10482,8 +12261,22 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
-	LB_Ideographic,
+	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
+	LB_Open_Punctuation,
+	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
@@ -10493,10 +12286,9 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
-	LB_Alphabetic,
 	LB_Regional_Indicator,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
@@ -10504,18 +12296,28 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Modifier,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -10522,6 +12324,8 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -10532,15 +12336,32 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
 	LB_Alphabetic,
 	LB_Quotation,
 	LB_Nonstarter,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -10555,7 +12376,21 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Combining_Mark,
@@ -10569,7 +12404,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
-	2896,	/* Number of elements */
+	2957,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -11276,6 +13111,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -11480,6 +13319,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
+	0xC80,
 	0xC81,
 	0xC84,
 	0xC85,
@@ -11527,6 +13367,7 @@
 	0xD4A,
 	0xD4E,
 	0xD4F,
+	0xD54,
 	0xD57,
 	0xD58,
 	0xD5F,
@@ -11766,6 +13607,8 @@
 	0x1820,
 	0x1878,
 	0x1880,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x18AB,
@@ -11839,6 +13682,7 @@
 	0x1C5A,
 	0x1C7E,
 	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -11853,7 +13697,7 @@
 	0x1D00,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1E01,
 	0x1E02,
@@ -12697,7 +14541,7 @@
 	0xA7A8,
 	0xA7A9,
 	0xA7AA,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B5,
 	0xA7B6,
@@ -12721,7 +14565,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8D0,
 	0xA8DA,
@@ -12969,6 +14813,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -13103,6 +14951,8 @@
 	0x1123A,
 	0x1123B,
 	0x1123D,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -13152,6 +15002,13 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x1144D,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -13200,6 +15057,23 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C43,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -13244,6 +15118,12 @@
 	0x16F8F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -13375,10 +15255,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E922,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -14200,7 +16096,11 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Extend,
+	SB_Format,
+	SB_Extend,
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
@@ -14404,6 +16304,7 @@
 	SB_Other,
 	SB_Numeric,
 	SB_Other,
+	SB_OLetter,
 	SB_Extend,
 	SB_Other,
 	SB_OLetter,
@@ -14451,6 +16352,7 @@
 	SB_Extend,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
 	SB_Extend,
 	SB_Other,
 	SB_OLetter,
@@ -14692,6 +16594,8 @@
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
+	SB_Extend,
+	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
@@ -14762,6 +16666,7 @@
 	SB_Numeric,
 	SB_OLetter,
 	SB_STerm,
+	SB_Lower,
 	SB_Other,
 	SB_Extend,
 	SB_Other,
@@ -15893,6 +17798,10 @@
 	SB_Other,
 	SB_Numeric,
 	SB_Other,
+	SB_Upper,
+	SB_Other,
+	SB_Lower,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -16027,6 +17936,8 @@
 	SB_Other,
 	SB_STerm,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -16079,9 +17990,16 @@
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
+	SB_STerm,
 	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
+	SB_Extend,
+	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Numeric,
 	SB_Other,
 	SB_OLetter,
@@ -16127,11 +18045,20 @@
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
+	SB_Extend,
 	SB_Other,
+	SB_Extend,
 	SB_OLetter,
+	SB_STerm,
 	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -16138,6 +18065,14 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Numeric,
 	SB_Other,
 	SB_STerm,
@@ -16178,6 +18113,12 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Extend,
 	SB_STerm,
 	SB_Format,
@@ -16299,10 +18240,26 @@
 	SB_Other,
 	SB_Extend,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_Extend,
 	SB_Other,
+	SB_Upper,
+	SB_Lower,
+	SB_Extend,
+	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -16389,7 +18346,7 @@
 	SB_Other,
 	SB_Format,
 	SB_Other,
-	SB_Format,
+	SB_Extend,
 	SB_Other,
 	SB_Extend,
 	SB_Other
@@ -16400,7 +18357,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
-	1535,	/* Number of elements */
+	1657,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -16575,6 +18532,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -16779,6 +18740,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
+	0xC80,
 	0xC81,
 	0xC84,
 	0xC85,
@@ -16826,6 +18788,7 @@
 	0xD4A,
 	0xD4E,
 	0xD4F,
+	0xD54,
 	0xD57,
 	0xD58,
 	0xD5F,
@@ -17013,6 +18976,8 @@
 	0x1820,
 	0x1878,
 	0x1880,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x18AB,
@@ -17068,6 +19033,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -17082,7 +19049,7 @@
 	0x1D00,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1F16,
 	0x1F18,
@@ -17124,6 +19091,7 @@
 	0x2000,
 	0x200B,
 	0x200C,
+	0x200D,
 	0x200E,
 	0x2010,
 	0x2018,
@@ -17184,6 +19152,14 @@
 	0x2189,
 	0x24B6,
 	0x24EA,
+	0x261D,
+	0x261E,
+	0x26F9,
+	0x26FA,
+	0x270A,
+	0x270E,
+	0x2764,
+	0x2765,
 	0x2C00,
 	0x2C2F,
 	0x2C30,
@@ -17281,7 +19257,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -17298,7 +19274,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -17508,6 +19484,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -17629,6 +19609,8 @@
 	0x11213,
 	0x1122C,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -17677,6 +19659,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -17716,6 +19704,22 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -17755,6 +19759,8 @@
 	0x16F8F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
 	0x1B000,
 	0x1B001,
 	0x1BC00,
@@ -17855,10 +19861,25 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -17933,6 +19954,64 @@
 	0x1F18A,
 	0x1F1E6,
 	0x1F200,
+	0x1F385,
+	0x1F386,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
+	0x1F3FB,
+	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
+	0x1F48B,
+	0x1F48C,
+	0x1F4AA,
+	0x1F4AB,
+	0x1F575,
+	0x1F576,
+	0x1F57A,
+	0x1F57B,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
+	0x1F5E8,
+	0x1F5E9,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
+	0x1F650,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
 	0xE0001,
 	0xE0002,
 	0xE0020,
@@ -17945,7 +20024,7 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define WB_ENUM_COUNT 20
+#define WB_ENUM_COUNT 25
 
 typedef enum {
 	WB_Other = 0,
@@ -17952,22 +20031,27 @@
 	WB_ALetter = 1,
 	WB_CR = 2,
 	WB_Double_Quote = 3,
-	WB_Extend = 4,
-	WB_ExtendNumLet = 5,
-	WB_Format = 6,
-	WB_Hebrew_Letter = 7,
-	WB_Katakana = 8,
-	WB_LF = 9,
-	WB_MidLetter = 10,
-	WB_MidNum = 11,
-	WB_MidNumLet = 12,
-	WB_Newline = 13,
-	WB_Numeric = 14,
-	WB_Perl_Tailored_HSpace = 15,
-	WB_Regional_Indicator = 16,
-	WB_Single_Quote = 17,
-	WB_EDGE = 18,
-	WB_UNKNOWN = 19
+	WB_E_Base = 4,
+	WB_E_Base_GAZ = 5,
+	WB_E_Modifier = 6,
+	WB_Extend = 7,
+	WB_ExtendNumLet = 8,
+	WB_Format = 9,
+	WB_Glue_After_Zwj = 10,
+	WB_Hebrew_Letter = 11,
+	WB_Katakana = 12,
+	WB_LF = 13,
+	WB_MidLetter = 14,
+	WB_MidNum = 15,
+	WB_MidNumLet = 16,
+	WB_Newline = 17,
+	WB_Numeric = 18,
+	WB_Perl_Tailored_HSpace = 19,
+	WB_Regional_Indicator = 20,
+	WB_Single_Quote = 21,
+	WB_ZWJ = 22,
+	WB_EDGE = 23,
+	WB_UNKNOWN = 24
 } WB_enum;
 
 static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
@@ -18142,7 +20226,11 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Extend,
+	WB_Format,
+	WB_Extend,
 	WB_ALetter,
 	WB_Extend,
 	WB_ALetter,
@@ -18346,6 +20434,7 @@
 	WB_Other,
 	WB_Numeric,
 	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
@@ -18393,6 +20482,7 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
@@ -18582,6 +20672,8 @@
 	WB_ALetter,
 	WB_Extend,
 	WB_ALetter,
+	WB_Extend,
+	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
@@ -18635,6 +20727,8 @@
 	WB_Numeric,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Extend,
 	WB_Other,
 	WB_Extend,
@@ -18691,6 +20785,7 @@
 	WB_Perl_Tailored_HSpace,
 	WB_Other,
 	WB_Extend,
+	WB_ZWJ,
 	WB_Format,
 	WB_Other,
 	WB_MidNumLet,
@@ -18700,7 +20795,7 @@
 	WB_MidLetter,
 	WB_Newline,
 	WB_Format,
-	WB_Perl_Tailored_HSpace,
+	WB_ExtendNumLet,
 	WB_Other,
 	WB_ExtendNumLet,
 	WB_Other,
@@ -18751,6 +20846,14 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -19114,6 +21217,10 @@
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_Extend,
@@ -19196,6 +21303,8 @@
 	WB_ALetter,
 	WB_Extend,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -19248,8 +21357,14 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
+	WB_Extend,
+	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Numeric,
 	WB_Other,
 	WB_ALetter,
@@ -19286,11 +21401,19 @@
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
+	WB_Extend,
 	WB_Other,
+	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -19297,6 +21420,14 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Numeric,
 	WB_Other,
 	WB_ALetter,
@@ -19322,6 +21453,8 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Katakana,
 	WB_Other,
 	WB_ALetter,
@@ -19422,12 +21555,25 @@
 	WB_Other,
 	WB_Extend,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
+	WB_Extend,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -19498,13 +21644,73 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Regional_Indicator,
 	WB_Other,
-	WB_Format,
+	WB_E_Base,
 	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Modifier,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base_GAZ,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
 	WB_Format,
 	WB_Other,
 	WB_Extend,
+	WB_Other,
+	WB_Extend,
 	WB_Other
 };
 
@@ -19569,7 +21775,7 @@
 };
 
 static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
-	1297,	/* Number of elements */
+	1357,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -19678,6 +21884,10 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E0,
 	0x8E3,
 	0x8EA,
 	0x8F0,
@@ -19864,7 +22074,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -19908,7 +22118,7 @@
 	0xD4D,
 	0xD4E,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -20152,6 +22362,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -20325,7 +22537,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -20340,6 +22552,8 @@
 	0xA874,
 	0xA880,
 	0xA8C4,
+	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8F2,
@@ -20498,6 +22712,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -20600,6 +22818,8 @@
 	0x11235,
 	0x11237,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -20640,6 +22860,14 @@
 	0x11358,
 	0x1135D,
 	0x11364,
+	0x11400,
+	0x11442,
+	0x11443,
+	0x11446,
+	0x11447,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C2,
 	0x114C4,
@@ -20678,6 +22906,22 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C3F,
+	0x11C40,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -20712,6 +22956,12 @@
 	0x16F7F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -20786,8 +23036,24 @@
 	0x1D7CC,
 	0x1D7CE,
 	0x1D800,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
+	0x1E947,
+	0x1E948,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -20873,7 +23139,7 @@
 };
 
 static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
-	1235,	/* Number of elements */
+	1289,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -20982,6 +23248,10 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E0,
 	0x8E3,
 	0x8EA,
 	0x8F0,
@@ -21158,7 +23428,7 @@
 	0xC5B,
 	0xC60,
 	0xC64,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -21200,7 +23470,7 @@
 	0xD4D,
 	0xD4E,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -21422,6 +23692,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -21597,7 +23869,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -21612,6 +23884,8 @@
 	0xA874,
 	0xA880,
 	0xA8C4,
+	0xA8C5,
+	0xA8C6,
 	0xA8F2,
 	0xA8F8,
 	0xA8FB,
@@ -21762,6 +24036,10 @@
 	0x103D6,
 	0x10400,
 	0x1049E,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -21858,6 +24136,8 @@
 	0x11235,
 	0x11237,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -21896,6 +24176,12 @@
 	0x11358,
 	0x1135D,
 	0x11364,
+	0x11400,
+	0x11442,
+	0x11443,
+	0x11446,
+	0x11447,
+	0x1144B,
 	0x11480,
 	0x114C2,
 	0x114C4,
@@ -21926,6 +24212,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C3F,
+	0x11C40,
+	0x11C41,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -21956,6 +24256,12 @@
 	0x16F7F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -22028,8 +24334,22 @@
 	0x1D7C3,
 	0x1D7C4,
 	0x1D7CC,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
+	0x1E947,
+	0x1E948,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -22150,7 +24470,7 @@
 };
 
 static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */
-	103,	/* Number of elements */
+	109,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -22241,6 +24561,8 @@
 	0x111DA,
 	0x112F0,
 	0x112FA,
+	0x11450,
+	0x1145A,
 	0x114D0,
 	0x114DA,
 	0x11650,
@@ -22251,16 +24573,20 @@
 	0x1173A,
 	0x118E0,
 	0x118EA,
+	0x11C50,
+	0x11C5A,
 	0x16A60,
 	0x16A6A,
 	0x16B50,
 	0x16B5A,
 	0x1D7CE,
-	0x1D800
+	0x1D800,
+	0x1E950,
+	0x1E95A
 };
 
 static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
-	1237,	/* Number of elements */
+	1287,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -22315,7 +24641,9 @@
 	0x85F,
 	0x8A0,
 	0x8B5,
-	0x8E3,
+	0x8B6,
+	0x8BE,
+	0x8D4,
 	0x984,
 	0x985,
 	0x98D,
@@ -22488,8 +24816,6 @@
 	0xC66,
 	0xC70,
 	0xC78,
-	0xC80,
-	0xC81,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -22530,14 +24856,10 @@
 	0xD46,
 	0xD49,
 	0xD4A,
-	0xD4F,
-	0xD57,
-	0xD58,
-	0xD5F,
+	0xD50,
+	0xD54,
 	0xD64,
 	0xD66,
-	0xD76,
-	0xD79,
 	0xD80,
 	0xD82,
 	0xD84,
@@ -22740,7 +25062,7 @@
 	0x1C3B,
 	0x1C4A,
 	0x1C4D,
-	0x1C80,
+	0x1C89,
 	0x1CC0,
 	0x1CC8,
 	0x1CD0,
@@ -22749,7 +25071,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -22802,7 +25124,7 @@
 	0x2100,
 	0x218C,
 	0x2190,
-	0x23FB,
+	0x23FF,
 	0x2400,
 	0x2427,
 	0x2440,
@@ -22854,7 +25176,7 @@
 	0x2DD8,
 	0x2DDF,
 	0x2DE0,
-	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -22894,7 +25216,7 @@
 	0xA640,
 	0xA6F8,
 	0xA700,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -22904,7 +25226,7 @@
 	0xA840,
 	0xA878,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8DA,
 	0xA8E0,
@@ -23028,7 +25350,7 @@
 	0x10107,
 	0x10134,
 	0x10137,
-	0x1018D,
+	0x1018F,
 	0x10190,
 	0x1019C,
 	0x101A0,
@@ -23057,6 +25379,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -23168,7 +25494,7 @@
 	0x11200,
 	0x11212,
 	0x11213,
-	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -23213,6 +25539,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x11480,
 	0x114C8,
 	0x114D0,
@@ -23225,6 +25557,8 @@
 	0x11645,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x11680,
 	0x116B8,
 	0x116C0,
@@ -23241,6 +25575,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -23281,6 +25629,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -23351,10 +25705,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8C7,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -23442,25 +25812,21 @@
 	0x1F130,
 	0x1F16C,
 	0x1F170,
-	0x1F19B,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F203,
 	0x1F210,
-	0x1F23B,
+	0x1F23C,
 	0x1F240,
 	0x1F249,
 	0x1F250,
 	0x1F252,
 	0x1F300,
-	0x1F57A,
-	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
-	0x1F6D1,
+	0x1F6D3,
 	0x1F6E0,
 	0x1F6ED,
 	0x1F6F0,
-	0x1F6F4,
+	0x1F6F7,
 	0x1F700,
 	0x1F774,
 	0x1F780,
@@ -23476,9 +25842,19 @@
 	0x1F890,
 	0x1F8AE,
 	0x1F910,
-	0x1F919,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
 	0x1F980,
-	0x1F985,
+	0x1F992,
 	0x1F9C0,
 	0x1F9C1,
 	0x20000,
@@ -23504,7 +25880,7 @@
 };
 
 static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */
-	1275,	/* Number of elements */
+	1281,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -24061,6 +26437,8 @@
 	0x588,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D00,
 	0x1DC0,
 	0x1E01,
@@ -24723,6 +27101,8 @@
 	0xFF5B,
 	0x10428,
 	0x10450,
+	0x104D8,
+	0x104FC,
 	0x10CC0,
 	0x10CF3,
 	0x118C0,
@@ -24782,11 +27162,13 @@
 	0x1D7C4,
 	0x1D7CA,
 	0x1D7CB,
-	0x1D7CC
+	0x1D7CC,
+	0x1E922,
+	0x1E944
 };
 
 static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
-	1231,	/* Number of elements */
+	1281,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -24841,7 +27223,9 @@
 	0x85F,
 	0x8A0,
 	0x8B5,
-	0x8E3,
+	0x8B6,
+	0x8BE,
+	0x8D4,
 	0x984,
 	0x985,
 	0x98D,
@@ -25014,8 +27398,6 @@
 	0xC66,
 	0xC70,
 	0xC78,
-	0xC80,
-	0xC81,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -25056,14 +27438,10 @@
 	0xD46,
 	0xD49,
 	0xD4A,
-	0xD4F,
-	0xD57,
-	0xD58,
-	0xD5F,
+	0xD50,
+	0xD54,
 	0xD64,
 	0xD66,
-	0xD76,
-	0xD79,
 	0xD80,
 	0xD82,
 	0xD84,
@@ -25264,7 +27642,7 @@
 	0x1C3B,
 	0x1C4A,
 	0x1C4D,
-	0x1C80,
+	0x1C89,
 	0x1CC0,
 	0x1CC8,
 	0x1CD0,
@@ -25273,7 +27651,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -25322,7 +27700,7 @@
 	0x2100,
 	0x218C,
 	0x2190,
-	0x23FB,
+	0x23FF,
 	0x2400,
 	0x2427,
 	0x2440,
@@ -25374,7 +27752,7 @@
 	0x2DD8,
 	0x2DDF,
 	0x2DE0,
-	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -25414,7 +27792,7 @@
 	0xA640,
 	0xA6F8,
 	0xA700,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -25424,7 +27802,7 @@
 	0xA840,
 	0xA878,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8DA,
 	0xA8E0,
@@ -25548,7 +27926,7 @@
 	0x10107,
 	0x10134,
 	0x10137,
-	0x1018D,
+	0x1018F,
 	0x10190,
 	0x1019C,
 	0x101A0,
@@ -25577,6 +27955,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -25688,7 +28070,7 @@
 	0x11200,
 	0x11212,
 	0x11213,
-	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -25733,6 +28115,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x11480,
 	0x114C8,
 	0x114D0,
@@ -25745,6 +28133,8 @@
 	0x11645,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x11680,
 	0x116B8,
 	0x116C0,
@@ -25761,6 +28151,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -25801,6 +28205,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -25871,10 +28281,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8C7,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -25962,25 +28388,21 @@
 	0x1F130,
 	0x1F16C,
 	0x1F170,
-	0x1F19B,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F203,
 	0x1F210,
-	0x1F23B,
+	0x1F23C,
 	0x1F240,
 	0x1F249,
 	0x1F250,
 	0x1F252,
 	0x1F300,
-	0x1F57A,
-	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
-	0x1F6D1,
+	0x1F6D3,
 	0x1F6E0,
 	0x1F6ED,
 	0x1F6F0,
-	0x1F6F4,
+	0x1F6F7,
 	0x1F700,
 	0x1F774,
 	0x1F780,
@@ -25996,9 +28418,19 @@
 	0x1F890,
 	0x1F8AE,
 	0x1F910,
-	0x1F919,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
 	0x1F980,
-	0x1F985,
+	0x1F992,
 	0x1F9C0,
 	0x1F9C1,
 	0x20000,
@@ -26024,7 +28456,7 @@
 };
 
 static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */
-	313,	/* Number of elements */
+	327,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -26190,7 +28622,7 @@
 	0x2E00,
 	0x2E2F,
 	0x2E30,
-	0x2E43,
+	0x2E45,
 	0x3001,
 	0x3004,
 	0x3008,
@@ -26319,6 +28751,12 @@
 	0x1123E,
 	0x112A9,
 	0x112AA,
+	0x1144B,
+	0x11450,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x114C6,
 	0x114C7,
 	0x115C1,
@@ -26325,8 +28763,14 @@
 	0x115D8,
 	0x11641,
 	0x11644,
+	0x11660,
+	0x1166D,
 	0x1173C,
 	0x1173F,
+	0x11C41,
+	0x11C46,
+	0x11C70,
+	0x11C72,
 	0x12470,
 	0x12475,
 	0x16A6E,
@@ -26340,7 +28784,9 @@
 	0x1BC9F,
 	0x1BCA0,
 	0x1DA87,
-	0x1DA8C
+	0x1DA8C,
+	0x1E95E,
+	0x1E960
 };
 
 static const UV XPosixSpace_invlist[] = { /* for ASCII/Latin1 */
@@ -26372,7 +28818,7 @@
 };
 
 static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */
-	1261,	/* Number of elements */
+	1265,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -27556,7 +30002,7 @@
 	0xA7A8,
 	0xA7A9,
 	0xA7AA,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B5,
 	0xA7B6,
@@ -27565,6 +30011,8 @@
 	0xFF3B,
 	0x10400,
 	0x10428,
+	0x104B0,
+	0x104D4,
 	0x10C80,
 	0x10CB3,
 	0x118A0,
@@ -27631,6 +30079,8 @@
 	0x1D7A9,
 	0x1D7CA,
 	0x1D7CB,
+	0x1E900,
+	0x1E922,
 	0x1F130,
 	0x1F14A,
 	0x1F150,
@@ -27640,7 +30090,7 @@
 };
 
 static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
-	1311,	/* Number of elements */
+	1361,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -27743,6 +30193,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x964,
 	0x966,
@@ -27921,7 +30375,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -27963,7 +30417,7 @@
 	0xD49,
 	0xD4A,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -28199,6 +30653,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -28207,7 +30663,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -28378,7 +30834,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -28386,7 +30842,7 @@
 	0xA840,
 	0xA874,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -28551,6 +31007,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -28655,6 +31115,8 @@
 	0x11212,
 	0x11213,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -28699,6 +31161,10 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C6,
 	0x114C7,
@@ -28733,6 +31199,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -28769,6 +31249,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -28867,10 +31353,24 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -29049,8 +31549,1291 @@
 	0xFA
 };
 
+static const UV Assigned_invlist[] = { /* for EBCDIC 1047 */
+	1276,	/* Number of elements */
+	148565664, /* Version and data structure type */
+	0,	/* 0 if the list starts at 0;
+		   1 if it starts at the element beyond 0 */
+	0x0,
+	0x378,
+	0x37A,
+	0x380,
+	0x384,
+	0x38B,
+	0x38C,
+	0x38D,
+	0x38E,
+	0x3A2,
+	0x3A3,
+	0x530,
+	0x531,
+	0x557,
+	0x559,
+	0x560,
+	0x561,
+	0x588,
+	0x589,
+	0x58B,
+	0x58D,
+	0x590,
+	0x591,
+	0x5C8,
+	0x5D0,
+	0x5EB,
+	0x5F0,
+	0x5F5,
+	0x600,
+	0x61D,
+	0x61E,
+	0x70E,
+	0x70F,
+	0x74B,
+	0x74D,
+	0x7B2,
+	0x7C0,
+	0x7FB,
+	0x800,
+	0x82E,
+	0x830,
+	0x83F,
+	0x840,
+	0x85C,
+	0x85E,
+	0x85F,
+	0x8A0,
+	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x984,
+	0x985,
+	0x98D,
+	0x98F,
+	0x991,
+	0x993,
+	0x9A9,
+	0x9AA,
+	0x9B1,
+	0x9B2,
+	0x9B3,
+	0x9B6,
+	0x9BA,
+	0x9BC,
+	0x9C5,
+	0x9C7,
+	0x9C9,
+	0x9CB,
+	0x9CF,
+	0x9D7,
+	0x9D8,
+	0x9DC,
+	0x9DE,
+	0x9DF,
+	0x9E4,
+	0x9E6,
+	0x9FC,
+	0xA01,
+	0xA04,
+	0xA05,
+	0xA0B,
+	0xA0F,
+	0xA11,
+	0xA13,
+	0xA29,
+	0xA2A,
+	0xA31,
+	0xA32,
+	0xA34,
+	0xA35,
+	0xA37,
+	0xA38,
+	0xA3A,
+	0xA3C,
+	0xA3D,
+	0xA3E,
+	0xA43,
+	0xA47,
+	0xA49,
+	0xA4B,
+	0xA4E,
+	0xA51,
+	0xA52,
+	0xA59,
+	0xA5D,
+	0xA5E,
+	0xA5F,
+	0xA66,
+	0xA76,
+	0xA81,
+	0xA84,
+	0xA85,
+	0xA8E,
+	0xA8F,
+	0xA92,
+	0xA93,
+	0xAA9,
+	0xAAA,
+	0xAB1,
+	0xAB2,
+	0xAB4,
+	0xAB5,
+	0xABA,
+	0xABC,
+	0xAC6,
+	0xAC7,
+	0xACA,
+	0xACB,
+	0xACE,
+	0xAD0,
+	0xAD1,
+	0xAE0,
+	0xAE4,
+	0xAE6,
+	0xAF2,
+	0xAF9,
+	0xAFA,
+	0xB01,
+	0xB04,
+	0xB05,
+	0xB0D,
+	0xB0F,
+	0xB11,
+	0xB13,
+	0xB29,
+	0xB2A,
+	0xB31,
+	0xB32,
+	0xB34,
+	0xB35,
+	0xB3A,
+	0xB3C,
+	0xB45,
+	0xB47,
+	0xB49,
+	0xB4B,
+	0xB4E,
+	0xB56,
+	0xB58,
+	0xB5C,
+	0xB5E,
+	0xB5F,
+	0xB64,
+	0xB66,
+	0xB78,
+	0xB82,
+	0xB84,
+	0xB85,
+	0xB8B,
+	0xB8E,
+	0xB91,
+	0xB92,
+	0xB96,
+	0xB99,
+	0xB9B,
+	0xB9C,
+	0xB9D,
+	0xB9E,
+	0xBA0,
+	0xBA3,
+	0xBA5,
+	0xBA8,
+	0xBAB,
+	0xBAE,
+	0xBBA,
+	0xBBE,
+	0xBC3,
+	0xBC6,
+	0xBC9,
+	0xBCA,
+	0xBCE,
+	0xBD0,
+	0xBD1,
+	0xBD7,
+	0xBD8,
+	0xBE6,
+	0xBFB,
+	0xC00,
+	0xC04,
+	0xC05,
+	0xC0D,
+	0xC0E,
+	0xC11,
+	0xC12,
+	0xC29,
+	0xC2A,
+	0xC3A,
+	0xC3D,
+	0xC45,
+	0xC46,
+	0xC49,
+	0xC4A,
+	0xC4E,
+	0xC55,
+	0xC57,
+	0xC58,
+	0xC5B,
+	0xC60,
+	0xC64,
+	0xC66,
+	0xC70,
+	0xC78,
+	0xC84,
+	0xC85,
+	0xC8D,
+	0xC8E,
+	0xC91,
+	0xC92,
+	0xCA9,
+	0xCAA,
+	0xCB4,
+	0xCB5,
+	0xCBA,
+	0xCBC,
+	0xCC5,
+	0xCC6,
+	0xCC9,
+	0xCCA,
+	0xCCE,
+	0xCD5,
+	0xCD7,
+	0xCDE,
+	0xCDF,
+	0xCE0,
+	0xCE4,
+	0xCE6,
+	0xCF0,
+	0xCF1,
+	0xCF3,
+	0xD01,
+	0xD04,
+	0xD05,
+	0xD0D,
+	0xD0E,
+	0xD11,
+	0xD12,
+	0xD3B,
+	0xD3D,
+	0xD45,
+	0xD46,
+	0xD49,
+	0xD4A,
+	0xD50,
+	0xD54,
+	0xD64,
+	0xD66,
+	0xD80,
+	0xD82,
+	0xD84,
+	0xD85,
+	0xD97,
+	0xD9A,
+	0xDB2,
+	0xDB3,
+	0xDBC,
+	0xDBD,
+	0xDBE,
+	0xDC0,
+	0xDC7,
+	0xDCA,
+	0xDCB,
+	0xDCF,
+	0xDD5,
+	0xDD6,
+	0xDD7,
+	0xDD8,
+	0xDE0,
+	0xDE6,
+	0xDF0,
+	0xDF2,
+	0xDF5,
+	0xE01,
+	0xE3B,
+	0xE3F,
+	0xE5C,
+	0xE81,
+	0xE83,
+	0xE84,
+	0xE85,
+	0xE87,
+	0xE89,
+	0xE8A,
+	0xE8B,
+	0xE8D,
+	0xE8E,
+	0xE94,
+	0xE98,
+	0xE99,
+	0xEA0,
+	0xEA1,
+	0xEA4,
+	0xEA5,
+	0xEA6,
+	0xEA7,
+	0xEA8,
+	0xEAA,
+	0xEAC,
+	0xEAD,
+	0xEBA,
+	0xEBB,
+	0xEBE,
+	0xEC0,
+	0xEC5,
+	0xEC6,
+	0xEC7,
+	0xEC8,
+	0xECE,
+	0xED0,
+	0xEDA,
+	0xEDC,
+	0xEE0,
+	0xF00,
+	0xF48,
+	0xF49,
+	0xF6D,
+	0xF71,
+	0xF98,
+	0xF99,
+	0xFBD,
+	0xFBE,
+	0xFCD,
+	0xFCE,
+	0xFDB,
+	0x1000,
+	0x10C6,
+	0x10C7,
+	0x10C8,
+	0x10CD,
+	0x10CE,
+	0x10D0,
+	0x1249,
+	0x124A,
+	0x124E,
+	0x1250,
+	0x1257,
+	0x1258,
+	0x1259,
+	0x125A,
+	0x125E,
+	0x1260,
+	0x1289,
+	0x128A,
+	0x128E,
+	0x1290,
+	0x12B1,
+	0x12B2,
+	0x12B6,
+	0x12B8,
+	0x12BF,
+	0x12C0,
+	0x12C1,
+	0x12C2,
+	0x12C6,
+	0x12C8,
+	0x12D7,
+	0x12D8,
+	0x1311,
+	0x1312,
+	0x1316,
+	0x1318,
+	0x135B,
+	0x135D,
+	0x137D,
+	0x1380,
+	0x139A,
+	0x13A0,
+	0x13F6,
+	0x13F8,
+	0x13FE,
+	0x1400,
+	0x169D,
+	0x16A0,
+	0x16F9,
+	0x1700,
+	0x170D,
+	0x170E,
+	0x1715,
+	0x1720,
+	0x1737,
+	0x1740,
+	0x1754,
+	0x1760,
+	0x176D,
+	0x176E,
+	0x1771,
+	0x1772,
+	0x1774,
+	0x1780,
+	0x17DE,
+	0x17E0,
+	0x17EA,
+	0x17F0,
+	0x17FA,
+	0x1800,
+	0x180F,
+	0x1810,
+	0x181A,
+	0x1820,
+	0x1878,
+	0x1880,
+	0x18AB,
+	0x18B0,
+	0x18F6,
+	0x1900,
+	0x191F,
+	0x1920,
+	0x192C,
+	0x1930,
+	0x193C,
+	0x1940,
+	0x1941,
+	0x1944,
+	0x196E,
+	0x1970,
+	0x1975,
+	0x1980,
+	0x19AC,
+	0x19B0,
+	0x19CA,
+	0x19D0,
+	0x19DB,
+	0x19DE,
+	0x1A1C,
+	0x1A1E,
+	0x1A5F,
+	0x1A60,
+	0x1A7D,
+	0x1A7F,
+	0x1A8A,
+	0x1A90,
+	0x1A9A,
+	0x1AA0,
+	0x1AAE,
+	0x1AB0,
+	0x1ABF,
+	0x1B00,
+	0x1B4C,
+	0x1B50,
+	0x1B7D,
+	0x1B80,
+	0x1BF4,
+	0x1BFC,
+	0x1C38,
+	0x1C3B,
+	0x1C4A,
+	0x1C4D,
+	0x1C89,
+	0x1CC0,
+	0x1CC8,
+	0x1CD0,
+	0x1CF7,
+	0x1CF8,
+	0x1CFA,
+	0x1D00,
+	0x1DF6,
+	0x1DFB,
+	0x1F16,
+	0x1F18,
+	0x1F1E,
+	0x1F20,
+	0x1F46,
+	0x1F48,
+	0x1F4E,
+	0x1F50,
+	0x1F58,
+	0x1F59,
+	0x1F5A,
+	0x1F5B,
+	0x1F5C,
+	0x1F5D,
+	0x1F5E,
+	0x1F5F,
+	0x1F7E,
+	0x1F80,
+	0x1FB5,
+	0x1FB6,
+	0x1FC5,
+	0x1FC6,
+	0x1FD4,
+	0x1FD6,
+	0x1FDC,
+	0x1FDD,
+	0x1FF0,
+	0x1FF2,
+	0x1FF5,
+	0x1FF6,
+	0x1FFF,
+	0x2000,
+	0x2065,
+	0x2066,
+	0x2072,
+	0x2074,
+	0x208F,
+	0x2090,
+	0x209D,
+	0x20A0,
+	0x20BF,
+	0x20D0,
+	0x20F1,
+	0x2100,
+	0x218C,
+	0x2190,
+	0x23FF,
+	0x2400,
+	0x2427,
+	0x2440,
+	0x244B,
+	0x2460,
+	0x2B74,
+	0x2B76,
+	0x2B96,
+	0x2B98,
+	0x2BBA,
+	0x2BBD,
+	0x2BC9,
+	0x2BCA,
+	0x2BD2,
+	0x2BEC,
+	0x2BF0,
+	0x2C00,
+	0x2C2F,
+	0x2C30,
+	0x2C5F,
+	0x2C60,
+	0x2CF4,
+	0x2CF9,
+	0x2D26,
+	0x2D27,
+	0x2D28,
+	0x2D2D,
+	0x2D2E,
+	0x2D30,
+	0x2D68,
+	0x2D6F,
+	0x2D71,
+	0x2D7F,
+	0x2D97,
+	0x2DA0,
+	0x2DA7,
+	0x2DA8,
+	0x2DAF,
+	0x2DB0,
+	0x2DB7,
+	0x2DB8,
+	0x2DBF,
+	0x2DC0,
+	0x2DC7,
+	0x2DC8,
+	0x2DCF,
+	0x2DD0,
+	0x2DD7,
+	0x2DD8,
+	0x2DDF,
+	0x2DE0,
+	0x2E45,
+	0x2E80,
+	0x2E9A,
+	0x2E9B,
+	0x2EF4,
+	0x2F00,
+	0x2FD6,
+	0x2FF0,
+	0x2FFC,
+	0x3000,
+	0x3040,
+	0x3041,
+	0x3097,
+	0x3099,
+	0x3100,
+	0x3105,
+	0x312E,
+	0x3131,
+	0x318F,
+	0x3190,
+	0x31BB,
+	0x31C0,
+	0x31E4,
+	0x31F0,
+	0x321F,
+	0x3220,
+	0x32FF,
+	0x3300,
+	0x4DB6,
+	0x4DC0,
+	0x9FD6,
+	0xA000,
+	0xA48D,
+	0xA490,
+	0xA4C7,
+	0xA4D0,
+	0xA62C,
+	0xA640,
+	0xA6F8,
+	0xA700,
+	0xA7AF,
+	0xA7B0,
+	0xA7B8,
+	0xA7F7,
+	0xA82C,
+	0xA830,
+	0xA83A,
+	0xA840,
+	0xA878,
+	0xA880,
+	0xA8C6,
+	0xA8CE,
+	0xA8DA,
+	0xA8E0,
+	0xA8FE,
+	0xA900,
+	0xA954,
+	0xA95F,
+	0xA97D,
+	0xA980,
+	0xA9CE,
+	0xA9CF,
+	0xA9DA,
+	0xA9DE,
+	0xA9FF,
+	0xAA00,
+	0xAA37,
+	0xAA40,
+	0xAA4E,
+	0xAA50,
+	0xAA5A,
+	0xAA5C,
+	0xAAC3,
+	0xAADB,
+	0xAAF7,
+	0xAB01,
+	0xAB07,
+	0xAB09,
+	0xAB0F,
+	0xAB11,
+	0xAB17,
+	0xAB20,
+	0xAB27,
+	0xAB28,
+	0xAB2F,
+	0xAB30,
+	0xAB66,
+	0xAB70,
+	0xABEE,
+	0xABF0,
+	0xABFA,
+	0xAC00,
+	0xD7A4,
+	0xD7B0,
+	0xD7C7,
+	0xD7CB,
+	0xD7FC,
+	0xD800,
+	0xFA6E,
+	0xFA70,
+	0xFADA,
+	0xFB00,
+	0xFB07,
+	0xFB13,
+	0xFB18,
+	0xFB1D,
+	0xFB37,
+	0xFB38,
+	0xFB3D,
+	0xFB3E,
+	0xFB3F,
+	0xFB40,
+	0xFB42,
+	0xFB43,
+	0xFB45,
+	0xFB46,
+	0xFBC2,
+	0xFBD3,
+	0xFD40,
+	0xFD50,
+	0xFD90,
+	0xFD92,
+	0xFDC8,
+	0xFDF0,
+	0xFDFE,
+	0xFE00,
+	0xFE1A,
+	0xFE20,
+	0xFE53,
+	0xFE54,
+	0xFE67,
+	0xFE68,
+	0xFE6C,
+	0xFE70,
+	0xFE75,
+	0xFE76,
+	0xFEFD,
+	0xFEFF,
+	0xFF00,
+	0xFF01,
+	0xFFBF,
+	0xFFC2,
+	0xFFC8,
+	0xFFCA,
+	0xFFD0,
+	0xFFD2,
+	0xFFD8,
+	0xFFDA,
+	0xFFDD,
+	0xFFE0,
+	0xFFE7,
+	0xFFE8,
+	0xFFEF,
+	0xFFF9,
+	0xFFFE,
+	0x10000,
+	0x1000C,
+	0x1000D,
+	0x10027,
+	0x10028,
+	0x1003B,
+	0x1003C,
+	0x1003E,
+	0x1003F,
+	0x1004E,
+	0x10050,
+	0x1005E,
+	0x10080,
+	0x100FB,
+	0x10100,
+	0x10103,
+	0x10107,
+	0x10134,
+	0x10137,
+	0x1018F,
+	0x10190,
+	0x1019C,
+	0x101A0,
+	0x101A1,
+	0x101D0,
+	0x101FE,
+	0x10280,
+	0x1029D,
+	0x102A0,
+	0x102D1,
+	0x102E0,
+	0x102FC,
+	0x10300,
+	0x10324,
+	0x10330,
+	0x1034B,
+	0x10350,
+	0x1037B,
+	0x10380,
+	0x1039E,
+	0x1039F,
+	0x103C4,
+	0x103C8,
+	0x103D6,
+	0x10400,
+	0x1049E,
+	0x104A0,
+	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
+	0x10500,
+	0x10528,
+	0x10530,
+	0x10564,
+	0x1056F,
+	0x10570,
+	0x10600,
+	0x10737,
+	0x10740,
+	0x10756,
+	0x10760,
+	0x10768,
+	0x10800,
+	0x10806,
+	0x10808,
+	0x10809,
+	0x1080A,
+	0x10836,
+	0x10837,
+	0x10839,
+	0x1083C,
+	0x1083D,
+	0x1083F,
+	0x10856,
+	0x10857,
+	0x1089F,
+	0x108A7,
+	0x108B0,
+	0x108E0,
+	0x108F3,
+	0x108F4,
+	0x108F6,
+	0x108FB,
+	0x1091C,
+	0x1091F,
+	0x1093A,
+	0x1093F,
+	0x10940,
+	0x10980,
+	0x109B8,
+	0x109BC,
+	0x109D0,
+	0x109D2,
+	0x10A04,
+	0x10A05,
+	0x10A07,
+	0x10A0C,
+	0x10A14,
+	0x10A15,
+	0x10A18,
+	0x10A19,
+	0x10A34,
+	0x10A38,
+	0x10A3B,
+	0x10A3F,
+	0x10A48,
+	0x10A50,
+	0x10A59,
+	0x10A60,
+	0x10AA0,
+	0x10AC0,
+	0x10AE7,
+	0x10AEB,
+	0x10AF7,
+	0x10B00,
+	0x10B36,
+	0x10B39,
+	0x10B56,
+	0x10B58,
+	0x10B73,
+	0x10B78,
+	0x10B92,
+	0x10B99,
+	0x10B9D,
+	0x10BA9,
+	0x10BB0,
+	0x10C00,
+	0x10C49,
+	0x10C80,
+	0x10CB3,
+	0x10CC0,
+	0x10CF3,
+	0x10CFA,
+	0x10D00,
+	0x10E60,
+	0x10E7F,
+	0x11000,
+	0x1104E,
+	0x11052,
+	0x11070,
+	0x1107F,
+	0x110C2,
+	0x110D0,
+	0x110E9,
+	0x110F0,
+	0x110FA,
+	0x11100,
+	0x11135,
+	0x11136,
+	0x11144,
+	0x11150,
+	0x11177,
+	0x11180,
+	0x111CE,
+	0x111D0,
+	0x111E0,
+	0x111E1,
+	0x111F5,
+	0x11200,
+	0x11212,
+	0x11213,
+	0x1123F,
+	0x11280,
+	0x11287,
+	0x11288,
+	0x11289,
+	0x1128A,
+	0x1128E,
+	0x1128F,
+	0x1129E,
+	0x1129F,
+	0x112AA,
+	0x112B0,
+	0x112EB,
+	0x112F0,
+	0x112FA,
+	0x11300,
+	0x11304,
+	0x11305,
+	0x1130D,
+	0x1130F,
+	0x11311,
+	0x11313,
+	0x11329,
+	0x1132A,
+	0x11331,
+	0x11332,
+	0x11334,
+	0x11335,
+	0x1133A,
+	0x1133C,
+	0x11345,
+	0x11347,
+	0x11349,
+	0x1134B,
+	0x1134E,
+	0x11350,
+	0x11351,
+	0x11357,
+	0x11358,
+	0x1135D,
+	0x11364,
+	0x11366,
+	0x1136D,
+	0x11370,
+	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
+	0x11480,
+	0x114C8,
+	0x114D0,
+	0x114DA,
+	0x11580,
+	0x115B6,
+	0x115B8,
+	0x115DE,
+	0x11600,
+	0x11645,
+	0x11650,
+	0x1165A,
+	0x11660,
+	0x1166D,
+	0x11680,
+	0x116B8,
+	0x116C0,
+	0x116CA,
+	0x11700,
+	0x1171A,
+	0x1171D,
+	0x1172C,
+	0x11730,
+	0x11740,
+	0x118A0,
+	0x118F3,
+	0x118FF,
+	0x11900,
+	0x11AC0,
+	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
+	0x12000,
+	0x1239A,
+	0x12400,
+	0x1246F,
+	0x12470,
+	0x12475,
+	0x12480,
+	0x12544,
+	0x13000,
+	0x1342F,
+	0x14400,
+	0x14647,
+	0x16800,
+	0x16A39,
+	0x16A40,
+	0x16A5F,
+	0x16A60,
+	0x16A6A,
+	0x16A6E,
+	0x16A70,
+	0x16AD0,
+	0x16AEE,
+	0x16AF0,
+	0x16AF6,
+	0x16B00,
+	0x16B46,
+	0x16B50,
+	0x16B5A,
+	0x16B5B,
+	0x16B62,
+	0x16B63,
+	0x16B78,
+	0x16B7D,
+	0x16B90,
+	0x16F00,
+	0x16F45,
+	0x16F50,
+	0x16F7F,
+	0x16F8F,
+	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
+	0x1B000,
+	0x1B002,
+	0x1BC00,
+	0x1BC6B,
+	0x1BC70,
+	0x1BC7D,
+	0x1BC80,
+	0x1BC89,
+	0x1BC90,
+	0x1BC9A,
+	0x1BC9C,
+	0x1BCA4,
+	0x1D000,
+	0x1D0F6,
+	0x1D100,
+	0x1D127,
+	0x1D129,
+	0x1D1E9,
+	0x1D200,
+	0x1D246,
+	0x1D300,
+	0x1D357,
+	0x1D360,
+	0x1D372,
+	0x1D400,
+	0x1D455,
+	0x1D456,
+	0x1D49D,
+	0x1D49E,
+	0x1D4A0,
+	0x1D4A2,
+	0x1D4A3,
+	0x1D4A5,
+	0x1D4A7,
+	0x1D4A9,
+	0x1D4AD,
+	0x1D4AE,
+	0x1D4BA,
+	0x1D4BB,
+	0x1D4BC,
+	0x1D4BD,
+	0x1D4C4,
+	0x1D4C5,
+	0x1D506,
+	0x1D507,
+	0x1D50B,
+	0x1D50D,
+	0x1D515,
+	0x1D516,
+	0x1D51D,
+	0x1D51E,
+	0x1D53A,
+	0x1D53B,
+	0x1D53F,
+	0x1D540,
+	0x1D545,
+	0x1D546,
+	0x1D547,
+	0x1D54A,
+	0x1D551,
+	0x1D552,
+	0x1D6A6,
+	0x1D6A8,
+	0x1D7CC,
+	0x1D7CE,
+	0x1DA8C,
+	0x1DA9B,
+	0x1DAA0,
+	0x1DAA1,
+	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
+	0x1E800,
+	0x1E8C5,
+	0x1E8C7,
+	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
+	0x1EE00,
+	0x1EE04,
+	0x1EE05,
+	0x1EE20,
+	0x1EE21,
+	0x1EE23,
+	0x1EE24,
+	0x1EE25,
+	0x1EE27,
+	0x1EE28,
+	0x1EE29,
+	0x1EE33,
+	0x1EE34,
+	0x1EE38,
+	0x1EE39,
+	0x1EE3A,
+	0x1EE3B,
+	0x1EE3C,
+	0x1EE42,
+	0x1EE43,
+	0x1EE47,
+	0x1EE48,
+	0x1EE49,
+	0x1EE4A,
+	0x1EE4B,
+	0x1EE4C,
+	0x1EE4D,
+	0x1EE50,
+	0x1EE51,
+	0x1EE53,
+	0x1EE54,
+	0x1EE55,
+	0x1EE57,
+	0x1EE58,
+	0x1EE59,
+	0x1EE5A,
+	0x1EE5B,
+	0x1EE5C,
+	0x1EE5D,
+	0x1EE5E,
+	0x1EE5F,
+	0x1EE60,
+	0x1EE61,
+	0x1EE63,
+	0x1EE64,
+	0x1EE65,
+	0x1EE67,
+	0x1EE6B,
+	0x1EE6C,
+	0x1EE73,
+	0x1EE74,
+	0x1EE78,
+	0x1EE79,
+	0x1EE7D,
+	0x1EE7E,
+	0x1EE7F,
+	0x1EE80,
+	0x1EE8A,
+	0x1EE8B,
+	0x1EE9C,
+	0x1EEA1,
+	0x1EEA4,
+	0x1EEA5,
+	0x1EEAA,
+	0x1EEAB,
+	0x1EEBC,
+	0x1EEF0,
+	0x1EEF2,
+	0x1F000,
+	0x1F02C,
+	0x1F030,
+	0x1F094,
+	0x1F0A0,
+	0x1F0AF,
+	0x1F0B1,
+	0x1F0C0,
+	0x1F0C1,
+	0x1F0D0,
+	0x1F0D1,
+	0x1F0F6,
+	0x1F100,
+	0x1F10D,
+	0x1F110,
+	0x1F12F,
+	0x1F130,
+	0x1F16C,
+	0x1F170,
+	0x1F1AD,
+	0x1F1E6,
+	0x1F203,
+	0x1F210,
+	0x1F23C,
+	0x1F240,
+	0x1F249,
+	0x1F250,
+	0x1F252,
+	0x1F300,
+	0x1F6D3,
+	0x1F6E0,
+	0x1F6ED,
+	0x1F6F0,
+	0x1F6F7,
+	0x1F700,
+	0x1F774,
+	0x1F780,
+	0x1F7D5,
+	0x1F800,
+	0x1F80C,
+	0x1F810,
+	0x1F848,
+	0x1F850,
+	0x1F85A,
+	0x1F860,
+	0x1F888,
+	0x1F890,
+	0x1F8AE,
+	0x1F910,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
+	0x1F980,
+	0x1F992,
+	0x1F9C0,
+	0x1F9C1,
+	0x20000,
+	0x2A6D7,
+	0x2A700,
+	0x2B735,
+	0x2B740,
+	0x2B81E,
+	0x2B820,
+	0x2CEA2,
+	0x2F800,
+	0x2FA1E,
+	0xE0001,
+	0xE0002,
+	0xE0020,
+	0xE0080,
+	0xE0100,
+	0xE01F0,
+	0xF0000,
+	0xFFFFE,
+	0x100000,
+	0x10FFFE
+};
+
 static const UV Cased_invlist[] = { /* for EBCDIC 1047 */
-	289,	/* Number of elements */
+	297,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -29145,6 +32928,8 @@
 	0x13F6,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D00,
 	0x1DC0,
 	0x1E00,
@@ -29250,7 +33035,7 @@
 	0xA78B,
 	0xA78F,
 	0xA790,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F8,
@@ -29271,6 +33056,10 @@
 	0xFF5B,
 	0x10400,
 	0x10450,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10C80,
 	0x10CB3,
 	0x10CC0,
@@ -29337,6 +33126,8 @@
 	0x1D7C3,
 	0x1D7C4,
 	0x1D7CC,
+	0x1E900,
+	0x1E944,
 	0x1F130,
 	0x1F14A,
 	0x1F150,
@@ -29402,7 +33193,7 @@
 };
 
 static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */
-	279,	/* Number of elements */
+	285,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -29484,8 +33275,6 @@
 	0x265,
 	0x267,
 	0x268,
-	0x26A,
-	0x26B,
 	0x26D,
 	0x26F,
 	0x270,
@@ -29565,6 +33354,8 @@
 	0x13F6,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D79,
 	0x1D7A,
 	0x1D7D,
@@ -29662,7 +33453,7 @@
 	0xA790,
 	0xA794,
 	0xA796,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xAB53,
@@ -29679,12 +33470,18 @@
 	0xFF5B,
 	0x10400,
 	0x10450,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10C80,
 	0x10CB3,
 	0x10CC0,
 	0x10CF3,
 	0x118A0,
-	0x118E0
+	0x118E0,
+	0x1E900,
+	0x1E944
 };
 
 static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 1047 */
@@ -29758,7 +33555,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
-	1502,	/* Number of elements */
+	1615,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -29825,6 +33622,8 @@
 	0x82E,
 	0x859,
 	0x85C,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x903,
 	0x904,
@@ -29973,6 +33772,7 @@
 	0xD4A,
 	0xD4D,
 	0xD4E,
+	0xD4F,
 	0xD57,
 	0xD58,
 	0xD62,
@@ -30081,6 +33881,8 @@
 	0x180B,
 	0x180E,
 	0x180F,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x1920,
@@ -30167,10 +33969,11 @@
 	0x1CFA,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x200B,
 	0x200C,
+	0x200D,
 	0x200E,
 	0x2010,
 	0x2028,
@@ -30179,6 +33982,14 @@
 	0x2070,
 	0x20D0,
 	0x20F1,
+	0x261D,
+	0x261E,
+	0x26F9,
+	0x26FA,
+	0x270A,
+	0x270E,
+	0x2764,
+	0x2765,
 	0x2CEF,
 	0x2CF2,
 	0x2D7F,
@@ -30211,7 +34022,7 @@
 	0xA882,
 	0xA8B4,
 	0xA8C4,
-	0xA8C5,
+	0xA8C6,
 	0xA8E0,
 	0xA8F2,
 	0xA926,
@@ -31138,6 +34949,8 @@
 	0x111B6,
 	0x111BF,
 	0x111C1,
+	0x111C2,
+	0x111C4,
 	0x111CA,
 	0x111CD,
 	0x1122C,
@@ -31147,6 +34960,8 @@
 	0x11235,
 	0x11236,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x112DF,
 	0x112E0,
 	0x112E3,
@@ -31173,6 +34988,13 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11435,
+	0x11438,
+	0x11440,
+	0x11442,
+	0x11445,
+	0x11446,
+	0x11447,
 	0x114B0,
 	0x114B1,
 	0x114B3,
@@ -31217,6 +35039,22 @@
 	0x11726,
 	0x11727,
 	0x1172C,
+	0x11C2F,
+	0x11C30,
+	0x11C37,
+	0x11C38,
+	0x11C3E,
+	0x11C3F,
+	0x11C40,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CAA,
+	0x11CB1,
+	0x11CB2,
+	0x11CB4,
+	0x11CB5,
+	0x11CB7,
 	0x16AF0,
 	0x16AF5,
 	0x16B30,
@@ -31256,11 +35094,83 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E944,
+	0x1E94B,
 	0x1F1E6,
 	0x1F200,
+	0x1F385,
+	0x1F386,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
+	0x1F3FB,
+	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
+	0x1F48B,
+	0x1F48C,
+	0x1F4AA,
+	0x1F4AB,
+	0x1F575,
+	0x1F576,
+	0x1F57A,
+	0x1F57B,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
+	0x1F5E8,
+	0x1F5E9,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
+	0x1F650,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
 	0xE0000,
+	0xE0020,
+	0xE0080,
 	0xE0100,
 	0xE01F0,
 	0xE1000
@@ -31270,23 +35180,28 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define GCB_ENUM_COUNT 14
+#define GCB_ENUM_COUNT 19
 
 typedef enum {
 	GCB_Other = 0,
 	GCB_CR = 1,
 	GCB_Control = 2,
-	GCB_Extend = 3,
-	GCB_L = 4,
-	GCB_LF = 5,
-	GCB_LV = 6,
-	GCB_LVT = 7,
-	GCB_Prepend = 8,
-	GCB_Regional_Indicator = 9,
-	GCB_SpacingMark = 10,
-	GCB_T = 11,
-	GCB_V = 12,
-	GCB_EDGE = 13
+	GCB_E_Base = 3,
+	GCB_E_Base_GAZ = 4,
+	GCB_E_Modifier = 5,
+	GCB_Extend = 6,
+	GCB_Glue_After_Zwj = 7,
+	GCB_L = 8,
+	GCB_LF = 9,
+	GCB_LV = 10,
+	GCB_LVT = 11,
+	GCB_Prepend = 12,
+	GCB_Regional_Indicator = 13,
+	GCB_SpacingMark = 14,
+	GCB_T = 15,
+	GCB_V = 16,
+	GCB_ZWJ = 17,
+	GCB_EDGE = 18
 } GCB_enum;
 
 static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
@@ -31314,7 +35229,7 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -31325,7 +35240,7 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -31333,7 +35248,7 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -31354,6 +35269,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Prepend,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Other,
 	GCB_Extend,
@@ -31500,6 +35417,7 @@
 	GCB_Other,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -31612,6 +35530,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -31699,6 +35619,7 @@
 	GCB_Other,
 	GCB_Control,
 	GCB_Extend,
+	GCB_ZWJ,
 	GCB_Control,
 	GCB_Other,
 	GCB_Control,
@@ -31707,6 +35628,14 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
@@ -32649,7 +36578,7 @@
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -32666,6 +36595,8 @@
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Other,
+	GCB_Prepend,
+	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_SpacingMark,
@@ -32676,6 +36607,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
@@ -32701,11 +36634,14 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -32712,6 +36648,10 @@
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -32745,16 +36685,32 @@
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_Control,
 	GCB_Other,
 	GCB_Extend,
@@ -32786,11 +36742,83 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_Regional_Indicator,
 	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Modifier,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base_GAZ,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
 	GCB_Control,
 	GCB_Extend,
 	GCB_Control,
+	GCB_Extend,
+	GCB_Control,
 	GCB_Other
 };
 
@@ -32799,7 +36827,7 @@
 #if defined(PERL_IN_UTF8_C)
 
 static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
-	1341,	/* Number of elements */
+	1391,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -32928,6 +36956,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x964,
 	0x966,
@@ -33106,7 +37138,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -33148,7 +37180,7 @@
 	0xD49,
 	0xD4A,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -33384,6 +37416,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -33392,7 +37426,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -33561,7 +37595,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -33569,7 +37603,7 @@
 	0xA840,
 	0xA874,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -33746,6 +37780,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -33850,6 +37888,8 @@
 	0x11212,
 	0x11213,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -33894,6 +37934,10 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C6,
 	0x114C7,
@@ -33928,6 +37972,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -33964,6 +38022,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -34062,10 +38126,24 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -34147,7 +38225,7 @@
 };
 
 static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
-	1155,	/* Number of elements */
+	1187,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -34278,6 +38356,8 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
 	0x904,
 	0x93A,
 	0x93D,
@@ -34406,6 +38486,8 @@
 	0xC5B,
 	0xC60,
 	0xC62,
+	0xC80,
+	0xC81,
 	0xC85,
 	0xC8D,
 	0xC8E,
@@ -34434,6 +38516,8 @@
 	0xD3E,
 	0xD4E,
 	0xD4F,
+	0xD54,
+	0xD57,
 	0xD5F,
 	0xD62,
 	0xD7A,
@@ -34628,6 +38712,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -34795,7 +38881,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -34982,6 +39068,10 @@
 	0x103D6,
 	0x10400,
 	0x1049E,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -35104,6 +39194,10 @@
 	0x11351,
 	0x1135D,
 	0x11362,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -35128,6 +39222,14 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C40,
+	0x11C41,
+	0x11C72,
+	0x11C90,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -35158,6 +39260,12 @@
 	0x16F51,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -35230,6 +39338,8 @@
 	0x1D7CC,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -35313,7 +39423,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
-	2168,	/* Number of elements */
+	2279,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -35471,6 +39581,8 @@
 	0x82E,
 	0x859,
 	0x85C,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -35768,6 +39880,8 @@
 	0x180F,
 	0x1810,
 	0x181A,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x1920,
@@ -35832,7 +39946,7 @@
 	0x1CFA,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1FFD,
 	0x1FFE,
@@ -35841,6 +39955,8 @@
 	0x2008,
 	0x200B,
 	0x200C,
+	0x200D,
+	0x200E,
 	0x2010,
 	0x2011,
 	0x2012,
@@ -35923,6 +40039,8 @@
 	0x2618,
 	0x2619,
 	0x261A,
+	0x261D,
+	0x261E,
 	0x2620,
 	0x2639,
 	0x263C,
@@ -35949,15 +40067,19 @@
 	0x26F1,
 	0x26F6,
 	0x26F7,
+	0x26F9,
+	0x26FA,
 	0x26FB,
 	0x26FD,
 	0x2705,
 	0x2708,
+	0x270A,
 	0x270E,
 	0x275B,
 	0x2761,
 	0x2762,
 	0x2764,
+	0x2765,
 	0x2768,
 	0x2769,
 	0x276A,
@@ -36062,6 +40184,7 @@
 	0x2E40,
 	0x2E42,
 	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -36212,7 +40335,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8D0,
 	0xA8DA,
@@ -37187,6 +41310,15 @@
 	0xFF71,
 	0xFF9E,
 	0xFFA0,
+	0xFFBF,
+	0xFFC2,
+	0xFFC8,
+	0xFFCA,
+	0xFFD0,
+	0xFFD2,
+	0xFFD8,
+	0xFFDA,
+	0xFFDD,
 	0xFFE0,
 	0xFFE1,
 	0xFFE2,
@@ -37279,6 +41411,8 @@
 	0x1123A,
 	0x1123B,
 	0x1123D,
+	0x1123E,
+	0x1123F,
 	0x112A9,
 	0x112AA,
 	0x112DF,
@@ -37303,6 +41437,14 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x1144F,
+	0x11450,
+	0x1145A,
+	0x1145B,
+	0x1145C,
 	0x114B0,
 	0x114C4,
 	0x114D0,
@@ -37323,6 +41465,8 @@
 	0x11643,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x116AB,
 	0x116B8,
 	0x116C0,
@@ -37335,6 +41479,21 @@
 	0x1173F,
 	0x118E0,
 	0x118EA,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C46,
+	0x11C50,
+	0x11C5A,
+	0x11C70,
+	0x11C71,
+	0x11C72,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12470,
 	0x12475,
 	0x13258,
@@ -37371,6 +41530,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16F93,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC9D,
@@ -37403,30 +41568,37 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1F000,
-	0x1F02C,
-	0x1F030,
-	0x1F094,
-	0x1F0A0,
-	0x1F0AF,
-	0x1F0B1,
-	0x1F0C0,
-	0x1F0C1,
-	0x1F0D0,
-	0x1F0D1,
-	0x1F0F6,
+	0x1F100,
+	0x1F10D,
+	0x1F110,
+	0x1F12F,
+	0x1F130,
+	0x1F16C,
+	0x1F170,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F200,
-	0x1F203,
-	0x1F210,
-	0x1F23B,
-	0x1F240,
-	0x1F249,
-	0x1F250,
-	0x1F252,
-	0x1F300,
+	0x1F385,
+	0x1F386,
 	0x1F39C,
 	0x1F39E,
 	0x1F3B5,
@@ -37433,8 +41605,28 @@
 	0x1F3B7,
 	0x1F3BC,
 	0x1F3BD,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
 	0x1F3FB,
 	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
 	0x1F4A0,
 	0x1F4A1,
 	0x1F4A2,
@@ -37441,6 +41633,8 @@
 	0x1F4A3,
 	0x1F4A4,
 	0x1F4A5,
+	0x1F4AA,
+	0x1F4AB,
 	0x1F4AF,
 	0x1F4B0,
 	0x1F4B1,
@@ -37451,30 +41645,57 @@
 	0x1F525,
 	0x1F532,
 	0x1F54A,
+	0x1F575,
+	0x1F576,
 	0x1F57A,
 	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
 	0x1F5D4,
 	0x1F5DC,
 	0x1F5F4,
 	0x1F5FA,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
 	0x1F650,
 	0x1F676,
 	0x1F679,
 	0x1F67C,
 	0x1F680,
-	0x1F6D1,
-	0x1F6E0,
-	0x1F6ED,
-	0x1F6F0,
-	0x1F6F4,
-	0x1F910,
-	0x1F919,
-	0x1F980,
-	0x1F985,
-	0x1F9C0,
-	0x1F9C1,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F700,
+	0x1F774,
+	0x1F780,
+	0x1F7D5,
+	0x1F800,
+	0x1F80C,
+	0x1F810,
+	0x1F848,
+	0x1F850,
+	0x1F85A,
+	0x1F860,
+	0x1F888,
+	0x1F890,
+	0x1F8AE,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
+	0x1FFFE,
 	0x20000,
 	0x2FFFE,
 	0x30000,
@@ -37491,7 +41712,7 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define LB_ENUM_COUNT 36
+#define LB_ENUM_COUNT 39
 
 typedef enum {
 	LB_Alphabetic = 0,
@@ -37504,32 +41725,35 @@
 	LB_Close_Punctuation = 7,
 	LB_Combining_Mark = 8,
 	LB_Contingent_Break = 9,
-	LB_Exclamation = 10,
-	LB_Glue = 11,
-	LB_H2 = 12,
-	LB_H3 = 13,
-	LB_Hebrew_Letter = 14,
-	LB_Hyphen = 15,
-	LB_Ideographic = 16,
-	LB_Infix_Numeric = 17,
-	LB_Inseparable = 18,
-	LB_JL = 19,
-	LB_JT = 20,
-	LB_JV = 21,
-	LB_Line_Feed = 22,
-	LB_Mandatory_Break = 23,
-	LB_Next_Line = 24,
-	LB_Nonstarter = 25,
-	LB_Numeric = 26,
-	LB_Open_Punctuation = 27,
-	LB_Postfix_Numeric = 28,
-	LB_Prefix_Numeric = 29,
-	LB_Quotation = 30,
-	LB_Regional_Indicator = 31,
-	LB_Space = 32,
-	LB_Word_Joiner = 33,
-	LB_ZWSpace = 34,
-	LB_EDGE = 35
+	LB_E_Base = 10,
+	LB_E_Modifier = 11,
+	LB_Exclamation = 12,
+	LB_Glue = 13,
+	LB_H2 = 14,
+	LB_H3 = 15,
+	LB_Hebrew_Letter = 16,
+	LB_Hyphen = 17,
+	LB_Ideographic = 18,
+	LB_Infix_Numeric = 19,
+	LB_Inseparable = 20,
+	LB_JL = 21,
+	LB_JT = 22,
+	LB_JV = 23,
+	LB_Line_Feed = 24,
+	LB_Mandatory_Break = 25,
+	LB_Next_Line = 26,
+	LB_Nonstarter = 27,
+	LB_Numeric = 28,
+	LB_Open_Punctuation = 29,
+	LB_Postfix_Numeric = 30,
+	LB_Prefix_Numeric = 31,
+	LB_Quotation = 32,
+	LB_Regional_Indicator = 33,
+	LB_Space = 34,
+	LB_Word_Joiner = 35,
+	LB_ZWJ = 36,
+	LB_ZWSpace = 37,
+	LB_EDGE = 38
 } LB_enum;
 
 static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
@@ -37696,6 +41920,8 @@
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Numeric,
 	LB_Alphabetic,
@@ -37990,6 +42216,8 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Exclamation,
 	LB_Numeric,
 	LB_Alphabetic,
@@ -38057,6 +42285,8 @@
 	LB_Break_After,
 	LB_ZWSpace,
 	LB_Combining_Mark,
+	LB_ZWJ,
+	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Glue,
 	LB_Break_After,
@@ -38139,6 +42369,8 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -38165,14 +42397,18 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
 	LB_Alphabetic,
 	LB_Quotation,
 	LB_Alphabetic,
 	LB_Exclamation,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
@@ -38277,6 +42513,7 @@
 	LB_Alphabetic,
 	LB_Break_After,
 	LB_Open_Punctuation,
+	LB_Break_After,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -39398,11 +43635,20 @@
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
 	LB_Nonstarter,
-	LB_Alphabetic,
+	LB_Ideographic,
 	LB_Nonstarter,
-	LB_Alphabetic,
+	LB_Ideographic,
 	LB_Nonstarter,
+	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Postfix_Numeric,
 	LB_Prefix_Numeric,
 	LB_Ideographic,
@@ -39495,6 +43741,8 @@
 	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
 	LB_Combining_Mark,
@@ -39521,11 +43769,19 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
 	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
 	LB_Break_Before,
 	LB_Break_After,
 	LB_Exclamation,
@@ -39539,6 +43795,8 @@
 	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Break_Before,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Numeric,
@@ -39551,8 +43809,23 @@
 	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
+	LB_Break_Before,
+	LB_Exclamation,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
 	LB_Alphabetic,
@@ -39587,8 +43860,14 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Nonstarter,
+	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Combining_Mark,
@@ -39621,8 +43900,22 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
-	LB_Ideographic,
+	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
+	LB_Open_Punctuation,
+	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
@@ -39632,10 +43925,9 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
-	LB_Alphabetic,
 	LB_Regional_Indicator,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
@@ -39643,18 +43935,28 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Modifier,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -39661,6 +43963,8 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -39671,15 +43975,32 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
 	LB_Alphabetic,
 	LB_Quotation,
 	LB_Nonstarter,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -39694,7 +44015,21 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Combining_Mark,
@@ -39708,7 +44043,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
-	2920,	/* Number of elements */
+	2981,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -40439,6 +44774,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -40643,6 +44982,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
+	0xC80,
 	0xC81,
 	0xC84,
 	0xC85,
@@ -40690,6 +45030,7 @@
 	0xD4A,
 	0xD4E,
 	0xD4F,
+	0xD54,
 	0xD57,
 	0xD58,
 	0xD5F,
@@ -40929,6 +45270,8 @@
 	0x1820,
 	0x1878,
 	0x1880,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x18AB,
@@ -41002,6 +45345,7 @@
 	0x1C5A,
 	0x1C7E,
 	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -41016,7 +45360,7 @@
 	0x1D00,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1E01,
 	0x1E02,
@@ -41860,7 +46204,7 @@
 	0xA7A8,
 	0xA7A9,
 	0xA7AA,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B5,
 	0xA7B6,
@@ -41884,7 +46228,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8D0,
 	0xA8DA,
@@ -42132,6 +46476,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -42266,6 +46614,8 @@
 	0x1123A,
 	0x1123B,
 	0x1123D,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -42315,6 +46665,13 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x1144D,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -42363,6 +46720,23 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C43,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -42407,6 +46781,12 @@
 	0x16F8F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -42538,10 +46918,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E922,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -43387,7 +47783,11 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Extend,
+	SB_Format,
+	SB_Extend,
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
@@ -43591,6 +47991,7 @@
 	SB_Other,
 	SB_Numeric,
 	SB_Other,
+	SB_OLetter,
 	SB_Extend,
 	SB_Other,
 	SB_OLetter,
@@ -43638,6 +48039,7 @@
 	SB_Extend,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
 	SB_Extend,
 	SB_Other,
 	SB_OLetter,
@@ -43879,6 +48281,8 @@
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
+	SB_Extend,
+	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
@@ -43949,6 +48353,7 @@
 	SB_Numeric,
 	SB_OLetter,
 	SB_STerm,
+	SB_Lower,
 	SB_Other,
 	SB_Extend,
 	SB_Other,
@@ -45080,6 +49485,10 @@
 	SB_Other,
 	SB_Numeric,
 	SB_Other,
+	SB_Upper,
+	SB_Other,
+	SB_Lower,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -45214,6 +49623,8 @@
 	SB_Other,
 	SB_STerm,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -45266,9 +49677,16 @@
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
+	SB_STerm,
 	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
+	SB_Extend,
+	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Numeric,
 	SB_Other,
 	SB_OLetter,
@@ -45314,11 +49732,20 @@
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
+	SB_Extend,
 	SB_Other,
+	SB_Extend,
 	SB_OLetter,
+	SB_STerm,
 	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -45325,6 +49752,14 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Numeric,
 	SB_Other,
 	SB_STerm,
@@ -45365,6 +49800,12 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Extend,
 	SB_STerm,
 	SB_Format,
@@ -45486,10 +49927,26 @@
 	SB_Other,
 	SB_Extend,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_Extend,
 	SB_Other,
+	SB_Upper,
+	SB_Lower,
+	SB_Extend,
+	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -45576,7 +50033,7 @@
 	SB_Other,
 	SB_Format,
 	SB_Other,
-	SB_Format,
+	SB_Extend,
 	SB_Other,
 	SB_Extend,
 	SB_Other
@@ -45587,7 +50044,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
-	1558,	/* Number of elements */
+	1680,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -45785,6 +50242,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -45989,6 +50450,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
+	0xC80,
 	0xC81,
 	0xC84,
 	0xC85,
@@ -46036,6 +50498,7 @@
 	0xD4A,
 	0xD4E,
 	0xD4F,
+	0xD54,
 	0xD57,
 	0xD58,
 	0xD5F,
@@ -46223,6 +50686,8 @@
 	0x1820,
 	0x1878,
 	0x1880,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x18AB,
@@ -46278,6 +50743,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -46292,7 +50759,7 @@
 	0x1D00,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1F16,
 	0x1F18,
@@ -46334,6 +50801,7 @@
 	0x2000,
 	0x200B,
 	0x200C,
+	0x200D,
 	0x200E,
 	0x2010,
 	0x2018,
@@ -46394,6 +50862,14 @@
 	0x2189,
 	0x24B6,
 	0x24EA,
+	0x261D,
+	0x261E,
+	0x26F9,
+	0x26FA,
+	0x270A,
+	0x270E,
+	0x2764,
+	0x2765,
 	0x2C00,
 	0x2C2F,
 	0x2C30,
@@ -46491,7 +50967,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -46508,7 +50984,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -46718,6 +51194,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -46839,6 +51319,8 @@
 	0x11213,
 	0x1122C,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -46887,6 +51369,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -46926,6 +51414,22 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -46965,6 +51469,8 @@
 	0x16F8F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
 	0x1B000,
 	0x1B001,
 	0x1BC00,
@@ -47065,10 +51571,25 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -47143,6 +51664,64 @@
 	0x1F18A,
 	0x1F1E6,
 	0x1F200,
+	0x1F385,
+	0x1F386,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
+	0x1F3FB,
+	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
+	0x1F48B,
+	0x1F48C,
+	0x1F4AA,
+	0x1F4AB,
+	0x1F575,
+	0x1F576,
+	0x1F57A,
+	0x1F57B,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
+	0x1F5E8,
+	0x1F5E9,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
+	0x1F650,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
 	0xE0001,
 	0xE0002,
 	0xE0020,
@@ -47155,7 +51734,7 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define WB_ENUM_COUNT 20
+#define WB_ENUM_COUNT 25
 
 typedef enum {
 	WB_Other = 0,
@@ -47162,22 +51741,27 @@
 	WB_ALetter = 1,
 	WB_CR = 2,
 	WB_Double_Quote = 3,
-	WB_Extend = 4,
-	WB_ExtendNumLet = 5,
-	WB_Format = 6,
-	WB_Hebrew_Letter = 7,
-	WB_Katakana = 8,
-	WB_LF = 9,
-	WB_MidLetter = 10,
-	WB_MidNum = 11,
-	WB_MidNumLet = 12,
-	WB_Newline = 13,
-	WB_Numeric = 14,
-	WB_Perl_Tailored_HSpace = 15,
-	WB_Regional_Indicator = 16,
-	WB_Single_Quote = 17,
-	WB_EDGE = 18,
-	WB_UNKNOWN = 19
+	WB_E_Base = 4,
+	WB_E_Base_GAZ = 5,
+	WB_E_Modifier = 6,
+	WB_Extend = 7,
+	WB_ExtendNumLet = 8,
+	WB_Format = 9,
+	WB_Glue_After_Zwj = 10,
+	WB_Hebrew_Letter = 11,
+	WB_Katakana = 12,
+	WB_LF = 13,
+	WB_MidLetter = 14,
+	WB_MidNum = 15,
+	WB_MidNumLet = 16,
+	WB_Newline = 17,
+	WB_Numeric = 18,
+	WB_Perl_Tailored_HSpace = 19,
+	WB_Regional_Indicator = 20,
+	WB_Single_Quote = 21,
+	WB_ZWJ = 22,
+	WB_EDGE = 23,
+	WB_UNKNOWN = 24
 } WB_enum;
 
 static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
@@ -47375,7 +51959,11 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Extend,
+	WB_Format,
+	WB_Extend,
 	WB_ALetter,
 	WB_Extend,
 	WB_ALetter,
@@ -47579,6 +52167,7 @@
 	WB_Other,
 	WB_Numeric,
 	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
@@ -47626,6 +52215,7 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
@@ -47815,6 +52405,8 @@
 	WB_ALetter,
 	WB_Extend,
 	WB_ALetter,
+	WB_Extend,
+	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
@@ -47868,6 +52460,8 @@
 	WB_Numeric,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Extend,
 	WB_Other,
 	WB_Extend,
@@ -47924,6 +52518,7 @@
 	WB_Perl_Tailored_HSpace,
 	WB_Other,
 	WB_Extend,
+	WB_ZWJ,
 	WB_Format,
 	WB_Other,
 	WB_MidNumLet,
@@ -47933,7 +52528,7 @@
 	WB_MidLetter,
 	WB_Newline,
 	WB_Format,
-	WB_Perl_Tailored_HSpace,
+	WB_ExtendNumLet,
 	WB_Other,
 	WB_ExtendNumLet,
 	WB_Other,
@@ -47984,6 +52579,14 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -48347,6 +52950,10 @@
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_Extend,
@@ -48429,6 +53036,8 @@
 	WB_ALetter,
 	WB_Extend,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -48481,8 +53090,14 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
+	WB_Extend,
+	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Numeric,
 	WB_Other,
 	WB_ALetter,
@@ -48519,11 +53134,19 @@
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
+	WB_Extend,
 	WB_Other,
+	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -48530,6 +53153,14 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Numeric,
 	WB_Other,
 	WB_ALetter,
@@ -48555,6 +53186,8 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Katakana,
 	WB_Other,
 	WB_ALetter,
@@ -48655,12 +53288,25 @@
 	WB_Other,
 	WB_Extend,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
+	WB_Extend,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -48731,13 +53377,73 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Regional_Indicator,
 	WB_Other,
-	WB_Format,
+	WB_E_Base,
 	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Modifier,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base_GAZ,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
 	WB_Format,
 	WB_Other,
 	WB_Extend,
+	WB_Other,
+	WB_Extend,
 	WB_Other
 };
 
@@ -48858,7 +53564,7 @@
 };
 
 static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
-	1321,	/* Number of elements */
+	1381,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -48991,6 +53697,10 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E0,
 	0x8E3,
 	0x8EA,
 	0x8F0,
@@ -49177,7 +53887,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -49221,7 +53931,7 @@
 	0xD4D,
 	0xD4E,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -49465,6 +54175,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -49638,7 +54350,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -49653,6 +54365,8 @@
 	0xA874,
 	0xA880,
 	0xA8C4,
+	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8F2,
@@ -49811,6 +54525,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -49913,6 +54631,8 @@
 	0x11235,
 	0x11237,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -49953,6 +54673,14 @@
 	0x11358,
 	0x1135D,
 	0x11364,
+	0x11400,
+	0x11442,
+	0x11443,
+	0x11446,
+	0x11447,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C2,
 	0x114C4,
@@ -49991,6 +54719,22 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C3F,
+	0x11C40,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -50025,6 +54769,12 @@
 	0x16F7F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -50099,8 +54849,24 @@
 	0x1D7CC,
 	0x1D7CE,
 	0x1D800,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
+	0x1E947,
+	0x1E948,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -50186,7 +54952,7 @@
 };
 
 static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
-	1261,	/* Number of elements */
+	1315,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -50321,6 +55087,10 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E0,
 	0x8E3,
 	0x8EA,
 	0x8F0,
@@ -50497,7 +55267,7 @@
 	0xC5B,
 	0xC60,
 	0xC64,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -50539,7 +55309,7 @@
 	0xD4D,
 	0xD4E,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -50761,6 +55531,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -50936,7 +55708,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -50951,6 +55723,8 @@
 	0xA874,
 	0xA880,
 	0xA8C4,
+	0xA8C5,
+	0xA8C6,
 	0xA8F2,
 	0xA8F8,
 	0xA8FB,
@@ -51101,6 +55875,10 @@
 	0x103D6,
 	0x10400,
 	0x1049E,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -51197,6 +55975,8 @@
 	0x11235,
 	0x11237,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -51235,6 +56015,12 @@
 	0x11358,
 	0x1135D,
 	0x11364,
+	0x11400,
+	0x11442,
+	0x11443,
+	0x11446,
+	0x11447,
+	0x1144B,
 	0x11480,
 	0x114C2,
 	0x114C4,
@@ -51265,6 +56051,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C3F,
+	0x11C40,
+	0x11C41,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -51295,6 +56095,12 @@
 	0x16F7F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -51367,8 +56173,22 @@
 	0x1D7C3,
 	0x1D7C4,
 	0x1D7CC,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
+	0x1E947,
+	0x1E948,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -51487,7 +56307,7 @@
 };
 
 static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */
-	103,	/* Number of elements */
+	109,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -51578,6 +56398,8 @@
 	0x111DA,
 	0x112F0,
 	0x112FA,
+	0x11450,
+	0x1145A,
 	0x114D0,
 	0x114DA,
 	0x11650,
@@ -51588,16 +56410,20 @@
 	0x1173A,
 	0x118E0,
 	0x118EA,
+	0x11C50,
+	0x11C5A,
 	0x16A60,
 	0x16A6A,
 	0x16B50,
 	0x16B5A,
 	0x1D7CE,
-	0x1D800
+	0x1D800,
+	0x1E950,
+	0x1E95A
 };
 
 static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
-	1237,	/* Number of elements */
+	1287,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -51652,7 +56478,9 @@
 	0x85F,
 	0x8A0,
 	0x8B5,
-	0x8E3,
+	0x8B6,
+	0x8BE,
+	0x8D4,
 	0x984,
 	0x985,
 	0x98D,
@@ -51825,8 +56653,6 @@
 	0xC66,
 	0xC70,
 	0xC78,
-	0xC80,
-	0xC81,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -51867,14 +56693,10 @@
 	0xD46,
 	0xD49,
 	0xD4A,
-	0xD4F,
-	0xD57,
-	0xD58,
-	0xD5F,
+	0xD50,
+	0xD54,
 	0xD64,
 	0xD66,
-	0xD76,
-	0xD79,
 	0xD80,
 	0xD82,
 	0xD84,
@@ -52077,7 +56899,7 @@
 	0x1C3B,
 	0x1C4A,
 	0x1C4D,
-	0x1C80,
+	0x1C89,
 	0x1CC0,
 	0x1CC8,
 	0x1CD0,
@@ -52086,7 +56908,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -52139,7 +56961,7 @@
 	0x2100,
 	0x218C,
 	0x2190,
-	0x23FB,
+	0x23FF,
 	0x2400,
 	0x2427,
 	0x2440,
@@ -52191,7 +57013,7 @@
 	0x2DD8,
 	0x2DDF,
 	0x2DE0,
-	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -52231,7 +57053,7 @@
 	0xA640,
 	0xA6F8,
 	0xA700,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -52241,7 +57063,7 @@
 	0xA840,
 	0xA878,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8DA,
 	0xA8E0,
@@ -52365,7 +57187,7 @@
 	0x10107,
 	0x10134,
 	0x10137,
-	0x1018D,
+	0x1018F,
 	0x10190,
 	0x1019C,
 	0x101A0,
@@ -52394,6 +57216,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -52505,7 +57331,7 @@
 	0x11200,
 	0x11212,
 	0x11213,
-	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -52550,6 +57376,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x11480,
 	0x114C8,
 	0x114D0,
@@ -52562,6 +57394,8 @@
 	0x11645,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x11680,
 	0x116B8,
 	0x116C0,
@@ -52578,6 +57412,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -52618,6 +57466,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -52688,10 +57542,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8C7,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -52779,25 +57649,21 @@
 	0x1F130,
 	0x1F16C,
 	0x1F170,
-	0x1F19B,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F203,
 	0x1F210,
-	0x1F23B,
+	0x1F23C,
 	0x1F240,
 	0x1F249,
 	0x1F250,
 	0x1F252,
 	0x1F300,
-	0x1F57A,
-	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
-	0x1F6D1,
+	0x1F6D3,
 	0x1F6E0,
 	0x1F6ED,
 	0x1F6F0,
-	0x1F6F4,
+	0x1F6F7,
 	0x1F700,
 	0x1F774,
 	0x1F780,
@@ -52813,9 +57679,19 @@
 	0x1F890,
 	0x1F8AE,
 	0x1F910,
-	0x1F919,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
 	0x1F980,
-	0x1F985,
+	0x1F992,
 	0x1F9C0,
 	0x1F9C1,
 	0x20000,
@@ -52841,7 +57717,7 @@
 };
 
 static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */
-	1283,	/* Number of elements */
+	1289,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -53406,6 +58282,8 @@
 	0x588,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D00,
 	0x1DC0,
 	0x1E01,
@@ -54068,6 +58946,8 @@
 	0xFF5B,
 	0x10428,
 	0x10450,
+	0x104D8,
+	0x104FC,
 	0x10CC0,
 	0x10CF3,
 	0x118C0,
@@ -54127,11 +59007,13 @@
 	0x1D7C4,
 	0x1D7CA,
 	0x1D7CB,
-	0x1D7CC
+	0x1D7CC,
+	0x1E922,
+	0x1E944
 };
 
 static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
-	1231,	/* Number of elements */
+	1281,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -54186,7 +59068,9 @@
 	0x85F,
 	0x8A0,
 	0x8B5,
-	0x8E3,
+	0x8B6,
+	0x8BE,
+	0x8D4,
 	0x984,
 	0x985,
 	0x98D,
@@ -54359,8 +59243,6 @@
 	0xC66,
 	0xC70,
 	0xC78,
-	0xC80,
-	0xC81,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -54401,14 +59283,10 @@
 	0xD46,
 	0xD49,
 	0xD4A,
-	0xD4F,
-	0xD57,
-	0xD58,
-	0xD5F,
+	0xD50,
+	0xD54,
 	0xD64,
 	0xD66,
-	0xD76,
-	0xD79,
 	0xD80,
 	0xD82,
 	0xD84,
@@ -54609,7 +59487,7 @@
 	0x1C3B,
 	0x1C4A,
 	0x1C4D,
-	0x1C80,
+	0x1C89,
 	0x1CC0,
 	0x1CC8,
 	0x1CD0,
@@ -54618,7 +59496,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -54667,7 +59545,7 @@
 	0x2100,
 	0x218C,
 	0x2190,
-	0x23FB,
+	0x23FF,
 	0x2400,
 	0x2427,
 	0x2440,
@@ -54719,7 +59597,7 @@
 	0x2DD8,
 	0x2DDF,
 	0x2DE0,
-	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -54759,7 +59637,7 @@
 	0xA640,
 	0xA6F8,
 	0xA700,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -54769,7 +59647,7 @@
 	0xA840,
 	0xA878,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8DA,
 	0xA8E0,
@@ -54893,7 +59771,7 @@
 	0x10107,
 	0x10134,
 	0x10137,
-	0x1018D,
+	0x1018F,
 	0x10190,
 	0x1019C,
 	0x101A0,
@@ -54922,6 +59800,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -55033,7 +59915,7 @@
 	0x11200,
 	0x11212,
 	0x11213,
-	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -55078,6 +59960,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x11480,
 	0x114C8,
 	0x114D0,
@@ -55090,6 +59978,8 @@
 	0x11645,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x11680,
 	0x116B8,
 	0x116C0,
@@ -55106,6 +59996,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -55146,6 +60050,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -55216,10 +60126,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8C7,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -55307,25 +60233,21 @@
 	0x1F130,
 	0x1F16C,
 	0x1F170,
-	0x1F19B,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F203,
 	0x1F210,
-	0x1F23B,
+	0x1F23C,
 	0x1F240,
 	0x1F249,
 	0x1F250,
 	0x1F252,
 	0x1F300,
-	0x1F57A,
-	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
-	0x1F6D1,
+	0x1F6D3,
 	0x1F6E0,
 	0x1F6ED,
 	0x1F6F0,
-	0x1F6F4,
+	0x1F6F7,
 	0x1F700,
 	0x1F774,
 	0x1F780,
@@ -55341,9 +60263,19 @@
 	0x1F890,
 	0x1F8AE,
 	0x1F910,
-	0x1F919,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
 	0x1F980,
-	0x1F985,
+	0x1F992,
 	0x1F9C0,
 	0x1F9C1,
 	0x20000,
@@ -55369,7 +60301,7 @@
 };
 
 static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */
-	321,	/* Number of elements */
+	335,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -55543,7 +60475,7 @@
 	0x2E00,
 	0x2E2F,
 	0x2E30,
-	0x2E43,
+	0x2E45,
 	0x3001,
 	0x3004,
 	0x3008,
@@ -55672,6 +60604,12 @@
 	0x1123E,
 	0x112A9,
 	0x112AA,
+	0x1144B,
+	0x11450,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x114C6,
 	0x114C7,
 	0x115C1,
@@ -55678,8 +60616,14 @@
 	0x115D8,
 	0x11641,
 	0x11644,
+	0x11660,
+	0x1166D,
 	0x1173C,
 	0x1173F,
+	0x11C41,
+	0x11C46,
+	0x11C70,
+	0x11C72,
 	0x12470,
 	0x12475,
 	0x16A6E,
@@ -55693,7 +60637,9 @@
 	0x1BC9F,
 	0x1BCA0,
 	0x1DA87,
-	0x1DA8C
+	0x1DA8C,
+	0x1E95E,
+	0x1E960
 };
 
 static const UV XPosixSpace_invlist[] = { /* for EBCDIC 1047 */
@@ -55727,7 +60673,7 @@
 };
 
 static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */
-	1279,	/* Number of elements */
+	1283,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -56929,7 +61875,7 @@
 	0xA7A8,
 	0xA7A9,
 	0xA7AA,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B5,
 	0xA7B6,
@@ -56938,6 +61884,8 @@
 	0xFF3B,
 	0x10400,
 	0x10428,
+	0x104B0,
+	0x104D4,
 	0x10C80,
 	0x10CB3,
 	0x118A0,
@@ -57004,6 +61952,8 @@
 	0x1D7A9,
 	0x1D7CA,
 	0x1D7CB,
+	0x1E900,
+	0x1E922,
 	0x1F130,
 	0x1F14A,
 	0x1F150,
@@ -57013,7 +61963,7 @@
 };
 
 static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
-	1335,	/* Number of elements */
+	1385,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -57140,6 +62090,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x964,
 	0x966,
@@ -57318,7 +62272,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -57360,7 +62314,7 @@
 	0xD49,
 	0xD4A,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -57596,6 +62550,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -57604,7 +62560,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -57775,7 +62731,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -57783,7 +62739,7 @@
 	0xA840,
 	0xA874,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -57948,6 +62904,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -58052,6 +63012,8 @@
 	0x11212,
 	0x11213,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -58096,6 +63058,10 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C6,
 	0x114C7,
@@ -58130,6 +63096,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -58166,6 +63146,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -58264,10 +63250,24 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -58448,8 +63448,1291 @@
 	0xFA
 };
 
+static const UV Assigned_invlist[] = { /* for EBCDIC 037 */
+	1276,	/* Number of elements */
+	148565664, /* Version and data structure type */
+	0,	/* 0 if the list starts at 0;
+		   1 if it starts at the element beyond 0 */
+	0x0,
+	0x378,
+	0x37A,
+	0x380,
+	0x384,
+	0x38B,
+	0x38C,
+	0x38D,
+	0x38E,
+	0x3A2,
+	0x3A3,
+	0x530,
+	0x531,
+	0x557,
+	0x559,
+	0x560,
+	0x561,
+	0x588,
+	0x589,
+	0x58B,
+	0x58D,
+	0x590,
+	0x591,
+	0x5C8,
+	0x5D0,
+	0x5EB,
+	0x5F0,
+	0x5F5,
+	0x600,
+	0x61D,
+	0x61E,
+	0x70E,
+	0x70F,
+	0x74B,
+	0x74D,
+	0x7B2,
+	0x7C0,
+	0x7FB,
+	0x800,
+	0x82E,
+	0x830,
+	0x83F,
+	0x840,
+	0x85C,
+	0x85E,
+	0x85F,
+	0x8A0,
+	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x984,
+	0x985,
+	0x98D,
+	0x98F,
+	0x991,
+	0x993,
+	0x9A9,
+	0x9AA,
+	0x9B1,
+	0x9B2,
+	0x9B3,
+	0x9B6,
+	0x9BA,
+	0x9BC,
+	0x9C5,
+	0x9C7,
+	0x9C9,
+	0x9CB,
+	0x9CF,
+	0x9D7,
+	0x9D8,
+	0x9DC,
+	0x9DE,
+	0x9DF,
+	0x9E4,
+	0x9E6,
+	0x9FC,
+	0xA01,
+	0xA04,
+	0xA05,
+	0xA0B,
+	0xA0F,
+	0xA11,
+	0xA13,
+	0xA29,
+	0xA2A,
+	0xA31,
+	0xA32,
+	0xA34,
+	0xA35,
+	0xA37,
+	0xA38,
+	0xA3A,
+	0xA3C,
+	0xA3D,
+	0xA3E,
+	0xA43,
+	0xA47,
+	0xA49,
+	0xA4B,
+	0xA4E,
+	0xA51,
+	0xA52,
+	0xA59,
+	0xA5D,
+	0xA5E,
+	0xA5F,
+	0xA66,
+	0xA76,
+	0xA81,
+	0xA84,
+	0xA85,
+	0xA8E,
+	0xA8F,
+	0xA92,
+	0xA93,
+	0xAA9,
+	0xAAA,
+	0xAB1,
+	0xAB2,
+	0xAB4,
+	0xAB5,
+	0xABA,
+	0xABC,
+	0xAC6,
+	0xAC7,
+	0xACA,
+	0xACB,
+	0xACE,
+	0xAD0,
+	0xAD1,
+	0xAE0,
+	0xAE4,
+	0xAE6,
+	0xAF2,
+	0xAF9,
+	0xAFA,
+	0xB01,
+	0xB04,
+	0xB05,
+	0xB0D,
+	0xB0F,
+	0xB11,
+	0xB13,
+	0xB29,
+	0xB2A,
+	0xB31,
+	0xB32,
+	0xB34,
+	0xB35,
+	0xB3A,
+	0xB3C,
+	0xB45,
+	0xB47,
+	0xB49,
+	0xB4B,
+	0xB4E,
+	0xB56,
+	0xB58,
+	0xB5C,
+	0xB5E,
+	0xB5F,
+	0xB64,
+	0xB66,
+	0xB78,
+	0xB82,
+	0xB84,
+	0xB85,
+	0xB8B,
+	0xB8E,
+	0xB91,
+	0xB92,
+	0xB96,
+	0xB99,
+	0xB9B,
+	0xB9C,
+	0xB9D,
+	0xB9E,
+	0xBA0,
+	0xBA3,
+	0xBA5,
+	0xBA8,
+	0xBAB,
+	0xBAE,
+	0xBBA,
+	0xBBE,
+	0xBC3,
+	0xBC6,
+	0xBC9,
+	0xBCA,
+	0xBCE,
+	0xBD0,
+	0xBD1,
+	0xBD7,
+	0xBD8,
+	0xBE6,
+	0xBFB,
+	0xC00,
+	0xC04,
+	0xC05,
+	0xC0D,
+	0xC0E,
+	0xC11,
+	0xC12,
+	0xC29,
+	0xC2A,
+	0xC3A,
+	0xC3D,
+	0xC45,
+	0xC46,
+	0xC49,
+	0xC4A,
+	0xC4E,
+	0xC55,
+	0xC57,
+	0xC58,
+	0xC5B,
+	0xC60,
+	0xC64,
+	0xC66,
+	0xC70,
+	0xC78,
+	0xC84,
+	0xC85,
+	0xC8D,
+	0xC8E,
+	0xC91,
+	0xC92,
+	0xCA9,
+	0xCAA,
+	0xCB4,
+	0xCB5,
+	0xCBA,
+	0xCBC,
+	0xCC5,
+	0xCC6,
+	0xCC9,
+	0xCCA,
+	0xCCE,
+	0xCD5,
+	0xCD7,
+	0xCDE,
+	0xCDF,
+	0xCE0,
+	0xCE4,
+	0xCE6,
+	0xCF0,
+	0xCF1,
+	0xCF3,
+	0xD01,
+	0xD04,
+	0xD05,
+	0xD0D,
+	0xD0E,
+	0xD11,
+	0xD12,
+	0xD3B,
+	0xD3D,
+	0xD45,
+	0xD46,
+	0xD49,
+	0xD4A,
+	0xD50,
+	0xD54,
+	0xD64,
+	0xD66,
+	0xD80,
+	0xD82,
+	0xD84,
+	0xD85,
+	0xD97,
+	0xD9A,
+	0xDB2,
+	0xDB3,
+	0xDBC,
+	0xDBD,
+	0xDBE,
+	0xDC0,
+	0xDC7,
+	0xDCA,
+	0xDCB,
+	0xDCF,
+	0xDD5,
+	0xDD6,
+	0xDD7,
+	0xDD8,
+	0xDE0,
+	0xDE6,
+	0xDF0,
+	0xDF2,
+	0xDF5,
+	0xE01,
+	0xE3B,
+	0xE3F,
+	0xE5C,
+	0xE81,
+	0xE83,
+	0xE84,
+	0xE85,
+	0xE87,
+	0xE89,
+	0xE8A,
+	0xE8B,
+	0xE8D,
+	0xE8E,
+	0xE94,
+	0xE98,
+	0xE99,
+	0xEA0,
+	0xEA1,
+	0xEA4,
+	0xEA5,
+	0xEA6,
+	0xEA7,
+	0xEA8,
+	0xEAA,
+	0xEAC,
+	0xEAD,
+	0xEBA,
+	0xEBB,
+	0xEBE,
+	0xEC0,
+	0xEC5,
+	0xEC6,
+	0xEC7,
+	0xEC8,
+	0xECE,
+	0xED0,
+	0xEDA,
+	0xEDC,
+	0xEE0,
+	0xF00,
+	0xF48,
+	0xF49,
+	0xF6D,
+	0xF71,
+	0xF98,
+	0xF99,
+	0xFBD,
+	0xFBE,
+	0xFCD,
+	0xFCE,
+	0xFDB,
+	0x1000,
+	0x10C6,
+	0x10C7,
+	0x10C8,
+	0x10CD,
+	0x10CE,
+	0x10D0,
+	0x1249,
+	0x124A,
+	0x124E,
+	0x1250,
+	0x1257,
+	0x1258,
+	0x1259,
+	0x125A,
+	0x125E,
+	0x1260,
+	0x1289,
+	0x128A,
+	0x128E,
+	0x1290,
+	0x12B1,
+	0x12B2,
+	0x12B6,
+	0x12B8,
+	0x12BF,
+	0x12C0,
+	0x12C1,
+	0x12C2,
+	0x12C6,
+	0x12C8,
+	0x12D7,
+	0x12D8,
+	0x1311,
+	0x1312,
+	0x1316,
+	0x1318,
+	0x135B,
+	0x135D,
+	0x137D,
+	0x1380,
+	0x139A,
+	0x13A0,
+	0x13F6,
+	0x13F8,
+	0x13FE,
+	0x1400,
+	0x169D,
+	0x16A0,
+	0x16F9,
+	0x1700,
+	0x170D,
+	0x170E,
+	0x1715,
+	0x1720,
+	0x1737,
+	0x1740,
+	0x1754,
+	0x1760,
+	0x176D,
+	0x176E,
+	0x1771,
+	0x1772,
+	0x1774,
+	0x1780,
+	0x17DE,
+	0x17E0,
+	0x17EA,
+	0x17F0,
+	0x17FA,
+	0x1800,
+	0x180F,
+	0x1810,
+	0x181A,
+	0x1820,
+	0x1878,
+	0x1880,
+	0x18AB,
+	0x18B0,
+	0x18F6,
+	0x1900,
+	0x191F,
+	0x1920,
+	0x192C,
+	0x1930,
+	0x193C,
+	0x1940,
+	0x1941,
+	0x1944,
+	0x196E,
+	0x1970,
+	0x1975,
+	0x1980,
+	0x19AC,
+	0x19B0,
+	0x19CA,
+	0x19D0,
+	0x19DB,
+	0x19DE,
+	0x1A1C,
+	0x1A1E,
+	0x1A5F,
+	0x1A60,
+	0x1A7D,
+	0x1A7F,
+	0x1A8A,
+	0x1A90,
+	0x1A9A,
+	0x1AA0,
+	0x1AAE,
+	0x1AB0,
+	0x1ABF,
+	0x1B00,
+	0x1B4C,
+	0x1B50,
+	0x1B7D,
+	0x1B80,
+	0x1BF4,
+	0x1BFC,
+	0x1C38,
+	0x1C3B,
+	0x1C4A,
+	0x1C4D,
+	0x1C89,
+	0x1CC0,
+	0x1CC8,
+	0x1CD0,
+	0x1CF7,
+	0x1CF8,
+	0x1CFA,
+	0x1D00,
+	0x1DF6,
+	0x1DFB,
+	0x1F16,
+	0x1F18,
+	0x1F1E,
+	0x1F20,
+	0x1F46,
+	0x1F48,
+	0x1F4E,
+	0x1F50,
+	0x1F58,
+	0x1F59,
+	0x1F5A,
+	0x1F5B,
+	0x1F5C,
+	0x1F5D,
+	0x1F5E,
+	0x1F5F,
+	0x1F7E,
+	0x1F80,
+	0x1FB5,
+	0x1FB6,
+	0x1FC5,
+	0x1FC6,
+	0x1FD4,
+	0x1FD6,
+	0x1FDC,
+	0x1FDD,
+	0x1FF0,
+	0x1FF2,
+	0x1FF5,
+	0x1FF6,
+	0x1FFF,
+	0x2000,
+	0x2065,
+	0x2066,
+	0x2072,
+	0x2074,
+	0x208F,
+	0x2090,
+	0x209D,
+	0x20A0,
+	0x20BF,
+	0x20D0,
+	0x20F1,
+	0x2100,
+	0x218C,
+	0x2190,
+	0x23FF,
+	0x2400,
+	0x2427,
+	0x2440,
+	0x244B,
+	0x2460,
+	0x2B74,
+	0x2B76,
+	0x2B96,
+	0x2B98,
+	0x2BBA,
+	0x2BBD,
+	0x2BC9,
+	0x2BCA,
+	0x2BD2,
+	0x2BEC,
+	0x2BF0,
+	0x2C00,
+	0x2C2F,
+	0x2C30,
+	0x2C5F,
+	0x2C60,
+	0x2CF4,
+	0x2CF9,
+	0x2D26,
+	0x2D27,
+	0x2D28,
+	0x2D2D,
+	0x2D2E,
+	0x2D30,
+	0x2D68,
+	0x2D6F,
+	0x2D71,
+	0x2D7F,
+	0x2D97,
+	0x2DA0,
+	0x2DA7,
+	0x2DA8,
+	0x2DAF,
+	0x2DB0,
+	0x2DB7,
+	0x2DB8,
+	0x2DBF,
+	0x2DC0,
+	0x2DC7,
+	0x2DC8,
+	0x2DCF,
+	0x2DD0,
+	0x2DD7,
+	0x2DD8,
+	0x2DDF,
+	0x2DE0,
+	0x2E45,
+	0x2E80,
+	0x2E9A,
+	0x2E9B,
+	0x2EF4,
+	0x2F00,
+	0x2FD6,
+	0x2FF0,
+	0x2FFC,
+	0x3000,
+	0x3040,
+	0x3041,
+	0x3097,
+	0x3099,
+	0x3100,
+	0x3105,
+	0x312E,
+	0x3131,
+	0x318F,
+	0x3190,
+	0x31BB,
+	0x31C0,
+	0x31E4,
+	0x31F0,
+	0x321F,
+	0x3220,
+	0x32FF,
+	0x3300,
+	0x4DB6,
+	0x4DC0,
+	0x9FD6,
+	0xA000,
+	0xA48D,
+	0xA490,
+	0xA4C7,
+	0xA4D0,
+	0xA62C,
+	0xA640,
+	0xA6F8,
+	0xA700,
+	0xA7AF,
+	0xA7B0,
+	0xA7B8,
+	0xA7F7,
+	0xA82C,
+	0xA830,
+	0xA83A,
+	0xA840,
+	0xA878,
+	0xA880,
+	0xA8C6,
+	0xA8CE,
+	0xA8DA,
+	0xA8E0,
+	0xA8FE,
+	0xA900,
+	0xA954,
+	0xA95F,
+	0xA97D,
+	0xA980,
+	0xA9CE,
+	0xA9CF,
+	0xA9DA,
+	0xA9DE,
+	0xA9FF,
+	0xAA00,
+	0xAA37,
+	0xAA40,
+	0xAA4E,
+	0xAA50,
+	0xAA5A,
+	0xAA5C,
+	0xAAC3,
+	0xAADB,
+	0xAAF7,
+	0xAB01,
+	0xAB07,
+	0xAB09,
+	0xAB0F,
+	0xAB11,
+	0xAB17,
+	0xAB20,
+	0xAB27,
+	0xAB28,
+	0xAB2F,
+	0xAB30,
+	0xAB66,
+	0xAB70,
+	0xABEE,
+	0xABF0,
+	0xABFA,
+	0xAC00,
+	0xD7A4,
+	0xD7B0,
+	0xD7C7,
+	0xD7CB,
+	0xD7FC,
+	0xD800,
+	0xFA6E,
+	0xFA70,
+	0xFADA,
+	0xFB00,
+	0xFB07,
+	0xFB13,
+	0xFB18,
+	0xFB1D,
+	0xFB37,
+	0xFB38,
+	0xFB3D,
+	0xFB3E,
+	0xFB3F,
+	0xFB40,
+	0xFB42,
+	0xFB43,
+	0xFB45,
+	0xFB46,
+	0xFBC2,
+	0xFBD3,
+	0xFD40,
+	0xFD50,
+	0xFD90,
+	0xFD92,
+	0xFDC8,
+	0xFDF0,
+	0xFDFE,
+	0xFE00,
+	0xFE1A,
+	0xFE20,
+	0xFE53,
+	0xFE54,
+	0xFE67,
+	0xFE68,
+	0xFE6C,
+	0xFE70,
+	0xFE75,
+	0xFE76,
+	0xFEFD,
+	0xFEFF,
+	0xFF00,
+	0xFF01,
+	0xFFBF,
+	0xFFC2,
+	0xFFC8,
+	0xFFCA,
+	0xFFD0,
+	0xFFD2,
+	0xFFD8,
+	0xFFDA,
+	0xFFDD,
+	0xFFE0,
+	0xFFE7,
+	0xFFE8,
+	0xFFEF,
+	0xFFF9,
+	0xFFFE,
+	0x10000,
+	0x1000C,
+	0x1000D,
+	0x10027,
+	0x10028,
+	0x1003B,
+	0x1003C,
+	0x1003E,
+	0x1003F,
+	0x1004E,
+	0x10050,
+	0x1005E,
+	0x10080,
+	0x100FB,
+	0x10100,
+	0x10103,
+	0x10107,
+	0x10134,
+	0x10137,
+	0x1018F,
+	0x10190,
+	0x1019C,
+	0x101A0,
+	0x101A1,
+	0x101D0,
+	0x101FE,
+	0x10280,
+	0x1029D,
+	0x102A0,
+	0x102D1,
+	0x102E0,
+	0x102FC,
+	0x10300,
+	0x10324,
+	0x10330,
+	0x1034B,
+	0x10350,
+	0x1037B,
+	0x10380,
+	0x1039E,
+	0x1039F,
+	0x103C4,
+	0x103C8,
+	0x103D6,
+	0x10400,
+	0x1049E,
+	0x104A0,
+	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
+	0x10500,
+	0x10528,
+	0x10530,
+	0x10564,
+	0x1056F,
+	0x10570,
+	0x10600,
+	0x10737,
+	0x10740,
+	0x10756,
+	0x10760,
+	0x10768,
+	0x10800,
+	0x10806,
+	0x10808,
+	0x10809,
+	0x1080A,
+	0x10836,
+	0x10837,
+	0x10839,
+	0x1083C,
+	0x1083D,
+	0x1083F,
+	0x10856,
+	0x10857,
+	0x1089F,
+	0x108A7,
+	0x108B0,
+	0x108E0,
+	0x108F3,
+	0x108F4,
+	0x108F6,
+	0x108FB,
+	0x1091C,
+	0x1091F,
+	0x1093A,
+	0x1093F,
+	0x10940,
+	0x10980,
+	0x109B8,
+	0x109BC,
+	0x109D0,
+	0x109D2,
+	0x10A04,
+	0x10A05,
+	0x10A07,
+	0x10A0C,
+	0x10A14,
+	0x10A15,
+	0x10A18,
+	0x10A19,
+	0x10A34,
+	0x10A38,
+	0x10A3B,
+	0x10A3F,
+	0x10A48,
+	0x10A50,
+	0x10A59,
+	0x10A60,
+	0x10AA0,
+	0x10AC0,
+	0x10AE7,
+	0x10AEB,
+	0x10AF7,
+	0x10B00,
+	0x10B36,
+	0x10B39,
+	0x10B56,
+	0x10B58,
+	0x10B73,
+	0x10B78,
+	0x10B92,
+	0x10B99,
+	0x10B9D,
+	0x10BA9,
+	0x10BB0,
+	0x10C00,
+	0x10C49,
+	0x10C80,
+	0x10CB3,
+	0x10CC0,
+	0x10CF3,
+	0x10CFA,
+	0x10D00,
+	0x10E60,
+	0x10E7F,
+	0x11000,
+	0x1104E,
+	0x11052,
+	0x11070,
+	0x1107F,
+	0x110C2,
+	0x110D0,
+	0x110E9,
+	0x110F0,
+	0x110FA,
+	0x11100,
+	0x11135,
+	0x11136,
+	0x11144,
+	0x11150,
+	0x11177,
+	0x11180,
+	0x111CE,
+	0x111D0,
+	0x111E0,
+	0x111E1,
+	0x111F5,
+	0x11200,
+	0x11212,
+	0x11213,
+	0x1123F,
+	0x11280,
+	0x11287,
+	0x11288,
+	0x11289,
+	0x1128A,
+	0x1128E,
+	0x1128F,
+	0x1129E,
+	0x1129F,
+	0x112AA,
+	0x112B0,
+	0x112EB,
+	0x112F0,
+	0x112FA,
+	0x11300,
+	0x11304,
+	0x11305,
+	0x1130D,
+	0x1130F,
+	0x11311,
+	0x11313,
+	0x11329,
+	0x1132A,
+	0x11331,
+	0x11332,
+	0x11334,
+	0x11335,
+	0x1133A,
+	0x1133C,
+	0x11345,
+	0x11347,
+	0x11349,
+	0x1134B,
+	0x1134E,
+	0x11350,
+	0x11351,
+	0x11357,
+	0x11358,
+	0x1135D,
+	0x11364,
+	0x11366,
+	0x1136D,
+	0x11370,
+	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
+	0x11480,
+	0x114C8,
+	0x114D0,
+	0x114DA,
+	0x11580,
+	0x115B6,
+	0x115B8,
+	0x115DE,
+	0x11600,
+	0x11645,
+	0x11650,
+	0x1165A,
+	0x11660,
+	0x1166D,
+	0x11680,
+	0x116B8,
+	0x116C0,
+	0x116CA,
+	0x11700,
+	0x1171A,
+	0x1171D,
+	0x1172C,
+	0x11730,
+	0x11740,
+	0x118A0,
+	0x118F3,
+	0x118FF,
+	0x11900,
+	0x11AC0,
+	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
+	0x12000,
+	0x1239A,
+	0x12400,
+	0x1246F,
+	0x12470,
+	0x12475,
+	0x12480,
+	0x12544,
+	0x13000,
+	0x1342F,
+	0x14400,
+	0x14647,
+	0x16800,
+	0x16A39,
+	0x16A40,
+	0x16A5F,
+	0x16A60,
+	0x16A6A,
+	0x16A6E,
+	0x16A70,
+	0x16AD0,
+	0x16AEE,
+	0x16AF0,
+	0x16AF6,
+	0x16B00,
+	0x16B46,
+	0x16B50,
+	0x16B5A,
+	0x16B5B,
+	0x16B62,
+	0x16B63,
+	0x16B78,
+	0x16B7D,
+	0x16B90,
+	0x16F00,
+	0x16F45,
+	0x16F50,
+	0x16F7F,
+	0x16F8F,
+	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
+	0x1B000,
+	0x1B002,
+	0x1BC00,
+	0x1BC6B,
+	0x1BC70,
+	0x1BC7D,
+	0x1BC80,
+	0x1BC89,
+	0x1BC90,
+	0x1BC9A,
+	0x1BC9C,
+	0x1BCA4,
+	0x1D000,
+	0x1D0F6,
+	0x1D100,
+	0x1D127,
+	0x1D129,
+	0x1D1E9,
+	0x1D200,
+	0x1D246,
+	0x1D300,
+	0x1D357,
+	0x1D360,
+	0x1D372,
+	0x1D400,
+	0x1D455,
+	0x1D456,
+	0x1D49D,
+	0x1D49E,
+	0x1D4A0,
+	0x1D4A2,
+	0x1D4A3,
+	0x1D4A5,
+	0x1D4A7,
+	0x1D4A9,
+	0x1D4AD,
+	0x1D4AE,
+	0x1D4BA,
+	0x1D4BB,
+	0x1D4BC,
+	0x1D4BD,
+	0x1D4C4,
+	0x1D4C5,
+	0x1D506,
+	0x1D507,
+	0x1D50B,
+	0x1D50D,
+	0x1D515,
+	0x1D516,
+	0x1D51D,
+	0x1D51E,
+	0x1D53A,
+	0x1D53B,
+	0x1D53F,
+	0x1D540,
+	0x1D545,
+	0x1D546,
+	0x1D547,
+	0x1D54A,
+	0x1D551,
+	0x1D552,
+	0x1D6A6,
+	0x1D6A8,
+	0x1D7CC,
+	0x1D7CE,
+	0x1DA8C,
+	0x1DA9B,
+	0x1DAA0,
+	0x1DAA1,
+	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
+	0x1E800,
+	0x1E8C5,
+	0x1E8C7,
+	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
+	0x1EE00,
+	0x1EE04,
+	0x1EE05,
+	0x1EE20,
+	0x1EE21,
+	0x1EE23,
+	0x1EE24,
+	0x1EE25,
+	0x1EE27,
+	0x1EE28,
+	0x1EE29,
+	0x1EE33,
+	0x1EE34,
+	0x1EE38,
+	0x1EE39,
+	0x1EE3A,
+	0x1EE3B,
+	0x1EE3C,
+	0x1EE42,
+	0x1EE43,
+	0x1EE47,
+	0x1EE48,
+	0x1EE49,
+	0x1EE4A,
+	0x1EE4B,
+	0x1EE4C,
+	0x1EE4D,
+	0x1EE50,
+	0x1EE51,
+	0x1EE53,
+	0x1EE54,
+	0x1EE55,
+	0x1EE57,
+	0x1EE58,
+	0x1EE59,
+	0x1EE5A,
+	0x1EE5B,
+	0x1EE5C,
+	0x1EE5D,
+	0x1EE5E,
+	0x1EE5F,
+	0x1EE60,
+	0x1EE61,
+	0x1EE63,
+	0x1EE64,
+	0x1EE65,
+	0x1EE67,
+	0x1EE6B,
+	0x1EE6C,
+	0x1EE73,
+	0x1EE74,
+	0x1EE78,
+	0x1EE79,
+	0x1EE7D,
+	0x1EE7E,
+	0x1EE7F,
+	0x1EE80,
+	0x1EE8A,
+	0x1EE8B,
+	0x1EE9C,
+	0x1EEA1,
+	0x1EEA4,
+	0x1EEA5,
+	0x1EEAA,
+	0x1EEAB,
+	0x1EEBC,
+	0x1EEF0,
+	0x1EEF2,
+	0x1F000,
+	0x1F02C,
+	0x1F030,
+	0x1F094,
+	0x1F0A0,
+	0x1F0AF,
+	0x1F0B1,
+	0x1F0C0,
+	0x1F0C1,
+	0x1F0D0,
+	0x1F0D1,
+	0x1F0F6,
+	0x1F100,
+	0x1F10D,
+	0x1F110,
+	0x1F12F,
+	0x1F130,
+	0x1F16C,
+	0x1F170,
+	0x1F1AD,
+	0x1F1E6,
+	0x1F203,
+	0x1F210,
+	0x1F23C,
+	0x1F240,
+	0x1F249,
+	0x1F250,
+	0x1F252,
+	0x1F300,
+	0x1F6D3,
+	0x1F6E0,
+	0x1F6ED,
+	0x1F6F0,
+	0x1F6F7,
+	0x1F700,
+	0x1F774,
+	0x1F780,
+	0x1F7D5,
+	0x1F800,
+	0x1F80C,
+	0x1F810,
+	0x1F848,
+	0x1F850,
+	0x1F85A,
+	0x1F860,
+	0x1F888,
+	0x1F890,
+	0x1F8AE,
+	0x1F910,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
+	0x1F980,
+	0x1F992,
+	0x1F9C0,
+	0x1F9C1,
+	0x20000,
+	0x2A6D7,
+	0x2A700,
+	0x2B735,
+	0x2B740,
+	0x2B81E,
+	0x2B820,
+	0x2CEA2,
+	0x2F800,
+	0x2FA1E,
+	0xE0001,
+	0xE0002,
+	0xE0020,
+	0xE0080,
+	0xE0100,
+	0xE01F0,
+	0xF0000,
+	0xFFFFE,
+	0x100000,
+	0x10FFFE
+};
+
 static const UV Cased_invlist[] = { /* for EBCDIC 037 */
-	285,	/* Number of elements */
+	293,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -58540,6 +64823,8 @@
 	0x13F6,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D00,
 	0x1DC0,
 	0x1E00,
@@ -58645,7 +64930,7 @@
 	0xA78B,
 	0xA78F,
 	0xA790,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F8,
@@ -58666,6 +64951,10 @@
 	0xFF5B,
 	0x10400,
 	0x10450,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10C80,
 	0x10CB3,
 	0x10CC0,
@@ -58732,6 +65021,8 @@
 	0x1D7C3,
 	0x1D7C4,
 	0x1D7CC,
+	0x1E900,
+	0x1E944,
 	0x1F130,
 	0x1F14A,
 	0x1F150,
@@ -58797,7 +65088,7 @@
 };
 
 static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */
-	275,	/* Number of elements */
+	281,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -58875,8 +65166,6 @@
 	0x265,
 	0x267,
 	0x268,
-	0x26A,
-	0x26B,
 	0x26D,
 	0x26F,
 	0x270,
@@ -58956,6 +65245,8 @@
 	0x13F6,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D79,
 	0x1D7A,
 	0x1D7D,
@@ -59053,7 +65344,7 @@
 	0xA790,
 	0xA794,
 	0xA796,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xAB53,
@@ -59070,12 +65361,18 @@
 	0xFF5B,
 	0x10400,
 	0x10450,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10C80,
 	0x10CB3,
 	0x10CC0,
 	0x10CF3,
 	0x118A0,
-	0x118E0
+	0x118E0,
+	0x1E900,
+	0x1E944
 };
 
 static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 037 */
@@ -59149,7 +65446,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
-	1502,	/* Number of elements */
+	1615,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -59216,6 +65513,8 @@
 	0x82E,
 	0x859,
 	0x85C,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x903,
 	0x904,
@@ -59364,6 +65663,7 @@
 	0xD4A,
 	0xD4D,
 	0xD4E,
+	0xD4F,
 	0xD57,
 	0xD58,
 	0xD62,
@@ -59472,6 +65772,8 @@
 	0x180B,
 	0x180E,
 	0x180F,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x1920,
@@ -59558,10 +65860,11 @@
 	0x1CFA,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x200B,
 	0x200C,
+	0x200D,
 	0x200E,
 	0x2010,
 	0x2028,
@@ -59570,6 +65873,14 @@
 	0x2070,
 	0x20D0,
 	0x20F1,
+	0x261D,
+	0x261E,
+	0x26F9,
+	0x26FA,
+	0x270A,
+	0x270E,
+	0x2764,
+	0x2765,
 	0x2CEF,
 	0x2CF2,
 	0x2D7F,
@@ -59602,7 +65913,7 @@
 	0xA882,
 	0xA8B4,
 	0xA8C4,
-	0xA8C5,
+	0xA8C6,
 	0xA8E0,
 	0xA8F2,
 	0xA926,
@@ -60529,6 +66840,8 @@
 	0x111B6,
 	0x111BF,
 	0x111C1,
+	0x111C2,
+	0x111C4,
 	0x111CA,
 	0x111CD,
 	0x1122C,
@@ -60538,6 +66851,8 @@
 	0x11235,
 	0x11236,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x112DF,
 	0x112E0,
 	0x112E3,
@@ -60564,6 +66879,13 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11435,
+	0x11438,
+	0x11440,
+	0x11442,
+	0x11445,
+	0x11446,
+	0x11447,
 	0x114B0,
 	0x114B1,
 	0x114B3,
@@ -60608,6 +66930,22 @@
 	0x11726,
 	0x11727,
 	0x1172C,
+	0x11C2F,
+	0x11C30,
+	0x11C37,
+	0x11C38,
+	0x11C3E,
+	0x11C3F,
+	0x11C40,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CAA,
+	0x11CB1,
+	0x11CB2,
+	0x11CB4,
+	0x11CB5,
+	0x11CB7,
 	0x16AF0,
 	0x16AF5,
 	0x16B30,
@@ -60647,11 +66985,83 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E944,
+	0x1E94B,
 	0x1F1E6,
 	0x1F200,
+	0x1F385,
+	0x1F386,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
+	0x1F3FB,
+	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
+	0x1F48B,
+	0x1F48C,
+	0x1F4AA,
+	0x1F4AB,
+	0x1F575,
+	0x1F576,
+	0x1F57A,
+	0x1F57B,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
+	0x1F5E8,
+	0x1F5E9,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
+	0x1F650,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
 	0xE0000,
+	0xE0020,
+	0xE0080,
 	0xE0100,
 	0xE01F0,
 	0xE1000
@@ -60661,23 +67071,28 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define GCB_ENUM_COUNT 14
+#define GCB_ENUM_COUNT 19
 
 typedef enum {
 	GCB_Other = 0,
 	GCB_CR = 1,
 	GCB_Control = 2,
-	GCB_Extend = 3,
-	GCB_L = 4,
-	GCB_LF = 5,
-	GCB_LV = 6,
-	GCB_LVT = 7,
-	GCB_Prepend = 8,
-	GCB_Regional_Indicator = 9,
-	GCB_SpacingMark = 10,
-	GCB_T = 11,
-	GCB_V = 12,
-	GCB_EDGE = 13
+	GCB_E_Base = 3,
+	GCB_E_Base_GAZ = 4,
+	GCB_E_Modifier = 5,
+	GCB_Extend = 6,
+	GCB_Glue_After_Zwj = 7,
+	GCB_L = 8,
+	GCB_LF = 9,
+	GCB_LV = 10,
+	GCB_LVT = 11,
+	GCB_Prepend = 12,
+	GCB_Regional_Indicator = 13,
+	GCB_SpacingMark = 14,
+	GCB_T = 15,
+	GCB_V = 16,
+	GCB_ZWJ = 17,
+	GCB_EDGE = 18
 } GCB_enum;
 
 static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
@@ -60705,7 +67120,7 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -60716,7 +67131,7 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -60724,7 +67139,7 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -60745,6 +67160,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Prepend,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Other,
 	GCB_Extend,
@@ -60891,6 +67308,7 @@
 	GCB_Other,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -61003,6 +67421,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -61090,6 +67510,7 @@
 	GCB_Other,
 	GCB_Control,
 	GCB_Extend,
+	GCB_ZWJ,
 	GCB_Control,
 	GCB_Other,
 	GCB_Control,
@@ -61098,6 +67519,14 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
@@ -62040,7 +68469,7 @@
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
-	GCB_Control,
+	GCB_Prepend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
@@ -62057,6 +68486,8 @@
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Other,
+	GCB_Prepend,
+	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_SpacingMark,
@@ -62067,6 +68498,8 @@
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
@@ -62092,11 +68525,14 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -62103,6 +68539,10 @@
 	GCB_Extend,
 	GCB_SpacingMark,
 	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_SpacingMark,
@@ -62136,16 +68576,32 @@
 	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
+	GCB_SpacingMark,
+	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_SpacingMark,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_Control,
 	GCB_Other,
 	GCB_Extend,
@@ -62177,11 +68633,83 @@
 	GCB_Other,
 	GCB_Extend,
 	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
+	GCB_Extend,
+	GCB_Other,
 	GCB_Regional_Indicator,
 	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Modifier,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base_GAZ,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_Glue_After_Zwj,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
+	GCB_E_Base,
+	GCB_Other,
 	GCB_Control,
 	GCB_Extend,
 	GCB_Control,
+	GCB_Extend,
+	GCB_Control,
 	GCB_Other
 };
 
@@ -62190,7 +68718,7 @@
 #if defined(PERL_IN_UTF8_C)
 
 static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
-	1337,	/* Number of elements */
+	1387,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -62315,6 +68843,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x964,
 	0x966,
@@ -62493,7 +69025,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -62535,7 +69067,7 @@
 	0xD49,
 	0xD4A,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -62771,6 +69303,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -62779,7 +69313,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -62948,7 +69482,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -62956,7 +69490,7 @@
 	0xA840,
 	0xA874,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -63133,6 +69667,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -63237,6 +69775,8 @@
 	0x11212,
 	0x11213,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -63281,6 +69821,10 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C6,
 	0x114C7,
@@ -63315,6 +69859,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -63351,6 +69909,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -63449,10 +70013,24 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -63534,7 +70112,7 @@
 };
 
 static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
-	1151,	/* Number of elements */
+	1183,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -63661,6 +70239,8 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
 	0x904,
 	0x93A,
 	0x93D,
@@ -63789,6 +70369,8 @@
 	0xC5B,
 	0xC60,
 	0xC62,
+	0xC80,
+	0xC81,
 	0xC85,
 	0xC8D,
 	0xC8E,
@@ -63817,6 +70399,8 @@
 	0xD3E,
 	0xD4E,
 	0xD4F,
+	0xD54,
+	0xD57,
 	0xD5F,
 	0xD62,
 	0xD7A,
@@ -64011,6 +70595,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -64178,7 +70764,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -64365,6 +70951,10 @@
 	0x103D6,
 	0x10400,
 	0x1049E,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -64487,6 +71077,10 @@
 	0x11351,
 	0x1135D,
 	0x11362,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -64511,6 +71105,14 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C40,
+	0x11C41,
+	0x11C72,
+	0x11C90,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -64541,6 +71143,12 @@
 	0x16F51,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -64613,6 +71221,8 @@
 	0x1D7CC,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -64696,7 +71306,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
-	2168,	/* Number of elements */
+	2279,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -64854,6 +71464,8 @@
 	0x82E,
 	0x859,
 	0x85C,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -65151,6 +71763,8 @@
 	0x180F,
 	0x1810,
 	0x181A,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x1920,
@@ -65215,7 +71829,7 @@
 	0x1CFA,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1FFD,
 	0x1FFE,
@@ -65224,6 +71838,8 @@
 	0x2008,
 	0x200B,
 	0x200C,
+	0x200D,
+	0x200E,
 	0x2010,
 	0x2011,
 	0x2012,
@@ -65306,6 +71922,8 @@
 	0x2618,
 	0x2619,
 	0x261A,
+	0x261D,
+	0x261E,
 	0x2620,
 	0x2639,
 	0x263C,
@@ -65332,15 +71950,19 @@
 	0x26F1,
 	0x26F6,
 	0x26F7,
+	0x26F9,
+	0x26FA,
 	0x26FB,
 	0x26FD,
 	0x2705,
 	0x2708,
+	0x270A,
 	0x270E,
 	0x275B,
 	0x2761,
 	0x2762,
 	0x2764,
+	0x2765,
 	0x2768,
 	0x2769,
 	0x276A,
@@ -65445,6 +72067,7 @@
 	0x2E40,
 	0x2E42,
 	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -65595,7 +72218,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8D0,
 	0xA8DA,
@@ -66570,6 +73193,15 @@
 	0xFF71,
 	0xFF9E,
 	0xFFA0,
+	0xFFBF,
+	0xFFC2,
+	0xFFC8,
+	0xFFCA,
+	0xFFD0,
+	0xFFD2,
+	0xFFD8,
+	0xFFDA,
+	0xFFDD,
 	0xFFE0,
 	0xFFE1,
 	0xFFE2,
@@ -66662,6 +73294,8 @@
 	0x1123A,
 	0x1123B,
 	0x1123D,
+	0x1123E,
+	0x1123F,
 	0x112A9,
 	0x112AA,
 	0x112DF,
@@ -66686,6 +73320,14 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x1144F,
+	0x11450,
+	0x1145A,
+	0x1145B,
+	0x1145C,
 	0x114B0,
 	0x114C4,
 	0x114D0,
@@ -66706,6 +73348,8 @@
 	0x11643,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x116AB,
 	0x116B8,
 	0x116C0,
@@ -66718,6 +73362,21 @@
 	0x1173F,
 	0x118E0,
 	0x118EA,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C46,
+	0x11C50,
+	0x11C5A,
+	0x11C70,
+	0x11C71,
+	0x11C72,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12470,
 	0x12475,
 	0x13258,
@@ -66754,6 +73413,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16F93,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC9D,
@@ -66786,30 +73451,37 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1F000,
-	0x1F02C,
-	0x1F030,
-	0x1F094,
-	0x1F0A0,
-	0x1F0AF,
-	0x1F0B1,
-	0x1F0C0,
-	0x1F0C1,
-	0x1F0D0,
-	0x1F0D1,
-	0x1F0F6,
+	0x1F100,
+	0x1F10D,
+	0x1F110,
+	0x1F12F,
+	0x1F130,
+	0x1F16C,
+	0x1F170,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F200,
-	0x1F203,
-	0x1F210,
-	0x1F23B,
-	0x1F240,
-	0x1F249,
-	0x1F250,
-	0x1F252,
-	0x1F300,
+	0x1F385,
+	0x1F386,
 	0x1F39C,
 	0x1F39E,
 	0x1F3B5,
@@ -66816,8 +73488,28 @@
 	0x1F3B7,
 	0x1F3BC,
 	0x1F3BD,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
 	0x1F3FB,
 	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
 	0x1F4A0,
 	0x1F4A1,
 	0x1F4A2,
@@ -66824,6 +73516,8 @@
 	0x1F4A3,
 	0x1F4A4,
 	0x1F4A5,
+	0x1F4AA,
+	0x1F4AB,
 	0x1F4AF,
 	0x1F4B0,
 	0x1F4B1,
@@ -66834,30 +73528,57 @@
 	0x1F525,
 	0x1F532,
 	0x1F54A,
+	0x1F575,
+	0x1F576,
 	0x1F57A,
 	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
 	0x1F5D4,
 	0x1F5DC,
 	0x1F5F4,
 	0x1F5FA,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
 	0x1F650,
 	0x1F676,
 	0x1F679,
 	0x1F67C,
 	0x1F680,
-	0x1F6D1,
-	0x1F6E0,
-	0x1F6ED,
-	0x1F6F0,
-	0x1F6F4,
-	0x1F910,
-	0x1F919,
-	0x1F980,
-	0x1F985,
-	0x1F9C0,
-	0x1F9C1,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F700,
+	0x1F774,
+	0x1F780,
+	0x1F7D5,
+	0x1F800,
+	0x1F80C,
+	0x1F810,
+	0x1F848,
+	0x1F850,
+	0x1F85A,
+	0x1F860,
+	0x1F888,
+	0x1F890,
+	0x1F8AE,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
+	0x1FFFE,
 	0x20000,
 	0x2FFFE,
 	0x30000,
@@ -66874,7 +73595,7 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define LB_ENUM_COUNT 36
+#define LB_ENUM_COUNT 39
 
 typedef enum {
 	LB_Alphabetic = 0,
@@ -66887,32 +73608,35 @@
 	LB_Close_Punctuation = 7,
 	LB_Combining_Mark = 8,
 	LB_Contingent_Break = 9,
-	LB_Exclamation = 10,
-	LB_Glue = 11,
-	LB_H2 = 12,
-	LB_H3 = 13,
-	LB_Hebrew_Letter = 14,
-	LB_Hyphen = 15,
-	LB_Ideographic = 16,
-	LB_Infix_Numeric = 17,
-	LB_Inseparable = 18,
-	LB_JL = 19,
-	LB_JT = 20,
-	LB_JV = 21,
-	LB_Line_Feed = 22,
-	LB_Mandatory_Break = 23,
-	LB_Next_Line = 24,
-	LB_Nonstarter = 25,
-	LB_Numeric = 26,
-	LB_Open_Punctuation = 27,
-	LB_Postfix_Numeric = 28,
-	LB_Prefix_Numeric = 29,
-	LB_Quotation = 30,
-	LB_Regional_Indicator = 31,
-	LB_Space = 32,
-	LB_Word_Joiner = 33,
-	LB_ZWSpace = 34,
-	LB_EDGE = 35
+	LB_E_Base = 10,
+	LB_E_Modifier = 11,
+	LB_Exclamation = 12,
+	LB_Glue = 13,
+	LB_H2 = 14,
+	LB_H3 = 15,
+	LB_Hebrew_Letter = 16,
+	LB_Hyphen = 17,
+	LB_Ideographic = 18,
+	LB_Infix_Numeric = 19,
+	LB_Inseparable = 20,
+	LB_JL = 21,
+	LB_JT = 22,
+	LB_JV = 23,
+	LB_Line_Feed = 24,
+	LB_Mandatory_Break = 25,
+	LB_Next_Line = 26,
+	LB_Nonstarter = 27,
+	LB_Numeric = 28,
+	LB_Open_Punctuation = 29,
+	LB_Postfix_Numeric = 30,
+	LB_Prefix_Numeric = 31,
+	LB_Quotation = 32,
+	LB_Regional_Indicator = 33,
+	LB_Space = 34,
+	LB_Word_Joiner = 35,
+	LB_ZWJ = 36,
+	LB_ZWSpace = 37,
+	LB_EDGE = 38
 } LB_enum;
 
 static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
@@ -67079,6 +73803,8 @@
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Numeric,
 	LB_Alphabetic,
@@ -67373,6 +74099,8 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Exclamation,
 	LB_Numeric,
 	LB_Alphabetic,
@@ -67440,6 +74168,8 @@
 	LB_Break_After,
 	LB_ZWSpace,
 	LB_Combining_Mark,
+	LB_ZWJ,
+	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Glue,
 	LB_Break_After,
@@ -67522,6 +74252,8 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -67548,14 +74280,18 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
 	LB_Alphabetic,
 	LB_Quotation,
 	LB_Alphabetic,
 	LB_Exclamation,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
@@ -67660,6 +74396,7 @@
 	LB_Alphabetic,
 	LB_Break_After,
 	LB_Open_Punctuation,
+	LB_Break_After,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -68781,11 +75518,20 @@
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
 	LB_Nonstarter,
-	LB_Alphabetic,
+	LB_Ideographic,
 	LB_Nonstarter,
-	LB_Alphabetic,
+	LB_Ideographic,
 	LB_Nonstarter,
+	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Postfix_Numeric,
 	LB_Prefix_Numeric,
 	LB_Ideographic,
@@ -68878,6 +75624,8 @@
 	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
 	LB_Combining_Mark,
@@ -68904,11 +75652,19 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
 	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
 	LB_Break_Before,
 	LB_Break_After,
 	LB_Exclamation,
@@ -68922,6 +75678,8 @@
 	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Break_Before,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Numeric,
@@ -68934,8 +75692,23 @@
 	LB_Alphabetic,
 	LB_Numeric,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
 	LB_Break_After,
 	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
+	LB_Break_Before,
+	LB_Exclamation,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Break_After,
+	LB_Alphabetic,
 	LB_Open_Punctuation,
 	LB_Close_Punctuation,
 	LB_Alphabetic,
@@ -68970,8 +75743,14 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Nonstarter,
+	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Break_After,
 	LB_Combining_Mark,
@@ -69004,8 +75783,22 @@
 	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
-	LB_Ideographic,
+	LB_Combining_Mark,
 	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Combining_Mark,
+	LB_Alphabetic,
+	LB_Numeric,
+	LB_Alphabetic,
+	LB_Open_Punctuation,
+	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
@@ -69015,10 +75808,9 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
-	LB_Alphabetic,
 	LB_Regional_Indicator,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
@@ -69026,18 +75818,28 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Modifier,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
-	LB_Alphabetic,
+	LB_E_Base,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -69044,6 +75846,8 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -69054,15 +75858,32 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
 	LB_Alphabetic,
 	LB_Quotation,
 	LB_Nonstarter,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
 	LB_Alphabetic,
@@ -69077,7 +75898,21 @@
 	LB_Ideographic,
 	LB_Alphabetic,
 	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
+	LB_E_Base,
+	LB_Ideographic,
 	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
+	LB_Ideographic,
+	LB_Alphabetic,
 	LB_Combining_Mark,
 	LB_Alphabetic,
 	LB_Combining_Mark,
@@ -69091,7 +75926,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
-	2916,	/* Number of elements */
+	2977,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -69818,6 +76653,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -70022,6 +76861,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
+	0xC80,
 	0xC81,
 	0xC84,
 	0xC85,
@@ -70069,6 +76909,7 @@
 	0xD4A,
 	0xD4E,
 	0xD4F,
+	0xD54,
 	0xD57,
 	0xD58,
 	0xD5F,
@@ -70308,6 +77149,8 @@
 	0x1820,
 	0x1878,
 	0x1880,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x18AB,
@@ -70381,6 +77224,7 @@
 	0x1C5A,
 	0x1C7E,
 	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -70395,7 +77239,7 @@
 	0x1D00,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1E01,
 	0x1E02,
@@ -71239,7 +78083,7 @@
 	0xA7A8,
 	0xA7A9,
 	0xA7AA,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B5,
 	0xA7B6,
@@ -71263,7 +78107,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8D0,
 	0xA8DA,
@@ -71511,6 +78355,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -71645,6 +78493,8 @@
 	0x1123A,
 	0x1123B,
 	0x1123D,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -71694,6 +78544,13 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x1144D,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -71742,6 +78599,23 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C43,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -71786,6 +78660,12 @@
 	0x16F8F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -71917,10 +78797,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E922,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -72762,7 +79658,11 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Extend,
+	SB_Format,
+	SB_Extend,
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
@@ -72966,6 +79866,7 @@
 	SB_Other,
 	SB_Numeric,
 	SB_Other,
+	SB_OLetter,
 	SB_Extend,
 	SB_Other,
 	SB_OLetter,
@@ -73013,6 +79914,7 @@
 	SB_Extend,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
 	SB_Extend,
 	SB_Other,
 	SB_OLetter,
@@ -73254,6 +80156,8 @@
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
+	SB_Extend,
+	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
@@ -73324,6 +80228,7 @@
 	SB_Numeric,
 	SB_OLetter,
 	SB_STerm,
+	SB_Lower,
 	SB_Other,
 	SB_Extend,
 	SB_Other,
@@ -74455,6 +81360,10 @@
 	SB_Other,
 	SB_Numeric,
 	SB_Other,
+	SB_Upper,
+	SB_Other,
+	SB_Lower,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -74589,6 +81498,8 @@
 	SB_Other,
 	SB_STerm,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -74641,9 +81552,16 @@
 	SB_OLetter,
 	SB_Extend,
 	SB_OLetter,
+	SB_STerm,
 	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
+	SB_Extend,
+	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Numeric,
 	SB_Other,
 	SB_OLetter,
@@ -74689,11 +81607,20 @@
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
+	SB_Extend,
 	SB_Other,
+	SB_Extend,
 	SB_OLetter,
+	SB_STerm,
 	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -74700,6 +81627,14 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Numeric,
 	SB_Other,
 	SB_STerm,
@@ -74740,6 +81675,12 @@
 	SB_Other,
 	SB_OLetter,
 	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
+	SB_OLetter,
+	SB_Other,
 	SB_Extend,
 	SB_STerm,
 	SB_Format,
@@ -74861,10 +81802,26 @@
 	SB_Other,
 	SB_Extend,
 	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
+	SB_Extend,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_Extend,
 	SB_Other,
+	SB_Upper,
+	SB_Lower,
+	SB_Extend,
+	SB_Other,
+	SB_Numeric,
+	SB_Other,
 	SB_OLetter,
 	SB_Other,
 	SB_OLetter,
@@ -74951,7 +81908,7 @@
 	SB_Other,
 	SB_Format,
 	SB_Other,
-	SB_Format,
+	SB_Extend,
 	SB_Other,
 	SB_Extend,
 	SB_Other
@@ -74962,7 +81919,7 @@
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
-	1554,	/* Number of elements */
+	1676,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	0,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -75156,6 +82113,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x904,
 	0x93A,
@@ -75360,6 +82321,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
+	0xC80,
 	0xC81,
 	0xC84,
 	0xC85,
@@ -75407,6 +82369,7 @@
 	0xD4A,
 	0xD4E,
 	0xD4F,
+	0xD54,
 	0xD57,
 	0xD58,
 	0xD5F,
@@ -75594,6 +82557,8 @@
 	0x1820,
 	0x1878,
 	0x1880,
+	0x1885,
+	0x1887,
 	0x18A9,
 	0x18AA,
 	0x18AB,
@@ -75649,6 +82614,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -75663,7 +82630,7 @@
 	0x1D00,
 	0x1DC0,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1E00,
 	0x1F16,
 	0x1F18,
@@ -75705,6 +82672,7 @@
 	0x2000,
 	0x200B,
 	0x200C,
+	0x200D,
 	0x200E,
 	0x2010,
 	0x2018,
@@ -75765,6 +82733,14 @@
 	0x2189,
 	0x24B6,
 	0x24EA,
+	0x261D,
+	0x261E,
+	0x26F9,
+	0x26FA,
+	0x270A,
+	0x270E,
+	0x2764,
+	0x2765,
 	0x2C00,
 	0x2C2F,
 	0x2C30,
@@ -75862,7 +82838,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -75879,7 +82855,7 @@
 	0xA880,
 	0xA882,
 	0xA8B4,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -76089,6 +83065,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -76210,6 +83190,8 @@
 	0x11213,
 	0x1122C,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -76258,6 +83240,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x11435,
+	0x11447,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114B0,
 	0x114C4,
@@ -76297,6 +83285,22 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C2F,
+	0x11C37,
+	0x11C38,
+	0x11C40,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -76336,6 +83340,8 @@
 	0x16F8F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
 	0x1B000,
 	0x1B001,
 	0x1BC00,
@@ -76436,10 +83442,25 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E944,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -76514,6 +83535,64 @@
 	0x1F18A,
 	0x1F1E6,
 	0x1F200,
+	0x1F385,
+	0x1F386,
+	0x1F3C3,
+	0x1F3C5,
+	0x1F3CA,
+	0x1F3CC,
+	0x1F3FB,
+	0x1F400,
+	0x1F442,
+	0x1F444,
+	0x1F446,
+	0x1F451,
+	0x1F466,
+	0x1F46A,
+	0x1F46E,
+	0x1F46F,
+	0x1F470,
+	0x1F479,
+	0x1F47C,
+	0x1F47D,
+	0x1F481,
+	0x1F484,
+	0x1F485,
+	0x1F488,
+	0x1F48B,
+	0x1F48C,
+	0x1F4AA,
+	0x1F4AB,
+	0x1F575,
+	0x1F576,
+	0x1F57A,
+	0x1F57B,
+	0x1F590,
+	0x1F591,
+	0x1F595,
+	0x1F597,
+	0x1F5E8,
+	0x1F5E9,
+	0x1F645,
+	0x1F648,
+	0x1F64B,
+	0x1F650,
+	0x1F6A3,
+	0x1F6A4,
+	0x1F6B4,
+	0x1F6B7,
+	0x1F6C0,
+	0x1F6C1,
+	0x1F918,
+	0x1F91F,
+	0x1F926,
+	0x1F927,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93A,
+	0x1F93C,
+	0x1F93F,
 	0xE0001,
 	0xE0002,
 	0xE0020,
@@ -76526,7 +83605,7 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define WB_ENUM_COUNT 20
+#define WB_ENUM_COUNT 25
 
 typedef enum {
 	WB_Other = 0,
@@ -76533,22 +83612,27 @@
 	WB_ALetter = 1,
 	WB_CR = 2,
 	WB_Double_Quote = 3,
-	WB_Extend = 4,
-	WB_ExtendNumLet = 5,
-	WB_Format = 6,
-	WB_Hebrew_Letter = 7,
-	WB_Katakana = 8,
-	WB_LF = 9,
-	WB_MidLetter = 10,
-	WB_MidNum = 11,
-	WB_MidNumLet = 12,
-	WB_Newline = 13,
-	WB_Numeric = 14,
-	WB_Perl_Tailored_HSpace = 15,
-	WB_Regional_Indicator = 16,
-	WB_Single_Quote = 17,
-	WB_EDGE = 18,
-	WB_UNKNOWN = 19
+	WB_E_Base = 4,
+	WB_E_Base_GAZ = 5,
+	WB_E_Modifier = 6,
+	WB_Extend = 7,
+	WB_ExtendNumLet = 8,
+	WB_Format = 9,
+	WB_Glue_After_Zwj = 10,
+	WB_Hebrew_Letter = 11,
+	WB_Katakana = 12,
+	WB_LF = 13,
+	WB_MidLetter = 14,
+	WB_MidNum = 15,
+	WB_MidNumLet = 16,
+	WB_Newline = 17,
+	WB_Numeric = 18,
+	WB_Perl_Tailored_HSpace = 19,
+	WB_Regional_Indicator = 20,
+	WB_Single_Quote = 21,
+	WB_ZWJ = 22,
+	WB_EDGE = 23,
+	WB_UNKNOWN = 24
 } WB_enum;
 
 static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
@@ -76742,7 +83826,11 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Extend,
+	WB_Format,
+	WB_Extend,
 	WB_ALetter,
 	WB_Extend,
 	WB_ALetter,
@@ -76946,6 +84034,7 @@
 	WB_Other,
 	WB_Numeric,
 	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
@@ -76993,6 +84082,7 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
@@ -77182,6 +84272,8 @@
 	WB_ALetter,
 	WB_Extend,
 	WB_ALetter,
+	WB_Extend,
+	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
@@ -77235,6 +84327,8 @@
 	WB_Numeric,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Extend,
 	WB_Other,
 	WB_Extend,
@@ -77291,6 +84385,7 @@
 	WB_Perl_Tailored_HSpace,
 	WB_Other,
 	WB_Extend,
+	WB_ZWJ,
 	WB_Format,
 	WB_Other,
 	WB_MidNumLet,
@@ -77300,7 +84395,7 @@
 	WB_MidLetter,
 	WB_Newline,
 	WB_Format,
-	WB_Perl_Tailored_HSpace,
+	WB_ExtendNumLet,
 	WB_Other,
 	WB_ExtendNumLet,
 	WB_Other,
@@ -77351,6 +84446,14 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -77714,6 +84817,10 @@
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
 	WB_Extend,
 	WB_Other,
 	WB_Extend,
@@ -77796,6 +84903,8 @@
 	WB_ALetter,
 	WB_Extend,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -77848,8 +84957,14 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
+	WB_Extend,
+	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Numeric,
 	WB_Other,
 	WB_ALetter,
@@ -77886,11 +85001,19 @@
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
+	WB_Extend,
 	WB_Other,
+	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -77897,6 +85020,14 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Numeric,
 	WB_Other,
 	WB_ALetter,
@@ -77922,6 +85053,8 @@
 	WB_Extend,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Katakana,
 	WB_Other,
 	WB_ALetter,
@@ -78022,12 +85155,25 @@
 	WB_Other,
 	WB_Extend,
 	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
+	WB_Extend,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_Extend,
 	WB_Other,
 	WB_ALetter,
+	WB_Extend,
 	WB_Other,
+	WB_Numeric,
+	WB_Other,
 	WB_ALetter,
 	WB_Other,
 	WB_ALetter,
@@ -78098,13 +85244,73 @@
 	WB_Other,
 	WB_ALetter,
 	WB_Other,
+	WB_ALetter,
+	WB_Other,
 	WB_Regional_Indicator,
 	WB_Other,
-	WB_Format,
+	WB_E_Base,
 	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Modifier,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base_GAZ,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_Glue_After_Zwj,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
+	WB_E_Base,
+	WB_Other,
 	WB_Format,
 	WB_Other,
 	WB_Extend,
+	WB_Other,
+	WB_Extend,
 	WB_Other
 };
 
@@ -78227,7 +85433,7 @@
 };
 
 static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
-	1317,	/* Number of elements */
+	1377,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -78356,6 +85562,10 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E0,
 	0x8E3,
 	0x8EA,
 	0x8F0,
@@ -78542,7 +85752,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -78586,7 +85796,7 @@
 	0xD4D,
 	0xD4E,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -78830,6 +86040,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -79003,7 +86215,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -79018,6 +86230,8 @@
 	0xA874,
 	0xA880,
 	0xA8C4,
+	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8F2,
@@ -79176,6 +86390,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -79278,6 +86496,8 @@
 	0x11235,
 	0x11237,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -79318,6 +86538,14 @@
 	0x11358,
 	0x1135D,
 	0x11364,
+	0x11400,
+	0x11442,
+	0x11443,
+	0x11446,
+	0x11447,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C2,
 	0x114C4,
@@ -79356,6 +86584,22 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C3F,
+	0x11C40,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -79390,6 +86634,12 @@
 	0x16F7F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -79464,8 +86714,24 @@
 	0x1D7CC,
 	0x1D7CE,
 	0x1D800,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
+	0x1E947,
+	0x1E948,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -79551,7 +86817,7 @@
 };
 
 static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
-	1257,	/* Number of elements */
+	1311,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -79682,6 +86948,10 @@
 	0x859,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E0,
 	0x8E3,
 	0x8EA,
 	0x8F0,
@@ -79858,7 +87128,7 @@
 	0xC5B,
 	0xC60,
 	0xC64,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -79900,7 +87170,7 @@
 	0xD4D,
 	0xD4E,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -80122,6 +87392,8 @@
 	0x1C50,
 	0x1C5A,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CE9,
 	0x1CED,
 	0x1CEE,
@@ -80297,7 +87569,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -80312,6 +87584,8 @@
 	0xA874,
 	0xA880,
 	0xA8C4,
+	0xA8C5,
+	0xA8C6,
 	0xA8F2,
 	0xA8F8,
 	0xA8FB,
@@ -80462,6 +87736,10 @@
 	0x103D6,
 	0x10400,
 	0x1049E,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -80558,6 +87836,8 @@
 	0x11235,
 	0x11237,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -80596,6 +87876,12 @@
 	0x11358,
 	0x1135D,
 	0x11364,
+	0x11400,
+	0x11442,
+	0x11443,
+	0x11446,
+	0x11447,
+	0x1144B,
 	0x11480,
 	0x114C2,
 	0x114C4,
@@ -80626,6 +87912,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C3F,
+	0x11C40,
+	0x11C41,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -80656,6 +87956,12 @@
 	0x16F7F,
 	0x16F93,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -80728,8 +88034,22 @@
 	0x1D7C3,
 	0x1D7C4,
 	0x1D7CC,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
+	0x1E900,
+	0x1E944,
+	0x1E947,
+	0x1E948,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -80848,7 +88168,7 @@
 };
 
 static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */
-	103,	/* Number of elements */
+	109,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -80939,6 +88259,8 @@
 	0x111DA,
 	0x112F0,
 	0x112FA,
+	0x11450,
+	0x1145A,
 	0x114D0,
 	0x114DA,
 	0x11650,
@@ -80949,16 +88271,20 @@
 	0x1173A,
 	0x118E0,
 	0x118EA,
+	0x11C50,
+	0x11C5A,
 	0x16A60,
 	0x16A6A,
 	0x16B50,
 	0x16B5A,
 	0x1D7CE,
-	0x1D800
+	0x1D800,
+	0x1E950,
+	0x1E95A
 };
 
 static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
-	1237,	/* Number of elements */
+	1287,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -81013,7 +88339,9 @@
 	0x85F,
 	0x8A0,
 	0x8B5,
-	0x8E3,
+	0x8B6,
+	0x8BE,
+	0x8D4,
 	0x984,
 	0x985,
 	0x98D,
@@ -81186,8 +88514,6 @@
 	0xC66,
 	0xC70,
 	0xC78,
-	0xC80,
-	0xC81,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -81228,14 +88554,10 @@
 	0xD46,
 	0xD49,
 	0xD4A,
-	0xD4F,
-	0xD57,
-	0xD58,
-	0xD5F,
+	0xD50,
+	0xD54,
 	0xD64,
 	0xD66,
-	0xD76,
-	0xD79,
 	0xD80,
 	0xD82,
 	0xD84,
@@ -81438,7 +88760,7 @@
 	0x1C3B,
 	0x1C4A,
 	0x1C4D,
-	0x1C80,
+	0x1C89,
 	0x1CC0,
 	0x1CC8,
 	0x1CD0,
@@ -81447,7 +88769,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -81500,7 +88822,7 @@
 	0x2100,
 	0x218C,
 	0x2190,
-	0x23FB,
+	0x23FF,
 	0x2400,
 	0x2427,
 	0x2440,
@@ -81552,7 +88874,7 @@
 	0x2DD8,
 	0x2DDF,
 	0x2DE0,
-	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -81592,7 +88914,7 @@
 	0xA640,
 	0xA6F8,
 	0xA700,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -81602,7 +88924,7 @@
 	0xA840,
 	0xA878,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8DA,
 	0xA8E0,
@@ -81726,7 +89048,7 @@
 	0x10107,
 	0x10134,
 	0x10137,
-	0x1018D,
+	0x1018F,
 	0x10190,
 	0x1019C,
 	0x101A0,
@@ -81755,6 +89077,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -81866,7 +89192,7 @@
 	0x11200,
 	0x11212,
 	0x11213,
-	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -81911,6 +89237,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x11480,
 	0x114C8,
 	0x114D0,
@@ -81923,6 +89255,8 @@
 	0x11645,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x11680,
 	0x116B8,
 	0x116C0,
@@ -81939,6 +89273,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -81979,6 +89327,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -82049,10 +89403,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8C7,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -82140,25 +89510,21 @@
 	0x1F130,
 	0x1F16C,
 	0x1F170,
-	0x1F19B,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F203,
 	0x1F210,
-	0x1F23B,
+	0x1F23C,
 	0x1F240,
 	0x1F249,
 	0x1F250,
 	0x1F252,
 	0x1F300,
-	0x1F57A,
-	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
-	0x1F6D1,
+	0x1F6D3,
 	0x1F6E0,
 	0x1F6ED,
 	0x1F6F0,
-	0x1F6F4,
+	0x1F6F7,
 	0x1F700,
 	0x1F774,
 	0x1F780,
@@ -82174,9 +89540,19 @@
 	0x1F890,
 	0x1F8AE,
 	0x1F910,
-	0x1F919,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
 	0x1F980,
-	0x1F985,
+	0x1F992,
 	0x1F9C0,
 	0x1F9C1,
 	0x20000,
@@ -82202,7 +89578,7 @@
 };
 
 static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */
-	1283,	/* Number of elements */
+	1289,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -82767,6 +90143,8 @@
 	0x588,
 	0x13F8,
 	0x13FE,
+	0x1C80,
+	0x1C89,
 	0x1D00,
 	0x1DC0,
 	0x1E01,
@@ -83429,6 +90807,8 @@
 	0xFF5B,
 	0x10428,
 	0x10450,
+	0x104D8,
+	0x104FC,
 	0x10CC0,
 	0x10CF3,
 	0x118C0,
@@ -83488,11 +90868,13 @@
 	0x1D7C4,
 	0x1D7CA,
 	0x1D7CB,
-	0x1D7CC
+	0x1D7CC,
+	0x1E922,
+	0x1E944
 };
 
 static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
-	1231,	/* Number of elements */
+	1281,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -83547,7 +90929,9 @@
 	0x85F,
 	0x8A0,
 	0x8B5,
-	0x8E3,
+	0x8B6,
+	0x8BE,
+	0x8D4,
 	0x984,
 	0x985,
 	0x98D,
@@ -83720,8 +91104,6 @@
 	0xC66,
 	0xC70,
 	0xC78,
-	0xC80,
-	0xC81,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -83762,14 +91144,10 @@
 	0xD46,
 	0xD49,
 	0xD4A,
-	0xD4F,
-	0xD57,
-	0xD58,
-	0xD5F,
+	0xD50,
+	0xD54,
 	0xD64,
 	0xD66,
-	0xD76,
-	0xD79,
 	0xD80,
 	0xD82,
 	0xD84,
@@ -83970,7 +91348,7 @@
 	0x1C3B,
 	0x1C4A,
 	0x1C4D,
-	0x1C80,
+	0x1C89,
 	0x1CC0,
 	0x1CC8,
 	0x1CD0,
@@ -83979,7 +91357,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -84028,7 +91406,7 @@
 	0x2100,
 	0x218C,
 	0x2190,
-	0x23FB,
+	0x23FF,
 	0x2400,
 	0x2427,
 	0x2440,
@@ -84080,7 +91458,7 @@
 	0x2DD8,
 	0x2DDF,
 	0x2DE0,
-	0x2E43,
+	0x2E45,
 	0x2E80,
 	0x2E9A,
 	0x2E9B,
@@ -84120,7 +91498,7 @@
 	0xA640,
 	0xA6F8,
 	0xA700,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -84130,7 +91508,7 @@
 	0xA840,
 	0xA878,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8CE,
 	0xA8DA,
 	0xA8E0,
@@ -84254,7 +91632,7 @@
 	0x10107,
 	0x10134,
 	0x10137,
-	0x1018D,
+	0x1018F,
 	0x10190,
 	0x1019C,
 	0x101A0,
@@ -84283,6 +91661,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -84394,7 +91776,7 @@
 	0x11200,
 	0x11212,
 	0x11213,
-	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -84439,6 +91821,12 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1145A,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x11480,
 	0x114C8,
 	0x114D0,
@@ -84451,6 +91839,8 @@
 	0x11645,
 	0x11650,
 	0x1165A,
+	0x11660,
+	0x1166D,
 	0x11680,
 	0x116B8,
 	0x116C0,
@@ -84467,6 +91857,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C46,
+	0x11C50,
+	0x11C6D,
+	0x11C70,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -84507,6 +91911,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -84577,10 +91987,26 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8C7,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
+	0x1E95E,
+	0x1E960,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -84668,25 +92094,21 @@
 	0x1F130,
 	0x1F16C,
 	0x1F170,
-	0x1F19B,
+	0x1F1AD,
 	0x1F1E6,
 	0x1F203,
 	0x1F210,
-	0x1F23B,
+	0x1F23C,
 	0x1F240,
 	0x1F249,
 	0x1F250,
 	0x1F252,
 	0x1F300,
-	0x1F57A,
-	0x1F57B,
-	0x1F5A4,
-	0x1F5A5,
-	0x1F6D1,
+	0x1F6D3,
 	0x1F6E0,
 	0x1F6ED,
 	0x1F6F0,
-	0x1F6F4,
+	0x1F6F7,
 	0x1F700,
 	0x1F774,
 	0x1F780,
@@ -84702,9 +92124,19 @@
 	0x1F890,
 	0x1F8AE,
 	0x1F910,
-	0x1F919,
+	0x1F91F,
+	0x1F920,
+	0x1F928,
+	0x1F930,
+	0x1F931,
+	0x1F933,
+	0x1F93F,
+	0x1F940,
+	0x1F94C,
+	0x1F950,
+	0x1F95F,
 	0x1F980,
-	0x1F985,
+	0x1F992,
 	0x1F9C0,
 	0x1F9C1,
 	0x20000,
@@ -84730,7 +92162,7 @@
 };
 
 static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */
-	323,	/* Number of elements */
+	337,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -84906,7 +92338,7 @@
 	0x2E00,
 	0x2E2F,
 	0x2E30,
-	0x2E43,
+	0x2E45,
 	0x3001,
 	0x3004,
 	0x3008,
@@ -85035,6 +92467,12 @@
 	0x1123E,
 	0x112A9,
 	0x112AA,
+	0x1144B,
+	0x11450,
+	0x1145B,
+	0x1145C,
+	0x1145D,
+	0x1145E,
 	0x114C6,
 	0x114C7,
 	0x115C1,
@@ -85041,8 +92479,14 @@
 	0x115D8,
 	0x11641,
 	0x11644,
+	0x11660,
+	0x1166D,
 	0x1173C,
 	0x1173F,
+	0x11C41,
+	0x11C46,
+	0x11C70,
+	0x11C72,
 	0x12470,
 	0x12475,
 	0x16A6E,
@@ -85056,7 +92500,9 @@
 	0x1BC9F,
 	0x1BCA0,
 	0x1DA87,
-	0x1DA8C
+	0x1DA8C,
+	0x1E95E,
+	0x1E960
 };
 
 static const UV XPosixSpace_invlist[] = { /* for EBCDIC 037 */
@@ -85090,7 +92536,7 @@
 };
 
 static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */
-	1275,	/* Number of elements */
+	1279,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -86288,7 +93734,7 @@
 	0xA7A8,
 	0xA7A9,
 	0xA7AA,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B5,
 	0xA7B6,
@@ -86297,6 +93743,8 @@
 	0xFF3B,
 	0x10400,
 	0x10428,
+	0x104B0,
+	0x104D4,
 	0x10C80,
 	0x10CB3,
 	0x118A0,
@@ -86363,6 +93811,8 @@
 	0x1D7A9,
 	0x1D7CA,
 	0x1D7CB,
+	0x1E900,
+	0x1E922,
 	0x1F130,
 	0x1F14A,
 	0x1F150,
@@ -86372,7 +93822,7 @@
 };
 
 static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
-	1331,	/* Number of elements */
+	1381,	/* Number of elements */
 	148565664, /* Version and data structure type */
 	1,	/* 0 if the list starts at 0;
 		   1 if it starts at the element beyond 0 */
@@ -86495,6 +93945,10 @@
 	0x85C,
 	0x8A0,
 	0x8B5,
+	0x8B6,
+	0x8BE,
+	0x8D4,
+	0x8E2,
 	0x8E3,
 	0x964,
 	0x966,
@@ -86673,7 +94127,7 @@
 	0xC64,
 	0xC66,
 	0xC70,
-	0xC81,
+	0xC80,
 	0xC84,
 	0xC85,
 	0xC8D,
@@ -86715,7 +94169,7 @@
 	0xD49,
 	0xD4A,
 	0xD4F,
-	0xD57,
+	0xD54,
 	0xD58,
 	0xD5F,
 	0xD64,
@@ -86951,6 +94405,8 @@
 	0x1C4A,
 	0x1C4D,
 	0x1C7E,
+	0x1C80,
+	0x1C89,
 	0x1CD0,
 	0x1CD3,
 	0x1CD4,
@@ -86959,7 +94415,7 @@
 	0x1CFA,
 	0x1D00,
 	0x1DF6,
-	0x1DFC,
+	0x1DFB,
 	0x1F16,
 	0x1F18,
 	0x1F1E,
@@ -87130,7 +94586,7 @@
 	0xA722,
 	0xA789,
 	0xA78B,
-	0xA7AE,
+	0xA7AF,
 	0xA7B0,
 	0xA7B8,
 	0xA7F7,
@@ -87138,7 +94594,7 @@
 	0xA840,
 	0xA874,
 	0xA880,
-	0xA8C5,
+	0xA8C6,
 	0xA8D0,
 	0xA8DA,
 	0xA8E0,
@@ -87303,6 +94759,10 @@
 	0x1049E,
 	0x104A0,
 	0x104AA,
+	0x104B0,
+	0x104D4,
+	0x104D8,
+	0x104FC,
 	0x10500,
 	0x10528,
 	0x10530,
@@ -87407,6 +94867,8 @@
 	0x11212,
 	0x11213,
 	0x11238,
+	0x1123E,
+	0x1123F,
 	0x11280,
 	0x11287,
 	0x11288,
@@ -87451,6 +94913,10 @@
 	0x1136D,
 	0x11370,
 	0x11375,
+	0x11400,
+	0x1144B,
+	0x11450,
+	0x1145A,
 	0x11480,
 	0x114C6,
 	0x114C7,
@@ -87485,6 +94951,20 @@
 	0x11900,
 	0x11AC0,
 	0x11AF9,
+	0x11C00,
+	0x11C09,
+	0x11C0A,
+	0x11C37,
+	0x11C38,
+	0x11C41,
+	0x11C50,
+	0x11C5A,
+	0x11C72,
+	0x11C90,
+	0x11C92,
+	0x11CA8,
+	0x11CA9,
+	0x11CB7,
 	0x12000,
 	0x1239A,
 	0x12400,
@@ -87521,6 +95001,12 @@
 	0x16F7F,
 	0x16F8F,
 	0x16FA0,
+	0x16FE0,
+	0x16FE1,
+	0x17000,
+	0x187ED,
+	0x18800,
+	0x18AF3,
 	0x1B000,
 	0x1B002,
 	0x1BC00,
@@ -87619,10 +95105,24 @@
 	0x1DAA0,
 	0x1DAA1,
 	0x1DAB0,
+	0x1E000,
+	0x1E007,
+	0x1E008,
+	0x1E019,
+	0x1E01B,
+	0x1E022,
+	0x1E023,
+	0x1E025,
+	0x1E026,
+	0x1E02B,
 	0x1E800,
 	0x1E8C5,
 	0x1E8D0,
 	0x1E8D7,
+	0x1E900,
+	0x1E94B,
+	0x1E950,
+	0x1E95A,
 	0x1EE00,
 	0x1EE04,
 	0x1EE05,
@@ -87735,80 +95235,94 @@
 
 #if defined(PERL_IN_REGEXEC_C)
 
-static const bool GCB_table[14][14] = {
+#define GCB_NOBREAK      0
+#define GCB_BREAKABLE    1
+#define GCB_RI_then_RI   2
+#define GCB_EX_then_EM   3
+
+static const U8 GCB_table[19][19] = {
    /* 'edg' stands for 'EDGE' */
-/*        XX CR CN EX  L LF LV LVT PP RI SM  T  V edg */
-/* XX */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  1 },
-/* CR */ { 1, 1, 1, 1, 1, 0, 1,  1, 1, 1, 1, 1, 1,  1 },
-/* CN */ { 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1 },
-/* EX */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  1 },
-/* L  */ { 1, 1, 1, 0, 0, 1, 0,  0, 1, 1, 0, 1, 0,  1 },
-/* LF */ { 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1 },
-/* LV */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 0,  1 },
-/* LVT*/ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 1,  1 },
-/* PP */ { 0, 1, 1, 0, 0, 1, 0,  0, 0, 0, 0, 0, 0,  1 },
-/* RI */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 0, 0, 1, 1,  1 },
-/* SM */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  1 },
-/* T  */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 1,  1 },
-/* V  */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 0,  1 },
-/* edg*/ { 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  0 }
+/*        XX CR CN EB EBG EM EX GAZ  L LF LV LVT PP RI SM  T  V ZWJ edg */
+/* XX */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* CR */ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 0, 1,  1, 1, 1, 1, 1, 1,  1,  1 },
+/* CN */ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1,  1 },
+/* EB */ { 1, 1, 1, 1,  1, 0, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* EBG*/ { 1, 1, 1, 1,  1, 0, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* EM */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* EX */ { 1, 1, 1, 1,  1, 3, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* GAZ*/ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* L  */ { 1, 1, 1, 1,  1, 1, 0,  1, 0, 1, 0,  0, 1, 1, 0, 1, 0,  0,  1 },
+/* LF */ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1,  1 },
+/* LV */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 0,  0,  1 },
+/* LVT*/ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 1,  0,  1 },
+/* PP */ { 0, 1, 1, 0,  0, 0, 0,  0, 0, 1, 0,  0, 0, 0, 0, 0, 0,  0,  1 },
+/* RI */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 2, 0, 1, 1,  0,  1 },
+/* SM */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* T  */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 1,  0,  1 },
+/* V  */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 0,  0,  1 },
+/* ZWJ*/ { 1, 1, 1, 1,  0, 1, 0,  0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* edg*/ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1,  0 }
 };
 
 #define LB_NOBREAK                        0
 #define LB_BREAKABLE                      1
 #define LB_NOBREAK_EVEN_WITH_SP_BETWEEN   2
-#define LB_CM_foo                         3
+#define LB_CM_ZWJ_foo                     3
 #define LB_SP_foo                         6
 #define LB_PR_or_PO_then_OP_or_HY         9
 #define LB_SY_or_IS_then_various         11
 #define LB_HY_or_BA_then_foo             13
-#define LB_various_then_PO_or_PR         16
+#define LB_RI_then_RI                    15
+#define LB_various_then_PO_or_PR         32
 
-static const U8 LB_table[36][36] = {
+static const U8 LB_table[39][39] = {
    /* 'edg' stands for 'EDGE' */
-/*        AL BA BB B2 SY CR CP CL CM CB EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZW edg */
-/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0, 0,  1 },
-/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0,  1 },
-/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0, 0,  1 },
-/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,  1 },
-/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0,  1 },
-/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0,  1 },
-/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 0,  1 },
-/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,  1 },
-/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0 }
+/*        AL BA BB B2 SY CR CP CL CM CB EB EM EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZWJ ZW edg */
+/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,  0, 0,  1 },
+/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0,  0, 0,  1 },
+/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3,  3, 0,  1 },
+/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* EB */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* EM */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,  0, 0,  1 },
+/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0,  0, 0,  1 },
+/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,  0, 0,  1 },
+/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2,  2, 0,  1 },
+/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0,15, 0, 0,  0, 0,  1 },
+/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8,  7, 0,  1 },
+/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* ZWJ*/ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3,  0, 0,  1 },
+/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1,  1, 0,  1 },
+/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  0 }
 };
 
 #define WB_NOBREAK                        0
 #define WB_BREAKABLE                      1
 #define WB_hs_then_hs                     2
-#define WB_Ex_or_FO_then_foo              3
+#define WB_Ex_or_FO_or_ZWJ_then_foo       3
 #define WB_DQ_then_HL                     4
 #define WB_HL_then_DQ                     6
 #define WB_LE_or_HL_then_MB_or_ML_or_SQ   8
@@ -87815,80 +95329,86 @@
 #define WB_MB_or_ML_or_SQ_then_LE_or_HL  10
 #define WB_MB_or_MN_or_SQ_then_NU        12
 #define WB_NU_then_MB_or_MN_or_SQ        14
+#define WB_RI_then_RI                    16
 
-static const U8 WB_table[19][19] = {
-   /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands
-    * for 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */
-/*        XX LE CR DQ Ext EX FO HL KA LF ML MN MB NL NU hs RI SQ edg */
-/* XX */ { 1, 1, 1, 1,  0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* LE */ { 1, 0, 1, 1,  0, 0, 0, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9,  1 },
-/* CR */ { 1, 1, 0, 1,  1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1 },
-/* DQ */ { 1, 1, 1, 1,  0, 1, 0, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* Ext*/ { 3, 3, 1, 3,  0, 3, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  1 },
-/* EX */ { 1, 0, 1, 1,  0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,  1 },
-/* FO */ { 3, 3, 1, 3,  0, 3, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  1 },
-/* HL */ { 1, 0, 1, 7,  0, 0, 0, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8,  1 },
-/* KA */ { 1, 1, 1, 1,  0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* LF */ { 1, 1, 0, 1,  1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1 },
-/* ML */ { 1,11, 1, 1,  0, 1, 0,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* MN */ { 1, 1, 1, 1,  0, 1, 0, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  1 },
-/* MB */ { 1,11, 1, 1,  0, 1, 0,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  1 },
-/* NL */ { 1, 1, 0, 1,  1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1 },
-/* NU */ { 1, 0, 1, 1,  0, 0, 0, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15,  1 },
-/* hs */ { 1, 1, 0, 1,  0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1,  1 },
-/* RI */ { 1, 1, 1, 1,  0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,  1 },
-/* SQ */ { 1,11, 1, 1,  0, 1, 0,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  1 },
-/* edg*/ { 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0 }
+static const U8 WB_table[24][24] = {
+   /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands for
+    * 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */
+/*        XX LE CR DQ EB EBG EM Ext EX FO GAZ HL KA LF ML MN MB NL NU hs RI SQ ZWJ edg */
+/* XX */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* LE */ { 1, 0, 1, 1, 1,  1, 1,  0, 0, 0,  1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9,  0,  1 },
+/* CR */ { 1, 1, 0, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1,  1 },
+/* DQ */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* EB */ { 1, 1, 1, 1, 1,  1, 0,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* EBG*/ { 1, 1, 1, 1, 1,  1, 0,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* EM */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* Ext*/ { 3, 3, 1, 3, 3,  3, 3,  0, 3, 0,  3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  0,  1 },
+/* EX */ { 1, 0, 1, 1, 1,  1, 1,  0, 0, 0,  1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,  0,  1 },
+/* FO */ { 3, 3, 1, 3, 3,  3, 3,  0, 3, 0,  3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  0,  1 },
+/* GAZ*/ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* HL */ { 1, 0, 1, 7, 1,  1, 1,  0, 0, 0,  1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8,  0,  1 },
+/* KA */ { 1, 1, 1, 1, 1,  1, 1,  0, 0, 0,  1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* LF */ { 1, 1, 0, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1,  1 },
+/* ML */ { 1,11, 1, 1, 1,  1, 1,  0, 1, 0,  1,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* MN */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  0,  1 },
+/* MB */ { 1,11, 1, 1, 1,  1, 1,  0, 1, 0,  1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  0,  1 },
+/* NL */ { 1, 1, 0, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1,  1 },
+/* NU */ { 1, 0, 1, 1, 1,  1, 1,  0, 0, 0,  1, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15,  0,  1 },
+/* hs */ { 1, 1, 0, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1,  0,  1 },
+/* RI */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,16, 1,  0,  1 },
+/* SQ */ { 1,11, 1, 1, 1,  1, 1,  0, 1, 0,  1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  0,  1 },
+/* ZWJ*/ { 3, 3, 1, 3, 3,  0, 3,  0, 3, 0,  0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  0,  1 },
+/* edg*/ { 1, 1, 1, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1,  0 }
 };
 
 #endif	/* defined(PERL_IN_REGEXEC_C) */
 
 /* Generated from:
- * cb3170dd603ad12ba0299440e99e8f50a8afde60ade2ffcbf1ff4a8a53854b90 lib/Unicode/UCD.pm
- * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt
- * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt
- * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt
- * 288fc7b85c76bda296e296c8465f1f4baeb456cb814430dfaa0f546bfbe86b4a lib/unicore/Blocks.txt
- * 86e075f2ede997b3fa5965516c75190b5a88bb82d302272d9c3179b7a57af03f lib/unicore/CaseFolding.txt
- * 2fafee5be73bf2817ee669c53c504a6c4aa02ac7344194af18511aea2e05d750 lib/unicore/CompositionExclusions.txt
- * 302f6d6171dc9c6165db86d0226b7923a64cea06c493d339d35436bf137606a3 lib/unicore/DAge.txt
- * ff666dece87dfdbdbf04a2e26a0bfb52c4ba98db1f8965b0b01ddb9e15f97476 lib/unicore/DCoreProperties.txt
- * 6cc76100d402d7dd12bd769ac61158b91e71aad58c8333abb848f1b9c9fdde2d lib/unicore/DNormalizationProps.txt
- * ccc571829b384b8a2c24b7a62f8aa6a891a6e8c48f08513ef84fd6da26dba4bb lib/unicore/EastAsianWidth.txt
- * 2320db06cf88c755ec7b9cfec96dd9e1d774173521dbc3ee7985377c2ab90d32 lib/unicore/HangulSyllableType.txt
- * e52216b5fdb04910e06e94f01cabdf70656b0077c92b756c7b38822626d572f2 lib/unicore/IndicPositionalCategory.txt
- * 4db71a39102e173095cb8bda8b4c35e78fe6b365e443c584b19f081d8c4894fc lib/unicore/IndicSyllabicCategory.txt
- * eeb30346bb545bb45ff16486d9234397bfe1a195bb12b54fc1d9f48f87e8aa5e lib/unicore/Jamo.txt
- * 13e2b7087bcca3163272e64e34e480534bd2f8353a0245c26e6642566f59a60d lib/unicore/LineBreak.txt
- * 9bb54cd7b5509779f269fa60341bcbfca8da8f17d3c4999e44a5a51671d3c402 lib/unicore/NameAliases.txt
- * e4c29d9ceefbe2382af819ac7646265a9e4ea599ce04a90d31bec97cfaa2848f lib/unicore/NamedSequences.txt
- * 70d40297f1bf91397fbdab5a770c12100733e67c5c3398446c5e950715d5e535 lib/unicore/PropList.txt
- * 03a440f2a4b9151043a6bb53d4a4e528b73238079f9d686dc2a5846e6895588a lib/unicore/PropValueAliases.txt
- * 8e8b48c2080d31aa6713f5535aad94a1f7bc9a65cc52563724e5e69b0a3b4196 lib/unicore/PropertyAliases.txt
- * 45d42b1ecbac2263c1c63c95104e63ea64313eb99be94542e040aea11c449f6c lib/unicore/ScriptExtensions.txt
- * 79fbd73ad82c30fdb67d36a349d12667bd58d3e9da6a8ce7dd26383b637ba85f lib/unicore/Scripts.txt
- * fb2025dae3b9b17649b6e379c1cdbddf50641267ca6d2446caeccf4a141fe167 lib/unicore/SpecialCasing.txt
- * 38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20 lib/unicore/UnicodeData.txt
- * 0cedd6e0f5cadf57ce9cfc96beccfd083b0faa0809a631a777cd25f0316bfabb lib/unicore/auxiliary/GCBTest.txt
- * 230005412f9a47128e37bc52330766aaa0b5522a53737a89cff66e891e14527a lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * 149b14ab93b06c887a958fb16d0ad01193063ef69cc14f10338ae4d0accd6c28 lib/unicore/auxiliary/LBTest.txt
- * 41bf82452d71ce15eda8c9bb1bb0c20b72205acaaf503e3cb84734ed8e85d33a lib/unicore/auxiliary/SBTest.txt
- * d3b45cdb0a73eeb9d25158336583dfc1e6f64da59537acb0008988b40e6b3b63 lib/unicore/auxiliary/SentenceBreakProperty.txt
- * a661f42a54f7cc4dded72a61c508be2b482f912d4b6cf140335010f0c684dbb9 lib/unicore/auxiliary/WBTest.txt
- * c255bd2e1f163373510679bf4b272eee97b635bfce2a6550d6c10fe5c917f01a lib/unicore/auxiliary/WordBreakProperty.txt
- * 16dac6f1c164a4f52741b71221a8aafb6acb52cd8a436af139da6e93d86efdfb lib/unicore/extracted/DBidiClass.txt
- * c4e78efc041668548117f7462af03b28dfbb2caca5d46a1ae78ae0ce0bb26c4a lib/unicore/extracted/DBinaryProperties.txt
- * 5886bb44aae8f2821663f742793cb91d4ed0923c6840f3bfb73530e37030abf8 lib/unicore/extracted/DCombiningClass.txt
- * 9edba3785ed0e6e46e10f67e2dd0ec3cb0799b7f75f526fe918429576060352e lib/unicore/extracted/DDecompositionType.txt
- * b774387f79b27ae4268ae89450f971408dc9bbbb523426482ab4375c962bd922 lib/unicore/extracted/DEastAsianWidth.txt
- * ba4207d2464077e807b20caf063041142afc0a8a38c328c5c23b3417c9f2da33 lib/unicore/extracted/DGeneralCategory.txt
- * 29fdd151266595eb1b37715937afe0727bb632a2bc1130f0d2314040175df82e lib/unicore/extracted/DJoinGroup.txt
- * 7725fe247da06986e43e89fd316b8b22a0619546d0c1ed499a94b25e9164c150 lib/unicore/extracted/DJoinType.txt
- * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt
- * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt
- * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt
- * 285aef7ed2bf69724b1fa9bba177640636f666e1a5dd0ba5e538d4790129bbfe lib/unicore/mktables
- * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version
+ * 59e717586b720a821ee0d7397679d5322e38b49f6fb7840545aedf669c733b70 lib/Unicode/UCD.pm
+ * 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 lib/unicore/ArabicShaping.txt
+ * 153f0a100c315f9f3945e78f57137611d36c44b3a975919c499fd403413fede8 lib/unicore/BidiBrackets.txt
+ * fbe806975c1bf9fc9960bbaa39ff6290c42c7da8315f9cd459109b024cc1c485 lib/unicore/BidiMirroring.txt
+ * 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 lib/unicore/Blocks.txt
+ * 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 lib/unicore/CaseFolding.txt
+ * 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee lib/unicore/CompositionExclusions.txt
+ * 5cb15b04693c43df16e0d304deca049e93b001445d163184e0ff1b7c8c852146 lib/unicore/DAge.txt
+ * 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b lib/unicore/DCoreProperties.txt
+ * 02d8e12cea7c61a9f3cc5fbf8eaceadf8da23fe83d60c64cf647088830b810cc lib/unicore/DNormalizationProps.txt
+ * 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 lib/unicore/EastAsianWidth.txt
+ * cb02ff25c375e78c82afffc852180eae7fc17c2f4434e697107720d05c52b26e lib/unicore/HangulSyllableType.txt
+ * 850043bc9db08eddb271e43ed9176b865df76745a5fb6e9a4a1d9e54e5036471 lib/unicore/IndicPositionalCategory.txt
+ * 90a3a00a5f5810850986c9279849b03c2f3133cfeeefb0554e851dd5ad7324dc lib/unicore/IndicSyllabicCategory.txt
+ * bbd36a8d27f76e0fe0f2b0ca2827ac80da4b4a8d5247f0b0670fcaaac68ae6e1 lib/unicore/Jamo.txt
+ * e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad lib/unicore/LineBreak.txt
+ * 9d5353b1d318e72a63a49aa6a6a051d350382ea44b2cf31fe925bb94ce7e129b lib/unicore/NameAliases.txt
+ * 009477f536f63016d901aeb1a4c820ad291e30e72ee9eb9ac1dfb6294a8a9bcc lib/unicore/NamedSequences.txt
+ * f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 lib/unicore/PropList.txt
+ * 56582d9875c1997876cf09305ccfc83448195de5d84d6374c78efaffeca4dfd7 lib/unicore/PropValueAliases.txt
+ * 047ab0f815b6d1b30a863d6fcbd49e6358e168a3bd6c7189e80ab9863957d222 lib/unicore/PropertyAliases.txt
+ * cde011921972dffe3e30dcbc7afbf069bf2eb01269097111dd7533b4c524caac lib/unicore/ScriptExtensions.txt
+ * fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d lib/unicore/Scripts.txt
+ * dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 lib/unicore/SpecialCasing.txt
+ * 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f lib/unicore/UnicodeData.txt
+ * c76e7ed44a602f85161758ec54d2bcbcb7baf38f97720605a3e81ce02af47061 lib/unicore/auxiliary/GCBTest.txt
+ * 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 0c609ae4a32a89905c004010ef29885df3c60a941311a1a6e16003333d7fcdc8 lib/unicore/auxiliary/LBTest.txt
+ * 26afdd5f38561167807b0f191af55b05761029ae6be2b7fe85b88f28effc66b5 lib/unicore/auxiliary/SBTest.txt
+ * 53982766eeaf26674e7e2ec956c52846d52992ea9f4f1a202d488fb5cd76dd10 lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 7f60beacc5ec5671edb56db36defc90cfc0016de4fd2bdfde7a3e4ec209840ce lib/unicore/auxiliary/WBTest.txt
+ * cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 73573a4bee7f7377d936bc1710cd578001d00ba516e72ee54e906ae51a8c1fcb lib/unicore/extracted/DBidiClass.txt
+ * ae8f55d8bb2bb69a63f70eef38cf5921fc3ba8e06d4d88f37950d32313a14754 lib/unicore/extracted/DBinaryProperties.txt
+ * cf263ac4848d47264300139f97ed15c2c22896d2cef411483cbe292098c08bea lib/unicore/extracted/DCombiningClass.txt
+ * 5bac89caf8d1fa23fcbbbf4d49ea0699b680ef1a73cbfa0daaac38c993906a74 lib/unicore/extracted/DDecompositionType.txt
+ * e17138d36cd91f0e0d16437780a887c5ac637bde0de370b96f08a3424fcc322f lib/unicore/extracted/DEastAsianWidth.txt
+ * fad25c183f4d439622c6be33c22ed709cdc4ac19feef0250527cf319a06952fe lib/unicore/extracted/DGeneralCategory.txt
+ * c0d080b188fbe67dead10a3897dd2ca23da862c7f0b03508a92dcf27cd7e1f41 lib/unicore/extracted/DJoinGroup.txt
+ * 3a8f8642084ed23b0de52af72dea0ff3d0b6928e6c7442832c663899e2b85e9d lib/unicore/extracted/DJoinType.txt
+ * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt
+ * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt
+ * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt
+ * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d lib/unicore/mktables
+ * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl
- * 12bd58cb9d5a99f631ca95e269f7f9c90dacaf81020efa5d95a995f3cdc19200 regen/mk_invlists.pl
+ * 9534d0cc3914fa1f5d574332c3199605c3d14f8691a0729d68d8498ac2b36280 regen/mk_invlists.pl
  * ex: set ro: */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/config.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/config.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/config.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -9,7 +9,7 @@
 
 /* Package name      : perl5
  * Source directory  : 
- * Configuration time: Tue Apr 11 15:40:25 2017
+ * Configuration time: Sun Feb 18 10:08:38 2018
  * Configured by     : siepo
  * Target system     : 
  */
@@ -182,7 +182,7 @@
 #define HAS_GETLOGIN		/**/
 
 /* HAS_GETPGID:
- *	This symbol, if defined, indicates to the C program that 
+ *	This symbol, if defined, indicates to the C program that
  *	the getpgid(pid) function is available to get the
  *	process group id.
  */
@@ -641,8 +641,8 @@
  *	This symbol holds the type used for the second argument to
  *	getgroups() and setgroups().  Usually, this is the same as
  *	gidtype (gid_t) , but sometimes it isn't.
- *	It can be int, ushort, gid_t, etc... 
- *	It may be necessary to include <sys/types.h> to get any 
+ *	It can be int, ushort, gid_t, etc...
+ *	It may be necessary to include <sys/types.h> to get any
  *	typedef'ed information.  This is only required if you have
  *	getgroups() or setgroups()..
  */
@@ -1398,7 +1398,7 @@
  *	This symbol contains the ~name expanded version of ARCHLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "c:\\tlperl\\lib"		/**/
+#define ARCHLIB "c:\\tlperl526\\lib"		/**/
 /*#define ARCHLIB_EXP ""	/ **/
 
 /* BIN:
@@ -1413,8 +1413,8 @@
  *	This symbol, if defined, indicates that we'd like to relocate entries
  *	in @INC at run time based on the location of the perl binary.
  */
-#define BIN "c:\\tlperl\\bin"	/**/
-#define BIN_EXP "c:\\tlperl\\bin"	/**/
+#define BIN "c:\\tlperl526\\bin"	/**/
+#define BIN_EXP "c:\\tlperl526\\bin"	/**/
 #define PERL_RELOCATABLE_INC "undef" 		/**/
 
 /* PERL_INC_VERSION_LIST:
@@ -1452,7 +1452,7 @@
  *	This symbol contains the ~name expanded version of PRIVLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "c:\\tlperl\\lib"		/**/
+#define PRIVLIB "c:\\tlperl526\\lib"		/**/
 #define PRIVLIB_EXP (PerlEnv_lib_path(PERL_VERSION_STRING, NULL))	/**/
 
 /* SITEARCH:
@@ -1470,7 +1470,7 @@
  *	This symbol contains the ~name expanded version of SITEARCH, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "c:\\tlperl\\site\\lib"		/**/
+#define SITEARCH "c:\\tlperl526\\site\\lib"		/**/
 /*#define SITEARCH_EXP ""	/ **/
 
 /* SITELIB:
@@ -1493,7 +1493,7 @@
  *	removed.  The elements in inc_version_list (inc_version_list.U) can
  *	be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "c:\\tlperl\\site\\lib"		/**/
+#define SITELIB "c:\\tlperl526\\site\\lib"		/**/
 #define SITELIB_EXP (PerlEnv_sitelib_path(PERL_VERSION_STRING, NULL))	/**/
 #define SITELIB_STEM ""		/**/
 
@@ -1538,7 +1538,7 @@
  *	feature tests from Configure are generally more reliable.
  */
 #define OSNAME "MSWin32"		/**/
-#define OSVERS "6.1"		/**/
+#define OSVERS "10.0"		/**/
 
 /* CAT2:
  *	This macro concatenates 2 tokens together.
@@ -1907,9 +1907,34 @@
  *	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
  *	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
  *	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
+ *	LONG_DOUBLE_IS_VAX_H_FLOAT
  *	LONG_DOUBLE_IS_UNKNOWN_FORMAT
  *	It is only defined if the system supports long doubles.
  */
+/* LONG_DOUBLE_STYLE_IEEE:
+ *	This symbol, if defined, indicates that the long double
+ *	is any of the IEEE 754 style long doubles:
+ *	LONG_DOUBLE_STYLE_IEEE_STD, LONG_DOUBLE_STYLE_IEEE_EXTENDED,
+ *	LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE.
+ */
+/* LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 128-bit double-double.
+ */
+/* LONG_DOUBLE_STYLE_IEEE_EXTENDED:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 80-bit IEEE 754. Note that despite the 'extended' this
+ *	is less than the 'std', since this is an extension of
+ *	the double precision.
+ */
+/* LONG_DOUBLE_STYLE_IEEE_STD:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 128-bit IEEE 754.
+ */
+/* LONG_DOUBLE_STYLE_VAX:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 128-bit VAX format H.
+ */
 /*#define  HAS_LDEXPL		/ **/
 #define HAS_LONG_DOUBLE		/**/
 #ifdef HAS_LONG_DOUBLE
@@ -1924,9 +1949,15 @@
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE	6
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE	7
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE	8
+#define LONG_DOUBLE_IS_VAX_H_FLOAT			9
 #define LONG_DOUBLE_IS_UNKNOWN_FORMAT			-1
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */
+#undef LONG_DOUBLE_STYLE_IEEE
+#undef LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
+#define LONG_DOUBLE_STYLE_IEEE_EXTENDED
+#undef LONG_DOUBLE_STYLE_IEEE_STD
+#undef LONG_DOUBLE_STYLE_VAX
 #endif
 
 /* HAS_LONG_LONG:
@@ -2845,6 +2876,13 @@
  */
 /*#define HAS_FUTIMES		/ **/
 
+/* HAS_GAI_STRERROR:
+ *	This symbol, if defined, indicates that the gai_strerror routine
+ *	is available to translate error codes returned by getaddrinfo()
+ *	into human readable strings.
+ */
+/*#define HAS_GAI_STRERROR	/ **/
+
 /* HAS_GETADDRINFO:
  *	This symbol, if defined, indicates that the getaddrinfo() function
  *	is available for use.
@@ -3211,9 +3249,19 @@
  *	This symbol, if defined, indicates that the uselocale routine is
  *	available to set the current locale for the calling thread.
  */
+/* HAS_QUERYLOCALE:
+ *	This symbol, if defined, indicates that the querylocale routine is
+ *	available to return the name of the locale for a category mask.
+ */
+/* I_XLOCALE:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include <xlocale.h> to get uselocale() and its friends.
+ */
 /*#define	HAS_NEWLOCALE	/ **/
 /*#define	HAS_FREELOCALE	/ **/
 /*#define	HAS_USELOCALE	/ **/
+/*#define	HAS_QUERYLOCALE	/ **/
+/*#define	I_XLOCALE               / **/
 
 /* HAS_NEXTAFTER:
  *	This symbol, if defined, indicates that the nextafter routine is
@@ -3467,6 +3515,13 @@
  */
 /*#define HAS_FSTATVFS		/ **/
 
+/* HAS_STRERROR_L:
+ *	This symbol, if defined, indicates that the strerror_l routine is
+ *	available to return the error message for a given errno value in
+ *	a particular locale (identified by a locale_t object).
+ */
+/*#define HAS_STRERROR_L		/ **/
+
 /* HAS_STRFTIME:
  *	This symbol, if defined, indicates that the strftime routine is
  *	available to do time formatting.
@@ -3646,6 +3701,12 @@
  */
 /*#define HAS_WRITEV		/ **/
 
+/* DEFAULT_INC_EXCLUDES_DOT:
+ *	This symbol, if defined, removes the legacy default behavior of
+ *	including '.' at the end of @INC.
+ */
+#define DEFAULT_INC_EXCLUDES_DOT	/**/
+
 /* USE_DYNAMIC_LOADING:
  *	This symbol, if defined, indicates that dynamic loading of
  *	some sort is available.
@@ -3918,8 +3979,46 @@
  *	DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
  *	DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
  *	DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
+ *	DOUBLE_IS_VAX_F_FLOAT
+ *	DOUBLE_IS_VAX_D_FLOAT
+ *	DOUBLE_IS_VAX_G_FLOAT
+ *	DOUBLE_IS_IBM_SINGLE_32_BIT
+ *	DOUBLE_IS_IBM_DOUBLE_64_BIT
+ *	DOUBLE_IS_CRAY_SINGLE_64_BIT
  *	DOUBLE_IS_UNKNOWN_FORMAT
  */
+/* DOUBLE_HAS_INF:
+ *	This symbol, if defined, indicates that the double has
+ *	the infinity.
+ */
+/* DOUBLE_HAS_NAN:
+ *	This symbol, if defined, indicates that the double has
+ *	the not-a-number.
+ */
+/* DOUBLE_HAS_NEGATIVE_ZERO:
+ *	This symbol, if defined, indicates that the double has
+ *	the negative_zero.
+ */
+/* DOUBLE_HAS_SUBNORMALS:
+ *	This symbol, if defined, indicates that the double has
+ *	the subnormals (denormals).
+ */
+/* DOUBLE_STYLE_CRAY:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit CRAY mainframe format.
+ */
+/* DOUBLE_STYLE_IBM:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit IBM mainframe format.
+ */
+/* DOUBLE_STYLE_IEEE:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit IEEE 754.
+ */
+/* DOUBLE_STYLE_VAX:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit VAX format D or G.
+ */
 #define DOUBLEKIND 3		/**/
 #define DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN	1
 #define DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN	2
@@ -3929,11 +4028,25 @@
 #define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN	6
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE	7
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE	8
+#define DOUBLE_IS_VAX_F_FLOAT	9
+#define DOUBLE_IS_VAX_D_FLOAT	10
+#define DOUBLE_IS_VAX_G_FLOAT	11
+#define DOUBLE_IS_IBM_SINGLE_32_BIT	12
+#define DOUBLE_IS_IBM_DOUBLE_64_BIT	13
+#define DOUBLE_IS_CRAY_SINGLE_64_BIT	14
 #define DOUBLE_IS_UNKNOWN_FORMAT		-1
 /*#define PERL_PRIfldbl	"Lf"	/ **/
 /*#define PERL_PRIgldbl	"Lg"	/ **/
 /*#define PERL_PRIeldbl	"Le"	/ **/
 /*#define PERL_SCNfldbl	"Lf"	/ **/
+#define DOUBLE_HAS_INF
+#define DOUBLE_HAS_NAN
+#define DOUBLE_HAS_NEGATIVE_ZERO
+#define DOUBLE_HAS_SUBNORMALS
+#undef DOUBLE_STYLE_CRAY
+#undef DOUBLE_STYLE_IBM
+#define DOUBLE_STYLE_IEEE
+#undef DOUBLE_STYLE_VAX
 
 /* DOUBLEMANTBITS:
  *	This symbol, if defined, tells how many mantissa bits

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/cop.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/cop.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/cop.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -609,10 +609,10 @@
 /* Restore old @_ */
 #define CX_POP_SAVEARRAY(cx)						\
     STMT_START {							\
-        AV *av = GvAV(PL_defgv);                                        \
+        AV *cx_pop_savearray_av = GvAV(PL_defgv);                       \
 	GvAV(PL_defgv) = cx->blk_sub.savearray;				\
         cx->blk_sub.savearray = NULL;                                   \
-        SvREFCNT_dec(av);	        				\
+        SvREFCNT_dec(cx_pop_savearray_av);	 			\
     } STMT_END
 
 /* junk in @_ spells trouble when cloning CVs and in pp_caller(), so don't
@@ -640,9 +640,12 @@
    blku_gimme is actually also only 2 bits, so could be merged with something.
 */
 
-#define CxOLD_IN_EVAL(cx)	(((cx)->blk_u16) & 0x7F)
-#define CxOLD_OP_TYPE(cx)	(((cx)->blk_u16) >> 7)
+/* blk_u16 bit usage for eval contexts: */
 
+#define CxOLD_IN_EVAL(cx)	(((cx)->blk_u16) & 0x3F) /* saved PL in_eval */
+#define CxEVAL_TXT_REFCNTED(cx)	(((cx)->blk_u16) & 0x40) /* cur_text rc++ */
+#define CxOLD_OP_TYPE(cx)	(((cx)->blk_u16) >> 7)   /* type of eval op */
+
 /* loop context */
 struct block_loop {
     LOOP *	my_op;	/* My op, that contains redo, next and last ops.  */
@@ -961,6 +964,7 @@
 #define EVAL_KEEPERR	4	/* set by Perl_call_sv if G_KEEPERR */
 #define EVAL_INREQUIRE	8	/* The code is being required. */
 #define EVAL_RE_REPARSING 0x10	/* eval_sv() called with G_RE_REPARSING */
+/* if adding extra bits, make sure they can fit in CxOLD_OP_TYPE() */
 
 /* Support for switching (stack and block) contexts.
  * This ensures magic doesn't invalidate local stack and cx pointers.

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/dosish.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/dosish.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/dosish.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -56,7 +56,7 @@
     HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM;                 \
     OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM; LOCALE_TERM;
 #endif
-#define dXSUB_SYS
+#define dXSUB_SYS dNOOP
 
 /* USEMYBINMODE
  *	This symbol, if defined, indicates that the program should

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/embed.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/embed.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/embed.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -27,23 +27,26 @@
 /* Hide global symbols */
 
 #define Gv_AMupdate(a,b)	Perl_Gv_AMupdate(aTHX_ a,b)
+#define _force_out_malformed_utf8_message(a,b,c,d)	Perl__force_out_malformed_utf8_message(aTHX_ a,b,c,d)
 #define _is_in_locale_category(a,b)	Perl__is_in_locale_category(aTHX_ a,b)
 #define _is_uni_FOO(a,b)	Perl__is_uni_FOO(aTHX_ a,b)
 #define _is_uni_perl_idcont(a)	Perl__is_uni_perl_idcont(aTHX_ a)
 #define _is_uni_perl_idstart(a)	Perl__is_uni_perl_idstart(aTHX_ a)
-#define _is_utf8_FOO(a,b)	Perl__is_utf8_FOO(aTHX_ a,b)
+#define _is_utf8_FOO(a,b,c,d,e,f,g,h)	Perl__is_utf8_FOO(aTHX_ a,b,c,d,e,f,g,h)
+#define _is_utf8_FOO_with_len(a,b,c)	Perl__is_utf8_FOO_with_len(aTHX_ a,b,c)
+#define _is_utf8_char_helper	Perl__is_utf8_char_helper
 #define _is_utf8_idcont(a)	Perl__is_utf8_idcont(aTHX_ a)
 #define _is_utf8_idstart(a)	Perl__is_utf8_idstart(aTHX_ a)
 #define _is_utf8_mark(a)	Perl__is_utf8_mark(aTHX_ a)
-#define _is_utf8_perl_idcont(a)	Perl__is_utf8_perl_idcont(aTHX_ a)
-#define _is_utf8_perl_idstart(a)	Perl__is_utf8_perl_idstart(aTHX_ a)
+#define _is_utf8_perl_idcont_with_len(a,b)	Perl__is_utf8_perl_idcont_with_len(aTHX_ a,b)
+#define _is_utf8_perl_idstart_with_len(a,b)	Perl__is_utf8_perl_idstart_with_len(aTHX_ a,b)
 #define _is_utf8_xidcont(a)	Perl__is_utf8_xidcont(aTHX_ a)
 #define _is_utf8_xidstart(a)	Perl__is_utf8_xidstart(aTHX_ a)
 #define _to_uni_fold_flags(a,b,c,d)	Perl__to_uni_fold_flags(aTHX_ a,b,c,d)
-#define _to_utf8_fold_flags(a,b,c,d)	Perl__to_utf8_fold_flags(aTHX_ a,b,c,d)
-#define _to_utf8_lower_flags(a,b,c,d)	Perl__to_utf8_lower_flags(aTHX_ a,b,c,d)
-#define _to_utf8_title_flags(a,b,c,d)	Perl__to_utf8_title_flags(aTHX_ a,b,c,d)
-#define _to_utf8_upper_flags(a,b,c,d)	Perl__to_utf8_upper_flags(aTHX_ a,b,c,d)
+#define _to_utf8_fold_flags(a,b,c,d,e,f,g)	Perl__to_utf8_fold_flags(aTHX_ a,b,c,d,e,f,g)
+#define _to_utf8_lower_flags(a,b,c,d,e,f,g)	Perl__to_utf8_lower_flags(aTHX_ a,b,c,d,e,f,g)
+#define _to_utf8_title_flags(a,b,c,d,e,f,g)	Perl__to_utf8_title_flags(aTHX_ a,b,c,d,e,f,g)
+#define _to_utf8_upper_flags(a,b,c,d,e,f,g)	Perl__to_utf8_upper_flags(aTHX_ a,b,c,d,e,f,g)
 #define amagic_call(a,b,c,d)	Perl_amagic_call(aTHX_ a,b,c,d)
 #define amagic_deref_call(a,b)	Perl_amagic_deref_call(aTHX_ a,b)
 #define apply_attrs_string(a,b,c,d)	Perl_apply_attrs_string(aTHX_ a,b,c,d)
@@ -61,6 +64,7 @@
 #define av_push(a,b)		Perl_av_push(aTHX_ a,b)
 #define av_shift(a)		Perl_av_shift(aTHX_ a)
 #define av_store(a,b,c)		Perl_av_store(aTHX_ a,b,c)
+#define av_top_index(a)		S_av_top_index(aTHX_ a)
 #define av_undef(a)		Perl_av_undef(aTHX_ a)
 #define av_unshift(a,b)		Perl_av_unshift(aTHX_ a,b)
 #define block_end(a,b)		Perl_block_end(aTHX_ a,b)
@@ -217,6 +221,7 @@
 #define gv_stashpv(a,b)		Perl_gv_stashpv(aTHX_ a,b)
 #define gv_stashpvn(a,b,c)	Perl_gv_stashpvn(aTHX_ a,b,c)
 #define gv_stashsv(a,b)		Perl_gv_stashsv(aTHX_ a,b)
+#define hv_bucket_ratio(a)	Perl_hv_bucket_ratio(aTHX_ a)
 #define hv_clear(a)		Perl_hv_clear(aTHX_ a)
 #define hv_clear_placeholders(a)	Perl_hv_clear_placeholders(aTHX_ a)
 #define hv_common(a,b,c,d,e,f,g,h)	Perl_hv_common(aTHX_ a,b,c,d,e,f,g,h)
@@ -238,12 +243,15 @@
 #define init_i18nl14n(a)	Perl_init_i18nl14n(aTHX_ a)
 #define init_stacks()		Perl_init_stacks(aTHX)
 #define init_tm(a)		Perl_init_tm(aTHX_ a)
-#define instr			Perl_instr
 #define intro_my()		Perl_intro_my(aTHX)
 #define isALNUM_lazy(a)		Perl_isALNUM_lazy(aTHX_ a)
 #define isIDFIRST_lazy(a)	Perl_isIDFIRST_lazy(aTHX_ a)
-#define is_invariant_string	Perl_is_invariant_string
+#define is_c9strict_utf8_string	S_is_c9strict_utf8_string
+#define is_c9strict_utf8_string_loclen	S_is_c9strict_utf8_string_loclen
 #define is_lvalue_sub()		Perl_is_lvalue_sub(aTHX)
+#define is_safe_syscall(a,b,c,d)	S_is_safe_syscall(aTHX_ a,b,c,d)
+#define is_strict_utf8_string	S_is_strict_utf8_string
+#define is_strict_utf8_string_loclen	S_is_strict_utf8_string_loclen
 #define is_uni_alnum(a)		Perl_is_uni_alnum(aTHX_ a)
 #define is_uni_alnum_lc(a)	Perl_is_uni_alnum_lc(aTHX_ a)
 #define is_uni_alnumc(a)	Perl_is_uni_alnumc(aTHX_ a)
@@ -282,9 +290,11 @@
 #define is_utf8_char		Perl_is_utf8_char
 #define is_utf8_cntrl(a)	Perl_is_utf8_cntrl(aTHX_ a)
 #define is_utf8_digit(a)	Perl_is_utf8_digit(aTHX_ a)
+#define is_utf8_fixed_width_buf_loclen_flags	S_is_utf8_fixed_width_buf_loclen_flags
 #define is_utf8_graph(a)	Perl_is_utf8_graph(aTHX_ a)
 #define is_utf8_idcont(a)	Perl_is_utf8_idcont(aTHX_ a)
 #define is_utf8_idfirst(a)	Perl_is_utf8_idfirst(aTHX_ a)
+#define is_utf8_invariant_string	S_is_utf8_invariant_string
 #define is_utf8_lower(a)	Perl_is_utf8_lower(aTHX_ a)
 #define is_utf8_mark(a)		Perl_is_utf8_mark(aTHX_ a)
 #define is_utf8_perl_space(a)	Perl_is_utf8_perl_space(aTHX_ a)
@@ -294,8 +304,11 @@
 #define is_utf8_punct(a)	Perl_is_utf8_punct(aTHX_ a)
 #define is_utf8_space(a)	Perl_is_utf8_space(aTHX_ a)
 #define is_utf8_string		Perl_is_utf8_string
+#define is_utf8_string_flags	S_is_utf8_string_flags
 #define is_utf8_string_loclen	Perl_is_utf8_string_loclen
+#define is_utf8_string_loclen_flags	S_is_utf8_string_loclen_flags
 #define is_utf8_upper(a)	Perl_is_utf8_upper(aTHX_ a)
+#define is_utf8_valid_partial_char_flags	S_is_utf8_valid_partial_char_flags
 #define is_utf8_xdigit(a)	Perl_is_utf8_xdigit(aTHX_ a)
 #define is_utf8_xidcont(a)	Perl_is_utf8_xidcont(aTHX_ a)
 #define is_utf8_xidfirst(a)	Perl_is_utf8_xidfirst(aTHX_ a)
@@ -421,10 +434,10 @@
 #define new_numeric(a)		Perl_new_numeric(aTHX_ a)
 #define new_stackinfo(a,b)	Perl_new_stackinfo(aTHX_ a,b)
 #define new_version(a)		Perl_new_version(aTHX_ a)
-#define ninstr			Perl_ninstr
 #define nothreadhook()		Perl_nothreadhook(aTHX)
 #define op_append_elem(a,b,c)	Perl_op_append_elem(aTHX_ a,b,c)
 #define op_append_list(a,b,c)	Perl_op_append_list(aTHX_ a,b,c)
+#define op_class(a)		Perl_op_class(aTHX_ a)
 #define op_contextualize(a,b)	Perl_op_contextualize(aTHX_ a,b)
 #define op_convert_list(a,b,c)	Perl_op_convert_list(aTHX_ a,b,c)
 #define op_dump(a)		Perl_op_dump(aTHX_ a)
@@ -443,7 +456,9 @@
 #define pad_add_name_pvn(a,b,c,d,e)	Perl_pad_add_name_pvn(aTHX_ a,b,c,d,e)
 #define pad_add_name_sv(a,b,c,d)	Perl_pad_add_name_sv(aTHX_ a,b,c,d)
 #define pad_alloc(a,b)		Perl_pad_alloc(aTHX_ a,b)
+#ifndef NO_MATHOMS
 #define pad_compname_type(a)	Perl_pad_compname_type(aTHX_ a)
+#endif
 #define pad_findmy_pv(a,b)	Perl_pad_findmy_pv(aTHX_ a,b)
 #define pad_findmy_pvn(a,b,c)	Perl_pad_findmy_pvn(aTHX_ a,b,c)
 #define pad_findmy_sv(a,b)	Perl_pad_findmy_sv(aTHX_ a,b)
@@ -632,6 +647,9 @@
 #define sv_newmortal()		Perl_sv_newmortal(aTHX)
 #define sv_newref(a)		Perl_sv_newref(aTHX_ a)
 #define sv_nosharing(a)		Perl_sv_nosharing(aTHX_ a)
+#ifndef NO_MATHOMS
+#define sv_nounlocking(a)	Perl_sv_nounlocking(aTHX_ a)
+#endif
 #define sv_nv(a)		Perl_sv_nv(aTHX_ a)
 #define sv_peek(a)		Perl_sv_peek(aTHX_ a)
 #define sv_pos_b2u(a,b)		Perl_sv_pos_b2u(aTHX_ a,b)
@@ -652,18 +670,24 @@
 #define sv_report_used()	Perl_sv_report_used(aTHX)
 #define sv_reset(a,b)		Perl_sv_reset(aTHX_ a,b)
 #define sv_rvweaken(a)		Perl_sv_rvweaken(aTHX_ a)
+#define sv_set_undef(a)		Perl_sv_set_undef(aTHX_ a)
 #define sv_setiv(a,b)		Perl_sv_setiv(aTHX_ a,b)
 #define sv_setiv_mg(a,b)	Perl_sv_setiv_mg(aTHX_ a,b)
 #define sv_setnv(a,b)		Perl_sv_setnv(aTHX_ a,b)
 #define sv_setnv_mg(a,b)	Perl_sv_setnv_mg(aTHX_ a,b)
 #define sv_setpv(a,b)		Perl_sv_setpv(aTHX_ a,b)
+#define sv_setpv_bufsize(a,b,c)	Perl_sv_setpv_bufsize(aTHX_ a,b,c)
 #define sv_setpv_mg(a,b)	Perl_sv_setpv_mg(aTHX_ a,b)
 #ifndef PERL_IMPLICIT_CONTEXT
 #define sv_setpvf		Perl_sv_setpvf
 #define sv_setpvf_mg		Perl_sv_setpvf_mg
 #endif
+#ifndef NO_MATHOMS
 #define sv_setpviv(a,b)		Perl_sv_setpviv(aTHX_ a,b)
+#endif
+#ifndef NO_MATHOMS
 #define sv_setpviv_mg(a,b)	Perl_sv_setpviv_mg(aTHX_ a,b)
+#endif
 #define sv_setpvn(a,b,c)	Perl_sv_setpvn(aTHX_ a,b,c)
 #define sv_setpvn_mg(a,b,c)	Perl_sv_setpvn_mg(aTHX_ a,b,c)
 #define sv_setref_iv(a,b,c)	Perl_sv_setref_iv(aTHX_ a,b,c)
@@ -696,8 +720,6 @@
 #define sv_vsetpvf(a,b,c)	Perl_sv_vsetpvf(aTHX_ a,b,c)
 #define sv_vsetpvf_mg(a,b,c)	Perl_sv_vsetpvf_mg(aTHX_ a,b,c)
 #define sv_vsetpvfn(a,b,c,d,e,f,g)	Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g)
-#define swash_fetch(a,b,c)	Perl_swash_fetch(aTHX_ a,b,c)
-#define swash_init(a,b,c,d,e)	Perl_swash_init(aTHX_ a,b,c,d,e)
 #define sync_locale()		Perl_sync_locale(aTHX)
 #define taint_env()		Perl_taint_env(aTHX)
 #define taint_proper(a,b)	Perl_taint_proper(aTHX_ a,b)
@@ -716,17 +738,20 @@
 #define utf16_to_utf8_reversed(a,b,c,d)	Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d)
 #define utf8_distance(a,b)	Perl_utf8_distance(aTHX_ a,b)
 #define utf8_hop		Perl_utf8_hop
+#define utf8_hop_back		Perl_utf8_hop_back
+#define utf8_hop_forward	Perl_utf8_hop_forward
+#define utf8_hop_safe		Perl_utf8_hop_safe
 #define utf8_length(a,b)	Perl_utf8_length(aTHX_ a,b)
 #define utf8_to_bytes(a,b)	Perl_utf8_to_bytes(aTHX_ a,b)
 #define utf8_to_uvchr(a,b)	Perl_utf8_to_uvchr(aTHX_ a,b)
 #define utf8_to_uvuni(a,b)	Perl_utf8_to_uvuni(aTHX_ a,b)
 #define utf8_to_uvuni_buf(a,b,c)	Perl_utf8_to_uvuni_buf(aTHX_ a,b,c)
-#define utf8n_to_uvchr(a,b,c,d)	Perl_utf8n_to_uvchr(aTHX_ a,b,c,d)
+#define utf8n_to_uvchr_error(a,b,c,d,e)	Perl_utf8n_to_uvchr_error(aTHX_ a,b,c,d,e)
 #define utf8n_to_uvuni(a,b,c,d)	Perl_utf8n_to_uvuni(aTHX_ a,b,c,d)
 #define uvoffuni_to_utf8_flags(a,b,c)	Perl_uvoffuni_to_utf8_flags(aTHX_ a,b,c)
 #define uvuni_to_utf8(a,b)	Perl_uvuni_to_utf8(aTHX_ a,b)
 #define uvuni_to_utf8_flags(a,b,c)	Perl_uvuni_to_utf8_flags(aTHX_ a,b,c)
-#define valid_utf8_to_uvchr(a,b)	Perl_valid_utf8_to_uvchr(aTHX_ a,b)
+#define valid_utf8_to_uvchr	Perl_valid_utf8_to_uvchr
 #define valid_utf8_to_uvuni(a,b)	Perl_valid_utf8_to_uvuni(aTHX_ a,b)
 #define vcmp(a,b)		Perl_vcmp(aTHX_ a,b)
 #define vcroak(a,b)		Perl_vcroak(aTHX_ a,b)
@@ -752,12 +777,12 @@
 #define whichsig_pvn(a,b)	Perl_whichsig_pvn(aTHX_ a,b)
 #define whichsig_sv(a)		Perl_whichsig_sv(aTHX_ a)
 #define wrap_op_checker(a,b,c)	Perl_wrap_op_checker(aTHX_ a,b,c)
+#if !(defined(HAS_MEMMEM))
+#define ninstr			Perl_ninstr
+#endif
 #if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO))
 #define csighandler		Perl_csighandler
 #endif
-#if !(defined(NO_MATHOMS))
-#define sv_nounlocking(a)	Perl_sv_nounlocking(aTHX_ a)
-#endif
 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
 #define my_bzero		Perl_my_bzero
 #endif
@@ -778,9 +803,6 @@
 #define my_popen(a,b)		Perl_my_popen(aTHX_ a,b)
 #endif
 #if !defined(PERL_NO_INLINE_FUNCTIONS)
-#define _is_utf8_char_slow	S__is_utf8_char_slow
-#define append_utf8_from_native_byte	S_append_utf8_from_native_byte
-#define av_top_index(a)		S_av_top_index(aTHX_ a)
 #define cx_popblock(a)		S_cx_popblock(aTHX_ a)
 #define cx_popeval(a)		S_cx_popeval(aTHX_ a)
 #define cx_popformat(a)		S_cx_popformat(aTHX_ a)
@@ -799,7 +821,6 @@
 #define cx_pushsub(a,b,c,d)	S_cx_pushsub(aTHX_ a,b,c,d)
 #define cx_pushwhen(a)		S_cx_pushwhen(aTHX_ a)
 #define cx_topblock(a)		S_cx_topblock(aTHX_ a)
-#define is_safe_syscall(a,b,c,d)	S_is_safe_syscall(aTHX_ a,b,c,d)
 #endif
 #if defined(DEBUGGING)
 #define pad_setsv(a,b)		Perl_pad_setsv(aTHX_ a,b)
@@ -844,12 +865,6 @@
 #define warn_nocontext		Perl_warn_nocontext
 #define warner_nocontext	Perl_warner_nocontext
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
-#define _new_invlist_C_array(a)	Perl__new_invlist_C_array(aTHX_ a)
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-#define _get_regclass_nonbitmap_data(a,b,c,d,e,f)	Perl__get_regclass_nonbitmap_data(aTHX_ a,b,c,d,e,f)
-#endif
 #if defined(PERL_OP_PARENT)
 #define op_parent		Perl_op_parent
 #endif
@@ -923,8 +938,8 @@
 #define do_spawn_nowait(a)	Perl_do_spawn_nowait(aTHX_ a)
 #endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
-#define _get_encoding()		Perl__get_encoding(aTHX)
 #define _warn_problematic_locale	Perl__warn_problematic_locale
+#define append_utf8_from_native_byte	S_append_utf8_from_native_byte
 #define av_reify(a)		Perl_av_reify(aTHX_ a)
 #define current_re_engine()	Perl_current_re_engine(aTHX)
 #define cv_ckproto_len_flags(a,b,c,d,e)	Perl_cv_ckproto_len_flags(aTHX_ a,b,c,d,e)
@@ -942,13 +957,20 @@
 #define reg_temp_copy(a,b)	Perl_reg_temp_copy(aTHX_ a,b)
 #define report_uninit(a)	Perl_report_uninit(aTHX_ a)
 #define sv_magicext_mglob(a)	Perl_sv_magicext_mglob(aTHX_ a)
+#define sv_only_taint_gmagic	S_sv_only_taint_gmagic
+#define swash_fetch(a,b,c)	Perl_swash_fetch(aTHX_ a,b,c)
+#define swash_init(a,b,c,d,e)	Perl_swash_init(aTHX_ a,b,c,d,e)
 #define validate_proto(a,b,c)	Perl_validate_proto(aTHX_ a,b,c)
 #define vivify_defelem(a)	Perl_vivify_defelem(aTHX_ a)
 #define yylex()			Perl_yylex(aTHX)
 #  if !defined(PERL_EXT_RE_BUILD)
 #    if defined(PERL_IN_REGCOMP_C)
+#define _append_range_to_invlist(a,b,c)	S__append_range_to_invlist(aTHX_ a,b,c)
+#define _invlist_array_init	S__invlist_array_init
 #define get_invlist_previous_index_addr	S_get_invlist_previous_index_addr
 #define invlist_clear(a)	S_invlist_clear(aTHX_ a)
+#define invlist_extend(a,b)	S_invlist_extend(aTHX_ a,b)
+#define invlist_max		S_invlist_max
 #define invlist_previous_index	S_invlist_previous_index
 #define invlist_replace_list_destroys_src(a,b)	S_invlist_replace_list_destroys_src(aTHX_ a,b)
 #define invlist_set_previous_index	S_invlist_set_previous_index
@@ -955,9 +977,6 @@
 #define invlist_trim		S_invlist_trim
 #    endif
 #  endif
-#  if !defined(PERL_NO_INLINE_FUNCTIONS)
-#define sv_only_taint_gmagic	S_sv_only_taint_gmagic
-#  endif
 #  if defined(DEBUGGING)
 #    if defined(PERL_IN_REGCOMP_C)
 #define dump_trie(a,b,c,d)	S_dump_trie(aTHX_ a,b,c,d)
@@ -964,7 +983,7 @@
 #define dump_trie_interim_list(a,b,c,d,e)	S_dump_trie_interim_list(aTHX_ a,b,c,d,e)
 #define dump_trie_interim_table(a,b,c,d,e)	S_dump_trie_interim_table(aTHX_ a,b,c,d,e)
 #define dumpuntil(a,b,c,d,e,f,g,h)	S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
-#define put_charclass_bitmap_innards(a,b,c,d,e)	S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e)
+#define put_charclass_bitmap_innards(a,b,c,d,e,f)	S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f)
 #define put_charclass_bitmap_innards_common(a,b,c,d,e,f)	S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f)
 #define put_charclass_bitmap_innards_invlist(a,b)	S_put_charclass_bitmap_innards_invlist(aTHX_ a,b)
 #define put_code_point(a,b)	S_put_code_point(aTHX_ a,b)
@@ -984,6 +1003,11 @@
 #endif
 #    endif
 #  endif
+#  if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
+#    if defined(PERL_IN_REGCOMP_C)
+#define dump_regex_sets_structures(a,b,c,d)	S_dump_regex_sets_structures(aTHX_ a,b,c,d)
+#    endif
+#  endif
 #  if defined(PERL_ANY_COW)
 #define sv_setsv_cow(a,b)	Perl_sv_setsv_cow(aTHX_ a,b)
 #  endif
@@ -991,8 +1015,6 @@
 #define sv_or_pv_pos_u2b(a,b,c,d)	S_sv_or_pv_pos_u2b(aTHX_ a,b,c,d)
 #  endif
 #  if defined(PERL_IN_REGCOMP_C)
-#define _append_range_to_invlist(a,b,c)	S__append_range_to_invlist(aTHX_ a,b,c)
-#define _invlist_array_init	S__invlist_array_init
 #define _make_exactf_invlist(a,b)	S__make_exactf_invlist(aTHX_ a,b)
 #define add_above_Latin1_folds(a,b,c)	S_add_above_Latin1_folds(aTHX_ a,b,c)
 #define add_cp_to_invlist(a,b)	S_add_cp_to_invlist(aTHX_ a,b)
@@ -1011,13 +1033,11 @@
 #define handle_regex_sets(a,b,c,d,e)	S_handle_regex_sets(aTHX_ a,b,c,d,e)
 #define invlist_clone(a)	S_invlist_clone(aTHX_ a)
 #define invlist_contents(a,b)	S_invlist_contents(aTHX_ a,b)
-#define invlist_extend(a,b)	S_invlist_extend(aTHX_ a,b)
 #define invlist_highest		S_invlist_highest
 #define invlist_is_iterating	S_invlist_is_iterating
 #define invlist_iterfinish	S_invlist_iterfinish
 #define invlist_iterinit	S_invlist_iterinit
 #define invlist_iternext	S_invlist_iternext
-#define invlist_max		S_invlist_max
 #define invlist_set_len(a,b,c)	S_invlist_set_len(aTHX_ a,b,c)
 #define is_ssc_worth_it		S_is_ssc_worth_it
 #define join_exact(a,b,c,d,e,f,g)	S_join_exact(aTHX_ a,b,c,d,e,f,g)
@@ -1029,7 +1049,6 @@
 #define reg(a,b,c,d)		S_reg(aTHX_ a,b,c,d)
 #define reg2Lanode(a,b,c,d)	S_reg2Lanode(aTHX_ a,b,c,d)
 #define reg_node(a,b)		S_reg_node(aTHX_ a,b)
-#define reg_recode(a,b)		S_reg_recode(aTHX_ a,b)
 #define reg_scan_name(a,b)	S_reg_scan_name(aTHX_ a,b)
 #define reg_skipcomment		S_reg_skipcomment
 #define reganode(a,b,c)		S_reganode(aTHX_ a,b,c)
@@ -1063,8 +1082,10 @@
 #  endif
 #  if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
 #define _invlistEQ(a,b,c)	Perl__invlistEQ(aTHX_ a,b,c)
+#define _new_invlist_C_array(a)	Perl__new_invlist_C_array(aTHX_ a)
 #  endif
 #  if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
+#define _get_regclass_nonbitmap_data(a,b,c,d,e,f)	Perl__get_regclass_nonbitmap_data(aTHX_ a,b,c,d,e,f)
 #define _load_PL_utf8_foldclosures()	Perl__load_PL_utf8_foldclosures(aTHX)
 #ifndef PERL_IMPLICIT_CONTEXT
 #define re_printf		Perl_re_printf
@@ -1104,29 +1125,36 @@
 #define advance_one_LB(a,b,c)	S_advance_one_LB(aTHX_ a,b,c)
 #define advance_one_SB(a,b,c)	S_advance_one_SB(aTHX_ a,b,c)
 #define advance_one_WB(a,b,c,d)	S_advance_one_WB(aTHX_ a,b,c,d)
+#define backup_one_GCB(a,b,c)	S_backup_one_GCB(aTHX_ a,b,c)
 #define backup_one_LB(a,b,c)	S_backup_one_LB(aTHX_ a,b,c)
 #define backup_one_SB(a,b,c)	S_backup_one_SB(aTHX_ a,b,c)
 #define backup_one_WB(a,b,c,d)	S_backup_one_WB(aTHX_ a,b,c,d)
 #define find_byclass(a,b,c,d,e)	S_find_byclass(aTHX_ a,b,c,d,e)
-#define isFOO_lc(a,b)		S_isFOO_lc(aTHX_ a,b)
 #define isFOO_utf8_lc(a,b)	S_isFOO_utf8_lc(aTHX_ a,b)
-#define isGCB			S_isGCB
+#define isGCB(a,b,c,d,e)	S_isGCB(aTHX_ a,b,c,d,e)
 #define isLB(a,b,c,d,e,f)	S_isLB(aTHX_ a,b,c,d,e,f)
 #define isSB(a,b,c,d,e,f)	S_isSB(aTHX_ a,b,c,d,e,f)
 #define isWB(a,b,c,d,e,f,g)	S_isWB(aTHX_ a,b,c,d,e,f,g)
 #define reg_check_named_buff_matched	S_reg_check_named_buff_matched
-#define regcppop(a,b)		S_regcppop(aTHX_ a,b)
-#define regcppush(a,b,c)	S_regcppush(aTHX_ a,b,c)
+#define regcp_restore(a,b,c)	S_regcp_restore(aTHX_ a,b,c _aDEPTH)
+#define regcppop(a,b)		S_regcppop(aTHX_ a,b _aDEPTH)
+#define regcppush(a,b,c)	S_regcppush(aTHX_ a,b,c _aDEPTH)
 #define reghop3			S_reghop3
 #define reghop4			S_reghop4
 #define reghopmaybe3		S_reghopmaybe3
 #define reginclass(a,b,c,d,e)	S_reginclass(aTHX_ a,b,c,d,e)
 #define regmatch(a,b,c)		S_regmatch(aTHX_ a,b,c)
-#define regrepeat(a,b,c,d,e,f)	S_regrepeat(aTHX_ a,b,c,d,e,f)
+#define regrepeat(a,b,c,d,e)	S_regrepeat(aTHX_ a,b,c,d,e _aDEPTH)
 #define regtry(a,b)		S_regtry(aTHX_ a,b)
 #define to_byte_substr(a)	S_to_byte_substr(aTHX_ a)
 #define to_utf8_substr(a)	S_to_utf8_substr(aTHX_ a)
 #  endif
+#  if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
+#define _is_grapheme(a,b,c,d)	Perl__is_grapheme(aTHX_ a,b,c,d)
+#  endif
+#  if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
+#define isFOO_lc(a,b)		Perl_isFOO_lc(aTHX_ a,b)
+#  endif
 #  if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
 #define _to_fold_latin1(a,b,c,d)	Perl__to_fold_latin1(aTHX_ a,b,c,d)
 #  endif
@@ -1134,6 +1162,9 @@
 #ifdef PERL_CORE
 #define Slab_Alloc(a)		Perl_Slab_Alloc(aTHX_ a)
 #define Slab_Free(a)		Perl_Slab_Free(aTHX_ a)
+#define _byte_dump_string(a,b,c)	Perl__byte_dump_string(aTHX_ a,b,c)
+#define abort_execution(a,b)	Perl_abort_execution(aTHX_ a,b)
+#define alloc_LOGOP(a,b,c)	Perl_alloc_LOGOP(aTHX_ a,b,c)
 #define allocmy(a,b,c)		Perl_allocmy(aTHX_ a,b,c)
 #define amagic_is_enabled(a)	Perl_amagic_is_enabled(aTHX_ a)
 #define apply(a,b,c)		Perl_apply(aTHX_ a,b,c)
@@ -1194,6 +1225,7 @@
 #define core_prototype(a,b,c,d)	Perl_core_prototype(aTHX_ a,b,c,d)
 #define coresub_op(a,b,c)	Perl_coresub_op(aTHX_ a,b,c)
 #define create_eval_scope(a,b)	Perl_create_eval_scope(aTHX_ a,b)
+#define croak_caller		Perl_croak_caller
 #define croak_no_mem		Perl_croak_no_mem
 #define croak_popstack		Perl_croak_popstack
 #define custom_op_get_field(a,b)	Perl_custom_op_get_field(aTHX_ a,b)
@@ -1206,6 +1238,7 @@
 #define deb_stack_all()		Perl_deb_stack_all(aTHX)
 #define defelem_target(a,b)	Perl_defelem_target(aTHX_ a,b)
 #define delete_eval_scope()	Perl_delete_eval_scope(aTHX)
+#define delimcpy_no_escape	Perl_delimcpy_no_escape
 #define die_unwind(a)		Perl_die_unwind(aTHX_ a)
 #define do_aexec5(a,b,c,d,e)	Perl_do_aexec5(aTHX_ a,b,c,d,e)
 #define do_dump_pad(a,b,c,d)	Perl_do_dump_pad(aTHX_ a,b,c,d)
@@ -1318,6 +1351,7 @@
 #define newXS_len_flags(a,b,c,d,e,f,g)	Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g)
 #define nextargv(a,b)		Perl_nextargv(aTHX_ a,b)
 #define noperl_die		Perl_noperl_die
+#define notify_parser_that_changed_to_utf8()	Perl_notify_parser_that_changed_to_utf8(aTHX)
 #define oopsAV(a)		Perl_oopsAV(aTHX_ a)
 #define oopsHV(a)		Perl_oopsHV(aTHX_ a)
 #define op_unscope(a)		Perl_op_unscope(aTHX_ a)
@@ -1331,7 +1365,6 @@
 #define pad_push(a,b)		Perl_pad_push(aTHX_ a,b)
 #define pad_swipe(a,b)		Perl_pad_swipe(aTHX_ a,b)
 #define padlist_store(a,b,c)	Perl_padlist_store(aTHX_ a,b,c)
-#define parse_subsignature()	Perl_parse_subsignature(aTHX)
 #define parse_unicode_opts(a)	Perl_parse_unicode_opts(aTHX_ a)
 #define parser_free(a)		Perl_parser_free(aTHX_ a)
 #define peep(a)			Perl_peep(aTHX_ a)
@@ -1382,6 +1415,7 @@
 #define yyerror_pv(a,b)		Perl_yyerror_pv(aTHX_ a,b)
 #define yyerror_pvn(a,b,c)	Perl_yyerror_pvn(aTHX_ a,b,c)
 #define yyparse(a)		Perl_yyparse(aTHX_ a)
+#define yyquit()		Perl_yyquit(aTHX)
 #define yyunlex()		Perl_yyunlex(aTHX)
 #  if !(defined(DEBUGGING))
 #    if !defined(NV_PRESERVES_UV)
@@ -1454,6 +1488,9 @@
 #define printbuf(a,b)		S_printbuf(aTHX_ a,b)
 #define tokereport(a,b)		S_tokereport(aTHX_ a,b)
 #    endif
+#    if defined(USE_LOCALE) && defined(PERL_IN_LOCALE_C)
+#define print_collxfrm_input_and_return(a,b,c,d)	S_print_collxfrm_input_and_return(aTHX_ a,b,c,d)
+#    endif
 #  endif
 #  if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
 #define dump_sv_child(a)	Perl_dump_sv_child(aTHX_ a)
@@ -1527,7 +1564,7 @@
 #define gv_fetchmeth_internal(a,b,c,d,e,f)	S_gv_fetchmeth_internal(aTHX_ a,b,c,d,e,f)
 #define gv_init_svtype(a,b)	S_gv_init_svtype(aTHX_ a,b)
 #define gv_is_in_main(a,b,c)	S_gv_is_in_main(aTHX_ a,b,c)
-#define gv_magicalize(a,b,c,d,e,f)	S_gv_magicalize(aTHX_ a,b,c,d,e,f)
+#define gv_magicalize(a,b,c,d,e)	S_gv_magicalize(aTHX_ a,b,c,d,e)
 #define gv_magicalize_isa(a)	S_gv_magicalize_isa(aTHX_ a)
 #define gv_stashpvn_internal(a,b,c)	S_gv_stashpvn_internal(aTHX_ a,b,c)
 #define gv_stashsvpvn_cached(a,b,c,d)	S_gv_stashsvpvn_cached(aTHX_ a,b,c,d)
@@ -1552,6 +1589,11 @@
 #define share_hek_flags(a,b,c,d)	S_share_hek_flags(aTHX_ a,b,c,d)
 #define unshare_hek_or_pvn(a,b,c,d)	S_unshare_hek_or_pvn(aTHX_ a,b,c,d)
 #  endif
+#  if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
+#    if defined(USE_LOCALE_COLLATE)
+#define _mem_collxfrm(a,b,c,d)	Perl__mem_collxfrm(aTHX_ a,b,c,d)
+#    endif
+#  endif
 #  if defined(PERL_IN_MALLOC_C)
 #define adjust_size_and_find_bucket	S_adjust_size_and_find_bucket
 #  endif
@@ -1770,7 +1812,7 @@
 #define lop(a,b,c)		S_lop(aTHX_ a,b,c)
 #define missingterm(a)		S_missingterm(aTHX_ a)
 #define no_op(a,b)		S_no_op(aTHX_ a,b)
-#define parse_ident(a,b,c,d,e)	S_parse_ident(aTHX_ a,b,c,d,e)
+#define parse_ident(a,b,c,d,e,f)	S_parse_ident(aTHX_ a,b,c,d,e,f)
 #define pending_ident()		S_pending_ident(aTHX)
 #define scan_const(a)		S_scan_const(aTHX_ a)
 #define scan_formline(a)	S_scan_formline(aTHX_ a)
@@ -1797,11 +1839,19 @@
 #  endif
 #  if defined(PERL_IN_UTF8_C)
 #define _to_utf8_case(a,b,c,d,e,f,g)	S__to_utf8_case(aTHX_ a,b,c,d,e,f,g)
+#define check_and_deprecate(a,b,c,d,e,f)	S_check_and_deprecate(aTHX_ a,b,c,d,e,f)
 #define check_locale_boundary_crossing(a,b,c,d)	S_check_locale_boundary_crossing(aTHX_ a,b,c,d)
+#define does_utf8_overflow	S_does_utf8_overflow
+#define isFF_OVERLONG		S_isFF_OVERLONG
 #define is_utf8_common(a,b,c,d)	S_is_utf8_common(aTHX_ a,b,c,d)
+#define is_utf8_common_with_len(a,b,c,d,e)	S_is_utf8_common_with_len(aTHX_ a,b,c,d,e)
+#define is_utf8_cp_above_31_bits	S_is_utf8_cp_above_31_bits
+#define is_utf8_overlong_given_start_byte_ok	S_is_utf8_overlong_given_start_byte_ok
 #define swash_scan_list_line(a,b,c,d,e,f,g)	S_swash_scan_list_line(aTHX_ a,b,c,d,e,f,g)
 #define swatch_get(a,b,c)	S_swatch_get(aTHX_ a,b,c)
 #define to_lower_latin1		S_to_lower_latin1
+#define unexpected_non_continuation_text(a,b,c,d)	S_unexpected_non_continuation_text(aTHX_ a,b,c,d)
+#define warn_on_first_deprecated_use(a,b,c,d,e)	S_warn_on_first_deprecated_use(aTHX_ a,b,c,d,e)
 #  endif
 #  if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 #define _to_upper_title_latin1(a,b,c,d)	Perl__to_upper_title_latin1(aTHX_ a,b,c,d)
@@ -1837,7 +1887,9 @@
 #  endif
 #  if defined(USE_LOCALE_COLLATE)
 #define magic_setcollxfrm(a,b)	Perl_magic_setcollxfrm(aTHX_ a,b)
+#ifndef NO_MATHOMS
 #define mem_collxfrm(a,b,c)	Perl_mem_collxfrm(aTHX_ a,b,c)
+#endif
 #  endif
 #  if defined(USE_PERLIO)
 #define PerlIO_restore_errno(a)	Perl_PerlIO_restore_errno(aTHX_ a)

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -42,6 +42,7 @@
 
 #define PL_AboveLatin1		(vTHX->IAboveLatin1)
 #define PL_Argv			(vTHX->IArgv)
+#define PL_Assigned_invlist	(vTHX->IAssigned_invlist)
 #define PL_Cmd			(vTHX->ICmd)
 #define PL_DBcontrol		(vTHX->IDBcontrol)
 #define PL_DBcv			(vTHX->IDBcv)
@@ -109,6 +110,7 @@
 #define PL_curcopdb		(vTHX->Icurcopdb)
 #define PL_curpad		(vTHX->Icurpad)
 #define PL_curpm		(vTHX->Icurpm)
+#define PL_curpm_under		(vTHX->Icurpm_under)
 #define PL_curstack		(vTHX->Icurstack)
 #define PL_curstackinfo		(vTHX->Icurstackinfo)
 #define PL_curstash		(vTHX->Icurstash)
@@ -140,7 +142,6 @@
 #define PL_e_script		(vTHX->Ie_script)
 #define PL_efloatbuf		(vTHX->Iefloatbuf)
 #define PL_efloatsize		(vTHX->Iefloatsize)
-#define PL_encoding		(vTHX->Iencoding)
 #define PL_endav		(vTHX->Iendav)
 #define PL_envgv		(vTHX->Ienvgv)
 #define PL_errgv		(vTHX->Ierrgv)
@@ -168,6 +169,7 @@
 #define PL_in_clean_objs	(vTHX->Iin_clean_objs)
 #define PL_in_eval		(vTHX->Iin_eval)
 #define PL_in_load_module	(vTHX->Iin_load_module)
+#define PL_in_utf8_COLLATE_locale	(vTHX->Iin_utf8_COLLATE_locale)
 #define PL_in_utf8_CTYPE_locale	(vTHX->Iin_utf8_CTYPE_locale)
 #define PL_incgv		(vTHX->Iincgv)
 #define PL_initav		(vTHX->Iinitav)
@@ -184,7 +186,6 @@
 #define PL_lastgotoprobe	(vTHX->Ilastgotoprobe)
 #define PL_laststatval		(vTHX->Ilaststatval)
 #define PL_laststype		(vTHX->Ilaststype)
-#define PL_lex_encoding		(vTHX->Ilex_encoding)
 #define PL_localizing		(vTHX->Ilocalizing)
 #define PL_localpatches		(vTHX->Ilocalpatches)
 #define PL_lockhook		(vTHX->Ilockhook)
@@ -196,7 +197,6 @@
 #define PL_markstack_max	(vTHX->Imarkstack_max)
 #define PL_markstack_ptr	(vTHX->Imarkstack_ptr)
 #define PL_max_intro_pending	(vTHX->Imax_intro_pending)
-#define PL_maxo			(vTHX->Imaxo)
 #define PL_maxsysfd		(vTHX->Imaxsysfd)
 #define PL_memory_debug_header	(vTHX->Imemory_debug_header)
 #define PL_mess_sv		(vTHX->Imess_sv)
@@ -280,6 +280,7 @@
 #define PL_scopestack_max	(vTHX->Iscopestack_max)
 #define PL_scopestack_name	(vTHX->Iscopestack_name)
 #define PL_secondgv		(vTHX->Isecondgv)
+#define PL_seen_deprecated_macro	(vTHX->Iseen_deprecated_macro)
 #define PL_sharehook		(vTHX->Isharehook)
 #define PL_sig_pending		(vTHX->Isig_pending)
 #define PL_sighandlerp		(vTHX->Isighandlerp)
@@ -308,6 +309,9 @@
 #define PL_stderrgv		(vTHX->Istderrgv)
 #define PL_stdingv		(vTHX->Istdingv)
 #define PL_strtab		(vTHX->Istrtab)
+#define PL_strxfrm_NUL_replacement	(vTHX->Istrxfrm_NUL_replacement)
+#define PL_strxfrm_is_behaved	(vTHX->Istrxfrm_is_behaved)
+#define PL_strxfrm_max_cp	(vTHX->Istrxfrm_max_cp)
 #define PL_sub_generation	(vTHX->Isub_generation)
 #define PL_subline		(vTHX->Isubline)
 #define PL_subname		(vTHX->Isubname)
@@ -363,6 +367,8 @@
 
 #if defined(PERL_GLOBAL_STRUCT)
 
+#define PL_C_locale_obj		(my_vars->GC_locale_obj)
+#define PL_GC_locale_obj	(my_vars->GC_locale_obj)
 #define PL_appctx		(my_vars->Gappctx)
 #define PL_Gappctx		(my_vars->Gappctx)
 #define PL_check		(my_vars->Gcheck)
@@ -411,6 +417,10 @@
 #define PL_Gperlio_fd_refcnt_size	(my_vars->Gperlio_fd_refcnt_size)
 #define PL_perlio_mutex		(my_vars->Gperlio_mutex)
 #define PL_Gperlio_mutex	(my_vars->Gperlio_mutex)
+#ifdef __VMS
+#define PL_perllib_sep		(my_vars->Gperllib_sep)
+#define PL_Gperllib_sep		(my_vars->Gperllib_sep)
+#endif
 #define PL_ppaddr		(my_vars->Gppaddr)
 #define PL_Gppaddr		(my_vars->Gppaddr)
 #ifdef OS2

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/feature.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/feature.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/feature.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -76,12 +76,6 @@
 	 FEATURE_IS_ENABLED("evalbytes")) \
     )
 
-#define FEATURE_POSTDEREF_IS_ENABLED \
-    ( \
-	CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
-	 FEATURE_IS_ENABLED("postderef") \
-    )
-
 #define FEATURE_ARYBASE_IS_ENABLED \
     ( \
 	CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_511 \
@@ -109,12 +103,6 @@
 	 FEATURE_IS_ENABLED("refaliasing") \
     )
 
-#define FEATURE_LEXSUBS_IS_ENABLED \
-    ( \
-	CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
-	 FEATURE_IS_ENABLED("lexsubs") \
-    )
-
 #define FEATURE_POSTDEREF_QQ_IS_ENABLED \
     ( \
 	CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_523 \
@@ -130,6 +118,12 @@
 	 FEATURE_IS_ENABLED("unieval")) \
     )
 
+#define FEATURE_MYREF_IS_ENABLED \
+    ( \
+	CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+	 FEATURE_IS_ENABLED("myref") \
+    )
+
 #define FEATURE_UNICODE_IS_ENABLED \
     ( \
 	(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/gv.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/gv.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/gv.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -52,7 +52,6 @@
     (*({ GV * const _gvname_hek = (GV *) (gv);				\
 	   assert(isGV_with_GP(_gvname_hek));				\
 	   assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \
-	   assert(!SvVALID(_gvname_hek));				\
 	   &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek);			\
 	 }))
 #  define GvNAME_get(gv)	({ assert(GvNAME_HEK(gv)); (char *)HEK_KEY(GvNAME_HEK(gv)); })

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/handy.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/handy.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/handy.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -277,6 +277,15 @@
 /* Unused by core; should be deprecated */
 #define Ctl(ch) ((ch) & 037)
 
+#if defined(PERL_CORE) || defined(PERL_EXT)
+#  ifndef MIN
+#    define MIN(a,b) ((a) < (b) ? (a) : (b))
+#  endif
+#  ifndef MAX
+#    define MAX(a,b) ((a) > (b) ? (a) : (b))
+#  endif
+#endif
+
 /* This is a helper macro to avoid preprocessor issues, replaced by nothing
  * unless under DEBUGGING, where it expands to an assert of its argument,
  * followed by a comma (hence the comma operator).  If we just used a straight
@@ -408,14 +417,7 @@
     Perl_gv_fetchpvn_flags(aTHX_ namebeg, len, add, sv_type)
 #define sv_catxmlpvs(dsv, str, utf8) \
     Perl_sv_catxmlpvn(aTHX_ dsv, STR_WITH_LEN(str), utf8)
-#define hv_fetchs(hv,key,lval)						\
-  ((SV **)Perl_hv_common(aTHX_ (hv), NULL, STR_WITH_LEN(key), 0,	\
-			 (lval) ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE)	\
-			 : HV_FETCH_JUST_SV, NULL, 0))
 
-#define hv_stores(hv,key,val)						\
-  ((SV **)Perl_hv_common(aTHX_ (hv), NULL, STR_WITH_LEN(key), 0,	\
-			 (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0))
 
 #define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags)
 
@@ -472,6 +474,7 @@
 =cut
 */
 
+
 #define strNE(s1,s2) (strcmp(s1,s2))
 #define strEQ(s1,s2) (!strcmp(s1,s2))
 #define strLT(s1,s2) (strcmp(s1,s2) < 0)
@@ -478,9 +481,18 @@
 #define strLE(s1,s2) (strcmp(s1,s2) <= 0)
 #define strGT(s1,s2) (strcmp(s1,s2) > 0)
 #define strGE(s1,s2) (strcmp(s1,s2) >= 0)
+
 #define strnNE(s1,s2,l) (strncmp(s1,s2,l))
 #define strnEQ(s1,s2,l) (!strncmp(s1,s2,l))
 
+/* These names are controversial, so guarding against their being used in more
+ * places than they already are.  strBEGs and StrStartsWith are potential
+ * candidates */
+#if defined(PERL_IN_DOIO_C) || defined(PERL_IN_GV_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_LOCALE_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_TOKE_C) || defined(PERL_EXT)
+#define strNEs(s1,s2) (strncmp(s1,"" s2 "", sizeof(s2)-1))
+#define strEQs(s1,s2) (!strncmp(s1,"" s2 "", sizeof(s2)-1))
+#endif
+
 #ifdef HAS_MEMCMP
 #  define memNE(s1,s2,l) (memcmp(s1,s2,l))
 #  define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
@@ -489,10 +501,22 @@
 #  define memEQ(s1,s2,l) (!bcmp(s1,s2,l))
 #endif
 
+/* memEQ and memNE where second comparand is a string constant */
 #define memEQs(s1, l, s2) \
-	(sizeof(s2)-1 == l && memEQ(s1, ("" s2 ""), (sizeof(s2)-1)))
+        (((sizeof(s2)-1) == (l)) && memEQ((s1), ("" s2 ""), (sizeof(s2)-1)))
 #define memNEs(s1, l, s2) !memEQs(s1, l, s2)
 
+/* memEQ and memNE where second comparand is a string constant
+ * and we can assume the length of s1 is at least that of the string */
+#define _memEQs(s1, s2) \
+        (memEQ((s1), ("" s2 ""), (sizeof(s2)-1)))
+#define _memNEs(s1, s2) (memNE((s1),("" s2 ""),(sizeof(s2)-1)))
+
+#define memLT(s1,s2,l) (memcmp(s1,s2,l) < 0)
+#define memLE(s1,s2,l) (memcmp(s1,s2,l) <= 0)
+#define memGT(s1,s2,l) (memcmp(s1,s2,l) > 0)
+#define memGE(s1,s2,l) (memcmp(s1,s2,l) >= 0)
+
 /*
  * Character classes.
  *
@@ -529,10 +553,11 @@
 ASCII character in the named class based on platform, Unicode, and Perl rules.
 If the input is a number that doesn't fit in an octet, FALSE is returned.
 
-Variant C<isFOO_A> (e.g., C<isALPHA_A()>) is identical to the base function
-with no suffix C<"_A">.
+Variant C<isI<FOO>_A> (e.g., C<isALPHA_A()>) is identical to the base function
+with no suffix C<"_A">.  This variant is used to emphasize by its name that
+only ASCII-range characters can return TRUE.
 
-Variant C<isFOO_L1> imposes the Latin-1 (or EBCDIC equivlalent) character set
+Variant C<isI<FOO>_L1> imposes the Latin-1 (or EBCDIC equivalent) character set
 onto the platform.  That is, the code points that are ASCII are unaffected,
 since ASCII is a subset of Latin-1.  But the non-ASCII code points are treated
 as if they are Latin-1 characters.  For example, C<isWORDCHAR_L1()> will return
@@ -539,18 +564,39 @@
 true when called with the code point 0xDF, which is a word character in both
 ASCII and EBCDIC (though it represents different characters in each).
 
-Variant C<isFOO_uvchr> is like the C<isFOO_L1> variant, but accepts any UV code
+Variant C<isI<FOO>_uvchr> is like the C<isI<FOO>_L1> variant, but accepts any UV code
 point as input.  If the code point is larger than 255, Unicode rules are used
 to determine if it is in the character class.  For example,
 C<isWORDCHAR_uvchr(0x100)> returns TRUE, since 0x100 is LATIN CAPITAL LETTER A
 WITH MACRON in Unicode, and is a word character.
 
-Variant C<isFOO_utf8> is like C<isFOO_uvchr>, but the input is a pointer to a
-(known to be well-formed) UTF-8 encoded string (C<U8*> or C<char*>, and
-possibly containing embedded C<NUL> characters).  The classification of just
-the first (possibly multi-byte) character in the string is tested.
+Variant C<isI<FOO>_utf8_safe> is like C<isI<FOO>_uvchr>, but is used for UTF-8
+encoded strings.  Each call classifies one character, even if the string
+contains many.  This variant takes two parameters.  The first, C<p>, is a
+pointer to the first byte of the character to be classified.  (Recall that it
+may take more than one byte to represent a character in UTF-8 strings.)  The
+second parameter, C<e>, points to anywhere in the string beyond the first
+character, up to one byte past the end of the entire string.  The suffix
+C<_safe> in the function's name indicates that it will not attempt to read
+beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is true (this
+is asserted for in C<-DDEBUGGING> builds).  If the UTF-8 for the input
+character is malformed in some way, the program may croak, or the function may
+return FALSE, at the discretion of the implementation, and subject to change in
+future releases.
 
-Variant C<isFOO_LC> is like the C<isFOO_A> and C<isFOO_L1> variants, but the
+Variant C<isI<FOO>_utf8> is like C<isI<FOO>_utf8_safe>, but takes just a single
+parameter, C<p>, which has the same meaning as the corresponding parameter does
+in C<isI<FOO>_utf8_safe>.  The function therefore can't check if it is reading
+beyond the end of the string.  Starting in Perl v5.30, it will take a second
+parameter, becoming a synonym for C<isI<FOO>_utf8_safe>.  At that time every
+program that uses it will have to be changed to successfully compile.  In the
+meantime, the first runtime call to C<isI<FOO>_utf8> from each call point in the
+program will raise a deprecation warning, enabled by default.  You can convert
+your program now to use C<isI<FOO>_utf8_safe>, and avoid the warnings, and get an
+extra measure of protection, or you can wait until v5.30, when you'll be forced
+to add the C<e> parameter.
+
+Variant C<isI<FOO>_LC> is like the C<isI<FOO>_A> and C<isI<FOO>_L1> variants, but the
 result is based on the current locale, which is what C<LC> in the name stands
 for.  If Perl can determine that the current locale is a UTF-8 locale, it uses
 the published Unicode rules; otherwise, it uses the C library function that
@@ -560,22 +606,43 @@
 library function is known to be defective, Perl changes its result to follow
 the POSIX standard's rules.
 
-Variant C<isFOO_LC_uvchr> is like C<isFOO_LC>, but is defined on any UV.  It
-returns the same as C<isFOO_LC> for input code points less than 256, and
+Variant C<isI<FOO>_LC_uvchr> is like C<isI<FOO>_LC>, but is defined on any UV.  It
+returns the same as C<isI<FOO>_LC> for input code points less than 256, and
 returns the hard-coded, not-affected-by-locale, Unicode results for larger ones.
 
-Variant C<isFOO_LC_utf8> is like C<isFOO_LC_uvchr>, but the input is a pointer
-to a (known to be well-formed) UTF-8 encoded string (C<U8*> or C<char*>, and
-possibly containing embedded C<NUL> characters).  The classification of just
-the first (possibly multi-byte) character in the string is tested.
+Variant C<isI<FOO>_LC_utf8_safe> is like C<isI<FOO>_LC_uvchr>, but is used for UTF-8
+encoded strings.  Each call classifies one character, even if the string
+contains many.  This variant takes two parameters.  The first, C<p>, is a
+pointer to the first byte of the character to be classified.  (Recall that it
+may take more than one byte to represent a character in UTF-8 strings.) The
+second parameter, C<e>, points to anywhere in the string beyond the first
+character, up to one byte past the end of the entire string.  The suffix
+C<_safe> in the function's name indicates that it will not attempt to read
+beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is true (this
+is asserted for in C<-DDEBUGGING> builds).  If the UTF-8 for the input
+character is malformed in some way, the program may croak, or the function may
+return FALSE, at the discretion of the implementation, and subject to change in
+future releases.
 
+Variant C<isI<FOO>_LC_utf8> is like C<isI<FOO>_LC_utf8_safe>, but takes just a single
+parameter, C<p>, which has the same meaning as the corresponding parameter does
+in C<isI<FOO>_LC_utf8_safe>.  The function therefore can't check if it is reading
+beyond the end of the string.  Starting in Perl v5.30, it will take a second
+parameter, becoming a synonym for C<isI<FOO>_LC_utf8_safe>.  At that time every
+program that uses it will have to be changed to successfully compile.  In the
+meantime, the first runtime call to C<isI<FOO>_LC_utf8> from each call point in
+the program will raise a deprecation warning, enabled by default.  You can
+convert your program now to use C<isI<FOO>_LC_utf8_safe>, and avoid the warnings,
+and get an extra measure of protection, or you can wait until v5.30, when
+you'll be forced to add the C<e> parameter.
+
 =for apidoc Am|bool|isALPHA|char ch
 Returns a boolean indicating whether the specified character is an
 alphabetic character, analogous to C<m/[[:alpha:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isALPHA_A>, C<isALPHA_L1>, C<isALPHA_uvchr>, C<isALPHA_utf8>, C<isALPHA_LC>,
-C<isALPHA_LC_uvchr>, and C<isALPHA_LC_utf8>.
+C<isALPHA_A>, C<isALPHA_L1>, C<isALPHA_uvchr>, C<isALPHA_utf8_safe>,
+C<isALPHA_LC>, C<isALPHA_LC_uvchr>, and C<isALPHA_LC_utf8_safe>.
 
 =for apidoc Am|bool|isALPHANUMERIC|char ch
 Returns a boolean indicating whether the specified character is a either an
@@ -583,8 +650,8 @@
 See the L<top of this section|/Character classification> for an explanation of
 variants
 C<isALPHANUMERIC_A>, C<isALPHANUMERIC_L1>, C<isALPHANUMERIC_uvchr>,
-C<isALPHANUMERIC_utf8>, C<isALPHANUMERIC_LC>, C<isALPHANUMERIC_LC_uvchr>, and
-C<isALPHANUMERIC_LC_utf8>.
+C<isALPHANUMERIC_utf8_safe>, C<isALPHANUMERIC_LC>, C<isALPHANUMERIC_LC_uvchr>,
+and C<isALPHANUMERIC_LC_utf8_safe>.
 
 =for apidoc Am|bool|isASCII|char ch
 Returns a boolean indicating whether the specified character is one of the 128
@@ -594,8 +661,8 @@
 C<isASCII_L1()> are identical to C<isASCII()>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isASCII_uvchr>, C<isASCII_utf8>, C<isASCII_LC>, C<isASCII_LC_uvchr>, and
-C<isASCII_LC_utf8>.  Note, however, that some platforms do not have the C
+C<isASCII_uvchr>, C<isASCII_utf8_safe>, C<isASCII_LC>, C<isASCII_LC_uvchr>, and
+C<isASCII_LC_utf8_safe>.  Note, however, that some platforms do not have the C
 library routine C<isascii()>.  In these cases, the variants whose names contain
 C<LC> are the same as the corresponding ones without.
 
@@ -602,8 +669,8 @@
 Also note, that because all ASCII characters are UTF-8 invariant (meaning they
 have the exact same representation (always a single byte) whether encoded in
 UTF-8 or not), C<isASCII> will give the correct results when called with any
-byte in any string encoded or not in UTF-8.  And similarly C<isASCII_utf8> will
-work properly on any string encoded or not in UTF-8.
+byte in any string encoded or not in UTF-8.  And similarly C<isASCII_utf8_safe>
+will work properly on any string encoded or not in UTF-8.
 
 =for apidoc Am|bool|isBLANK|char ch
 Returns a boolean indicating whether the specified character is a
@@ -610,11 +677,11 @@
 character considered to be a blank, analogous to C<m/[[:blank:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isBLANK_A>, C<isBLANK_L1>, C<isBLANK_uvchr>, C<isBLANK_utf8>, C<isBLANK_LC>,
-C<isBLANK_LC_uvchr>, and C<isBLANK_LC_utf8>.  Note, however, that some
-platforms do not have the C library routine C<isblank()>.  In these cases, the
-variants whose names contain C<LC> are the same as the corresponding ones
-without.
+C<isBLANK_A>, C<isBLANK_L1>, C<isBLANK_uvchr>, C<isBLANK_utf8_safe>,
+C<isBLANK_LC>, C<isBLANK_LC_uvchr>, and C<isBLANK_LC_utf8_safe>.  Note,
+however, that some platforms do not have the C library routine
+C<isblank()>.  In these cases, the variants whose names contain C<LC> are
+the same as the corresponding ones without.
 
 =for apidoc Am|bool|isCNTRL|char ch
 Returns a boolean indicating whether the specified character is a
@@ -621,9 +688,9 @@
 control character, analogous to C<m/[[:cntrl:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isCNTRL_A>, C<isCNTRL_L1>, C<isCNTRL_uvchr>, C<isCNTRL_utf8>, C<isCNTRL_LC>,
-C<isCNTRL_LC_uvchr>, and C<isCNTRL_LC_utf8>
-On EBCDIC platforms, you almost always want to use the C<isCNTRL_L1> variant.
+C<isCNTRL_A>, C<isCNTRL_L1>, C<isCNTRL_uvchr>, C<isCNTRL_utf8_safe>,
+C<isCNTRL_LC>, C<isCNTRL_LC_uvchr>, and C<isCNTRL_LC_utf8_safe> On EBCDIC
+platforms, you almost always want to use the C<isCNTRL_L1> variant.
 
 =for apidoc Am|bool|isDIGIT|char ch
 Returns a boolean indicating whether the specified character is a
@@ -631,16 +698,15 @@
 Variants C<isDIGIT_A> and C<isDIGIT_L1> are identical to C<isDIGIT>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isDIGIT_uvchr>, C<isDIGIT_utf8>, C<isDIGIT_LC>, C<isDIGIT_LC_uvchr>, and
-C<isDIGIT_LC_utf8>.
+C<isDIGIT_uvchr>, C<isDIGIT_utf8_safe>, C<isDIGIT_LC>, C<isDIGIT_LC_uvchr>, and
+C<isDIGIT_LC_utf8_safe>.
 
 =for apidoc Am|bool|isGRAPH|char ch
 Returns a boolean indicating whether the specified character is a
 graphic character, analogous to C<m/[[:graph:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
-variants
-C<isGRAPH_A>, C<isGRAPH_L1>, C<isGRAPH_uvchr>, C<isGRAPH_utf8>, C<isGRAPH_LC>,
-C<isGRAPH_LC_uvchr>, and C<isGRAPH_LC_utf8>.
+variants C<isGRAPH_A>, C<isGRAPH_L1>, C<isGRAPH_uvchr>, C<isGRAPH_utf8_safe>,
+C<isGRAPH_LC>, C<isGRAPH_LC_uvchr>, and C<isGRAPH_LC_utf8_safe>.
 
 =for apidoc Am|bool|isLOWER|char ch
 Returns a boolean indicating whether the specified character is a
@@ -647,8 +713,8 @@
 lowercase character, analogous to C<m/[[:lower:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isLOWER_A>, C<isLOWER_L1>, C<isLOWER_uvchr>, C<isLOWER_utf8>, C<isLOWER_LC>,
-C<isLOWER_LC_uvchr>, and C<isLOWER_LC_utf8>.
+C<isLOWER_A>, C<isLOWER_L1>, C<isLOWER_uvchr>, C<isLOWER_utf8_safe>,
+C<isLOWER_LC>, C<isLOWER_LC_uvchr>, and C<isLOWER_LC_utf8_safe>.
 
 =for apidoc Am|bool|isOCTAL|char ch
 Returns a boolean indicating whether the specified character is an
@@ -663,9 +729,8 @@
 straightforward as one might desire.  See L<perlrecharclass/POSIX Character
 Classes> for details.
 See the L<top of this section|/Character classification> for an explanation of
-variants
-C<isPUNCT_A>, C<isPUNCT_L1>, C<isPUNCT_uvchr>, C<isPUNCT_utf8>, C<isPUNCT_LC>,
-C<isPUNCT_LC_uvchr>, and C<isPUNCT_LC_utf8>.
+variants C<isPUNCT_A>, C<isPUNCT_L1>, C<isPUNCT_uvchr>, C<isPUNCT_utf8_safe>,
+C<isPUNCT_LC>, C<isPUNCT_LC_uvchr>, and C<isPUNCT_LC_utf8_safe>.
 
 =for apidoc Am|bool|isSPACE|char ch
 Returns a boolean indicating whether the specified character is a
@@ -678,8 +743,8 @@
 (See L</isPSXSPC> for a macro that matches a vertical tab in all releases.)
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isSPACE_A>, C<isSPACE_L1>, C<isSPACE_uvchr>, C<isSPACE_utf8>, C<isSPACE_LC>,
-C<isSPACE_LC_uvchr>, and C<isSPACE_LC_utf8>.
+C<isSPACE_A>, C<isSPACE_L1>, C<isSPACE_uvchr>, C<isSPACE_utf8_safe>,
+C<isSPACE_LC>, C<isSPACE_LC_uvchr>, and C<isSPACE_LC_utf8_safe>.
 
 =for apidoc Am|bool|isPSXSPC|char ch
 (short for Posix Space)
@@ -692,16 +757,15 @@
 Otherwise they are identical.  Thus this macro is analogous to what
 C<m/[[:space:]]/> matches in a regular expression.
 See the L<top of this section|/Character classification> for an explanation of
-variants C<isPSXSPC_A>, C<isPSXSPC_L1>, C<isPSXSPC_uvchr>, C<isPSXSPC_utf8>,
-C<isPSXSPC_LC>, C<isPSXSPC_LC_uvchr>, and C<isPSXSPC_LC_utf8>.
+variants C<isPSXSPC_A>, C<isPSXSPC_L1>, C<isPSXSPC_uvchr>, C<isPSXSPC_utf8_safe>,
+C<isPSXSPC_LC>, C<isPSXSPC_LC_uvchr>, and C<isPSXSPC_LC_utf8_safe>.
 
 =for apidoc Am|bool|isUPPER|char ch
 Returns a boolean indicating whether the specified character is an
 uppercase character, analogous to C<m/[[:upper:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
-variants
-C<isUPPER_A>, C<isUPPER_L1>, C<isUPPER_uvchr>, C<isUPPER_utf8>, C<isUPPER_LC>,
-C<isUPPER_LC_uvchr>, and C<isUPPER_LC_utf8>.
+variants C<isUPPER_A>, C<isUPPER_L1>, C<isUPPER_uvchr>, C<isUPPER_utf8_safe>,
+C<isUPPER_LC>, C<isUPPER_LC_uvchr>, and C<isUPPER_LC_utf8_safe>.
 
 =for apidoc Am|bool|isPRINT|char ch
 Returns a boolean indicating whether the specified character is a
@@ -708,8 +772,8 @@
 printable character, analogous to C<m/[[:print:]]/>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isPRINT_A>, C<isPRINT_L1>, C<isPRINT_uvchr>, C<isPRINT_utf8>, C<isPRINT_LC>,
-C<isPRINT_LC_uvchr>, and C<isPRINT_LC_utf8>.
+C<isPRINT_A>, C<isPRINT_L1>, C<isPRINT_uvchr>, C<isPRINT_utf8_safe>,
+C<isPRINT_LC>, C<isPRINT_LC_uvchr>, and C<isPRINT_LC_utf8_safe>.
 
 =for apidoc Am|bool|isWORDCHAR|char ch
 Returns a boolean indicating whether the specified character is a character
@@ -721,10 +785,10 @@
 word character includes more than the standard C language meaning of
 alphanumeric.
 See the L<top of this section|/Character classification> for an explanation of
-variants
-C<isWORDCHAR_A>, C<isWORDCHAR_L1>, C<isWORDCHAR_uvchr>, and C<isWORDCHAR_utf8>.
-C<isWORDCHAR_LC>, C<isWORDCHAR_LC_uvchr>, and C<isWORDCHAR_LC_utf8> are also as
-described there, but additionally include the platform's native underscore.
+variants C<isWORDCHAR_A>, C<isWORDCHAR_L1>, C<isWORDCHAR_uvchr>, and
+C<isWORDCHAR_utf8_safe>.  C<isWORDCHAR_LC>, C<isWORDCHAR_LC_uvchr>, and
+C<isWORDCHAR_LC_utf8_safe> are also as described there, but additionally
+include the platform's native underscore.
 
 =for apidoc Am|bool|isXDIGIT|char ch
 Returns a boolean indicating whether the specified character is a hexadecimal
@@ -732,8 +796,8 @@
 and C<isXDIGIT_L1()> are identical to C<isXDIGIT()>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isXDIGIT_uvchr>, C<isXDIGIT_utf8>, C<isXDIGIT_LC>, C<isXDIGIT_LC_uvchr>, and
-C<isXDIGIT_LC_utf8>.
+C<isXDIGIT_uvchr>, C<isXDIGIT_utf8_safe>, C<isXDIGIT_LC>, C<isXDIGIT_LC_uvchr>,
+and C<isXDIGIT_LC_utf8_safe>.
 
 =for apidoc Am|bool|isIDFIRST|char ch
 Returns a boolean indicating whether the specified character can be the first
@@ -742,8 +806,8 @@
 returns true only if the input character also matches L</isWORDCHAR>.
 See the L<top of this section|/Character classification> for an explanation of
 variants
-C<isIDFIRST_A>, C<isIDFIRST_L1>, C<isIDFIRST_uvchr>, C<isIDFIRST_utf8>,
-C<isIDFIRST_LC>, C<isIDFIRST_LC_uvchr>, and C<isIDFIRST_LC_utf8>.
+C<isIDFIRST_A>, C<isIDFIRST_L1>, C<isIDFIRST_uvchr>, C<isIDFIRST_utf8_safe>,
+C<isIDFIRST_LC>, C<isIDFIRST_LC_uvchr>, and C<isIDFIRST_LC_utf8_safe>.
 
 =for apidoc Am|bool|isIDCONT|char ch
 Returns a boolean indicating whether the specified character can be the
@@ -753,8 +817,8 @@
 L</isWORDCHAR>.  See the L<top of this section|/Character classification> for
 an
 explanation of variants C<isIDCONT_A>, C<isIDCONT_L1>, C<isIDCONT_uvchr>,
-C<isIDCONT_utf8>, C<isIDCONT_LC>, C<isIDCONT_LC_uvchr>, and
-C<isIDCONT_LC_utf8>.
+C<isIDCONT_utf8_safe>, C<isIDCONT_LC>, C<isIDCONT_LC_uvchr>, and
+C<isIDCONT_LC_utf8_safe>.
 
 =head1 Miscellaneous Functions
 
@@ -763,6 +827,16 @@
 Behaviour is only well defined when isXDIGIT(*str) is true.
 
 =head1 Character case changing
+Perl uses "full" Unicode case mappings.  This means that converting a single
+character to another case may result in a sequence of more than one character.
+For example, the uppercase of C<E<223>> (LATIN SMALL LETTER SHARP S) is the two
+character sequence C<SS>.  This presents some complications   The lowercase of
+all characters in the range 0..255 is a single character, and thus
+C<L</toLOWER_L1>> is furnished.  But, C<toUPPER_L1> can't exist, as it couldn't
+return a valid result for all legal inputs.  Instead C<L</toUPPER_uvchr>> has
+an API that does allow every possible legal result to be returned.)  Likewise
+no other function that is crippled by not being able to give the correct
+results for the full range of possible inputs has been implemented here.
 
 =for apidoc Am|U8|toUPPER|U8 ch
 Converts the specified character to uppercase.  If the input is anything but an
@@ -777,19 +851,39 @@
 bytes since the uppercase version may be longer than the original character.
 
 The first code point of the uppercased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more.)
 
-=for apidoc Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp
-Converts the UTF-8 encoded character at C<p> to its uppercase version, and
+=for apidoc Am|UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+Converts the first UTF-8 encoded character in the sequence starting at C<p> and
+extending no further than S<C<e - 1>> to its uppercase version, and
 stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>.  Note
 that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
 bytes since the uppercase version may be longer than the original character.
 
 The first code point of the uppercased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-The input character at C<p> is assumed to be well-formed.
+The suffix C<_safe> in the function's name indicates that it will not attempt
+to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is
+true (this is asserted for in C<-DDEBUGGING> builds).  If the UTF-8 for the
+input character is malformed in some way, the program may croak, or the
+function may return the REPLACEMENT CHARACTER, at the discretion of the
+implementation, and subject to change in future releases.
 
+=for apidoc Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp
+This is like C<L</toUPPER_utf8_safe>>, but doesn't have the C<e>
+parameter  The function therefore can't check if it is reading
+beyond the end of the string.  Starting in Perl v5.30, it will take the C<e>
+parameter, becoming a synonym for C<toUPPER_utf8_safe>.  At that time every
+program that uses it will have to be changed to successfully compile.  In the
+meantime, the first runtime call to C<toUPPER_utf8> from each call point in the
+program will raise a deprecation warning, enabled by default.  You can convert
+your program now to use C<toUPPER_utf8_safe>, and avoid the warnings, and get an
+extra measure of protection, or you can wait until v5.30, when you'll be forced
+to add the C<e> parameter.
+
 =for apidoc Am|U8|toFOLD|U8 ch
 Converts the specified character to foldcase.  If the input is anything but an
 ASCII uppercase character, that input character itself is returned.  Variant
@@ -804,19 +898,39 @@
 bytes since the foldcase version may be longer than the original character.
 
 The first code point of the foldcased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-=for apidoc Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp
-Converts the UTF-8 encoded character at C<p> to its foldcase version, and
+=for apidoc Am|UV|toFOLD_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+Converts the first UTF-8 encoded character in the sequence starting at C<p> and
+extending no further than S<C<e - 1>> to its foldcase version, and
 stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>.  Note
 that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
 bytes since the foldcase version may be longer than the original character.
 
 The first code point of the foldcased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-The input character at C<p> is assumed to be well-formed.
+The suffix C<_safe> in the function's name indicates that it will not attempt
+to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is
+true (this is asserted for in C<-DDEBUGGING> builds).  If the UTF-8 for the
+input character is malformed in some way, the program may croak, or the
+function may return the REPLACEMENT CHARACTER, at the discretion of the
+implementation, and subject to change in future releases.
 
+=for apidoc Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp
+This is like C<L</toFOLD_utf8_safe>>, but doesn't have the C<e>
+parameter  The function therefore can't check if it is reading
+beyond the end of the string.  Starting in Perl v5.30, it will take the C<e>
+parameter, becoming a synonym for C<toFOLD_utf8_safe>.  At that time every
+program that uses it will have to be changed to successfully compile.  In the
+meantime, the first runtime call to C<toFOLD_utf8> from each call point in the
+program will raise a deprecation warning, enabled by default.  You can convert
+your program now to use C<toFOLD_utf8_safe>, and avoid the warnings, and get an
+extra measure of protection, or you can wait until v5.30, when you'll be forced
+to add the C<e> parameter.
+
 =for apidoc Am|U8|toLOWER|U8 ch
 Converts the specified character to lowercase.  If the input is anything but an
 ASCII uppercase character, that input character itself is returned.  Variant
@@ -838,19 +952,40 @@
 bytes since the lowercase version may be longer than the original character.
 
 The first code point of the lowercased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-=for apidoc Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp
-Converts the UTF-8 encoded character at C<p> to its lowercase version, and
+
+=for apidoc Am|UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+Converts the first UTF-8 encoded character in the sequence starting at C<p> and
+extending no further than S<C<e - 1>> to its lowercase version, and
 stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>.  Note
 that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
 bytes since the lowercase version may be longer than the original character.
 
 The first code point of the lowercased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-The input character at C<p> is assumed to be well-formed.
+The suffix C<_safe> in the function's name indicates that it will not attempt
+to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is
+true (this is asserted for in C<-DDEBUGGING> builds).  If the UTF-8 for the
+input character is malformed in some way, the program may croak, or the
+function may return the REPLACEMENT CHARACTER, at the discretion of the
+implementation, and subject to change in future releases.
 
+=for apidoc Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp
+This is like C<L</toLOWER_utf8_safe>>, but doesn't have the C<e>
+parameter  The function therefore can't check if it is reading
+beyond the end of the string.  Starting in Perl v5.30, it will take the C<e>
+parameter, becoming a synonym for C<toLOWER_utf8_safe>.  At that time every
+program that uses it will have to be changed to successfully compile.  In the
+meantime, the first runtime call to C<toLOWER_utf8> from each call point in the
+program will raise a deprecation warning, enabled by default.  You can convert
+your program now to use C<toLOWER_utf8_safe>, and avoid the warnings, and get an
+extra measure of protection, or you can wait until v5.30, when you'll be forced
+to add the C<e> parameter.
+
 =for apidoc Am|U8|toTITLE|U8 ch
 Converts the specified character to titlecase.  If the input is anything but an
 ASCII lowercase character, that input character itself is returned.  Variant
@@ -866,23 +1001,44 @@
 bytes since the titlecase version may be longer than the original character.
 
 The first code point of the titlecased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-=for apidoc Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp
-Converts the UTF-8 encoded character at C<p> to its titlecase version, and
+=for apidoc Am|UV|toTITLE_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+Converts the first UTF-8 encoded character in the sequence starting at C<p> and
+extending no further than S<C<e - 1>> to its titlecase version, and
 stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>.  Note
 that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
 bytes since the titlecase version may be longer than the original character.
 
 The first code point of the titlecased version is returned
-(but note, as explained just above, that there may be more.)
+(but note, as explained at L<the top of this section|/Character case
+changing>, that there may be more).
 
-The input character at C<p> is assumed to be well-formed.
+The suffix C<_safe> in the function's name indicates that it will not attempt
+to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is
+true (this is asserted for in C<-DDEBUGGING> builds).  If the UTF-8 for the
+input character is malformed in some way, the program may croak, or the
+function may return the REPLACEMENT CHARACTER, at the discretion of the
+implementation, and subject to change in future releases.
 
+=for apidoc Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp
+This is like C<L</toLOWER_utf8_safe>>, but doesn't have the C<e>
+parameter  The function therefore can't check if it is reading
+beyond the end of the string.  Starting in Perl v5.30, it will take the C<e>
+parameter, becoming a synonym for C<toTITLE_utf8_safe>.  At that time every
+program that uses it will have to be changed to successfully compile.  In the
+meantime, the first runtime call to C<toTITLE_utf8> from each call point in the
+program will raise a deprecation warning, enabled by default.  You can convert
+your program now to use C<toTITLE_utf8_safe>, and avoid the warnings, and get an
+extra measure of protection, or you can wait until v5.30, when you'll be forced
+to add the C<e> parameter.
+
 =cut
 
 XXX Still undocumented isVERTWS_uvchr and _utf8; it's unclear what their names
-really should be.  Also toUPPER_LC and toFOLD_LC, which are subject to change.
+really should be.  Also toUPPER_LC and toFOLD_LC, which are subject to change,
+and aren't general purpose as they don't work on U+DF, and assert against that.
 
 Note that these macros are repeated in Devel::PPPort, so should also be
 patched there.  The file as of this writing is cpan/Devel-PPPort/parts/inc/misc
@@ -910,7 +1066,10 @@
  * of operands.  Well, they are, but that is kind of the point.
  */
 #ifndef __COVERITY__
-#define FITS_IN_8_BITS(c) ((sizeof(c) == 1) || !(((WIDEST_UTYPE)(c)) & ~0xFF))
+  /* The '| 0' part ensures a compiler error if c is not integer (like e.g., a
+   * pointer) */
+#define FITS_IN_8_BITS(c) (   (sizeof(c) == 1)                      \
+                           || !(((WIDEST_UTYPE)((c) | 0)) & ~0xFF))
 #else
 #define FITS_IN_8_BITS(c) (1)
 #endif
@@ -925,14 +1084,23 @@
     /* There is a simple definition of ASCII for ASCII platforms.  But the
      * EBCDIC one isn't so simple, so is defined using table look-up like the
      * other macros below.
-     * The '| 0' part ensures that c is an integer (and not e.g. a pointer) */
+     *
+     * The cast here is used instead of '(c) >= 0', because some compilers emit
+     * a warning that that test is always true when the parameter is an
+     * unsigned type.  khw supposes that it could be written as
+     *      && ((c) == '\0' || (c) > 0)
+     * to avoid the message, but the cast will likely avoid extra branches even
+     * with stupid compilers.
+     *
+     * The '| 0' part ensures a compiler error if c is not integer (like e.g.,
+     * a pointer) */
 #   define isASCII(c)    ((WIDEST_UTYPE)((c) | 0) < 128)
 #endif
 
-/* The lower 3 bits in both the ASCII and EBCDIC representations of '0' are 0,
- * and the 8 possible permutations of those bits exactly comprise the 8 octal
- * digits */
-#define isOCTAL_A(c)  cBOOL(FITS_IN_8_BITS(c) && (0xF8 & (c)) == '0')
+/* Take the eight possible bit patterns of the lower 3 bits and you get the
+ * lower 3 bits of the 8 octal digits, in both ASCII and EBCDIC, so those bits
+ * can be ignored.  If the rest match '0', we have an octal */
+#define isOCTAL_A(c)  (((WIDEST_UTYPE)((c) | 0) & ~7) == '0')
 
 #ifdef H_PERL       /* If have access to perl.h, lookup in its table */
 
@@ -955,7 +1123,7 @@
 #  define _CC_PRINT              6      /* [:print:] */
 #  define _CC_ALPHANUMERIC       7      /* [:alnum:] */
 #  define _CC_GRAPH              8      /* [:graph:] */
-#  define _CC_CASED              9      /* [:lower:] and [:upper:] under /i */
+#  define _CC_CASED              9      /* [:lower:] or [:upper:] under /i */
 
 #define _FIRST_NON_SWASH_CC     10
 /* The character classes above are implemented with swashes.  The second group
@@ -968,6 +1136,9 @@
  * above ASCII in the latter case) */
 
 #  define _CC_SPACE             10      /* \s, [:space:] */
+#  define _CC_PSXSPC            _CC_SPACE   /* XXX Temporary, can be removed
+                                               when the deprecated isFOO_utf8()
+                                               functions are removed */
 #  define _CC_BLANK             11      /* [:blank:] */
 #  define _CC_XDIGIT            12      /* [:xdigit:] */
 #  define _CC_CNTRL             13      /* [:cntrl:] */
@@ -987,6 +1158,9 @@
 #  define _CC_IS_IN_SOME_FOLD          22
 #  define _CC_MNEMONIC_CNTRL           23
 
+#  define _CC_IDCONT 24 /* XXX Temporary, can be removed when the deprecated
+                           isFOO_utf8() functions are removed */
+
 /* This next group is only used on EBCDIC platforms, so theoretically could be
  * shared with something entirely different that's only on ASCII platforms */
 #  define _CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE 28
@@ -1141,82 +1315,75 @@
 
     /* If we don't have perl.h, we are compiling a utility program.  Below we
      * hard-code various macro definitions that wouldn't otherwise be available
-     * to it. Most are coded based on first principals.  First some ones common
-     * to both ASCII and EBCDIC */
+     * to it. Most are coded based on first principles.  These are written to
+     * avoid EBCDIC vs. ASCII #ifdef's as much as possible. */
 #   define isDIGIT_A(c)  ((c) <= '9' && (c) >= '0')
 #   define isBLANK_A(c)  ((c) == ' ' || (c) == '\t')
-#   define isSPACE_A(c)  (isBLANK_A(c)                                       \
-                          || (c) == '\n'                                     \
-                          || (c) == '\r'                                     \
-                          || (c) == '\v'                                     \
+#   define isSPACE_A(c)  (isBLANK_A(c)                                   \
+                          || (c) == '\n'                                 \
+                          || (c) == '\r'                                 \
+                          || (c) == '\v'                                 \
                           || (c) == '\f')
-#   ifdef EBCDIC    /* There are gaps between 'i' and 'j'; 'r' and 's'.  Same
-                       for uppercase.  This is ordered to exclude most things
-                       early */
-#       define isLOWER_A(c)  ((c) >= 'a' && (c) <= 'z'                       \
-                               && ((c) <= 'i'                                \
-                                   || ((c) >= 'j' && (c) <= 'r')             \
-                                   || (c) >= 's'))
-#       define isUPPER_A(c)  ((c) >= 'A' && (c) <= 'Z'                       \
-                               && ((c) <= 'I'                                \
-                                   || ((c) >= 'J' && (c) <= 'R')             \
-                                   || (c) >= 'S'))
-#   else   /* ASCII platform. */
-#       define isLOWER_A(c)  ((c) >= 'a' && (c) <= 'z')
-#       define isUPPER_A(c)  ((c) <= 'Z' && (c) >= 'A')
-#   endif
-
-    /* Some more ASCII, non-ASCII common definitions */
+    /* On EBCDIC, there are gaps between 'i' and 'j'; 'r' and 's'.  Same for
+     * uppercase.  The tests for those aren't necessary on ASCII, but hurt only
+     * performance (if optimization isn't on), and allow the same code to be
+     * used for both platform types */
+#   define isLOWER_A(c)  ((c) >= 'a' && (c) <= 'z'                      \
+                  && (    (c) <= 'i'                                    \
+                      || ((c) >= 'j' && (c) <= 'r')                     \
+                      ||  (c) >= 's'))
+#   define isUPPER_A(c)  ((c) >= 'A' && (c) <= 'Z'                      \
+                  && (    (c) <= 'I'                                    \
+                      || ((c) >= 'J' && (c) <= 'R')                     \
+                      ||  (c) >= 'S'))
 #   define isALPHA_A(c)  (isUPPER_A(c) || isLOWER_A(c))
 #   define isALPHANUMERIC_A(c) (isALPHA_A(c) || isDIGIT_A(c))
 #   define isWORDCHAR_A(c)   (isALPHANUMERIC_A(c) || (c) == '_')
 #   define isIDFIRST_A(c)    (isALPHA_A(c) || (c) == '_')
-#   define isXDIGIT_A(c) (isDIGIT_A(c)                                      \
-                          || ((c) >= 'a' && (c) <= 'f')                     \
+#   define isXDIGIT_A(c) (isDIGIT_A(c)                                  \
+                          || ((c) >= 'a' && (c) <= 'f')                 \
                           || ((c) <= 'F' && (c) >= 'A'))
+#   define isPUNCT_A(c)  ((c) == '-' || (c) == '!' || (c) == '"'        \
+                       || (c) == '#' || (c) == '$' || (c) == '%'        \
+                       || (c) == '&' || (c) == '\'' || (c) == '('       \
+                       || (c) == ')' || (c) == '*' || (c) == '+'        \
+                       || (c) == ',' || (c) == '.' || (c) == '/'        \
+                       || (c) == ':' || (c) == ';' || (c) == '<'        \
+                       || (c) == '=' || (c) == '>' || (c) == '?'        \
+                       || (c) == '@' || (c) == '[' || (c) == '\\'       \
+                       || (c) == ']' || (c) == '^' || (c) == '_'        \
+                       || (c) == '`' || (c) == '{' || (c) == '|'        \
+                       || (c) == '}' || (c) == '~')
+#   define isGRAPH_A(c)  (isALPHANUMERIC_A(c) || isPUNCT_A(c))
+#   define isPRINT_A(c)  (isGRAPH_A(c) || (c) == ' ')
 
 #   ifdef EBCDIC
-#       define isPUNCT_A(c)  ((c) == '-' || (c) == '!' || (c) == '"'        \
-                           || (c) == '#' || (c) == '$' || (c) == '%'        \
-                           || (c) == '&' || (c) == '\'' || (c) == '('       \
-                           || (c) == ')' || (c) == '*' || (c) == '+'        \
-                           || (c) == ',' || (c) == '.' || (c) == '/'        \
-                           || (c) == ':' || (c) == ';' || (c) == '<'        \
-                           || (c) == '=' || (c) == '>' || (c) == '?'        \
-                           || (c) == '@' || (c) == '[' || (c) == '\\'       \
-                           || (c) == ']' || (c) == '^' || (c) == '_'        \
-                           || (c) == '`' || (c) == '{' || (c) == '|'        \
-                           || (c) == '}' || (c) == '~')
-#       define isGRAPH_A(c)  (isALPHANUMERIC_A(c) || isPUNCT_A(c))
-#       define isPRINT_A(c)  (isGRAPH_A(c) || (c) == ' ')
-
-#       ifdef QUESTION_MARK_CTRL
-#           define _isQMC(c) ((c) == QUESTION_MARK_CTRL)
-#       else
-#           define _isQMC(c) 0
-#       endif
-
-        /* I (khw) can't think of a way to define all the ASCII controls
-         * without resorting to a libc (locale-sensitive) call.  But we know
-         * that all controls but the question-mark one are in the range 0-0x3f.
-         * This makes sure that all the controls that have names are included,
-         * and all controls that are also considered ASCII in the locale.  This
-         * may include more or fewer than what it actually should, but the
-         * wrong ones are less-important controls, so likely won't impact
-         * things (keep in mind that this is compiled only if perl.h isn't
-         * available).  The question mark control is included if available */
-#       define isCNTRL_A(c)  (((c) < 0x40 && isascii(c))                    \
-                            || (c) == '\0' || (c) == '\a' || (c) == '\b'    \
-                            || (c) == '\f' || (c) == '\n' || (c) == '\r'    \
-                            || (c) == '\t' || (c) == '\v' || _isQMC(c))
-
+        /* The below is accurate for the 3 EBCDIC code pages traditionally
+         * supported by perl.  The only difference between them in the controls
+         * is the position of \n, and that is represented symbolically below */
+#       define isCNTRL_A(c)  ((c) == '\0' || (c) == '\a' || (c) == '\b'     \
+                          ||  (c) == '\f' || (c) == '\n' || (c) == '\r'     \
+                          ||  (c) == '\t' || (c) == '\v'                    \
+                          || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */     \
+                          ||  (c) == 7    /* U+7F DEL */                    \
+                          || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */      \
+                                                         /* DLE, DC[1-3] */ \
+                          ||  (c) == 0x18 /* U+18 CAN */                    \
+                          ||  (c) == 0x19 /* U+19 EOM */                    \
+                          || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */     \
+                          ||  (c) == 0x26 /* U+17 ETB */                    \
+                          ||  (c) == 0x27 /* U+1B ESC */                    \
+                          ||  (c) == 0x2D /* U+05 ENQ */                    \
+                          ||  (c) == 0x2E /* U+06 ACK */                    \
+                          ||  (c) == 0x32 /* U+16 SYN */                    \
+                          ||  (c) == 0x37 /* U+04 EOT */                    \
+                          ||  (c) == 0x3C /* U+14 DC4 */                    \
+                          ||  (c) == 0x3D /* U+15 NAK */                    \
+                          ||  (c) == 0x3F)/* U+1A SUB */
 #       define isASCII(c)    (isCNTRL_A(c) || isPRINT_A(c))
-#   else    /* ASCII platform; things are simpler, and  isASCII has already
-               been defined */
-#       define isGRAPH_A(c)  (((c) > ' ' && (c) < 127))
-#       define isPRINT_A(c)  (isGRAPH_A(c) || (c) == ' ')
-#       define isPUNCT_A(c)  (isGRAPH_A(c) && (! isALPHANUMERIC_A(c)))
-#       define isCNTRL_A(c)  (isASCII(c) && (! isPRINT_A(c)))
+#   else /* isASCII is already defined for ASCII platforms, so can use that to
+            define isCNTRL */
+#       define isCNTRL_A(c)  (isASCII(c) && ! isPRINT_A(c))
 #   endif
 
     /* The _L1 macros may be unnecessary for the utilities; I (khw) added them
@@ -1532,11 +1699,11 @@
  * don't, but experiments show that gcc optimizes them out anyway. */
 
 /* Note that all ignore 'use bytes' */
-#define _generic_uvchr(classnum, above_latin1, c) ((c) < 256                    \
-                                             ? _generic_isCC(c, classnum)     \
+#define _generic_uvchr(classnum, above_latin1, c) ((c) < 256                \
+                                             ? _generic_isCC(c, classnum)   \
                                              : above_latin1(c))
-#define _generic_swash_uvchr(classnum, c) ((c) < 256                            \
-                                             ? _generic_isCC(c, classnum)     \
+#define _generic_swash_uvchr(classnum, c) ((c) < 256                        \
+                                             ? _generic_isCC(c, classnum)   \
                                              : _is_uni_FOO(classnum, c))
 #define isALPHA_uvchr(c)      _generic_swash_uvchr(_CC_ALPHA, c)
 #define isALPHANUMERIC_uvchr(c) _generic_swash_uvchr(_CC_ALPHANUMERIC, c)
@@ -1545,8 +1712,10 @@
 #define isCNTRL_uvchr(c)      isCNTRL_L1(c) /* All controls are in Latin1 */
 #define isDIGIT_uvchr(c)      _generic_swash_uvchr(_CC_DIGIT, c)
 #define isGRAPH_uvchr(c)      _generic_swash_uvchr(_CC_GRAPH, c)
-#define isIDCONT_uvchr(c)     _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c)
-#define isIDFIRST_uvchr(c)    _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c)
+#define isIDCONT_uvchr(c)                                                   \
+                    _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c)
+#define isIDFIRST_uvchr(c)                                                  \
+                    _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c)
 #define isLOWER_uvchr(c)      _generic_swash_uvchr(_CC_LOWER, c)
 #define isPRINT_uvchr(c)      _generic_swash_uvchr(_CC_PRINT, c)
 
@@ -1633,33 +1802,75 @@
  * 'utf8' parameter.  This relies on the fact that ASCII characters have the
  * same representation whether utf8 or not.  Note that it assumes that the utf8
  * has been validated, and ignores 'use bytes' */
-#define _generic_utf8(classnum, p, utf8) (UTF8_IS_INVARIANT(*(p))              \
-                                         ? _generic_isCC(*(p), classnum)       \
-                                         : (UTF8_IS_DOWNGRADEABLE_START(*(p))) \
-                                           ? _generic_isCC(                    \
-                                                EIGHT_BIT_UTF8_TO_NATIVE(*(p), \
-                                                                   *((p)+1 )), \
-                                                classnum)                      \
-                                           : utf8)
+#define _base_generic_utf8(enum_name, name, p, use_locale )                 \
+    _is_utf8_FOO(CAT2(_CC_, enum_name),                                     \
+                 (const U8 *) p,                                            \
+                 "is" STRINGIFY(name) "_utf8",                              \
+                 "is" STRINGIFY(name) "_utf8_safe",                         \
+                 1, use_locale, __FILE__,__LINE__)
+
+#define _generic_utf8(name, p) _base_generic_utf8(name, name, p, 0)
+
+/* The "_safe" macros make sure that we don't attempt to read beyond 'e', but
+ * they don't otherwise go out of their way to look for malformed UTF-8.  If
+ * they can return accurate results without knowing if the input is otherwise
+ * malformed, they do so.  For example isASCII is accurate in spite of any
+ * non-length malformations because it looks only at a single byte. Likewise
+ * isDIGIT looks just at the first byte for code points 0-255, as all UTF-8
+ * variant ones return FALSE.  But, if the input has to be well-formed in order
+ * for the results to be accurate, the macros will test and if malformed will
+ * call a routine to die
+ *
+ * Except for toke.c, the macros do assume that e > p, asserting that on
+ * DEBUGGING builds.  Much code that calls these depends on this being true,
+ * for other reasons.  toke.c is treated specially as using the regular
+ * assertion breaks it in many ways.  All strings that these operate on there
+ * are supposed to have an extra NUL character at the end,  so that *e = \0. A
+ * bunch of code in toke.c assumes that this is true, so the assertion allows
+ * for that */
+#ifdef PERL_IN_TOKE_C
+#  define _utf8_safe_assert(p,e) ((e) > (p) || ((e) == (p) && *(p) == '\0'))
+#else
+#  define _utf8_safe_assert(p,e) ((e) > (p))
+#endif
+
+#define _generic_utf8_safe(classnum, p, e, above_latin1)                    \
+         (__ASSERT_(_utf8_safe_assert(p, e))                                \
+         (UTF8_IS_INVARIANT(*(p)))                                          \
+          ? _generic_isCC(*(p), classnum)                                   \
+          : (UTF8_IS_DOWNGRADEABLE_START(*(p))                              \
+             ? ((LIKELY((e) - (p) > 1 && UTF8_IS_CONTINUATION(*((p)+1))))   \
+                ? _generic_isCC(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1 )),  \
+                                classnum)                                   \
+                : (_force_out_malformed_utf8_message(                       \
+                                        (U8 *) (p), (U8 *) (e), 0, 1), 0))  \
+             : above_latin1))
 /* Like the above, but calls 'above_latin1(p)' to get the utf8 value.
  * 'above_latin1' can be a macro */
-#define _generic_func_utf8(classnum, above_latin1, p)  \
-                                    _generic_utf8(classnum, p, above_latin1(p))
+#define _generic_func_utf8_safe(classnum, above_latin1, p, e)               \
+                    _generic_utf8_safe(classnum, p, e, above_latin1(p, e))
+#define _generic_non_swash_utf8_safe(classnum, above_latin1, p, e)          \
+          _generic_utf8_safe(classnum, p, e,                                \
+                             (UNLIKELY((e) - (p) < UTF8SKIP(p))             \
+                              ? (_force_out_malformed_utf8_message(         \
+                                      (U8 *) (p), (U8 *) (e), 0, 1), 0)     \
+                              : above_latin1(p)))
 /* Like the above, but passes classnum to _isFOO_utf8(), instead of having an
  * 'above_latin1' parameter */
-#define _generic_swash_utf8(classnum, p)  \
-                      _generic_utf8(classnum, p, _is_utf8_FOO(classnum, p))
+#define _generic_swash_utf8_safe(classnum, p, e)                            \
+_generic_utf8_safe(classnum, p, e, _is_utf8_FOO_with_len(classnum, p, e))
 
 /* Like the above, but should be used only when it is known that there are no
  * characters in the upper-Latin1 range (128-255 on ASCII platforms) which the
  * class is TRUE for.  Hence it can skip the tests for this range.
  * 'above_latin1' should include its arguments */
-#define _generic_utf8_no_upper_latin1(classnum, p, above_latin1)               \
-                                         (UTF8_IS_INVARIANT(*(p))              \
-                                         ? _generic_isCC(*(p), classnum)       \
-                                         : (UTF8_IS_ABOVE_LATIN1(*(p)))        \
-                                           ? above_latin1                      \
-                                           : 0)
+#define _generic_utf8_safe_no_upper_latin1(classnum, p, e, above_latin1)    \
+         (__ASSERT_(_utf8_safe_assert(p, e))                                \
+         (UTF8_IS_INVARIANT(*(p)))                                          \
+          ? _generic_isCC(*(p), classnum)                                   \
+          : (UTF8_IS_DOWNGRADEABLE_START(*(p)))                             \
+             ? 0 /* Note that doesn't check validity for latin1 */          \
+             : above_latin1)
 
 /* NOTE that some of these macros have very similar ones in regcharclass.h.
  * For example, there is (at the time of this writing) an 'is_SPACE_utf8()'
@@ -1669,26 +1880,50 @@
  * points; the regcharclass.h ones are implemented as a series of
  * "if-else-if-else ..." */
 
-#define isALPHA_utf8(p)        _generic_swash_utf8(_CC_ALPHA, p)
-#define isALPHANUMERIC_utf8(p) _generic_swash_utf8(_CC_ALPHANUMERIC, p)
-#define isASCII_utf8(p)        isASCII(*p) /* Because ASCII is invariant under
-                                               utf8, the non-utf8 macro works
-                                             */
-#define isBLANK_utf8(p)        _generic_func_utf8(_CC_BLANK, is_HORIZWS_high, p)
+#define isALPHA_utf8(p)         _generic_utf8(ALPHA, p)
+#define isALPHANUMERIC_utf8(p)  _generic_utf8(ALPHANUMERIC, p)
+#define isASCII_utf8(p)         _generic_utf8(ASCII, p)
+#define isBLANK_utf8(p)         _generic_utf8(BLANK, p)
+#define isCNTRL_utf8(p)         _generic_utf8(CNTRL, p)
+#define isDIGIT_utf8(p)         _generic_utf8(DIGIT, p)
+#define isGRAPH_utf8(p)         _generic_utf8(GRAPH, p)
+#define isIDCONT_utf8(p)        _generic_utf8(IDCONT, p)
+#define isIDFIRST_utf8(p)       _generic_utf8(IDFIRST, p)
+#define isLOWER_utf8(p)         _generic_utf8(LOWER, p)
+#define isPRINT_utf8(p)         _generic_utf8(PRINT, p)
+#define isPSXSPC_utf8(p)        _generic_utf8(PSXSPC, p)
+#define isPUNCT_utf8(p)         _generic_utf8(PUNCT, p)
+#define isSPACE_utf8(p)         _generic_utf8(SPACE, p)
+#define isUPPER_utf8(p)         _generic_utf8(UPPER, p)
+#define isVERTWS_utf8(p)        _generic_utf8(VERTSPACE, p)
+#define isWORDCHAR_utf8(p)      _generic_utf8(WORDCHAR, p)
+#define isXDIGIT_utf8(p)        _generic_utf8(XDIGIT, p)
 
+#define isALPHA_utf8_safe(p, e)  _generic_swash_utf8_safe(_CC_ALPHA, p, e)
+#define isALPHANUMERIC_utf8_safe(p, e)                                      \
+                        _generic_swash_utf8_safe(_CC_ALPHANUMERIC, p, e)
+#define isASCII_utf8_safe(p, e)                                             \
+    /* Because ASCII is invariant under utf8, the non-utf8 macro            \
+    * works */                                                              \
+    (__ASSERT_(_utf8_safe_assert(p, e)) isASCII(*(p)))
+#define isBLANK_utf8_safe(p, e)                                             \
+        _generic_non_swash_utf8_safe(_CC_BLANK, is_HORIZWS_high, p, e)
+
 #ifdef EBCDIC
     /* Because all controls are UTF-8 invariants in EBCDIC, we can use this
      * more efficient macro instead of the more general one */
-#   define isCNTRL_utf8(p)      isCNTRL_L1(*(p))
+#   define isCNTRL_utf8_safe(p, e)                                          \
+                    (__ASSERT_(_utf8_safe_assert(p, e)) isCNTRL_L1(*(p)))
 #else
-#   define isCNTRL_utf8(p)      _generic_utf8(_CC_CNTRL, p, 0)
+#   define isCNTRL_utf8_safe(p, e)  _generic_utf8_safe(_CC_CNTRL, p, e, 0)
 #endif
 
-#define isDIGIT_utf8(p)         _generic_utf8_no_upper_latin1(_CC_DIGIT, p,   \
-                                                  _is_utf8_FOO(_CC_DIGIT, p))
-#define isGRAPH_utf8(p)         _generic_swash_utf8(_CC_GRAPH, p)
-#define isIDCONT_utf8(p)        _generic_func_utf8(_CC_WORDCHAR,              \
-                                                  _is_utf8_perl_idcont, p)
+#define isDIGIT_utf8_safe(p, e)                                             \
+            _generic_utf8_safe_no_upper_latin1(_CC_DIGIT, p, e,             \
+                                    _is_utf8_FOO_with_len(_CC_DIGIT, p, e))
+#define isGRAPH_utf8_safe(p, e)    _generic_swash_utf8_safe(_CC_GRAPH, p, e)
+#define isIDCONT_utf8_safe(p, e)   _generic_func_utf8_safe(_CC_WORDCHAR,    \
+                                     _is_utf8_perl_idcont_with_len, p, e)
 
 /* To prevent S_scan_word in toke.c from hanging, we have to make sure that
  * IDFIRST is an alnum.  See
@@ -1696,19 +1931,27 @@
  * ever wanted to know about.  (In the ASCII range, there isn't a difference.)
  * This used to be not the XID version, but we decided to go with the more
  * modern Unicode definition */
-#define isIDFIRST_utf8(p)   _generic_func_utf8(_CC_IDFIRST,                  \
-                                                _is_utf8_perl_idstart, p)
+#define isIDFIRST_utf8_safe(p, e)                                           \
+    _generic_func_utf8_safe(_CC_IDFIRST,                                    \
+                    _is_utf8_perl_idstart_with_len, (U8 *) (p), (U8 *) (e))
 
-#define isLOWER_utf8(p)     _generic_swash_utf8(_CC_LOWER, p)
-#define isPRINT_utf8(p)     _generic_swash_utf8(_CC_PRINT, p)
-#define isPSXSPC_utf8(p)    isSPACE_utf8(p)
-#define isPUNCT_utf8(p)     _generic_swash_utf8(_CC_PUNCT, p)
-#define isSPACE_utf8(p)     _generic_func_utf8(_CC_SPACE, is_XPERLSPACE_high, p)
-#define isUPPER_utf8(p)     _generic_swash_utf8(_CC_UPPER, p)
-#define isVERTWS_utf8(p)    _generic_func_utf8(_CC_VERTSPACE, is_VERTWS_high, p)
-#define isWORDCHAR_utf8(p)  _generic_swash_utf8(_CC_WORDCHAR, p)
-#define isXDIGIT_utf8(p)    _generic_utf8_no_upper_latin1(_CC_XDIGIT, p,     \
-                                                          is_XDIGIT_high(p))
+#define isLOWER_utf8_safe(p, e)     _generic_swash_utf8_safe(_CC_LOWER, p, e)
+#define isPRINT_utf8_safe(p, e)     _generic_swash_utf8_safe(_CC_PRINT, p, e)
+#define isPSXSPC_utf8_safe(p, e)     isSPACE_utf8_safe(p, e)
+#define isPUNCT_utf8_safe(p, e)     _generic_swash_utf8_safe(_CC_PUNCT, p, e)
+#define isSPACE_utf8_safe(p, e)                                             \
+    _generic_non_swash_utf8_safe(_CC_SPACE, is_XPERLSPACE_high, p, e)
+#define isUPPER_utf8_safe(p, e)  _generic_swash_utf8_safe(_CC_UPPER, p, e)
+#define isVERTWS_utf8_safe(p, e)                                            \
+        _generic_non_swash_utf8_safe(_CC_VERTSPACE, is_VERTWS_high, p, e)
+#define isWORDCHAR_utf8_safe(p, e)                                          \
+                             _generic_swash_utf8_safe(_CC_WORDCHAR, p, e)
+#define isXDIGIT_utf8_safe(p, e)                                            \
+                   _generic_utf8_safe_no_upper_latin1(_CC_XDIGIT, p, e,     \
+                             (UNLIKELY((e) - (p) < UTF8SKIP(p))             \
+                              ? (_force_out_malformed_utf8_message(         \
+                                      (U8 *) (p), (U8 *) (e), 0, 1), 0)     \
+                              : is_XDIGIT_high(p)))
 
 #define toFOLD_utf8(p,s,l)	to_utf8_fold(p,s,l)
 #define toLOWER_utf8(p,s,l)	to_utf8_lower(p,s,l)
@@ -1715,47 +1958,107 @@
 #define toTITLE_utf8(p,s,l)	to_utf8_title(p,s,l)
 #define toUPPER_utf8(p,s,l)	to_utf8_upper(p,s,l)
 
+/* For internal core use only, subject to change */
+#define _toFOLD_utf8_flags(p,e,s,l,f)  _to_utf8_fold_flags (p,e,s,l,f, "", 0)
+#define _toLOWER_utf8_flags(p,e,s,l,f) _to_utf8_lower_flags(p,e,s,l,f, "", 0)
+#define _toTITLE_utf8_flags(p,e,s,l,f) _to_utf8_title_flags(p,e,s,l,f, "", 0)
+#define _toUPPER_utf8_flags(p,e,s,l,f) _to_utf8_upper_flags(p,e,s,l,f, "", 0)
+
+#define toFOLD_utf8_safe(p,e,s,l)   _toFOLD_utf8_flags(p,e,s,l, FOLD_FLAGS_FULL)
+#define toLOWER_utf8_safe(p,e,s,l)  _toLOWER_utf8_flags(p,e,s,l, 0)
+#define toTITLE_utf8_safe(p,e,s,l)  _toTITLE_utf8_flags(p,e,s,l, 0)
+#define toUPPER_utf8_safe(p,e,s,l)  _toUPPER_utf8_flags(p,e,s,l, 0)
+
 /* For internal core Perl use only: the base macros for defining macros like
  * isALPHA_LC_utf8.  These are like _generic_utf8, but if the first code point
  * in 'p' is within the 0-255 range, it uses locale rules from the passed-in
  * 'macro' parameter */
-#define _generic_LC_utf8(macro, p, utf8)                                    \
-                         (UTF8_IS_INVARIANT(*(p))                           \
-                         ? macro(*(p))                                      \
-                         : (UTF8_IS_DOWNGRADEABLE_START(*(p)))              \
-                           ? macro(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1)))\
-                           : utf8)
+#define _generic_LC_utf8(name, p) _base_generic_utf8(name, name, p, 1)
 
-#define _generic_LC_swash_utf8(macro, classnum, p)                         \
-                    _generic_LC_utf8(macro, p, _is_utf8_FOO(classnum, p))
-#define _generic_LC_func_utf8(macro, above_latin1, p)                         \
-                              _generic_LC_utf8(macro, p, above_latin1(p))
+#define isALPHA_LC_utf8(p)         _generic_LC_utf8(ALPHA, p)
+#define isALPHANUMERIC_LC_utf8(p)  _generic_LC_utf8(ALPHANUMERIC, p)
+#define isASCII_LC_utf8(p)         _generic_LC_utf8(ASCII, p)
+#define isBLANK_LC_utf8(p)         _generic_LC_utf8(BLANK, p)
+#define isCNTRL_LC_utf8(p)         _generic_LC_utf8(CNTRL, p)
+#define isDIGIT_LC_utf8(p)         _generic_LC_utf8(DIGIT, p)
+#define isGRAPH_LC_utf8(p)         _generic_LC_utf8(GRAPH, p)
+#define isIDCONT_LC_utf8(p)        _generic_LC_utf8(IDCONT, p)
+#define isIDFIRST_LC_utf8(p)       _generic_LC_utf8(IDFIRST, p)
+#define isLOWER_LC_utf8(p)         _generic_LC_utf8(LOWER, p)
+#define isPRINT_LC_utf8(p)         _generic_LC_utf8(PRINT, p)
+#define isPSXSPC_LC_utf8(p)        _generic_LC_utf8(PSXSPC, p)
+#define isPUNCT_LC_utf8(p)         _generic_LC_utf8(PUNCT, p)
+#define isSPACE_LC_utf8(p)         _generic_LC_utf8(SPACE, p)
+#define isUPPER_LC_utf8(p)         _generic_LC_utf8(UPPER, p)
+#define isWORDCHAR_LC_utf8(p)      _generic_LC_utf8(WORDCHAR, p)
+#define isXDIGIT_LC_utf8(p)        _generic_LC_utf8(XDIGIT, p)
 
-#define isALPHANUMERIC_LC_utf8(p) _generic_LC_swash_utf8(isALPHANUMERIC_LC,   \
-                                                      _CC_ALPHANUMERIC, p)
-#define isALPHA_LC_utf8(p)    _generic_LC_swash_utf8(isALPHA_LC, _CC_ALPHA, p)
-#define isASCII_LC_utf8(p)     isASCII_LC(*p)
-#define isBLANK_LC_utf8(p)    _generic_LC_func_utf8(isBLANK_LC,               \
-                                                         is_HORIZWS_high, p)
-#define isCNTRL_LC_utf8(p)    _generic_LC_utf8(isCNTRL_LC, p, 0)
-#define isDIGIT_LC_utf8(p)    _generic_LC_swash_utf8(isDIGIT_LC, _CC_DIGIT, p)
-#define isGRAPH_LC_utf8(p)    _generic_LC_swash_utf8(isGRAPH_LC, _CC_GRAPH, p)
-#define isIDCONT_LC_utf8(p)   _generic_LC_func_utf8(isIDCONT_LC,              \
-                                                    _is_utf8_perl_idcont, p)
-#define isIDFIRST_LC_utf8(p)  _generic_LC_func_utf8(isIDFIRST_LC,             \
-                                                    _is_utf8_perl_idstart, p)
-#define isLOWER_LC_utf8(p)    _generic_LC_swash_utf8(isLOWER_LC, _CC_LOWER, p)
-#define isPRINT_LC_utf8(p)    _generic_LC_swash_utf8(isPRINT_LC, _CC_PRINT, p)
-#define isPSXSPC_LC_utf8(p)    isSPACE_LC_utf8(p)
-#define isPUNCT_LC_utf8(p)    _generic_LC_swash_utf8(isPUNCT_LC, _CC_PUNCT, p)
-#define isSPACE_LC_utf8(p)    _generic_LC_func_utf8(isSPACE_LC,               \
-                                                        is_XPERLSPACE_high, p)
-#define isUPPER_LC_utf8(p)    _generic_LC_swash_utf8(isUPPER_LC, _CC_UPPER, p)
-#define isWORDCHAR_LC_utf8(p) _generic_LC_swash_utf8(isWORDCHAR_LC,           \
-                                                            _CC_WORDCHAR, p)
-#define isXDIGIT_LC_utf8(p)   _generic_LC_func_utf8(isXDIGIT_LC,              \
-                                                            is_XDIGIT_high, p)
+/* For internal core Perl use only: the base macros for defining macros like
+ * isALPHA_LC_utf8_safe.  These are like _generic_utf8, but if the first code
+ * point in 'p' is within the 0-255 range, it uses locale rules from the
+ * passed-in 'macro' parameter */
+#define _generic_LC_utf8_safe(macro, p, e, above_latin1)                    \
+         (__ASSERT_(_utf8_safe_assert(p, e))                                \
+         (UTF8_IS_INVARIANT(*(p)))                                          \
+          ? macro(*(p))                                                     \
+          : (UTF8_IS_DOWNGRADEABLE_START(*(p))                              \
+             ? ((LIKELY((e) - (p) > 1 && UTF8_IS_CONTINUATION(*((p)+1))))   \
+                ? macro(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1)))           \
+                : (_force_out_malformed_utf8_message(                       \
+                                        (U8 *) (p), (U8 *) (e), 0, 1), 0))  \
+              : above_latin1))
 
+#define _generic_LC_swash_utf8_safe(macro, classnum, p, e)                  \
+            _generic_LC_utf8_safe(macro, p, e,                              \
+                               _is_utf8_FOO_with_len(classnum, p, e))
+
+#define _generic_LC_func_utf8_safe(macro, above_latin1, p, e)               \
+            _generic_LC_utf8_safe(macro, p, e, above_latin1(p, e))
+
+#define _generic_LC_non_swash_utf8_safe(classnum, above_latin1, p, e)       \
+          _generic_LC_utf8_safe(classnum, p, e,                             \
+                             (UNLIKELY((e) - (p) < UTF8SKIP(p))             \
+                              ? (_force_out_malformed_utf8_message(         \
+                                      (U8 *) (p), (U8 *) (e), 0, 1), 0)     \
+                              : above_latin1(p)))
+
+#define isALPHANUMERIC_LC_utf8_safe(p, e)                                   \
+            _generic_LC_swash_utf8_safe(isALPHANUMERIC_LC,                  \
+                                        _CC_ALPHANUMERIC, p, e)
+#define isALPHA_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isALPHA_LC, _CC_ALPHA, p, e)
+#define isASCII_LC_utf8_safe(p, e)                                          \
+                    (__ASSERT_(_utf8_safe_assert(p, e)) isASCII_LC(*(p)))
+#define isBLANK_LC_utf8_safe(p, e)                                          \
+        _generic_LC_non_swash_utf8_safe(isBLANK_LC, is_HORIZWS_high, p, e)
+#define isCNTRL_LC_utf8_safe(p, e)                                          \
+            _generic_LC_utf8_safe(isCNTRL_LC, p, e, 0)
+#define isDIGIT_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isDIGIT_LC, _CC_DIGIT, p, e)
+#define isGRAPH_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isGRAPH_LC, _CC_GRAPH, p, e)
+#define isIDCONT_LC_utf8_safe(p, e)                                         \
+            _generic_LC_func_utf8_safe(isIDCONT_LC,                         \
+                                _is_utf8_perl_idcont_with_len, p, e)
+#define isIDFIRST_LC_utf8_safe(p, e)                                        \
+            _generic_LC_func_utf8_safe(isIDFIRST_LC,                        \
+                                _is_utf8_perl_idstart_with_len, p, e)
+#define isLOWER_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isLOWER_LC, _CC_LOWER, p, e)
+#define isPRINT_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isPRINT_LC, _CC_PRINT, p, e)
+#define isPSXSPC_LC_utf8_safe(p, e)    isSPACE_LC_utf8_safe(p, e)
+#define isPUNCT_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isPUNCT_LC, _CC_PUNCT, p, e)
+#define isSPACE_LC_utf8_safe(p, e)                                          \
+    _generic_LC_non_swash_utf8_safe(isSPACE_LC, is_XPERLSPACE_high, p, e)
+#define isUPPER_LC_utf8_safe(p, e)                                          \
+            _generic_LC_swash_utf8_safe(isUPPER_LC, _CC_UPPER, p, e)
+#define isWORDCHAR_LC_utf8_safe(p, e)                                       \
+            _generic_LC_swash_utf8_safe(isWORDCHAR_LC, _CC_WORDCHAR, p, e)
+#define isXDIGIT_LC_utf8_safe(p, e)                                         \
+        _generic_LC_non_swash_utf8_safe(isXDIGIT_LC, is_XDIGIT_high, p, e)
+
 /* Macros for backwards compatibility and for completeness when the ASCII and
  * Latin1 values are identical */
 #define isALPHAU(c)         isALPHA_L1(c)
@@ -1860,7 +2163,7 @@
 =for apidoc Am|void|Newx|void* ptr|int nitems|type
 The XSUB-writer's interface to the C C<malloc> function.
 
-Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
+Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
 
 In 5.9.3, Newx() and friends replace the older New() API, and drops
 the first parameter, I<x>, a debug aid which allowed callers to identify
@@ -1872,29 +2175,29 @@
 The XSUB-writer's interface to the C C<malloc> function, with
 cast.  See also C<L</Newx>>.
 
-Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
+Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
 
 =for apidoc Am|void|Newxz|void* ptr|int nitems|type
 The XSUB-writer's interface to the C C<malloc> function.  The allocated
 memory is zeroed with C<memzero>.  See also C<L</Newx>>.
 
-Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
+Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
 
 =for apidoc Am|void|Renew|void* ptr|int nitems|type
 The XSUB-writer's interface to the C C<realloc> function.
 
-Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
+Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
 
 =for apidoc Am|void|Renewc|void* ptr|int nitems|type|cast
 The XSUB-writer's interface to the C C<realloc> function, with
 cast.
 
-Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
+Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
 
 =for apidoc Am|void|Safefree|void* ptr
 The XSUB-writer's interface to the C C<free> function.
 
-This should B<ONLY> be used on memory obtained using L<"Newx"> and friends.
+This should B<ONLY> be used on memory obtained using L</"Newx"> and friends.
 
 =for apidoc Am|void|Move|void* src|void* dest|int nitems|type
 The XSUB-writer's interface to the C C<memmove> function.  The C<src> is the
@@ -2179,6 +2482,12 @@
 #ifdef PERL_CORE
 #  define deprecate(s) Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),    \
                                             "Use of " s " is deprecated")
+#  define deprecate_disappears_in(when,message) \
+              Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),    \
+                               message ", and will disappear in Perl " when)
+#  define deprecate_fatal_in(when,message) \
+              Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),    \
+                               message ". Its use will be fatal in Perl " when)
 #endif
 
 /* Internal macros to deal with gids and uids */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/hv.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/hv.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/hv.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -43,12 +43,17 @@
 
 /* hash key -- defined separately for use as shared pointer */
 struct hek {
-    U32		hek_hash;	/* hash of key */
-    I32		hek_len;	/* length of hash key */
-    char	hek_key[1];	/* variable-length hash key */
+    U32         hek_hash;        /* computed hash of key */
+    I32         hek_len;        /* length of the hash key */
+    /* Be careful! Sometimes we store a pointer in the hek_key
+     * buffer, which means it must be 8 byte aligned or things
+     * dont work on aligned platforms like HPUX
+     * Also beware, the last byte of the hek_key buffer is a
+     * hidden flags byte about the key. */
+     char       hek_key[1];        /* variable-length hash key */
     /* the hash-key is \0-terminated */
     /* after the \0 there is a byte for flags, such as whether the key
-       is UTF-8 */
+       is UTF-8 or WAS-UTF-8, or an SV */
 };
 
 struct shared_he {
@@ -119,7 +124,6 @@
     U32         xhv_last_rand;  /* last random value for hash traversal,
                                    used to detect each() after insert for warnings */
 #endif
-    U32         xhv_fill_lazy;
     U32         xhv_aux_flags;      /* assorted extra flags */
 };
 
@@ -321,7 +325,7 @@
    ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
 				 ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0)
 
-/* the number of keys (including any placeholders) */
+/* the number of keys (including any placeholders) - NOT PART OF THE API */
 #define XHvTOTALKEYS(xhv)	((xhv)->xhv_keys)
 
 /*
@@ -457,8 +461,7 @@
 		      (val), (hash)))
 
 #define hv_exists_ent(hv, keysv, hash)					\
-    (hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash))	\
-     ? TRUE : FALSE)
+    cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash)))
 #define hv_fetch_ent(hv, keysv, lval, hash)				\
     ((HE *) hv_common((hv), (keysv), NULL, 0, 0,			\
 		      ((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash)))
@@ -476,9 +479,10 @@
 			      (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV),	\
 			      (val), (hash)))
 
+
+
 #define hv_exists(hv, key, klen)					\
-    (hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0) \
-     ? TRUE : FALSE)
+    cBOOL(hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0))
 
 #define hv_fetch(hv, key, klen, lval)					\
     ((SV**) hv_common_key_len((hv), (key), (klen), (lval)		\
@@ -489,6 +493,24 @@
     (MUTABLE_SV(hv_common_key_len((hv), (key), (klen),			\
 				  (flags) | HV_DELETE, NULL, 0)))
 
+/* Provide 's' suffix subs for constant strings (and avoid needing to count
+ * chars). See STR_WITH_LEN in handy.h - because these are macros we cant use
+ * STR_WITH_LEN to do the work, we have to unroll it. */
+#define hv_existss(hv, key) \
+    hv_exists((hv), ("" key ""), (sizeof(key)-1))
+
+#define hv_fetchs(hv, key, lval) \
+    hv_fetch((hv), ("" key ""), (sizeof(key)-1), (lval))
+
+#define hv_deletes(hv, key, flags) \
+    hv_delete((hv), ("" key ""), (sizeof(key)-1), (flags))
+
+#define hv_name_sets(hv, name, flags) \
+    hv_name_set((hv),("" name ""),(sizeof(name)-1), flags)
+
+#define hv_stores(hv, key, val) \
+    hv_store((hv), ("" key ""), (sizeof(key)-1), (val), 0)
+
 #ifdef PERL_CORE
 # define hv_storehek(hv, hek, val) \
     hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek),	\

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/hv_func.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/hv_func.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/hv_func.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -14,59 +14,33 @@
 
 #if !( 0 \
         || defined(PERL_HASH_FUNC_SIPHASH) \
-        || defined(PERL_HASH_FUNC_SDBM) \
-        || defined(PERL_HASH_FUNC_DJB2) \
-        || defined(PERL_HASH_FUNC_SUPERFAST) \
-        || defined(PERL_HASH_FUNC_MURMUR3) \
-        || defined(PERL_HASH_FUNC_ONE_AT_A_TIME) \
+        || defined(PERL_HASH_FUNC_SIPHASH13) \
+        || defined(PERL_HASH_FUNC_HYBRID_OAATHU_SIPHASH13) \
         || defined(PERL_HASH_FUNC_ONE_AT_A_TIME_HARD) \
-        || defined(PERL_HASH_FUNC_ONE_AT_A_TIME_OLD) \
-        || defined(PERL_HASH_FUNC_MURMUR_HASH_64A) \
-        || defined(PERL_HASH_FUNC_MURMUR_HASH_64B) \
     )
+#if IVSIZE == 8
+#define PERL_HASH_FUNC_HYBRID_OAATHU_SIPHASH13
+#else
 #define PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
 #endif
+#endif
 
 #if defined(PERL_HASH_FUNC_SIPHASH)
 #   define PERL_HASH_FUNC "SIPHASH_2_4"
 #   define PERL_HASH_SEED_BYTES 16
 #   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_siphash_2_4((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_SUPERFAST)
-#   define PERL_HASH_FUNC "SUPERFAST"
-#   define PERL_HASH_SEED_BYTES 4
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_superfast((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_MURMUR3)
-#   define PERL_HASH_FUNC "MURMUR3"
-#   define PERL_HASH_SEED_BYTES 4
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_murmur3((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_DJB2)
-#   define PERL_HASH_FUNC "DJB2"
-#   define PERL_HASH_SEED_BYTES 4
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_djb2((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_SDBM)
-#   define PERL_HASH_FUNC "SDBM"
-#   define PERL_HASH_SEED_BYTES 4
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_sdbm((seed),(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_SIPHASH13)
+#   define PERL_HASH_FUNC "SIPHASH_1_3"
+#   define PERL_HASH_SEED_BYTES 16
+#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_siphash_1_3((seed),(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_HYBRID_OAATHU_SIPHASH13)
+#   define PERL_HASH_FUNC "HYBRID_OAATHU_SIPHASH_1_3"
+#   define PERL_HASH_SEED_BYTES 24
+#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_oaathu_siphash_1_3((seed),(U8*)(str),(len))
 #elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME_HARD)
 #   define PERL_HASH_FUNC "ONE_AT_A_TIME_HARD"
 #   define PERL_HASH_SEED_BYTES 8
 #   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_one_at_a_time_hard((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME)
-#   define PERL_HASH_FUNC "ONE_AT_A_TIME"
-#   define PERL_HASH_SEED_BYTES 4
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_one_at_a_time((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME_OLD)
-#   define PERL_HASH_FUNC "ONE_AT_A_TIME_OLD"
-#   define PERL_HASH_SEED_BYTES 4
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_old_one_at_a_time((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_MURMUR_HASH_64A)
-#   define PERL_HASH_FUNC "MURMUR_HASH_64A"
-#   define PERL_HASH_SEED_BYTES 8
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_murmur_hash_64a((seed),(U8*)(str),(len))
-#elif defined(PERL_HASH_FUNC_MURMUR_HASH_64B)
-#   define PERL_HASH_FUNC "MURMUR_HASH_64B"
-#   define PERL_HASH_SEED_BYTES 8
-#   define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_murmur_hash_64b((seed),(U8*)(str),(len))
 #endif
 
 #ifndef PERL_HASH_WITH_SEED
@@ -95,6 +69,11 @@
 
 #define PERL_HASH(hash,str,len) PERL_HASH_WITH_SEED(PERL_HASH_SEED,hash,str,len)
 
+/* legacy - only mod_perl should be doing this.  */
+#ifdef PERL_HASH_INTERNAL_ACCESS
+#define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len)
+#endif
+
 /*-----------------------------------------------------------------------------
  * Endianess, misalignment capabilities and util macros
  *
@@ -118,7 +97,7 @@
 
 #if (BYTEORDER == 0x1234 || BYTEORDER == 0x12345678) && U32SIZE == 4
   /* CPU endian matches murmurhash algorithm, so read 32-bit word directly */
-  #define U8TO32_LE(ptr)   (*((U32*)(ptr)))
+  #define U8TO32_LE(ptr)   (*((const U32*)(ptr)))
 #elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
   /* TODO: Add additional cases below where a compiler provided bswap32 is available */
   #if defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 && __GNUC_MINOR__>=3))
@@ -192,333 +171,99 @@
    ((U64)((p)[7]) << 56))
 
 #define SIPROUND            \
-  do {              \
+  STMT_START {              \
     v0 += v1; v1=ROTL64(v1,13); v1 ^= v0; v0=ROTL64(v0,32); \
     v2 += v3; v3=ROTL64(v3,16); v3 ^= v2;     \
     v0 += v3; v3=ROTL64(v3,21); v3 ^= v0;     \
     v2 += v1; v1=ROTL64(v1,17); v1 ^= v2; v2=ROTL64(v2,32); \
-  } while(0)
+  } STMT_END
 
 /* SipHash-2-4 */
 
-PERL_STATIC_INLINE U32
-S_perl_hash_siphash_2_4(const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) {
-  /* "somepseudorandomlygeneratedbytes" */
-  U64 v0 = UINT64_C(0x736f6d6570736575);
-  U64 v1 = UINT64_C(0x646f72616e646f6d);
-  U64 v2 = UINT64_C(0x6c7967656e657261);
-  U64 v3 = UINT64_C(0x7465646279746573);
 
-  U64 b;
-  U64 k0 = ((U64*)seed)[0];
-  U64 k1 = ((U64*)seed)[1];
-  U64 m;
-  const int left = inlen & 7;
-  const U8 *end = in + inlen - left;
+#define PERL_SIPHASH_FNC(FNC,SIP_ROUNDS,SIP_FINAL_ROUNDS) \
+PERL_STATIC_INLINE U32 \
+FNC(const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) { \
+  /* "somepseudorandomlygeneratedbytes" */  \
+  U64 v0 = UINT64_C(0x736f6d6570736575);    \
+  U64 v1 = UINT64_C(0x646f72616e646f6d);    \
+  U64 v2 = UINT64_C(0x6c7967656e657261);    \
+  U64 v3 = UINT64_C(0x7465646279746573);    \
+                                            \
+  U64 b;                                    \
+  U64 k0 = ((const U64*)seed)[0];           \
+  U64 k1 = ((const U64*)seed)[1];           \
+  U64 m;                                    \
+  const int left = inlen & 7;               \
+  const U8 *end = in + inlen - left;        \
+                                            \
+  b = ( ( U64 )(inlen) ) << 56;             \
+  v3 ^= k1;                                 \
+  v2 ^= k0;                                 \
+  v1 ^= k1;                                 \
+  v0 ^= k0;                                 \
+                                            \
+  for ( ; in != end; in += 8 )              \
+  {                                         \
+    m = U8TO64_LE( in );                    \
+    v3 ^= m;                                \
+                                            \
+    SIP_ROUNDS;                             \
+                                            \
+    v0 ^= m;                                \
+  }                                         \
+                                            \
+  switch( left )                            \
+  {                                         \
+  case 7: b |= ( ( U64 )in[ 6] )  << 48;    \
+  case 6: b |= ( ( U64 )in[ 5] )  << 40;    \
+  case 5: b |= ( ( U64 )in[ 4] )  << 32;    \
+  case 4: b |= ( ( U64 )in[ 3] )  << 24;    \
+  case 3: b |= ( ( U64 )in[ 2] )  << 16;    \
+  case 2: b |= ( ( U64 )in[ 1] )  <<  8;    \
+  case 1: b |= ( ( U64 )in[ 0] ); break;    \
+  case 0: break;                            \
+  }                                         \
+                                            \
+  v3 ^= b;                                  \
+                                            \
+  SIP_ROUNDS;                               \
+                                            \
+  v0 ^= b;                                  \
+                                            \
+  v2 ^= 0xff;                               \
+                                            \
+  SIP_FINAL_ROUNDS                          \
+                                            \
+  b = v0 ^ v1 ^ v2  ^ v3;                   \
+  return (U32)(b & U32_MAX);                \
+}
 
-  b = ( ( U64 )(inlen) ) << 56;
-  v3 ^= k1;
-  v2 ^= k0;
-  v1 ^= k1;
-  v0 ^= k0;
+PERL_SIPHASH_FNC(
+    S_perl_hash_siphash_1_3
+    ,SIPROUND;
+    ,SIPROUND;SIPROUND;SIPROUND;
+)
 
-  for ( ; in != end; in += 8 )
-  {
-    m = U8TO64_LE( in );
-    v3 ^= m;
-    SIPROUND;
-    SIPROUND;
-    v0 ^= m;
-  }
+PERL_SIPHASH_FNC(
+    S_perl_hash_siphash_2_4
+    ,SIPROUND;SIPROUND;
+    ,SIPROUND;SIPROUND;SIPROUND;SIPROUND;
+)
 
-  switch( left )
-  {
-  case 7: b |= ( ( U64 )in[ 6] )  << 48;
-  case 6: b |= ( ( U64 )in[ 5] )  << 40;
-  case 5: b |= ( ( U64 )in[ 4] )  << 32;
-  case 4: b |= ( ( U64 )in[ 3] )  << 24;
-  case 3: b |= ( ( U64 )in[ 2] )  << 16;
-  case 2: b |= ( ( U64 )in[ 1] )  <<  8;
-  case 1: b |= ( ( U64 )in[ 0] ); break;
-  case 0: break;
-  }
-
-  v3 ^= b;
-  SIPROUND;
-  SIPROUND;
-  v0 ^= b;
-
-  v2 ^= 0xff;
-  SIPROUND;
-  SIPROUND;
-  SIPROUND;
-  SIPROUND;
-  b = v0 ^ v1 ^ v2  ^ v3;
-  return (U32)(b & U32_MAX);
-}
 #endif /* defined(HAS_QUAD) */
 
-/* FYI: This is the "Super-Fast" algorithm mentioned by Bob Jenkins in
- * (http://burtleburtle.net/bob/hash/doobs.html)
- * It is by Paul Hsieh (c) 2004 and is analysed here
- * http://www.azillionmonkeys.com/qed/hash.html
- * license terms are here:
- * http://www.azillionmonkeys.com/qed/weblicense.html
- */
+/* - ONE_AT_A_TIME_HARD is the 5.17+ recommend ONE_AT_A_TIME variant */
 
-
-PERL_STATIC_INLINE U32
-S_perl_hash_superfast(const unsigned char * const seed, const unsigned char *str, STRLEN len) {
-    U32 hash = *((U32*)seed) + (U32)len;
-    U32 tmp;
-    int rem= len & 3;
-    len >>= 2;
-
-    for (;len > 0; len--) {
-        hash  += U8TO16_LE (str);
-        tmp    = (U8TO16_LE (str+2) << 11) ^ hash;
-        hash   = (hash << 16) ^ tmp;
-        str   += 2 * sizeof (U16);
-        hash  += hash >> 11;
-    }
-
-    /* Handle end cases */
-    switch (rem) { \
-        case 3: hash += U8TO16_LE (str);
-                hash ^= hash << 16;
-                hash ^= str[sizeof (U16)] << 18;
-                hash += hash >> 11;
-                break;
-        case 2: hash += U8TO16_LE (str);
-                hash ^= hash << 11;
-                hash += hash >> 17;
-                break;
-        case 1: hash += *str;
-                hash ^= hash << 10;
-                hash += hash >> 1;
-    }
-    /* Force "avalanching" of final 127 bits */
-    hash ^= hash << 3;
-    hash += hash >> 5;
-    hash ^= hash << 4;
-    hash += hash >> 17;
-    hash ^= hash << 25;
-    return (hash + (hash >> 6));
-}
-
-
-/*-----------------------------------------------------------------------------
- * MurmurHash3 was written by Austin Appleby, and is placed in the public
- * domain.
- *
- * This implementation was originally written by Shane Day, and is also public domain,
- * and was modified to function as a macro similar to other perl hash functions by
- * Yves Orton.
- *
- * This is a portable ANSI C implementation of MurmurHash3_x86_32 (Murmur3A)
- * with support for progressive processing.
- *
- * If you want to understand the MurmurHash algorithm you would be much better
- * off reading the original source. Just point your browser at:
- * http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp
- *
- * How does it work?
- *
- * We can only process entire 32 bit chunks of input, except for the very end
- * that may be shorter.
- *
- * To handle endianess I simply use a macro that reads a U32 and define
- * that macro to be a direct read on little endian machines, a read and swap
- * on big endian machines, or a byte-by-byte read if the endianess is unknown.
- */
-
-
-/*-----------------------------------------------------------------------------
- * Core murmurhash algorithm macros */
-
-#define MURMUR_C1  (0xcc9e2d51)
-#define MURMUR_C2  (0x1b873593)
-#define MURMUR_C3  (0xe6546b64)
-#define MURMUR_C4  (0x85ebca6b)
-#define MURMUR_C5  (0xc2b2ae35)
-
-/* This is the main processing body of the algorithm. It operates
- * on each full 32-bits of input. */
-#define MURMUR_DOBLOCK(h1, k1) STMT_START { \
-    k1 *= MURMUR_C1; \
-    k1 = ROTL32(k1,15); \
-    k1 *= MURMUR_C2; \
-    \
-    h1 ^= k1; \
-    h1 = ROTL32(h1,13); \
-    h1 = h1 * 5 + MURMUR_C3; \
-} STMT_END
-
-
-/* Append unaligned bytes to carry, forcing hash churn if we have 4 bytes */
-/* cnt=bytes to process, h1=name of h1 var, c=carry, n=bytes in c, ptr/len=payload */
-#define MURMUR_DOBYTES(cnt, h1, c, n, ptr, len) STMT_START { \
-    int MURMUR_DOBYTES_i = cnt; \
-    while(MURMUR_DOBYTES_i--) { \
-        c = c>>8 | *ptr++<<24; \
-        n++; len--; \
-        if(n==4) { \
-            MURMUR_DOBLOCK(h1, c); \
-            n = 0; \
-        } \
-    } \
-} STMT_END
-
-
-/* now we create the hash function */
-PERL_STATIC_INLINE U32
-S_perl_hash_murmur3(const unsigned char * const seed, const unsigned char *ptr, STRLEN len) {
-    U32 h1 = *((U32*)seed);
-    U32 k1;
-    U32 carry = 0;
-
-    const unsigned char *end;
-    int bytes_in_carry = 0; /* bytes in carry */
-    I32 total_length= (I32)len;
-
-#if defined(UNALIGNED_SAFE)
-    /* Handle carry: commented out as its only used in incremental mode - it never fires for us
-    int i = (4-n) & 3;
-    if(i && i <= len) {
-      MURMUR_DOBYTES(i, h1, carry, bytes_in_carry, ptr, len);
-    }
-    */
-
-    /* This CPU handles unaligned word access */
-    /* Process 32-bit chunks */
-    end = ptr + len/4*4;
-    for( ; ptr < end ; ptr+=4) {
-        k1 = U8TO32_LE(ptr);
-        MURMUR_DOBLOCK(h1, k1);
-    }
-#else
-    /* This CPU does not handle unaligned word access */
-
-    /* Consume enough so that the next data byte is word aligned */
-    STRLEN i = -PTR2IV(ptr) & 3;
-    if(i && i <= len) {
-      MURMUR_DOBYTES((int)i, h1, carry, bytes_in_carry, ptr, len);
-    }
-
-    /* We're now aligned. Process in aligned blocks. Specialise for each possible carry count */
-    end = ptr + len/4*4;
-    switch(bytes_in_carry) { /* how many bytes in carry */
-        case 0: /* c=[----]  w=[3210]  b=[3210]=w            c'=[----] */
-        for( ; ptr < end ; ptr+=4) {
-            k1 = U8TO32_LE(ptr);
-            MURMUR_DOBLOCK(h1, k1);
-        }
-        break;
-        case 1: /* c=[0---]  w=[4321]  b=[3210]=c>>24|w<<8   c'=[4---] */
-        for( ; ptr < end ; ptr+=4) {
-            k1 = carry>>24;
-            carry = U8TO32_LE(ptr);
-            k1 |= carry<<8;
-            MURMUR_DOBLOCK(h1, k1);
-        }
-        break;
-        case 2: /* c=[10--]  w=[5432]  b=[3210]=c>>16|w<<16  c'=[54--] */
-        for( ; ptr < end ; ptr+=4) {
-            k1 = carry>>16;
-            carry = U8TO32_LE(ptr);
-            k1 |= carry<<16;
-            MURMUR_DOBLOCK(h1, k1);
-        }
-        break;
-        case 3: /* c=[210-]  w=[6543]  b=[3210]=c>>8|w<<24   c'=[654-] */
-        for( ; ptr < end ; ptr+=4) {
-            k1 = carry>>8;
-            carry = U8TO32_LE(ptr);
-            k1 |= carry<<24;
-            MURMUR_DOBLOCK(h1, k1);
-        }
-    }
-#endif
-    /* Advance over whole 32-bit chunks, possibly leaving 1..3 bytes */
-    len -= len/4*4;
-
-    /* Append any remaining bytes into carry */
-    MURMUR_DOBYTES((int)len, h1, carry, bytes_in_carry, ptr, len);
-
-    if (bytes_in_carry) {
-        k1 = carry >> ( 4 - bytes_in_carry ) * 8;
-        k1 *= MURMUR_C1;
-        k1 = ROTL32(k1,15);
-        k1 *= MURMUR_C2;
-        h1 ^= k1;
-    }
-    h1 ^= total_length;
-
-    /* fmix */
-    h1 ^= h1 >> 16;
-    h1 *= MURMUR_C4;
-    h1 ^= h1 >> 13;
-    h1 *= MURMUR_C5;
-    h1 ^= h1 >> 16;
-    return h1;
-}
-
-
-PERL_STATIC_INLINE U32
-S_perl_hash_djb2(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
-    const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed) + (U32)len;
-    while (str < end) {
-        hash = ((hash << 5) + hash) + *str++;
-    }
-    return hash;
-}
-
-PERL_STATIC_INLINE U32
-S_perl_hash_sdbm(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
-    const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed) + (U32)len;
-    while (str < end) {
-        hash = (hash << 6) + (hash << 16) - hash + *str++;
-    }
-    return hash;
-}
-
-/* - ONE_AT_A_TIME_HARD is the 5.17+ recommend ONE_AT_A_TIME algorithm
- * - ONE_AT_A_TIME_OLD is the unmodified 5.16 and older algorithm
- * - ONE_AT_A_TIME is a 5.17+ tweak of ONE_AT_A_TIME_OLD to
- *   prevent strings of only \0 but different lengths from colliding
- *
- * Security-wise, from best to worst,
- * ONE_AT_A_TIME_HARD > ONE_AT_A_TIME > ONE_AT_A_TIME_OLD
- * There is a big drop-off in security between ONE_AT_A_TIME_HARD and
- * ONE_AT_A_TIME
- * */
-
-/* This is the "One-at-a-Time" algorithm by Bob Jenkins
+/* This is derived from the "One-at-a-Time" algorithm by Bob Jenkins
  * from requirements by Colin Plumb.
  * (http://burtleburtle.net/bob/hash/doobs.html)
- * With seed/len tweak.
- * */
+ * Modified by Yves Orton to increase security for Perl 5.17 and later.
+ */
 PERL_STATIC_INLINE U32
-S_perl_hash_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
-    const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed) + (U32)len;
-    while (str < end) {
-        hash += *str++;
-        hash += (hash << 10);
-        hash ^= (hash >> 6);
-    }
-    hash += (hash << 3);
-    hash ^= (hash >> 11);
-    return (hash + (hash << 15));
-}
-
-/* Derived from "One-at-a-Time" algorithm by Bob Jenkins */
-PERL_STATIC_INLINE U32
 S_perl_hash_one_at_a_time_hard(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
     const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed) + (U32)len;
+    U32 hash = *((const U32*)seed) + (U32)len;
     
     while (str < end) {
         hash += (hash << 10);
@@ -550,153 +295,109 @@
     return (hash + (hash << 15));
 }
 
-PERL_STATIC_INLINE U32
-S_perl_hash_old_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
-    const unsigned char * const end = (const unsigned char *)str + len;
-    U32 hash = *((U32*)seed);
-    while (str < end) {
-        hash += *str++;
-        hash += (hash << 10);
-        hash ^= (hash >> 6);
-    }
-    hash += (hash << 3);
-    hash ^= (hash >> 11);
-    return (hash + (hash << 15));
-}
+#ifdef HAS_QUAD
 
-#ifdef PERL_HASH_FUNC_MURMUR_HASH_64A
-/* This code is from Austin Appleby and is in the public domain.
-   Altered by Yves Orton to match Perl's hash interface, and to
-   return a 32 bit hash.
-
-   Note uses unaligned 64 bit loads - will NOT work on machines with
-   strict alignment requirements.
-
-   Also this code may not be suitable for big-endian machines.
-*/
-
-/* a 64 bit hash where we only use the low 32 bits */
+/* Hybrid hash function
+ *
+ * For short strings, 16 bytes or shorter, we use an optimised variant
+ * of One At A Time Hard, and for longer strings, we use siphash_1_3.
+ *
+ * The optimisation of One At A Time Hard means we read the key in
+ * reverse from normal, but by doing so we avoid the loop overhead.
+ */
 PERL_STATIC_INLINE U32
-S_perl_hash_murmur_hash_64a (const unsigned char * const seed, const unsigned char *str, const STRLEN len)
-{
-        const U64 m = UINT64_C(0xc6a4a7935bd1e995);
-        const int r = 47;
-        U64 h = *((U64*)seed) ^ len;
-        const U64 * data = (const U64 *)str;
-        const U64 * end = data + (len/8);
-        const unsigned char * data2;
+S_perl_hash_oaathu_siphash_1_3(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
+    U32 hash = *((const U32*)seed) + (U32)len;
+    switch (len) {
+        case 16:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[15];
+        case 15:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[14];
+        case 14:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[13];
+        case 13:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[12];
+        case 12:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[11];
+        case 11:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[10];
+        case 10:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[9];
+        case 9:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[8];
+        case 8:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[7];
+        case 7:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[6];
+        case 6:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[5];
+        case 5:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[4];
+        case 4:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[3];
+        case 3:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[2];
+        case 2:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[1];
+        case 1:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += str[0];
+        case 0:
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += seed[4];
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += seed[5];
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += seed[6];
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
+            hash += seed[7];
+            hash += (hash << 10);
+            hash ^= (hash >> 6);
 
-        while(data != end)
-        {
-            U64 k = *data++;
-
-            k *= m;
-            k ^= k >> r;
-            k *= m;
-
-            h ^= k;
-            h *= m;
-        }
-
-        data2 = (const unsigned char *)data;
-
-        switch(len & 7)
-        {
-            case 7: h ^= (U64)(data2[6]) << 48; /* fallthrough */
-            case 6: h ^= (U64)(data2[5]) << 40; /* fallthrough */
-            case 5: h ^= (U64)(data2[4]) << 32; /* fallthrough */
-            case 4: h ^= (U64)(data2[3]) << 24; /* fallthrough */
-            case 3: h ^= (U64)(data2[2]) << 16; /* fallthrough */
-            case 2: h ^= (U64)(data2[1]) << 8;  /* fallthrough */
-            case 1: h ^= (U64)(data2[0]);       /* fallthrough */
-                    h *= m;
-        };
-
-        h ^= h >> r;
-        h *= m;
-        h ^= h >> r;
-
-        /* was: return h; */
-        return h & 0xFFFFFFFF;
+            hash += (hash << 3);
+            hash ^= (hash >> 11);
+            return (hash + (hash << 15));
+    }
+    return S_perl_hash_siphash_1_3(seed+8, str, len);
 }
+#endif /* defined(HAS_QUAD) */
 
-#endif
 
-#ifdef PERL_HASH_FUNC_MURMUR_HASH_64B
-/* This code is from Austin Appleby and is in the public domain.
-   Altered by Yves Orton to match Perl's hash interface and return
-   a 32 bit value
-
-   Note uses unaligned 32 bit loads - will NOT work on machines with
-   strict alignment requirements.
-
-   Also this code may not be suitable for big-endian machines.
-*/
-
-/* a 64-bit hash for 32-bit platforms where we only use the low 32 bits */
-PERL_STATIC_INLINE U32
-S_perl_hash_murmur_hash_64b (const unsigned char * const seed, const unsigned char *str, STRLEN len)
-{
-        const U32 m = 0x5bd1e995;
-        const int r = 24;
-
-        U32 h1 = ((U32 *)seed)[0] ^ len;
-        U32 h2 = ((U32 *)seed)[1];
-
-        const U32 * data = (const U32 *)str;
-
-        while(len >= 8)
-        {
-            U32 k1, k2;
-            k1 = *data++;
-            k1 *= m; k1 ^= k1 >> r; k1 *= m;
-            h1 *= m; h1 ^= k1;
-            len -= 4;
-
-            k2 = *data++;
-            k2 *= m; k2 ^= k2 >> r; k2 *= m;
-            h2 *= m; h2 ^= k2;
-            len -= 4;
-        }
-
-        if(len >= 4)
-        {
-            U32 k1 = *data++;
-            k1 *= m; k1 ^= k1 >> r; k1 *= m;
-            h1 *= m; h1 ^= k1;
-            len -= 4;
-        }
-
-        switch(len)
-        {
-            case 3: h2 ^= ((unsigned char*)data)[2] << 16;  /* fallthrough */
-            case 2: h2 ^= ((unsigned char*)data)[1] << 8;   /* fallthrough */
-            case 1: h2 ^= ((unsigned char*)data)[0];        /* fallthrough */
-                    h2 *= m;
-        };
-
-        h1 ^= h2 >> 18; h1 *= m;
-        h2 ^= h1 >> 22; h2 *= m;
-        /*
-        The following code has been removed as it is unused
-        when only the low 32 bits are used. -- Yves
-
-        h1 ^= h2 >> 17; h1 *= m;
-
-        U64 h = h1;
-
-        h = (h << 32) | h2;
-        */
-
-        return h2;
-}
-#endif
-
-/* legacy - only mod_perl should be doing this.  */
-#ifdef PERL_HASH_INTERNAL_ACCESS
-#define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len)
-#endif
-
 #endif /*compile once*/
 
 /*

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/inline.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/inline.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/inline.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -125,6 +125,29 @@
 }
 #endif
 
+/* ------------------------------- pp.h ------------------------------- */
+
+PERL_STATIC_INLINE I32
+S_TOPMARK(pTHX)
+{
+    DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
+				 "MARK top  %p %" IVdf "\n",
+				  PL_markstack_ptr,
+				  (IV)*PL_markstack_ptr)));
+    return *PL_markstack_ptr;
+}
+
+PERL_STATIC_INLINE I32
+S_POPMARK(pTHX)
+{
+    DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
+				 "MARK pop  %p %" IVdf "\n",
+				  (PL_markstack_ptr-1),
+				  (IV)*(PL_markstack_ptr-1))));
+    assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow");
+    return *PL_markstack_ptr--;
+}
+
 /* ----------------------------- regexp.h ----------------------------- */
 
 PERL_STATIC_INLINE struct regexp *
@@ -233,6 +256,10 @@
 
 /* ------------------------------- utf8.h ------------------------------- */
 
+/*
+=head1 Unicode Support
+*/
+
 PERL_STATIC_INLINE void
 S_append_utf8_from_native_byte(const U8 byte, U8** dest)
 {
@@ -242,43 +269,914 @@
     PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE;
 
     if (NATIVE_BYTE_IS_INVARIANT(byte))
-        *(*dest)++ = byte;
+        *((*dest)++) = byte;
     else {
-        *(*dest)++ = UTF8_EIGHT_BIT_HI(byte);
-        *(*dest)++ = UTF8_EIGHT_BIT_LO(byte);
+        *((*dest)++) = UTF8_EIGHT_BIT_HI(byte);
+        *((*dest)++) = UTF8_EIGHT_BIT_LO(byte);
     }
 }
 
 /*
+=for apidoc valid_utf8_to_uvchr
+Like C<L</utf8_to_uvchr_buf>>, but should only be called when it is known that
+the next character in the input UTF-8 string C<s> is well-formed (I<e.g.>,
+it passes C<L</isUTF8_CHAR>>.  Surrogates, non-character code points, and
+non-Unicode code points are allowed.
 
-A helper function for the macro isUTF8_CHAR(), which should be used instead of
-this function.  The macro will handle smaller code points directly saving time,
-using this function as a fall-back for higher code points.
+=cut
 
-Tests if the first bytes of string C<s> form a valid UTF-8 character.  0 is
-returned if the bytes starting at C<s> up to but not including C<e> do not form a
-complete well-formed UTF-8 character; otherwise the number of bytes in the
-character is returned.
+ */
 
-Note that an INVARIANT (i.e. ASCII on non-EBCDIC) character is a valid UTF-8
-character.
+PERL_STATIC_INLINE UV
+Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
+{
+    const UV expectlen = UTF8SKIP(s);
+    const U8* send = s + expectlen;
+    UV uv = *s;
 
-=cut */
-PERL_STATIC_INLINE STRLEN
-S__is_utf8_char_slow(const U8 *s, const U8 *e)
+    PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR;
+
+    if (retlen) {
+        *retlen = expectlen;
+    }
+
+    /* An invariant is trivially returned */
+    if (expectlen == 1) {
+	return uv;
+    }
+
+    /* Remove the leading bits that indicate the number of bytes, leaving just
+     * the bits that are part of the value */
+    uv = NATIVE_UTF8_TO_I8(uv) & UTF_START_MASK(expectlen);
+
+    /* Now, loop through the remaining bytes, accumulating each into the
+     * working total as we go.  (I khw tried unrolling the loop for up to 4
+     * bytes, but there was no performance improvement) */
+    for (++s; s < send; s++) {
+        uv = UTF8_ACCUMULATE(uv, *s);
+    }
+
+    return UNI_TO_NATIVE(uv);
+
+}
+
+/*
+=for apidoc is_utf8_invariant_string
+
+Returns TRUE if the first C<len> bytes of the string C<s> are the same
+regardless of the UTF-8 encoding of the string (or UTF-EBCDIC encoding on
+EBCDIC machines); otherwise it returns FALSE.  That is, it returns TRUE if they
+are UTF-8 invariant.  On ASCII-ish machines, all the ASCII characters and only
+the ASCII characters fit this definition.  On EBCDIC machines, the ASCII-range
+characters are invariant, but so also are the C1 controls.
+
+If C<len> is 0, it will be calculated using C<strlen(s)>, (which means if you
+use this option, that C<s> can't have embedded C<NUL> characters and has to
+have a terminating C<NUL> byte).
+
+See also
+C<L</is_utf8_string>>,
+C<L</is_utf8_string_flags>>,
+C<L</is_utf8_string_loc>>,
+C<L</is_utf8_string_loc_flags>>,
+C<L</is_utf8_string_loclen>>,
+C<L</is_utf8_string_loclen_flags>>,
+C<L</is_utf8_fixed_width_buf_flags>>,
+C<L</is_utf8_fixed_width_buf_loc_flags>>,
+C<L</is_utf8_fixed_width_buf_loclen_flags>>,
+C<L</is_strict_utf8_string>>,
+C<L</is_strict_utf8_string_loc>>,
+C<L</is_strict_utf8_string_loclen>>,
+C<L</is_c9strict_utf8_string>>,
+C<L</is_c9strict_utf8_string_loc>>,
+and
+C<L</is_c9strict_utf8_string_loclen>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_utf8_invariant_string(const U8* const s, const STRLEN len)
 {
-    dTHX;   /* The function called below requires thread context */
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
 
-    STRLEN actual_len;
+    PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING;
 
-    PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW;
+    for (; x < send; ++x) {
+	if (!UTF8_IS_INVARIANT(*x))
+	    return FALSE;
+    }
 
-    assert(e >= s);
-    utf8n_to_uvchr(s, e - s, &actual_len, UTF8_CHECK_ONLY);
+    return TRUE;
+}
 
-    return (actual_len == (STRLEN) -1) ? 0 : actual_len;
+/*
+=for apidoc is_utf8_string
+
+Returns TRUE if the first C<len> bytes of string C<s> form a valid
+Perl-extended-UTF-8 string; returns FALSE otherwise.  If C<len> is 0, it will
+be calculated using C<strlen(s)> (which means if you use this option, that C<s>
+can't have embedded C<NUL> characters and has to have a terminating C<NUL>
+byte).  Note that all characters being ASCII constitute 'a valid UTF-8 string'.
+
+This function considers Perl's extended UTF-8 to be valid.  That means that
+code points above Unicode, surrogates, and non-character code points are
+considered valid by this function.  Use C<L</is_strict_utf8_string>>,
+C<L</is_c9strict_utf8_string>>, or C<L</is_utf8_string_flags>> to restrict what
+code points are considered valid.
+
+See also
+C<L</is_utf8_invariant_string>>,
+C<L</is_utf8_string_loc>>,
+C<L</is_utf8_string_loclen>>,
+C<L</is_utf8_fixed_width_buf_flags>>,
+C<L</is_utf8_fixed_width_buf_loc_flags>>,
+C<L</is_utf8_fixed_width_buf_loclen_flags>>,
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_string(const U8 *s, const STRLEN len)
+{
+    /* This is now marked pure in embed.fnc, because isUTF8_CHAR now is pure.
+     * Be aware of possible changes to that */
+
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+
+    PERL_ARGS_ASSERT_IS_UTF8_STRING;
+
+    while (x < send) {
+        const STRLEN cur_len = isUTF8_CHAR(x, send);
+        if (UNLIKELY(! cur_len)) {
+            return FALSE;
+        }
+        x += cur_len;
+    }
+
+    return TRUE;
 }
 
+/*
+=for apidoc is_strict_utf8_string
+
+Returns TRUE if the first C<len> bytes of string C<s> form a valid
+UTF-8-encoded string that is fully interchangeable by any application using
+Unicode rules; otherwise it returns FALSE.  If C<len> is 0, it will be
+calculated using C<strlen(s)> (which means if you use this option, that C<s>
+can't have embedded C<NUL> characters and has to have a terminating C<NUL>
+byte).  Note that all characters being ASCII constitute 'a valid UTF-8 string'.
+
+This function returns FALSE for strings containing any
+code points above the Unicode max of 0x10FFFF, surrogate code points, or
+non-character code points.
+
+See also
+C<L</is_utf8_invariant_string>>,
+C<L</is_utf8_string>>,
+C<L</is_utf8_string_flags>>,
+C<L</is_utf8_string_loc>>,
+C<L</is_utf8_string_loc_flags>>,
+C<L</is_utf8_string_loclen>>,
+C<L</is_utf8_string_loclen_flags>>,
+C<L</is_utf8_fixed_width_buf_flags>>,
+C<L</is_utf8_fixed_width_buf_loc_flags>>,
+C<L</is_utf8_fixed_width_buf_loclen_flags>>,
+C<L</is_strict_utf8_string_loc>>,
+C<L</is_strict_utf8_string_loclen>>,
+C<L</is_c9strict_utf8_string>>,
+C<L</is_c9strict_utf8_string_loc>>,
+and
+C<L</is_c9strict_utf8_string_loclen>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_strict_utf8_string(const U8 *s, const STRLEN len)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+
+    PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING;
+
+    while (x < send) {
+        const STRLEN cur_len = isSTRICT_UTF8_CHAR(x, send);
+        if (UNLIKELY(! cur_len)) {
+            return FALSE;
+        }
+        x += cur_len;
+    }
+
+    return TRUE;
+}
+
+/*
+=for apidoc is_c9strict_utf8_string
+
+Returns TRUE if the first C<len> bytes of string C<s> form a valid
+UTF-8-encoded string that conforms to
+L<Unicode Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>;
+otherwise it returns FALSE.  If C<len> is 0, it will be calculated using
+C<strlen(s)> (which means if you use this option, that C<s> can't have embedded
+C<NUL> characters and has to have a terminating C<NUL> byte).  Note that all
+characters being ASCII constitute 'a valid UTF-8 string'.
+
+This function returns FALSE for strings containing any code points above the
+Unicode max of 0x10FFFF or surrogate code points, but accepts non-character
+code points per
+L<Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>.
+
+See also
+C<L</is_utf8_invariant_string>>,
+C<L</is_utf8_string>>,
+C<L</is_utf8_string_flags>>,
+C<L</is_utf8_string_loc>>,
+C<L</is_utf8_string_loc_flags>>,
+C<L</is_utf8_string_loclen>>,
+C<L</is_utf8_string_loclen_flags>>,
+C<L</is_utf8_fixed_width_buf_flags>>,
+C<L</is_utf8_fixed_width_buf_loc_flags>>,
+C<L</is_utf8_fixed_width_buf_loclen_flags>>,
+C<L</is_strict_utf8_string>>,
+C<L</is_strict_utf8_string_loc>>,
+C<L</is_strict_utf8_string_loclen>>,
+C<L</is_c9strict_utf8_string_loc>>,
+and
+C<L</is_c9strict_utf8_string_loclen>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_c9strict_utf8_string(const U8 *s, const STRLEN len)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+
+    PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING;
+
+    while (x < send) {
+        const STRLEN cur_len = isC9_STRICT_UTF8_CHAR(x, send);
+        if (UNLIKELY(! cur_len)) {
+            return FALSE;
+        }
+        x += cur_len;
+    }
+
+    return TRUE;
+}
+
+/* The above 3 functions could have been moved into the more general one just
+ * below, and made #defines that call it with the right 'flags'.  They are
+ * currently kept separate to increase their chances of getting inlined */
+
+/*
+=for apidoc is_utf8_string_flags
+
+Returns TRUE if the first C<len> bytes of string C<s> form a valid
+UTF-8 string, subject to the restrictions imposed by C<flags>;
+returns FALSE otherwise.  If C<len> is 0, it will be calculated
+using C<strlen(s)> (which means if you use this option, that C<s> can't have
+embedded C<NUL> characters and has to have a terminating C<NUL> byte).  Note
+that all characters being ASCII constitute 'a valid UTF-8 string'.
+
+If C<flags> is 0, this gives the same results as C<L</is_utf8_string>>; if
+C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results
+as C<L</is_strict_utf8_string>>; and if C<flags> is
+C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives the same results as
+C<L</is_c9strict_utf8_string>>.  Otherwise C<flags> may be any
+combination of the C<UTF8_DISALLOW_I<foo>> flags understood by
+C<L</utf8n_to_uvchr>>, with the same meanings.
+
+See also
+C<L</is_utf8_invariant_string>>,
+C<L</is_utf8_string>>,
+C<L</is_utf8_string_loc>>,
+C<L</is_utf8_string_loc_flags>>,
+C<L</is_utf8_string_loclen>>,
+C<L</is_utf8_string_loclen_flags>>,
+C<L</is_utf8_fixed_width_buf_flags>>,
+C<L</is_utf8_fixed_width_buf_loc_flags>>,
+C<L</is_utf8_fixed_width_buf_loclen_flags>>,
+C<L</is_strict_utf8_string>>,
+C<L</is_strict_utf8_string_loc>>,
+C<L</is_strict_utf8_string_loclen>>,
+C<L</is_c9strict_utf8_string>>,
+C<L</is_c9strict_utf8_string_loc>>,
+and
+C<L</is_c9strict_utf8_string_loclen>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_utf8_string_flags(const U8 *s, const STRLEN len, const U32 flags)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+
+    PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS;
+    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
+                          |UTF8_DISALLOW_ABOVE_31_BIT)));
+
+    if (flags == 0) {
+        return is_utf8_string(s, len);
+    }
+
+    if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT)
+                                        == UTF8_DISALLOW_ILLEGAL_INTERCHANGE)
+    {
+        return is_strict_utf8_string(s, len);
+    }
+
+    if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT)
+                                       == UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE)
+    {
+        return is_c9strict_utf8_string(s, len);
+    }
+
+    while (x < send) {
+        STRLEN cur_len = isUTF8_CHAR_flags(x, send, flags);
+        if (UNLIKELY(! cur_len)) {
+            return FALSE;
+        }
+        x += cur_len;
+    }
+
+    return TRUE;
+}
+
+/*
+
+=for apidoc is_utf8_string_loc
+
+Like C<L</is_utf8_string>> but stores the location of the failure (in the
+case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer.
+
+See also C<L</is_utf8_string_loclen>>.
+
+=cut
+*/
+
+#define is_utf8_string_loc(s, len, ep)  is_utf8_string_loclen(s, len, ep, 0)
+
+/*
+
+=for apidoc is_utf8_string_loclen
+
+Like C<L</is_utf8_string>> but stores the location of the failure (in the
+case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer, and the number of UTF-8
+encoded characters in the C<el> pointer.
+
+See also C<L</is_utf8_string_loc>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+    STRLEN outlen = 0;
+
+    PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN;
+
+    while (x < send) {
+        const STRLEN cur_len = isUTF8_CHAR(x, send);
+        if (UNLIKELY(! cur_len)) {
+            break;
+        }
+        x += cur_len;
+        outlen++;
+    }
+
+    if (el)
+        *el = outlen;
+
+    if (ep) {
+        *ep = x;
+    }
+
+    return (x == send);
+}
+
+/*
+
+=for apidoc is_strict_utf8_string_loc
+
+Like C<L</is_strict_utf8_string>> but stores the location of the failure (in the
+case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer.
+
+See also C<L</is_strict_utf8_string_loclen>>.
+
+=cut
+*/
+
+#define is_strict_utf8_string_loc(s, len, ep)                               \
+                                is_strict_utf8_string_loclen(s, len, ep, 0)
+
+/*
+
+=for apidoc is_strict_utf8_string_loclen
+
+Like C<L</is_strict_utf8_string>> but stores the location of the failure (in the
+case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer, and the number of UTF-8
+encoded characters in the C<el> pointer.
+
+See also C<L</is_strict_utf8_string_loc>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+    STRLEN outlen = 0;
+
+    PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN;
+
+    while (x < send) {
+        const STRLEN cur_len = isSTRICT_UTF8_CHAR(x, send);
+        if (UNLIKELY(! cur_len)) {
+            break;
+        }
+        x += cur_len;
+        outlen++;
+    }
+
+    if (el)
+        *el = outlen;
+
+    if (ep) {
+        *ep = x;
+    }
+
+    return (x == send);
+}
+
+/*
+
+=for apidoc is_c9strict_utf8_string_loc
+
+Like C<L</is_c9strict_utf8_string>> but stores the location of the failure (in
+the case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer.
+
+See also C<L</is_c9strict_utf8_string_loclen>>.
+
+=cut
+*/
+
+#define is_c9strict_utf8_string_loc(s, len, ep)	                            \
+                            is_c9strict_utf8_string_loclen(s, len, ep, 0)
+
+/*
+
+=for apidoc is_c9strict_utf8_string_loclen
+
+Like C<L</is_c9strict_utf8_string>> but stores the location of the failure (in
+the case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer, and the number of UTF-8 encoded
+characters in the C<el> pointer.
+
+See also C<L</is_c9strict_utf8_string_loc>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_c9strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+    STRLEN outlen = 0;
+
+    PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN;
+
+    while (x < send) {
+        const STRLEN cur_len = isC9_STRICT_UTF8_CHAR(x, send);
+        if (UNLIKELY(! cur_len)) {
+            break;
+        }
+        x += cur_len;
+        outlen++;
+    }
+
+    if (el)
+        *el = outlen;
+
+    if (ep) {
+        *ep = x;
+    }
+
+    return (x == send);
+}
+
+/*
+
+=for apidoc is_utf8_string_loc_flags
+
+Like C<L</is_utf8_string_flags>> but stores the location of the failure (in the
+case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer.
+
+See also C<L</is_utf8_string_loclen_flags>>.
+
+=cut
+*/
+
+#define is_utf8_string_loc_flags(s, len, ep, flags)                         \
+                        is_utf8_string_loclen_flags(s, len, ep, 0, flags)
+
+
+/* The above 3 actual functions could have been moved into the more general one
+ * just below, and made #defines that call it with the right 'flags'.  They are
+ * currently kept separate to increase their chances of getting inlined */
+
+/*
+
+=for apidoc is_utf8_string_loclen_flags
+
+Like C<L</is_utf8_string_flags>> but stores the location of the failure (in the
+case of "utf8ness failure") or the location C<s>+C<len> (in the case of
+"utf8ness success") in the C<ep> pointer, and the number of UTF-8
+encoded characters in the C<el> pointer.
+
+See also C<L</is_utf8_string_loc_flags>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_utf8_string_loclen_flags(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el, const U32 flags)
+{
+    const U8* const send = s + (len ? len : strlen((const char *)s));
+    const U8* x = s;
+    STRLEN outlen = 0;
+
+    PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS;
+    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
+                          |UTF8_DISALLOW_ABOVE_31_BIT)));
+
+    if (flags == 0) {
+        return is_utf8_string_loclen(s, len, ep, el);
+    }
+
+    if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT)
+                                        == UTF8_DISALLOW_ILLEGAL_INTERCHANGE)
+    {
+        return is_strict_utf8_string_loclen(s, len, ep, el);
+    }
+
+    if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT)
+                                    == UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE)
+    {
+        return is_c9strict_utf8_string_loclen(s, len, ep, el);
+    }
+
+    while (x < send) {
+        const STRLEN cur_len = isUTF8_CHAR_flags(x, send, flags);
+        if (UNLIKELY(! cur_len)) {
+            break;
+        }
+        x += cur_len;
+        outlen++;
+    }
+
+    if (el)
+        *el = outlen;
+
+    if (ep) {
+        *ep = x;
+    }
+
+    return (x == send);
+}
+
+/*
+=for apidoc utf8_distance
+
+Returns the number of UTF-8 characters between the UTF-8 pointers C<a>
+and C<b>.
+
+WARNING: use only if you *know* that the pointers point inside the
+same UTF-8 buffer.
+
+=cut
+*/
+
+PERL_STATIC_INLINE IV
+Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
+{
+    PERL_ARGS_ASSERT_UTF8_DISTANCE;
+
+    return (a < b) ? -1 * (IV) utf8_length(a, b) : (IV) utf8_length(b, a);
+}
+
+/*
+=for apidoc utf8_hop
+
+Return the UTF-8 pointer C<s> displaced by C<off> characters, either
+forward or backward.
+
+WARNING: do not use the following unless you *know* C<off> is within
+the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
+on the first byte of character or just after the last byte of a character.
+
+=cut
+*/
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop(const U8 *s, SSize_t off)
+{
+    PERL_ARGS_ASSERT_UTF8_HOP;
+
+    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
+     * the bitops (especially ~) can create illegal UTF-8.
+     * In other words: in Perl UTF-8 is not just for Unicode. */
+
+    if (off >= 0) {
+	while (off--)
+	    s += UTF8SKIP(s);
+    }
+    else {
+	while (off++) {
+	    s--;
+	    while (UTF8_IS_CONTINUATION(*s))
+		s--;
+	}
+    }
+    GCC_DIAG_IGNORE(-Wcast-qual);
+    return (U8 *)s;
+    GCC_DIAG_RESTORE;
+}
+
+/*
+=for apidoc utf8_hop_forward
+
+Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
+forward.
+
+C<off> must be non-negative.
+
+C<s> must be before or equal to C<end>.
+
+When moving forward it will not move beyond C<end>.
+
+Will not exceed this limit even if the string is not valid "UTF-8".
+
+=cut
+*/
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
+{
+    PERL_ARGS_ASSERT_UTF8_HOP_FORWARD;
+
+    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
+     * the bitops (especially ~) can create illegal UTF-8.
+     * In other words: in Perl UTF-8 is not just for Unicode. */
+
+    assert(s <= end);
+    assert(off >= 0);
+
+    while (off--) {
+        STRLEN skip = UTF8SKIP(s);
+        if ((STRLEN)(end - s) <= skip) {
+            GCC_DIAG_IGNORE(-Wcast-qual);
+            return (U8 *)end;
+            GCC_DIAG_RESTORE;
+        }
+        s += skip;
+    }
+
+    GCC_DIAG_IGNORE(-Wcast-qual);
+    return (U8 *)s;
+    GCC_DIAG_RESTORE;
+}
+
+/*
+=for apidoc utf8_hop_back
+
+Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
+backward.
+
+C<off> must be non-positive.
+
+C<s> must be after or equal to C<start>.
+
+When moving backward it will not move before C<start>.
+
+Will not exceed this limit even if the string is not valid "UTF-8".
+
+=cut
+*/
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
+{
+    PERL_ARGS_ASSERT_UTF8_HOP_BACK;
+
+    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
+     * the bitops (especially ~) can create illegal UTF-8.
+     * In other words: in Perl UTF-8 is not just for Unicode. */
+
+    assert(start <= s);
+    assert(off <= 0);
+
+    while (off++ && s > start) {
+        s--;
+        while (UTF8_IS_CONTINUATION(*s) && s > start)
+            s--;
+    }
+    
+    GCC_DIAG_IGNORE(-Wcast-qual);
+    return (U8 *)s;
+    GCC_DIAG_RESTORE;
+}
+
+/*
+=for apidoc utf8_hop_safe
+
+Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
+either forward or backward.
+
+When moving backward it will not move before C<start>.
+
+When moving forward it will not move beyond C<end>.
+
+Will not exceed those limits even if the string is not valid "UTF-8".
+
+=cut
+*/
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
+{
+    PERL_ARGS_ASSERT_UTF8_HOP_SAFE;
+
+    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
+     * the bitops (especially ~) can create illegal UTF-8.
+     * In other words: in Perl UTF-8 is not just for Unicode. */
+
+    assert(start <= s && s <= end);
+
+    if (off >= 0) {
+        return utf8_hop_forward(s, off, end);
+    }
+    else {
+        return utf8_hop_back(s, off, start);
+    }
+}
+
+/*
+
+=for apidoc is_utf8_valid_partial_char
+
+Returns 0 if the sequence of bytes starting at C<s> and looking no further than
+S<C<e - 1>> is the UTF-8 encoding, as extended by Perl, for one or more code
+points.  Otherwise, it returns 1 if there exists at least one non-empty
+sequence of bytes that when appended to sequence C<s>, starting at position
+C<e> causes the entire sequence to be the well-formed UTF-8 of some code point;
+otherwise returns 0.
+
+In other words this returns TRUE if C<s> points to a partial UTF-8-encoded code
+point.
+
+This is useful when a fixed-length buffer is being tested for being well-formed
+UTF-8, but the final few bytes in it don't comprise a full character; that is,
+it is split somewhere in the middle of the final code point's UTF-8
+representation.  (Presumably when the buffer is refreshed with the next chunk
+of data, the new first bytes will complete the partial code point.)   This
+function is used to verify that the final bytes in the current buffer are in
+fact the legal beginning of some code point, so that if they aren't, the
+failure can be signalled without having to wait for the next read.
+
+=cut
+*/
+#define is_utf8_valid_partial_char(s, e)                                    \
+                                is_utf8_valid_partial_char_flags(s, e, 0)
+
+/*
+
+=for apidoc is_utf8_valid_partial_char_flags
+
+Like C<L</is_utf8_valid_partial_char>>, it returns a boolean giving whether
+or not the input is a valid UTF-8 encoded partial character, but it takes an
+extra parameter, C<flags>, which can further restrict which code points are
+considered valid.
+
+If C<flags> is 0, this behaves identically to
+C<L</is_utf8_valid_partial_char>>.  Otherwise C<flags> can be any combination
+of the C<UTF8_DISALLOW_I<foo>> flags accepted by C<L</utf8n_to_uvchr>>.  If
+there is any sequence of bytes that can complete the input partial character in
+such a way that a non-prohibited character is formed, the function returns
+TRUE; otherwise FALSE.  Non character code points cannot be determined based on
+partial character input.  But many  of the other possible excluded types can be
+determined from just the first one or two bytes.
+
+=cut
+ */
+
+PERL_STATIC_INLINE bool
+S_is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags)
+{
+    PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS;
+
+    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
+                          |UTF8_DISALLOW_ABOVE_31_BIT)));
+
+    if (s >= e || s + UTF8SKIP(s) <= e) {
+        return FALSE;
+    }
+
+    return cBOOL(_is_utf8_char_helper(s, e, flags));
+}
+
+/*
+
+=for apidoc is_utf8_fixed_width_buf_flags
+
+Returns TRUE if the fixed-width buffer starting at C<s> with length C<len>
+is entirely valid UTF-8, subject to the restrictions given by C<flags>;
+otherwise it returns FALSE.
+
+If C<flags> is 0, any well-formed UTF-8, as extended by Perl, is accepted
+without restriction.  If the final few bytes of the buffer do not form a
+complete code point, this will return TRUE anyway, provided that
+C<L</is_utf8_valid_partial_char_flags>> returns TRUE for them.
+
+If C<flags> in non-zero, it can be any combination of the
+C<UTF8_DISALLOW_I<foo>> flags accepted by C<L</utf8n_to_uvchr>>, and with the
+same meanings.
+
+This function differs from C<L</is_utf8_string_flags>> only in that the latter
+returns FALSE if the final few bytes of the string don't form a complete code
+point.
+
+=cut
+ */
+#define is_utf8_fixed_width_buf_flags(s, len, flags)                        \
+                is_utf8_fixed_width_buf_loclen_flags(s, len, 0, 0, flags)
+
+/*
+
+=for apidoc is_utf8_fixed_width_buf_loc_flags
+
+Like C<L</is_utf8_fixed_width_buf_flags>> but stores the location of the
+failure in the C<ep> pointer.  If the function returns TRUE, C<*ep> will point
+to the beginning of any partial character at the end of the buffer; if there is
+no partial character C<*ep> will contain C<s>+C<len>.
+
+See also C<L</is_utf8_fixed_width_buf_loclen_flags>>.
+
+=cut
+*/
+
+#define is_utf8_fixed_width_buf_loc_flags(s, len, loc, flags)               \
+                is_utf8_fixed_width_buf_loclen_flags(s, len, loc, 0, flags)
+
+/*
+
+=for apidoc is_utf8_fixed_width_buf_loclen_flags
+
+Like C<L</is_utf8_fixed_width_buf_loc_flags>> but stores the number of
+complete, valid characters found in the C<el> pointer.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+S_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s,
+                                       const STRLEN len,
+                                       const U8 **ep,
+                                       STRLEN *el,
+                                       const U32 flags)
+{
+    const U8 * maybe_partial;
+
+    PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS;
+
+    if (! ep) {
+        ep  = &maybe_partial;
+    }
+
+    /* If it's entirely valid, return that; otherwise see if the only error is
+     * that the final few bytes are for a partial character */
+    return    is_utf8_string_loclen_flags(s, len, ep, el, flags)
+           || is_utf8_valid_partial_char_flags(*ep, s + len, flags);
+}
+
 /* ------------------------------- perl.h ----------------------------- */
 
 /*
@@ -601,9 +1499,9 @@
     cx->blk_eval.cv            = NULL; /* later set by doeval_compile() */
     cx->blk_eval.cur_top_env   = PL_top_env;
 
-    assert(!(PL_in_eval     & ~ 0x7F));
+    assert(!(PL_in_eval     & ~ 0x3F));
     assert(!(PL_op->op_type & ~0x1FF));
-    cx->blk_u16 = (PL_in_eval & 0x7F) | ((U16)PL_op->op_type << 7);
+    cx->blk_u16 = (PL_in_eval & 0x3F) | ((U16)PL_op->op_type << 7);
 }
 
 
@@ -616,16 +1514,19 @@
     assert(CxTYPE(cx) == CXt_EVAL);
 
     PL_in_eval = CxOLD_IN_EVAL(cx);
+    assert(!(PL_in_eval & 0xc0));
     PL_eval_root = cx->blk_eval.old_eval_root;
     sv = cx->blk_eval.cur_text;
-    if (sv && SvSCREAM(sv)) {
+    if (sv && CxEVAL_TXT_REFCNTED(cx)) {
         cx->blk_eval.cur_text = NULL;
         SvREFCNT_dec_NN(sv);
     }
 
     sv = cx->blk_eval.old_namesv;
-    if (sv && !SvTEMP(sv))/* TEMP implies cx_popeval() re-entrantly called */
-        sv_2mortal(sv);
+    if (sv) {
+        cx->blk_eval.old_namesv = NULL;
+        SvREFCNT_dec_NN(sv);
+    }
 }
 
 
@@ -715,6 +1616,7 @@
     assert(CxTYPE(cx) == CXt_WHEN);
 
     PERL_UNUSED_ARG(cx);
+    PERL_UNUSED_CONTEXT;
     /* currently NOOP */
 }
 
@@ -743,9 +1645,92 @@
     SvREFCNT_dec(sv);
 }
 
+/* ------------------ util.h ------------------------------------------- */
 
+/*
+=head1 Miscellaneous Functions
 
+=for apidoc foldEQ
 
+Returns true if the leading C<len> bytes of the strings C<s1> and C<s2> are the
+same
+case-insensitively; false otherwise.  Uppercase and lowercase ASCII range bytes
+match themselves and their opposite case counterparts.  Non-cased and non-ASCII
+range bytes match only themselves.
+
+=cut
+*/
+
+PERL_STATIC_INLINE I32
+Perl_foldEQ(const char *s1, const char *s2, I32 len)
+{
+    const U8 *a = (const U8 *)s1;
+    const U8 *b = (const U8 *)s2;
+
+    PERL_ARGS_ASSERT_FOLDEQ;
+
+    assert(len >= 0);
+
+    while (len--) {
+	if (*a != *b && *a != PL_fold[*b])
+	    return 0;
+	a++,b++;
+    }
+    return 1;
+}
+
+PERL_STATIC_INLINE I32
+Perl_foldEQ_latin1(const char *s1, const char *s2, I32 len)
+{
+    /* Compare non-utf8 using Unicode (Latin1) semantics.  Does not work on
+     * MICRO_SIGN, LATIN_SMALL_LETTER_SHARP_S, nor
+     * LATIN_SMALL_LETTER_Y_WITH_DIAERESIS, and does not check for these.  Nor
+     * does it check that the strings each have at least 'len' characters */
+
+    const U8 *a = (const U8 *)s1;
+    const U8 *b = (const U8 *)s2;
+
+    PERL_ARGS_ASSERT_FOLDEQ_LATIN1;
+
+    assert(len >= 0);
+
+    while (len--) {
+	if (*a != *b && *a != PL_fold_latin1[*b]) {
+	    return 0;
+	}
+	a++, b++;
+    }
+    return 1;
+}
+
 /*
+=for apidoc foldEQ_locale
+
+Returns true if the leading C<len> bytes of the strings C<s1> and C<s2> are the
+same case-insensitively in the current locale; false otherwise.
+
+=cut
+*/
+
+PERL_STATIC_INLINE I32
+Perl_foldEQ_locale(const char *s1, const char *s2, I32 len)
+{
+    dVAR;
+    const U8 *a = (const U8 *)s1;
+    const U8 *b = (const U8 *)s2;
+
+    PERL_ARGS_ASSERT_FOLDEQ_LOCALE;
+
+    assert(len >= 0);
+
+    while (len--) {
+	if (*a != *b && *a != PL_fold_locale[*b])
+	    return 0;
+	a++,b++;
+    }
+    return 1;
+}
+
+/*
  * ex: set ts=8 sts=4 sw=4 et:
  */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -73,6 +73,7 @@
 
 /* Fields used by magic variables such as $@, $/ and so on */
 PERLVAR(I, curpm,	PMOP *)		/* what to do \ interps in REs from */
+PERLVAR(I, curpm_under,        PMOP *)                /* what to do \ interps in REs from */
 
 PERLVAR(I, tainting,	bool)		/* doing taint checks */
 PERLVARI(I, tainted,	bool, FALSE)	/* using variables controlled by $< */
@@ -97,9 +98,11 @@
 PERLVAR(I, defgv,	GV *)           /* the *_ glob */
 /*
 
-=for apidoc mn|bool|PL_dowarn
+=for apidoc mn|U8|PL_dowarn
 
-The C variable which corresponds to Perl's C<$^W> warning variable.
+The C variable that roughly corresponds to Perl's C<$^W> warning variable.
+However, C<$^W> is treated as a boolean, whereas C<PL_dowarn> is a
+collection of flag bits.
 
 =cut
 */
@@ -245,6 +248,7 @@
 
 PERLVAR(I, utf8locale,	bool)		/* utf8 locale detected */
 PERLVAR(I, in_utf8_CTYPE_locale, bool)
+PERLVAR(I, in_utf8_COLLATE_locale, bool)
 #ifdef USE_LOCALE_CTYPE
     PERLVAR(I, warn_locale, SV *)
 #endif
@@ -489,8 +493,8 @@
 
 PERLVAR(I, compcv,	CV *)		/* currently compiling subroutine */
 PERLVAR(I, comppad_name, PADNAMELIST *)	/* variable names for "my" variables */
-PERLVAR(I, comppad_name_fill,	I32)	/* last "introduced" variable offset */
-PERLVAR(I, comppad_name_floor,	I32)	/* start of vars in innermost block */
+PERLVAR(I, comppad_name_fill,	PADOFFSET)/* last "introduced" variable offset */
+PERLVAR(I, comppad_name_floor,	PADOFFSET)/* start of vars in innermost block */
 
 #ifdef HAVE_INTERP_INTERN
 PERLVAR(I, sys_intern,	struct interp_intern)
@@ -542,7 +546,7 @@
 
 PERLVAR(I, debug,	VOL U32)	/* flags given to -D switch */
 
-PERLVARI(I, maxo,	int,	MAXO)	/* maximum number of ops */
+PERLVARI(I, padlist_generation, U32, 1)	/* id to identify padlist clones */
 
 PERLVARI(I, runops,	runops_proc_t, RUNOPS_DEFAULT)
 
@@ -549,14 +553,14 @@
 PERLVAR(I, subname,	SV *)		/* name of current subroutine */
 
 PERLVAR(I, subline,	I32)		/* line this subroutine began on */
-PERLVAR(I, min_intro_pending, I32)	/* start of vars to introduce */
+PERLVAR(I, min_intro_pending, PADOFFSET)/* start of vars to introduce */
 
-PERLVAR(I, max_intro_pending, I32)	/* end of vars to introduce */
-PERLVAR(I, padix,	I32)		/* lowest unused index - 1
+PERLVAR(I, max_intro_pending, PADOFFSET)/* end of vars to introduce */
+PERLVAR(I, padix,	PADOFFSET)	/* lowest unused index - 1
 					   in current "register" pad */
-PERLVAR(I, constpadix,	I32)		/* lowest unused for constants */
+PERLVAR(I, constpadix,	PADOFFSET)	/* lowest unused for constants */
 
-PERLVAR(I, padix_floor,	I32)		/* how low may inner block reset padix */
+PERLVAR(I, padix_floor,	PADOFFSET)	/* how low may inner block reset padix */
 
 #ifdef USE_LOCALE_COLLATE
 PERLVAR(I, collation_name, char *)	/* Name of current collation */
@@ -563,6 +567,10 @@
 PERLVAR(I, collxfrm_base, Size_t)	/* Basic overhead in *xfrm() */
 PERLVARI(I, collxfrm_mult,Size_t, 2)	/* Expansion factor in *xfrm() */
 PERLVARI(I, collation_ix, U32,	0)	/* Collation generation index */
+PERLVARI(I, strxfrm_NUL_replacement, U8, 0)  /* Code point to replace NULs */
+PERLVARI(I, strxfrm_is_behaved, bool, TRUE)
+                            /* Assume until proven otherwise that it works */
+PERLVARI(I, strxfrm_max_cp, U8, 0)      /* Highest collating cp in locale */
 PERLVARI(I, collation_standard, bool, TRUE)
 					/* Assume simple collation */
 #endif /* USE_LOCALE_COLLATE */
@@ -622,6 +630,8 @@
 PERLVAR(I, LB_invlist, SV *)
 PERLVAR(I, SB_invlist, SV *)
 PERLVAR(I, WB_invlist, SV *)
+PERLVAR(I, Assigned_invlist, SV *)
+PERLVAR(I, seen_deprecated_macro, HV *)
 
 PERLVAR(I, last_swash_hv, HV *)
 PERLVAR(I, last_swash_tmps, U8 *)
@@ -690,9 +700,6 @@
 PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
 #endif
 
-PERLVARI(I, encoding,	SV *,	NULL)	/* $^ENCODING */
-PERLVARI(I, lex_encoding, SV *,	NULL)	/* encoding pragma */
-
 PERLVAR(I, utf8_idstart, SV *)
 PERLVAR(I, utf8_idcont,	SV *)
 PERLVAR(I, utf8_xidstart, SV *)
@@ -760,8 +767,6 @@
 /* Hook for File::Glob */
 PERLVARI(I, globhook,	globhook_t, NULL)
 
-PERLVARI(I, padlist_generation, U32, 1)	/* id to identify padlist clones */
-
 /* The last unconditional member of the interpreter structure when 5.18.0 was
    released. The offset of the end of this is baked into a global variable in 
    any shared perl library which will allow a sanity test in future perl

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -270,5 +270,5 @@
 #define KEY_y			254
 
 /* Generated from:
- * 7e3d76a333c5f9b77d47dd7d423450356b63853a1c2313d3e805042caaa4bc2c regen/keywords.pl
+ * db0472e0ad4f44bd0816cad799d63b60d1bbd7e11cef40ea15bf0d00f69669f6 regen/keywords.pl
  * ex: set ro: */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -168,7 +168,7 @@
 /* U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
 /* U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
 /* U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
+/* U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
 /* U+A1 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
 /* U+A2 CENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
 /* U+A3 POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
@@ -336,7 +336,7 @@
 /* 0x3E U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
 /* 0x3F U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
 /* 0x40 U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION),
+/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION),
 /* 0x42 U+E2 I8=A1 a with '^' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION),
 /* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION),
 /* 0x44 U+E0 I8=A3 a with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION),
@@ -599,7 +599,7 @@
 /* 0x3E U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
 /* 0x3F U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
 /* 0x40 U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION),
+/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION),
 /* 0x42 U+E2 I8=A1 a with '^' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION),
 /* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION),
 /* 0x44 U+E0 I8=A3 a with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION),

Deleted: trunk/Master/tlpkg/tlperl/lib/CORE/libperl524.a
===================================================================
(Binary files differ)

Added: trunk/Master/tlpkg/tlperl/lib/CORE/libperl526.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tlperl/lib/CORE/libperl526.a
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/libperl526.a	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/libperl526.a	2018-03-08 00:16:42 UTC (rev 46882)

Property changes on: trunk/Master/tlpkg/tlperl/lib/CORE/libperl526.a
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -10,34 +10,6 @@
  * they won't be available unless used. When new symbols are probed
  * in Configure, this is the way to force them into availability.
  *
- * BOOTSTRAP_CHARSET
- * DOUBLEKIND
- * HAS_ACOSH
- * HAS_ASCTIME64
- * HAS_CTIME64
- * HAS_DIFFTIME64
- * HAS_DLADDR
- * HAS_FEGETROUND
- * HAS_FPCLASSIFY
- * HAS_FREELOCALE
- * HAS_GMTIME64
- * HAS_ISFINITEL
- * HAS_ISINFL
- * HAS_ISLESS
- * HAS_J0
- * HAS_LOCALTIME64
- * HAS_MEMMEM
- * HAS_MKTIME64
- * HAS_NEWLOCALE
- * HAS_PRCTL
- * HAS_PSEUDOFORK
- * HAS_TIMEGM
- * HAS_USELOCALE
- * I16SIZE
- * I64SIZE
- * I8SIZE
- * LOCALTIME_R_NEEDS_TZSET
- * LONG_DOUBLEKIND
- * U8SIZE
- * USE_CBACKTRACE
+ * Symbols should only be here temporarily. Once they are actually used,
+ * they should be removed from here.
  */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/op.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/op.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/op.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -123,7 +123,6 @@
 				/*  On OP_NULL, saw a "do". */
 				/*  On OP_EXISTS, treat av as av, not avhv.  */
 				/*  On OP_(ENTER|LEAVE)EVAL, don't clear $@ */
-                                /*  On pushre, rx is used as part of split, e.g. split " " */
 				/*  On regcomp, "use re 'eval'" was in scope */
 				/*  On RV2[ACGHS]V, don't create GV--in
 				    defined()*/
@@ -154,7 +153,7 @@
 /* There is no room in op_flags for this one, so it has its own bit-
    field member (op_folded) instead.  The flag is only used to tell
    op_convert_list to set op_folded.  */
-#define OPf_FOLDED      1<<16
+#define OPf_FOLDED      (1<<16)
 
 /* old names; don't use in new code, but don't break them, either */
 #define OPf_LIST	OPf_WANT_LIST
@@ -261,11 +260,8 @@
     U32         op_pmflags;
     union {
 	OP *	op_pmreplroot;		/* For OP_SUBST */
-#ifdef USE_ITHREADS
-	PADOFFSET  op_pmtargetoff;	/* For OP_PUSHRE */
-#else
-	GV *	op_pmtargetgv;
-#endif
+	PADOFFSET op_pmtargetoff;	/* For OP_SPLIT lex ary or thr GV */
+	GV *	op_pmtargetgv;	        /* For OP_SPLIT non-threaded GV */
     }	op_pmreplrootu;
     union {
 	OP *	op_pmreplstart;	/* Only used in OP_SUBST */
@@ -331,6 +327,10 @@
  * other end instead; this preserves binary compatibility. */
 #define PMf_BASE_SHIFT (_RXf_PMf_SHIFT_NEXT+2)
 
+/* Set by the parser if it discovers an error, so the regex shouldn't be
+ * compiled */
+#define PMf_HAS_ERROR	(1U<<(PMf_BASE_SHIFT+4))
+
 /* 'use re "taint"' in scope: taint $1 etc. if target tainted */
 #define PMf_RETAINT	(1U<<(PMf_BASE_SHIFT+5))
 
@@ -479,6 +479,24 @@
 #define kLOOP		cLOOPx(kid)
 
 
+typedef enum {
+    OPclass_NULL,     /*  0 */
+    OPclass_BASEOP,   /*  1 */
+    OPclass_UNOP,     /*  2 */
+    OPclass_BINOP,    /*  3 */
+    OPclass_LOGOP,    /*  4 */
+    OPclass_LISTOP,   /*  5 */
+    OPclass_PMOP,     /*  6 */
+    OPclass_SVOP,     /*  7 */
+    OPclass_PADOP,    /*  8 */
+    OPclass_PVOP,     /*  9 */
+    OPclass_LOOP,     /* 10 */
+    OPclass_COP,      /* 11 */
+    OPclass_METHOP,   /* 12 */
+    OPclass_UNOP_AUX  /* 13 */
+} OPclass;
+
+
 #ifdef USE_ITHREADS
 #  define	cGVOPx_gv(o)	((GV*)PAD_SVl(cPADOPx(o)->op_padix))
 #  ifndef PERL_CORE
@@ -913,7 +931,10 @@
 =for apidoc Am|U32|OP_CLASS|OP *o
 Return the class of the provided OP: that is, which of the *OP
 structures it uses.  For core ops this currently gets the information out
-of C<PL_opargs>, which does not always accurately reflect the type used.
+of C<PL_opargs>, which does not always accurately reflect the type used;
+in v5.26 onwards, see also the function C<L</op_class>> which can do a better
+job of determining the used type.
+
 For custom ops the type is returned from the registration, and it is up
 to the registree to ensure it is accurate.  The value returned will be
 one of the C<OA_>* constants from F<op.h>.
@@ -1079,7 +1100,8 @@
 #if defined(PERL_IN_DOOP_C) || defined(PERL_IN_PP_C)
 static const char * const deprecated_above_ff_msg
     = "Use of strings with code points over 0xFF as arguments to "
-      "%s operator is deprecated";
+      "%s operator is deprecated. This will be a fatal error in "
+      "Perl 5.28";
 #endif
 
 

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -159,7 +159,6 @@
 	"padav",
 	"padhv",
 	"padany",
-	"pushre",
 	"rv2gv",
 	"rv2sv",
 	"av2arylen",
@@ -288,8 +287,8 @@
 	"aslice",
 	"kvaslice",
 	"aeach",
+	"avalues",
 	"akeys",
-	"avalues",
 	"each",
 	"values",
 	"keys",
@@ -334,6 +333,9 @@
 	"entersub",
 	"leavesub",
 	"leavesublv",
+	"argcheck",
+	"argelem",
+	"argdefelem",
 	"caller",
 	"warn",
 	"die",
@@ -528,6 +530,7 @@
 	"once",
 	"custom",
 	"coreargs",
+	"avhvswitch",
 	"runcv",
 	"fc",
 	"padcv",
@@ -560,7 +563,6 @@
 	"private array",
 	"private hash",
 	"private value",
-	"push regexp",
 	"ref-to-glob cast",
 	"scalar dereference",
 	"array length",
@@ -642,12 +644,12 @@
 	"bitwise and (&)",
 	"bitwise xor (^)",
 	"bitwise or (|)",
-	"numeric bitiwse and (&)",
+	"numeric bitwise and (&)",
 	"numeric bitwise xor (^)",
 	"numeric bitwise or (|)",
-	"string bitiwse and (&)",
-	"string bitwise xor (^)",
-	"string bitwise or (|)",
+	"string bitwise and (&.)",
+	"string bitwise xor (^.)",
+	"string bitwise or (|.)",
 	"negation (-)",
 	"integer negation (-)",
 	"not",
@@ -689,8 +691,8 @@
 	"array slice",
 	"index/value array slice",
 	"each on array",
+	"values on array",
 	"keys on array",
-	"values on array",
 	"each",
 	"values",
 	"keys",
@@ -735,6 +737,9 @@
 	"subroutine entry",
 	"subroutine exit",
 	"lvalue subroutine return",
+	"check subroutine arguments",
+	"subroutine argument",
+	"subroutine argument default value",
 	"caller",
 	"warn",
 	"die",
@@ -929,6 +934,7 @@
 	"once",
 	"unknown custom operator",
 	"CORE:: subroutine",
+	"Array/hash switch",
 	"__SUB__",
 	"fc",
 	"private subroutine",
@@ -975,7 +981,6 @@
 	Perl_pp_padav,
 	Perl_pp_padhv,
 	Perl_pp_padany,	/* implemented by Perl_unimplemented_op */
-	Perl_pp_pushre,
 	Perl_pp_rv2gv,
 	Perl_pp_rv2sv,
 	Perl_pp_av2arylen,
@@ -1104,8 +1109,8 @@
 	Perl_pp_aslice,
 	Perl_pp_kvaslice,
 	Perl_pp_aeach,
+	Perl_pp_avalues,	/* implemented by Perl_pp_akeys */
 	Perl_pp_akeys,
-	Perl_pp_avalues,	/* implemented by Perl_pp_akeys */
 	Perl_pp_each,
 	Perl_pp_values,	/* implemented by Perl_do_kv */
 	Perl_pp_keys,	/* implemented by Perl_do_kv */
@@ -1150,6 +1155,9 @@
 	Perl_pp_entersub,
 	Perl_pp_leavesub,
 	Perl_pp_leavesublv,
+	Perl_pp_argcheck,
+	Perl_pp_argelem,
+	Perl_pp_argdefelem,
 	Perl_pp_caller,
 	Perl_pp_warn,
 	Perl_pp_die,
@@ -1344,6 +1352,7 @@
 	Perl_pp_once,
 	Perl_pp_custom,	/* implemented by Perl_unimplemented_op */
 	Perl_pp_coreargs,
+	Perl_pp_avhvswitch,
 	Perl_pp_runcv,
 	Perl_pp_fc,
 	Perl_pp_padcv,
@@ -1386,7 +1395,6 @@
 	Perl_ck_null,		/* padav */
 	Perl_ck_null,		/* padhv */
 	Perl_ck_null,		/* padany */
-	Perl_ck_null,		/* pushre */
 	Perl_ck_rvconst,	/* rv2gv */
 	Perl_ck_rvconst,	/* rv2sv */
 	Perl_ck_null,		/* av2arylen */
@@ -1515,8 +1523,8 @@
 	Perl_ck_null,		/* aslice */
 	Perl_ck_null,		/* kvaslice */
 	Perl_ck_each,		/* aeach */
+	Perl_ck_each,		/* avalues */
 	Perl_ck_each,		/* akeys */
-	Perl_ck_each,		/* avalues */
 	Perl_ck_each,		/* each */
 	Perl_ck_each,		/* values */
 	Perl_ck_each,		/* keys */
@@ -1561,6 +1569,9 @@
 	Perl_ck_subr,		/* entersub */
 	Perl_ck_null,		/* leavesub */
 	Perl_ck_null,		/* leavesublv */
+	Perl_ck_null,		/* argcheck */
+	Perl_ck_null,		/* argelem */
+	Perl_ck_null,		/* argdefelem */
 	Perl_ck_fun,		/* caller */
 	Perl_ck_fun,		/* warn */
 	Perl_ck_fun,		/* die */
@@ -1755,6 +1766,7 @@
 	Perl_ck_null,		/* once */
 	Perl_ck_null,		/* custom */
 	Perl_ck_null,		/* coreargs */
+	Perl_ck_null,		/* avhvswitch */
 	Perl_ck_null,		/* runcv */
 	Perl_ck_fun,		/* fc */
 	Perl_ck_null,		/* padcv */
@@ -1791,7 +1803,6 @@
 	0x00000040,	/* padav */
 	0x00000040,	/* padhv */
 	0x00000040,	/* padany */
-	0x00000540,	/* pushre */
 	0x00000144,	/* rv2gv */
 	0x00000144,	/* rv2sv */
 	0x00000104,	/* av2arylen */
@@ -1815,7 +1826,7 @@
 	0x00000304,	/* substcont */
 	0x00001804,	/* trans */
 	0x00001804,	/* transr */
-	0x00000004,	/* sassign */
+	0x00011204,	/* sassign */
 	0x00022208,	/* aassign */
 	0x00002b0d,	/* chop */
 	0x00009b8c,	/* schop */
@@ -1920,8 +1931,8 @@
 	0x00023401,	/* aslice */
 	0x00023401,	/* kvaslice */
 	0x00003b40,	/* aeach */
+	0x00003b48,	/* avalues */
 	0x00003b08,	/* akeys */
-	0x00003b48,	/* avalues */
 	0x00004b40,	/* each */
 	0x00004b48,	/* values */
 	0x00004b08,	/* keys */
@@ -1934,7 +1945,7 @@
 	0x00000f44,	/* multideref */
 	0x00091480,	/* unpack */
 	0x0002140f,	/* pack */
-	0x00111408,	/* split */
+	0x00111508,	/* split */
 	0x0002140f,	/* join */
 	0x00002401,	/* list */
 	0x00224200,	/* lslice */
@@ -1966,6 +1977,9 @@
 	0x00002141,	/* entersub */
 	0x00000100,	/* leavesub */
 	0x00000100,	/* leavesublv */
+	0x00000f00,	/* argcheck */
+	0x00000f00,	/* argelem */
+	0x00000300,	/* argdefelem */
 	0x00009b08,	/* caller */
 	0x0000240d,	/* warn */
 	0x0000240d,	/* die */
@@ -2160,6 +2174,7 @@
 	0x00000300,	/* once */
 	0x00000000,	/* custom */
 	0x00000600,	/* coreargs */
+	0x00000108,	/* avhvswitch */
 	0x00000004,	/* runcv */
 	0x00009b8e,	/* fc */
 	0x00000040,	/* padcv */
@@ -2179,6 +2194,7 @@
 END_EXTERN_C
 
 
+#define OPpARGELEM_SV           0x00
 #define OPpLVREF_SV             0x00
 #define OPpARG1_MASK            0x01
 #define OPpCOREARGS_DEREF1      0x01
@@ -2185,6 +2201,7 @@
 #define OPpENTERSUB_INARGS      0x01
 #define OPpSORT_NUMERIC         0x01
 #define OPpTRANS_FROM_UTF       0x01
+#define OPpARGELEM_AV           0x02
 #define OPpCONST_NOVER          0x02
 #define OPpCOREARGS_DEREF2      0x02
 #define OPpEVAL_HAS_HH          0x02
@@ -2194,6 +2211,8 @@
 #define OPpSORT_INTEGER         0x02
 #define OPpTRANS_TO_UTF         0x02
 #define OPpARG2_MASK            0x03
+#define OPpAVHVSWITCH_MASK      0x03
+#define OPpARGELEM_HV           0x04
 #define OPpCONST_SHORTCIRCUIT   0x04
 #define OPpDONT_INIT_GV         0x04
 #define OPpENTERSUB_HASTARG     0x04
@@ -2202,7 +2221,9 @@
 #define OPpLVREF_ELEM           0x04
 #define OPpSLICEWARNING         0x04
 #define OPpSORT_REVERSE         0x04
+#define OPpSPLIT_IMPLIM         0x04
 #define OPpTRANS_IDENTICAL      0x04
+#define OPpARGELEM_MASK         0x06
 #define OPpARG3_MASK            0x07
 #define OPpPADRANGE_COUNTSHIFT  0x07
 #define OPpCONST_STRICT         0x08
@@ -2214,6 +2235,7 @@
 #define OPpMAYBE_LVSUB          0x08
 #define OPpREVERSE_INPLACE      0x08
 #define OPpSORT_INPLACE         0x08
+#define OPpSPLIT_LEX            0x08
 #define OPpTRANS_SQUASH         0x08
 #define OPpARG4_MASK            0x0f
 #define OPpASSIGN_COMMON_AGG    0x10
@@ -2226,6 +2248,7 @@
 #define OPpMULTIDEREF_EXISTS    0x10
 #define OPpOPEN_IN_RAW          0x10
 #define OPpSORT_DESCEND         0x10
+#define OPpSPLIT_ASSIGN         0x10
 #define OPpSUBSTR_REPL_FIRST    0x10
 #define OPpTARGET_MY            0x10
 #define OPpASSIGN_COMMON_RC1    0x20
@@ -2259,7 +2282,6 @@
 #define OPpPAD_STATE            0x40
 #define OPpREFCOUNTED           0x40
 #define OPpREPEAT_DOLIST        0x40
-#define OPpRUNTIME              0x40
 #define OPpSLICE                0x40
 #define OPpSORT_STABLE          0x40
 #define OPpTRANS_GROWS          0x40
@@ -2272,7 +2294,6 @@
 #define OPpOFFBYONE             0x80
 #define OPpOPEN_OUT_CRLF        0x80
 #define OPpPV_IS_UTF8           0x80
-#define OPpSPLIT_IMPLIM         0x80
 #define OPpTRANS_DELETE         0x80
 START_EXTERN_C
 
@@ -2303,6 +2324,7 @@
     '<','U','T','F','\0',
     '>','U','T','F','\0',
     'A','M','P','E','R','\0',
+    'A','S','S','I','G','N','\0',
     'A','V','\0',
     'B','A','R','E','\0',
     'B','K','W','A','R','D','\0',
@@ -2350,6 +2372,7 @@
     'I','N','P','L','A','C','E','\0',
     'I','N','T','\0',
     'I','T','E','R','\0',
+    'L','E','X','\0',
     'L','I','N','E','N','U','M','\0',
     'L','V','\0',
     'L','V','D','E','F','E','R','\0',
@@ -2369,7 +2392,6 @@
     'R','E','P','L','1','S','T','\0',
     'R','E','V','\0',
     'R','E','V','E','R','S','E','D','\0',
-    'R','T','I','M','E','\0',
     'S','H','O','R','T','\0',
     'S','L','I','C','E','\0',
     'S','L','I','C','E','W','A','R','N','\0',
@@ -2383,6 +2405,9 @@
     'T','A','R','G','M','Y','\0',
     'U','N','I','\0',
     'U','T','F','\0',
+    'k','e','y','\0',
+    'o','f','f','s','e','t','\0',
+    'r','a','n','g','e','\0',
 
 };
 
@@ -2401,12 +2426,14 @@
 EXTCONST I16 PL_op_private_bitfields[] = {
     0, 8, -1,
     0, 8, -1,
+    0, 539, -1,
     0, 8, -1,
     0, 8, -1,
-    0, 8, -1,
-    0, 8, -1,
-    4, -1, 1, 157, 2, 164, 3, 171, -1,
-    4, -1, 0, 507, 1, 26, 2, 276, 3, 103, -1,
+    0, 546, -1,
+    0, 535, -1,
+    1, -1, 0, 512, 1, 33, 2, 283, -1,
+    4, -1, 1, 164, 2, 171, 3, 178, -1,
+    4, -1, 0, 512, 1, 33, 2, 283, 3, 110, -1,
 
 };
 
@@ -2428,40 +2455,39 @@
       16, /* padav */
       20, /* padhv */
       -1, /* padany */
-      26, /* pushre */
-      27, /* rv2gv */
-      34, /* rv2sv */
-      39, /* av2arylen */
-      41, /* rv2cv */
+      26, /* rv2gv */
+      33, /* rv2sv */
+      38, /* av2arylen */
+      40, /* rv2cv */
       -1, /* anoncode */
        0, /* prototype */
        0, /* refgen */
        0, /* srefgen */
        0, /* ref */
-      48, /* bless */
-      49, /* backtick */
-      48, /* glob */
+      47, /* bless */
+      48, /* backtick */
+      47, /* glob */
        0, /* readline */
       -1, /* rcatline */
        0, /* regcmaybe */
        0, /* regcreset */
        0, /* regcomp */
-      26, /* match */
-      26, /* qr */
-      26, /* subst */
-      54, /* substcont */
-      56, /* trans */
-      56, /* transr */
-      63, /* sassign */
-      66, /* aassign */
+      -1, /* match */
+      -1, /* qr */
+      -1, /* subst */
+       0, /* substcont */
+      53, /* trans */
+      53, /* transr */
+      60, /* sassign */
+      63, /* aassign */
        0, /* chop */
        0, /* schop */
-      71, /* chomp */
-      71, /* schomp */
+      68, /* chomp */
+      68, /* schomp */
        0, /* defined */
        0, /* undef */
        0, /* study */
-      39, /* pos */
+      38, /* pos */
        0, /* preinc */
        0, /* i_preinc */
        0, /* predec */
@@ -2470,22 +2496,22 @@
        0, /* i_postinc */
        0, /* postdec */
        0, /* i_postdec */
-      73, /* pow */
-      73, /* multiply */
-      73, /* i_multiply */
-      73, /* divide */
-      73, /* i_divide */
-      73, /* modulo */
-      73, /* i_modulo */
-      75, /* repeat */
-      73, /* add */
-      73, /* i_add */
-      73, /* subtract */
-      73, /* i_subtract */
-      73, /* concat */
-      77, /* stringify */
-      73, /* left_shift */
-      73, /* right_shift */
+      70, /* pow */
+      70, /* multiply */
+      70, /* i_multiply */
+      70, /* divide */
+      70, /* i_divide */
+      70, /* modulo */
+      70, /* i_modulo */
+      72, /* repeat */
+      70, /* add */
+      70, /* i_add */
+      70, /* subtract */
+      70, /* i_subtract */
+      70, /* concat */
+      74, /* stringify */
+      70, /* left_shift */
+      70, /* right_shift */
       12, /* lt */
       12, /* i_lt */
       12, /* gt */
@@ -2510,9 +2536,9 @@
       12, /* bit_and */
       12, /* bit_xor */
       12, /* bit_or */
-      73, /* nbit_and */
-      73, /* nbit_xor */
-      73, /* nbit_or */
+      70, /* nbit_and */
+      70, /* nbit_xor */
+      70, /* nbit_or */
       12, /* sbit_and */
       12, /* sbit_xor */
       12, /* sbit_or */
@@ -2520,68 +2546,68 @@
        0, /* i_negate */
        0, /* not */
        0, /* complement */
-      71, /* ncomplement */
-      71, /* scomplement */
+      68, /* ncomplement */
+      68, /* scomplement */
       12, /* smartmatch */
-      77, /* atan2 */
-      71, /* sin */
-      71, /* cos */
-      77, /* rand */
-      77, /* srand */
-      71, /* exp */
-      71, /* log */
-      71, /* sqrt */
-      71, /* int */
-      71, /* hex */
-      71, /* oct */
-      71, /* abs */
-      71, /* length */
-      79, /* substr */
-      82, /* vec */
-      77, /* index */
-      77, /* rindex */
-      48, /* sprintf */
-      48, /* formline */
-      71, /* ord */
-      71, /* chr */
-      77, /* crypt */
+      74, /* atan2 */
+      68, /* sin */
+      68, /* cos */
+      74, /* rand */
+      74, /* srand */
+      68, /* exp */
+      68, /* log */
+      68, /* sqrt */
+      68, /* int */
+      68, /* hex */
+      68, /* oct */
+      68, /* abs */
+      68, /* length */
+      76, /* substr */
+      79, /* vec */
+      74, /* index */
+      74, /* rindex */
+      47, /* sprintf */
+      47, /* formline */
+      68, /* ord */
+      68, /* chr */
+      74, /* crypt */
        0, /* ucfirst */
        0, /* lcfirst */
        0, /* uc */
        0, /* lc */
        0, /* quotemeta */
-      84, /* rv2av */
-      90, /* aelemfast */
-      90, /* aelemfast_lex */
-      91, /* aelem */
-      96, /* aslice */
-      99, /* kvaslice */
+      81, /* rv2av */
+      87, /* aelemfast */
+      87, /* aelemfast_lex */
+      88, /* aelem */
+      93, /* aslice */
+      96, /* kvaslice */
        0, /* aeach */
-       0, /* akeys */
        0, /* avalues */
+      38, /* akeys */
        0, /* each */
        0, /* values */
-      39, /* keys */
-     100, /* delete */
-     103, /* exists */
-     105, /* rv2hv */
-      91, /* helem */
-      96, /* hslice */
-      99, /* kvhslice */
-     113, /* multideref */
-      48, /* unpack */
-      48, /* pack */
-     120, /* split */
-      48, /* join */
+      38, /* keys */
+      97, /* delete */
+     100, /* exists */
+     102, /* rv2hv */
+      88, /* helem */
+      93, /* hslice */
+      96, /* kvhslice */
+     110, /* multideref */
+      47, /* unpack */
+      47, /* pack */
+     117, /* split */
+      47, /* join */
      122, /* list */
       12, /* lslice */
-      48, /* anonlist */
-      48, /* anonhash */
-      48, /* splice */
-      77, /* push */
+      47, /* anonlist */
+      47, /* anonhash */
+      47, /* splice */
+      74, /* push */
        0, /* pop */
        0, /* shift */
-      77, /* unshift */
+      74, /* unshift */
      124, /* sort */
      131, /* reverse */
        0, /* grepstart */
@@ -2603,28 +2629,31 @@
      137, /* entersub */
      144, /* leavesub */
      144, /* leavesublv */
-     146, /* caller */
-      48, /* warn */
-      48, /* die */
-      48, /* reset */
+       0, /* argcheck */
+     146, /* argelem */
+       0, /* argdefelem */
+     148, /* caller */
+      47, /* warn */
+      47, /* die */
+      47, /* reset */
       -1, /* lineseq */
-     148, /* nextstate */
-     148, /* dbstate */
+     150, /* nextstate */
+     150, /* dbstate */
       -1, /* unstack */
       -1, /* enter */
-     149, /* leave */
+     151, /* leave */
       -1, /* scope */
-     151, /* enteriter */
-     155, /* iter */
+     153, /* enteriter */
+     157, /* iter */
       -1, /* enterloop */
-     156, /* leaveloop */
+     158, /* leaveloop */
       -1, /* return */
-     158, /* last */
-     158, /* next */
-     158, /* redo */
-     158, /* dump */
-     158, /* goto */
-      48, /* exit */
+     160, /* last */
+     160, /* next */
+     160, /* redo */
+     160, /* dump */
+     160, /* goto */
+      47, /* exit */
        0, /* method_named */
        0, /* method_super */
        0, /* method_redir */
@@ -2635,143 +2664,143 @@
        0, /* leavewhen */
       -1, /* break */
       -1, /* continue */
-     160, /* open */
-      48, /* close */
-      48, /* pipe_op */
-      48, /* fileno */
-      48, /* umask */
-      48, /* binmode */
-      48, /* tie */
+     162, /* open */
+      47, /* close */
+      47, /* pipe_op */
+      47, /* fileno */
+      47, /* umask */
+      47, /* binmode */
+      47, /* tie */
        0, /* untie */
        0, /* tied */
-      48, /* dbmopen */
+      47, /* dbmopen */
        0, /* dbmclose */
-      48, /* sselect */
-      48, /* select */
-      48, /* getc */
-      48, /* read */
-      48, /* enterwrite */
+      47, /* sselect */
+      47, /* select */
+      47, /* getc */
+      47, /* read */
+      47, /* enterwrite */
      144, /* leavewrite */
       -1, /* prtf */
       -1, /* print */
       -1, /* say */
-      48, /* sysopen */
-      48, /* sysseek */
-      48, /* sysread */
-      48, /* syswrite */
-      48, /* eof */
-      48, /* tell */
-      48, /* seek */
-      48, /* truncate */
-      48, /* fcntl */
-      48, /* ioctl */
-      77, /* flock */
-      48, /* send */
-      48, /* recv */
-      48, /* socket */
-      48, /* sockpair */
-      48, /* bind */
-      48, /* connect */
-      48, /* listen */
-      48, /* accept */
-      48, /* shutdown */
-      48, /* gsockopt */
-      48, /* ssockopt */
+      47, /* sysopen */
+      47, /* sysseek */
+      47, /* sysread */
+      47, /* syswrite */
+      47, /* eof */
+      47, /* tell */
+      47, /* seek */
+      47, /* truncate */
+      47, /* fcntl */
+      47, /* ioctl */
+      74, /* flock */
+      47, /* send */
+      47, /* recv */
+      47, /* socket */
+      47, /* sockpair */
+      47, /* bind */
+      47, /* connect */
+      47, /* listen */
+      47, /* accept */
+      47, /* shutdown */
+      47, /* gsockopt */
+      47, /* ssockopt */
        0, /* getsockname */
        0, /* getpeername */
        0, /* lstat */
        0, /* stat */
-     165, /* ftrread */
-     165, /* ftrwrite */
-     165, /* ftrexec */
-     165, /* fteread */
-     165, /* ftewrite */
-     165, /* fteexec */
-     170, /* ftis */
-     170, /* ftsize */
-     170, /* ftmtime */
-     170, /* ftatime */
-     170, /* ftctime */
-     170, /* ftrowned */
-     170, /* fteowned */
-     170, /* ftzero */
-     170, /* ftsock */
-     170, /* ftchr */
-     170, /* ftblk */
-     170, /* ftfile */
-     170, /* ftdir */
-     170, /* ftpipe */
-     170, /* ftsuid */
-     170, /* ftsgid */
-     170, /* ftsvtx */
-     170, /* ftlink */
-     170, /* fttty */
-     170, /* fttext */
-     170, /* ftbinary */
-      77, /* chdir */
-      77, /* chown */
-      71, /* chroot */
-      77, /* unlink */
-      77, /* chmod */
-      77, /* utime */
-      77, /* rename */
-      77, /* link */
-      77, /* symlink */
+     167, /* ftrread */
+     167, /* ftrwrite */
+     167, /* ftrexec */
+     167, /* fteread */
+     167, /* ftewrite */
+     167, /* fteexec */
+     172, /* ftis */
+     172, /* ftsize */
+     172, /* ftmtime */
+     172, /* ftatime */
+     172, /* ftctime */
+     172, /* ftrowned */
+     172, /* fteowned */
+     172, /* ftzero */
+     172, /* ftsock */
+     172, /* ftchr */
+     172, /* ftblk */
+     172, /* ftfile */
+     172, /* ftdir */
+     172, /* ftpipe */
+     172, /* ftsuid */
+     172, /* ftsgid */
+     172, /* ftsvtx */
+     172, /* ftlink */
+     172, /* fttty */
+     172, /* fttext */
+     172, /* ftbinary */
+      74, /* chdir */
+      74, /* chown */
+      68, /* chroot */
+      74, /* unlink */
+      74, /* chmod */
+      74, /* utime */
+      74, /* rename */
+      74, /* link */
+      74, /* symlink */
        0, /* readlink */
-      77, /* mkdir */
-      71, /* rmdir */
-      48, /* open_dir */
+      74, /* mkdir */
+      68, /* rmdir */
+      47, /* open_dir */
        0, /* readdir */
        0, /* telldir */
-      48, /* seekdir */
+      47, /* seekdir */
        0, /* rewinddir */
        0, /* closedir */
       -1, /* fork */
-     174, /* wait */
-      77, /* waitpid */
-      77, /* system */
-      77, /* exec */
-      77, /* kill */
-     174, /* getppid */
-      77, /* getpgrp */
-      77, /* setpgrp */
-      77, /* getpriority */
-      77, /* setpriority */
-     174, /* time */
+     176, /* wait */
+      74, /* waitpid */
+      74, /* system */
+      74, /* exec */
+      74, /* kill */
+     176, /* getppid */
+      74, /* getpgrp */
+      74, /* setpgrp */
+      74, /* getpriority */
+      74, /* setpriority */
+     176, /* time */
       -1, /* tms */
        0, /* localtime */
-      48, /* gmtime */
+      47, /* gmtime */
        0, /* alarm */
-      77, /* sleep */
-      48, /* shmget */
-      48, /* shmctl */
-      48, /* shmread */
-      48, /* shmwrite */
-      48, /* msgget */
-      48, /* msgctl */
-      48, /* msgsnd */
-      48, /* msgrcv */
-      48, /* semop */
-      48, /* semget */
-      48, /* semctl */
+      74, /* sleep */
+      47, /* shmget */
+      47, /* shmctl */
+      47, /* shmread */
+      47, /* shmwrite */
+      47, /* msgget */
+      47, /* msgctl */
+      47, /* msgsnd */
+      47, /* msgrcv */
+      47, /* semop */
+      47, /* semget */
+      47, /* semctl */
        0, /* require */
        0, /* dofile */
       -1, /* hintseval */
-     175, /* entereval */
+     177, /* entereval */
      144, /* leaveeval */
        0, /* entertry */
       -1, /* leavetry */
        0, /* ghbyname */
-      48, /* ghbyaddr */
+      47, /* ghbyaddr */
       -1, /* ghostent */
        0, /* gnbyname */
-      48, /* gnbyaddr */
+      47, /* gnbyaddr */
       -1, /* gnetent */
        0, /* gpbyname */
-      48, /* gpbynumber */
+      47, /* gpbynumber */
       -1, /* gprotoent */
-      48, /* gsbyname */
-      48, /* gsbyport */
+      47, /* gsbyname */
+      47, /* gsbyport */
       -1, /* gservent */
        0, /* shostent */
        0, /* snetent */
@@ -2792,21 +2821,22 @@
       -1, /* sgrent */
       -1, /* egrent */
       -1, /* getlogin */
-      48, /* syscall */
+      47, /* syscall */
        0, /* lock */
        0, /* once */
       -1, /* custom */
-     181, /* coreargs */
+     183, /* coreargs */
+     187, /* avhvswitch */
        3, /* runcv */
        0, /* fc */
       -1, /* padcv */
       -1, /* introcv */
       -1, /* clonecv */
-     185, /* padrange */
-     187, /* refassign */
-     193, /* lvref */
-     199, /* lvrefslice */
-     200, /* lvavref */
+     189, /* padrange */
+     191, /* refassign */
+     197, /* lvref */
+     203, /* lvrefslice */
+     204, /* lvavref */
        0, /* anonconst */
 
 };
@@ -2826,68 +2856,68 @@
  */
 
 EXTCONST U16  PL_op_private_bitdefs[] = {
-    0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, akeys, avalues, each, values, pop, shift, grepstart, grepwhile, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */
-    0x2b5c, 0x3d59, /* pushmark */
+    0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, values, pop, shift, grepstart, grepwhile, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, method, argcheck, argdefelem, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */
+    0x2cbc, 0x3df9, /* pushmark */
     0x00bd, /* wantarray, runcv */
-    0x03b8, 0x17f0, 0x3e0c, 0x38c8, 0x2f25, /* const */
-    0x2b5c, 0x3079, /* gvsv */
-    0x1655, /* gv */
+    0x0498, 0x18d0, 0x3eac, 0x3968, 0x3085, /* const */
+    0x2cbc, 0x31d9, /* gvsv */
+    0x1735, /* gv */
     0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, lslice, xor */
-    0x2b5c, 0x3d58, 0x0257, /* padsv */
-    0x2b5c, 0x3d58, 0x2c4c, 0x3a49, /* padav */
-    0x2b5c, 0x3d58, 0x0534, 0x05d0, 0x2c4c, 0x3a49, /* padhv */
-    0x3819, /* pushre, match, qr, subst */
-    0x2b5c, 0x19d8, 0x0256, 0x2c4c, 0x2e48, 0x3e04, 0x0003, /* rv2gv */
-    0x2b5c, 0x3078, 0x0256, 0x3e04, 0x0003, /* rv2sv */
-    0x2c4c, 0x0003, /* av2arylen, pos, keys */
-    0x2dbc, 0x0e18, 0x0b74, 0x028c, 0x3fc8, 0x3e04, 0x0003, /* rv2cv */
-    0x012f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */
-    0x325c, 0x3178, 0x2634, 0x2570, 0x0003, /* backtick */
-    0x3818, 0x0003, /* substcont */
-    0x0f1c, 0x1f58, 0x0754, 0x3b8c, 0x22e8, 0x01e4, 0x0141, /* trans, transr */
-    0x0d5c, 0x0458, 0x0067, /* sassign */
-    0x0a18, 0x0914, 0x0810, 0x2c4c, 0x0067, /* aassign */
-    0x4070, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */
-    0x4070, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */
-    0x12d8, 0x0067, /* repeat */
-    0x4070, 0x012f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
-    0x3570, 0x2c4c, 0x00cb, /* substr */
-    0x2c4c, 0x0067, /* vec */
-    0x2b5c, 0x3078, 0x2c4c, 0x3a48, 0x3e04, 0x0003, /* rv2av */
-    0x01ff, /* aelemfast, aelemfast_lex */
-    0x2b5c, 0x2a58, 0x0256, 0x2c4c, 0x0067, /* aelem, helem */
-    0x2b5c, 0x2c4c, 0x3a49, /* aslice, hslice */
-    0x2c4d, /* kvaslice, kvhslice */
-    0x2b5c, 0x3998, 0x0003, /* delete */
-    0x3ef8, 0x0003, /* exists */
-    0x2b5c, 0x3078, 0x0534, 0x05d0, 0x2c4c, 0x3a48, 0x3e04, 0x0003, /* rv2hv */
-    0x2b5c, 0x2a58, 0x0f94, 0x18f0, 0x2c4c, 0x3e04, 0x0003, /* multideref */
-    0x23bc, 0x3079, /* split */
-    0x2b5c, 0x2019, /* list */
-    0x3c78, 0x3314, 0x1230, 0x26cc, 0x3668, 0x27c4, 0x2fe1, /* sort */
-    0x26cc, 0x0003, /* reverse */
-    0x28f8, 0x0003, /* flip, flop */
-    0x2b5c, 0x0003, /* cond_expr */
-    0x2b5c, 0x0e18, 0x0256, 0x028c, 0x3fc8, 0x3e04, 0x2481, /* entersub */
-    0x33d8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
-    0x00bc, 0x012f, /* caller */
-    0x21f5, /* nextstate, dbstate */
-    0x29fc, 0x33d9, /* leave */
-    0x2b5c, 0x3078, 0x0e8c, 0x36e5, /* enteriter */
-    0x36e5, /* iter */
-    0x29fc, 0x0067, /* leaveloop */
-    0x41dc, 0x0003, /* last, next, redo, dump, goto */
-    0x325c, 0x3178, 0x2634, 0x2570, 0x012f, /* open */
-    0x1b90, 0x1dec, 0x1ca8, 0x1a64, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
-    0x1b90, 0x1dec, 0x1ca8, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
-    0x4071, /* wait, getppid, time */
-    0x3474, 0x0c30, 0x068c, 0x4148, 0x2104, 0x0003, /* entereval */
-    0x2d1c, 0x0018, 0x1144, 0x1061, /* coreargs */
-    0x2b5c, 0x019b, /* padrange */
-    0x2b5c, 0x3d58, 0x0376, 0x284c, 0x1748, 0x0067, /* refassign */
-    0x2b5c, 0x3d58, 0x0376, 0x284c, 0x1748, 0x0003, /* lvref */
-    0x2b5d, /* lvrefslice */
-    0x2b5c, 0x3d58, 0x0003, /* lvavref */
+    0x2cbc, 0x3df8, 0x03d7, /* padsv */
+    0x2cbc, 0x3df8, 0x2dac, 0x3ae9, /* padav */
+    0x2cbc, 0x3df8, 0x0614, 0x06b0, 0x2dac, 0x3ae9, /* padhv */
+    0x2cbc, 0x1ab8, 0x03d6, 0x2dac, 0x2fa8, 0x3ea4, 0x0003, /* rv2gv */
+    0x2cbc, 0x31d8, 0x03d6, 0x3ea4, 0x0003, /* rv2sv */
+    0x2dac, 0x0003, /* av2arylen, pos, akeys, keys */
+    0x2f1c, 0x0ef8, 0x0c54, 0x028c, 0x4068, 0x3ea4, 0x0003, /* rv2cv */
+    0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */
+    0x33bc, 0x32d8, 0x2714, 0x2650, 0x0003, /* backtick */
+    0x0ffc, 0x2038, 0x0834, 0x3c2c, 0x23c8, 0x01e4, 0x0141, /* trans, transr */
+    0x0e3c, 0x0538, 0x0067, /* sassign */
+    0x0af8, 0x09f4, 0x08f0, 0x2dac, 0x0067, /* aassign */
+    0x4110, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */
+    0x4110, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */
+    0x13b8, 0x0067, /* repeat */
+    0x4110, 0x018f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
+    0x36d0, 0x2dac, 0x012b, /* substr */
+    0x2dac, 0x0067, /* vec */
+    0x2cbc, 0x31d8, 0x2dac, 0x3ae8, 0x3ea4, 0x0003, /* rv2av */
+    0x025f, /* aelemfast, aelemfast_lex */
+    0x2cbc, 0x2bb8, 0x03d6, 0x2dac, 0x0067, /* aelem, helem */
+    0x2cbc, 0x2dac, 0x3ae9, /* aslice, hslice */
+    0x2dad, /* kvaslice, kvhslice */
+    0x2cbc, 0x3a38, 0x0003, /* delete */
+    0x3f98, 0x0003, /* exists */
+    0x2cbc, 0x31d8, 0x0614, 0x06b0, 0x2dac, 0x3ae8, 0x3ea4, 0x0003, /* rv2hv */
+    0x2cbc, 0x2bb8, 0x1074, 0x19d0, 0x2dac, 0x3ea4, 0x0003, /* multideref */
+    0x2cbc, 0x31d8, 0x0350, 0x29cc, 0x2489, /* split */
+    0x2cbc, 0x20f9, /* list */
+    0x3d18, 0x3474, 0x1310, 0x27ac, 0x37c8, 0x28a4, 0x3141, /* sort */
+    0x27ac, 0x0003, /* reverse */
+    0x2a58, 0x0003, /* flip, flop */
+    0x2cbc, 0x0003, /* cond_expr */
+    0x2cbc, 0x0ef8, 0x03d6, 0x028c, 0x4068, 0x3ea4, 0x2561, /* entersub */
+    0x3538, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
+    0x02aa, 0x0003, /* argelem */
+    0x00bc, 0x018f, /* caller */
+    0x22d5, /* nextstate, dbstate */
+    0x2b5c, 0x3539, /* leave */
+    0x2cbc, 0x31d8, 0x0f6c, 0x3845, /* enteriter */
+    0x3845, /* iter */
+    0x2b5c, 0x0067, /* leaveloop */
+    0x427c, 0x0003, /* last, next, redo, dump, goto */
+    0x33bc, 0x32d8, 0x2714, 0x2650, 0x018f, /* open */
+    0x1c70, 0x1ecc, 0x1d88, 0x1b44, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
+    0x1c70, 0x1ecc, 0x1d88, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
+    0x4111, /* wait, getppid, time */
+    0x35d4, 0x0d10, 0x076c, 0x41e8, 0x21e4, 0x0003, /* entereval */
+    0x2e7c, 0x0018, 0x1224, 0x1141, /* coreargs */
+    0x2dac, 0x00c7, /* avhvswitch */
+    0x2cbc, 0x01fb, /* padrange */
+    0x2cbc, 0x3df8, 0x04f6, 0x292c, 0x1828, 0x0067, /* refassign */
+    0x2cbc, 0x3df8, 0x04f6, 0x292c, 0x1828, 0x0003, /* lvref */
+    0x2cbd, /* lvrefslice */
+    0x2cbc, 0x3df8, 0x0003, /* lvavref */
 
 };
 
@@ -2909,7 +2939,6 @@
     /* PADAV      */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpPAD_STATE|OPpLVAL_INTRO),
     /* PADHV      */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO),
     /* PADANY     */ (0),
-    /* PUSHRE     */ (OPpRUNTIME),
     /* RV2GV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDONT_INIT_GV|OPpMAYBE_LVSUB|OPpDEREF|OPpALLOW_FAKE|OPpLVAL_INTRO),
     /* RV2SV      */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDEREF|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* AV2ARYLEN  */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
@@ -2927,10 +2956,10 @@
     /* REGCMAYBE  */ (OPpARG1_MASK),
     /* REGCRESET  */ (OPpARG1_MASK),
     /* REGCOMP    */ (OPpARG1_MASK),
-    /* MATCH      */ (OPpRUNTIME),
-    /* QR         */ (OPpRUNTIME),
-    /* SUBST      */ (OPpRUNTIME),
-    /* SUBSTCONT  */ (OPpARG1_MASK|OPpRUNTIME),
+    /* MATCH      */ (0),
+    /* QR         */ (0),
+    /* SUBST      */ (0),
+    /* SUBSTCONT  */ (OPpARG1_MASK),
     /* TRANS      */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE),
     /* TRANSR     */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE),
     /* SASSIGN    */ (OPpARG2_MASK|OPpASSIGN_BACKWARDS|OPpASSIGN_CV_TO_GV),
@@ -3038,8 +3067,8 @@
     /* ASLICE     */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO),
     /* KVASLICE   */ (OPpMAYBE_LVSUB),
     /* AEACH      */ (OPpARG1_MASK),
-    /* AKEYS      */ (OPpARG1_MASK),
     /* AVALUES    */ (OPpARG1_MASK),
+    /* AKEYS      */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
     /* EACH       */ (OPpARG1_MASK),
     /* VALUES     */ (OPpARG1_MASK),
     /* KEYS       */ (OPpARG1_MASK|OPpMAYBE_LVSUB),
@@ -3052,7 +3081,7 @@
     /* MULTIDEREF */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpMAYBE_LVSUB|OPpMULTIDEREF_EXISTS|OPpMULTIDEREF_DELETE|OPpLVAL_DEFER|OPpLVAL_INTRO),
     /* UNPACK     */ (OPpARG4_MASK),
     /* PACK       */ (OPpARG4_MASK),
-    /* SPLIT      */ (OPpOUR_INTRO|OPpSPLIT_IMPLIM),
+    /* SPLIT      */ (OPpSPLIT_IMPLIM|OPpSPLIT_LEX|OPpSPLIT_ASSIGN|OPpOUR_INTRO|OPpLVAL_INTRO),
     /* JOIN       */ (OPpARG4_MASK),
     /* LIST       */ (OPpLIST_GUESSED|OPpLVAL_INTRO),
     /* LSLICE     */ (OPpARG2_MASK),
@@ -3084,6 +3113,9 @@
     /* ENTERSUB   */ (OPpENTERSUB_INARGS|OPpHINT_STRICT_REFS|OPpENTERSUB_HASTARG|OPpENTERSUB_AMPER|OPpDEREF|OPpENTERSUB_DB|OPpLVAL_INTRO),
     /* LEAVESUB   */ (OPpARG1_MASK|OPpREFCOUNTED),
     /* LEAVESUBLV */ (OPpARG1_MASK|OPpREFCOUNTED),
+    /* ARGCHECK   */ (OPpARG1_MASK),
+    /* ARGELEM    */ (OPpARG1_MASK|OPpARGELEM_MASK),
+    /* ARGDEFELEM */ (OPpARG1_MASK),
     /* CALLER     */ (OPpARG4_MASK|OPpOFFBYONE),
     /* WARN       */ (OPpARG4_MASK),
     /* DIE        */ (OPpARG4_MASK),
@@ -3278,6 +3310,7 @@
     /* ONCE       */ (OPpARG1_MASK),
     /* CUSTOM     */ (0xff),
     /* COREARGS   */ (OPpCOREARGS_DEREF1|OPpCOREARGS_DEREF2|OPpCOREARGS_SCALARMOD|OPpCOREARGS_PUSHMARK),
+    /* AVHVSWITCH */ (OPpAVHVSWITCH_MASK|OPpMAYBE_LVSUB),
     /* RUNCV      */ (OPpOFFBYONE),
     /* FC         */ (OPpARG1_MASK),
     /* PADCV      */ (0),

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -27,390 +27,393 @@
 	OP_PADAV	 = 10,
 	OP_PADHV	 = 11,
 	OP_PADANY	 = 12,
-	OP_PUSHRE	 = 13,
-	OP_RV2GV	 = 14,
-	OP_RV2SV	 = 15,
-	OP_AV2ARYLEN	 = 16,
-	OP_RV2CV	 = 17,
-	OP_ANONCODE	 = 18,
-	OP_PROTOTYPE	 = 19,
-	OP_REFGEN	 = 20,
-	OP_SREFGEN	 = 21,
-	OP_REF		 = 22,
-	OP_BLESS	 = 23,
-	OP_BACKTICK	 = 24,
-	OP_GLOB		 = 25,
-	OP_READLINE	 = 26,
-	OP_RCATLINE	 = 27,
-	OP_REGCMAYBE	 = 28,
-	OP_REGCRESET	 = 29,
-	OP_REGCOMP	 = 30,
-	OP_MATCH	 = 31,
-	OP_QR		 = 32,
-	OP_SUBST	 = 33,
-	OP_SUBSTCONT	 = 34,
-	OP_TRANS	 = 35,
-	OP_TRANSR	 = 36,
-	OP_SASSIGN	 = 37,
-	OP_AASSIGN	 = 38,
-	OP_CHOP		 = 39,
-	OP_SCHOP	 = 40,
-	OP_CHOMP	 = 41,
-	OP_SCHOMP	 = 42,
-	OP_DEFINED	 = 43,
-	OP_UNDEF	 = 44,
-	OP_STUDY	 = 45,
-	OP_POS		 = 46,
-	OP_PREINC	 = 47,
-	OP_I_PREINC	 = 48,
-	OP_PREDEC	 = 49,
-	OP_I_PREDEC	 = 50,
-	OP_POSTINC	 = 51,
-	OP_I_POSTINC	 = 52,
-	OP_POSTDEC	 = 53,
-	OP_I_POSTDEC	 = 54,
-	OP_POW		 = 55,
-	OP_MULTIPLY	 = 56,
-	OP_I_MULTIPLY	 = 57,
-	OP_DIVIDE	 = 58,
-	OP_I_DIVIDE	 = 59,
-	OP_MODULO	 = 60,
-	OP_I_MODULO	 = 61,
-	OP_REPEAT	 = 62,
-	OP_ADD		 = 63,
-	OP_I_ADD	 = 64,
-	OP_SUBTRACT	 = 65,
-	OP_I_SUBTRACT	 = 66,
-	OP_CONCAT	 = 67,
-	OP_STRINGIFY	 = 68,
-	OP_LEFT_SHIFT	 = 69,
-	OP_RIGHT_SHIFT	 = 70,
-	OP_LT		 = 71,
-	OP_I_LT		 = 72,
-	OP_GT		 = 73,
-	OP_I_GT		 = 74,
-	OP_LE		 = 75,
-	OP_I_LE		 = 76,
-	OP_GE		 = 77,
-	OP_I_GE		 = 78,
-	OP_EQ		 = 79,
-	OP_I_EQ		 = 80,
-	OP_NE		 = 81,
-	OP_I_NE		 = 82,
-	OP_NCMP		 = 83,
-	OP_I_NCMP	 = 84,
-	OP_SLT		 = 85,
-	OP_SGT		 = 86,
-	OP_SLE		 = 87,
-	OP_SGE		 = 88,
-	OP_SEQ		 = 89,
-	OP_SNE		 = 90,
-	OP_SCMP		 = 91,
-	OP_BIT_AND	 = 92,
-	OP_BIT_XOR	 = 93,
-	OP_BIT_OR	 = 94,
-	OP_NBIT_AND	 = 95,
-	OP_NBIT_XOR	 = 96,
-	OP_NBIT_OR	 = 97,
-	OP_SBIT_AND	 = 98,
-	OP_SBIT_XOR	 = 99,
-	OP_SBIT_OR	 = 100,
-	OP_NEGATE	 = 101,
-	OP_I_NEGATE	 = 102,
-	OP_NOT		 = 103,
-	OP_COMPLEMENT	 = 104,
-	OP_NCOMPLEMENT	 = 105,
-	OP_SCOMPLEMENT	 = 106,
-	OP_SMARTMATCH	 = 107,
-	OP_ATAN2	 = 108,
-	OP_SIN		 = 109,
-	OP_COS		 = 110,
-	OP_RAND		 = 111,
-	OP_SRAND	 = 112,
-	OP_EXP		 = 113,
-	OP_LOG		 = 114,
-	OP_SQRT		 = 115,
-	OP_INT		 = 116,
-	OP_HEX		 = 117,
-	OP_OCT		 = 118,
-	OP_ABS		 = 119,
-	OP_LENGTH	 = 120,
-	OP_SUBSTR	 = 121,
-	OP_VEC		 = 122,
-	OP_INDEX	 = 123,
-	OP_RINDEX	 = 124,
-	OP_SPRINTF	 = 125,
-	OP_FORMLINE	 = 126,
-	OP_ORD		 = 127,
-	OP_CHR		 = 128,
-	OP_CRYPT	 = 129,
-	OP_UCFIRST	 = 130,
-	OP_LCFIRST	 = 131,
-	OP_UC		 = 132,
-	OP_LC		 = 133,
-	OP_QUOTEMETA	 = 134,
-	OP_RV2AV	 = 135,
-	OP_AELEMFAST	 = 136,
-	OP_AELEMFAST_LEX = 137,
-	OP_AELEM	 = 138,
-	OP_ASLICE	 = 139,
-	OP_KVASLICE	 = 140,
-	OP_AEACH	 = 141,
+	OP_RV2GV	 = 13,
+	OP_RV2SV	 = 14,
+	OP_AV2ARYLEN	 = 15,
+	OP_RV2CV	 = 16,
+	OP_ANONCODE	 = 17,
+	OP_PROTOTYPE	 = 18,
+	OP_REFGEN	 = 19,
+	OP_SREFGEN	 = 20,
+	OP_REF		 = 21,
+	OP_BLESS	 = 22,
+	OP_BACKTICK	 = 23,
+	OP_GLOB		 = 24,
+	OP_READLINE	 = 25,
+	OP_RCATLINE	 = 26,
+	OP_REGCMAYBE	 = 27,
+	OP_REGCRESET	 = 28,
+	OP_REGCOMP	 = 29,
+	OP_MATCH	 = 30,
+	OP_QR		 = 31,
+	OP_SUBST	 = 32,
+	OP_SUBSTCONT	 = 33,
+	OP_TRANS	 = 34,
+	OP_TRANSR	 = 35,
+	OP_SASSIGN	 = 36,
+	OP_AASSIGN	 = 37,
+	OP_CHOP		 = 38,
+	OP_SCHOP	 = 39,
+	OP_CHOMP	 = 40,
+	OP_SCHOMP	 = 41,
+	OP_DEFINED	 = 42,
+	OP_UNDEF	 = 43,
+	OP_STUDY	 = 44,
+	OP_POS		 = 45,
+	OP_PREINC	 = 46,
+	OP_I_PREINC	 = 47,
+	OP_PREDEC	 = 48,
+	OP_I_PREDEC	 = 49,
+	OP_POSTINC	 = 50,
+	OP_I_POSTINC	 = 51,
+	OP_POSTDEC	 = 52,
+	OP_I_POSTDEC	 = 53,
+	OP_POW		 = 54,
+	OP_MULTIPLY	 = 55,
+	OP_I_MULTIPLY	 = 56,
+	OP_DIVIDE	 = 57,
+	OP_I_DIVIDE	 = 58,
+	OP_MODULO	 = 59,
+	OP_I_MODULO	 = 60,
+	OP_REPEAT	 = 61,
+	OP_ADD		 = 62,
+	OP_I_ADD	 = 63,
+	OP_SUBTRACT	 = 64,
+	OP_I_SUBTRACT	 = 65,
+	OP_CONCAT	 = 66,
+	OP_STRINGIFY	 = 67,
+	OP_LEFT_SHIFT	 = 68,
+	OP_RIGHT_SHIFT	 = 69,
+	OP_LT		 = 70,
+	OP_I_LT		 = 71,
+	OP_GT		 = 72,
+	OP_I_GT		 = 73,
+	OP_LE		 = 74,
+	OP_I_LE		 = 75,
+	OP_GE		 = 76,
+	OP_I_GE		 = 77,
+	OP_EQ		 = 78,
+	OP_I_EQ		 = 79,
+	OP_NE		 = 80,
+	OP_I_NE		 = 81,
+	OP_NCMP		 = 82,
+	OP_I_NCMP	 = 83,
+	OP_SLT		 = 84,
+	OP_SGT		 = 85,
+	OP_SLE		 = 86,
+	OP_SGE		 = 87,
+	OP_SEQ		 = 88,
+	OP_SNE		 = 89,
+	OP_SCMP		 = 90,
+	OP_BIT_AND	 = 91,
+	OP_BIT_XOR	 = 92,
+	OP_BIT_OR	 = 93,
+	OP_NBIT_AND	 = 94,
+	OP_NBIT_XOR	 = 95,
+	OP_NBIT_OR	 = 96,
+	OP_SBIT_AND	 = 97,
+	OP_SBIT_XOR	 = 98,
+	OP_SBIT_OR	 = 99,
+	OP_NEGATE	 = 100,
+	OP_I_NEGATE	 = 101,
+	OP_NOT		 = 102,
+	OP_COMPLEMENT	 = 103,
+	OP_NCOMPLEMENT	 = 104,
+	OP_SCOMPLEMENT	 = 105,
+	OP_SMARTMATCH	 = 106,
+	OP_ATAN2	 = 107,
+	OP_SIN		 = 108,
+	OP_COS		 = 109,
+	OP_RAND		 = 110,
+	OP_SRAND	 = 111,
+	OP_EXP		 = 112,
+	OP_LOG		 = 113,
+	OP_SQRT		 = 114,
+	OP_INT		 = 115,
+	OP_HEX		 = 116,
+	OP_OCT		 = 117,
+	OP_ABS		 = 118,
+	OP_LENGTH	 = 119,
+	OP_SUBSTR	 = 120,
+	OP_VEC		 = 121,
+	OP_INDEX	 = 122,
+	OP_RINDEX	 = 123,
+	OP_SPRINTF	 = 124,
+	OP_FORMLINE	 = 125,
+	OP_ORD		 = 126,
+	OP_CHR		 = 127,
+	OP_CRYPT	 = 128,
+	OP_UCFIRST	 = 129,
+	OP_LCFIRST	 = 130,
+	OP_UC		 = 131,
+	OP_LC		 = 132,
+	OP_QUOTEMETA	 = 133,
+	OP_RV2AV	 = 134,
+	OP_AELEMFAST	 = 135,
+	OP_AELEMFAST_LEX = 136,
+	OP_AELEM	 = 137,
+	OP_ASLICE	 = 138,
+	OP_KVASLICE	 = 139,
+	OP_AEACH	 = 140,
+	OP_AVALUES	 = 141,
 	OP_AKEYS	 = 142,
-	OP_AVALUES	 = 143,
-	OP_EACH		 = 144,
-	OP_VALUES	 = 145,
-	OP_KEYS		 = 146,
-	OP_DELETE	 = 147,
-	OP_EXISTS	 = 148,
-	OP_RV2HV	 = 149,
-	OP_HELEM	 = 150,
-	OP_HSLICE	 = 151,
-	OP_KVHSLICE	 = 152,
-	OP_MULTIDEREF	 = 153,
-	OP_UNPACK	 = 154,
-	OP_PACK		 = 155,
-	OP_SPLIT	 = 156,
-	OP_JOIN		 = 157,
-	OP_LIST		 = 158,
-	OP_LSLICE	 = 159,
-	OP_ANONLIST	 = 160,
-	OP_ANONHASH	 = 161,
-	OP_SPLICE	 = 162,
-	OP_PUSH		 = 163,
-	OP_POP		 = 164,
-	OP_SHIFT	 = 165,
-	OP_UNSHIFT	 = 166,
-	OP_SORT		 = 167,
-	OP_REVERSE	 = 168,
-	OP_GREPSTART	 = 169,
-	OP_GREPWHILE	 = 170,
-	OP_MAPSTART	 = 171,
-	OP_MAPWHILE	 = 172,
-	OP_RANGE	 = 173,
-	OP_FLIP		 = 174,
-	OP_FLOP		 = 175,
-	OP_AND		 = 176,
-	OP_OR		 = 177,
-	OP_XOR		 = 178,
-	OP_DOR		 = 179,
-	OP_COND_EXPR	 = 180,
-	OP_ANDASSIGN	 = 181,
-	OP_ORASSIGN	 = 182,
-	OP_DORASSIGN	 = 183,
-	OP_METHOD	 = 184,
-	OP_ENTERSUB	 = 185,
-	OP_LEAVESUB	 = 186,
-	OP_LEAVESUBLV	 = 187,
-	OP_CALLER	 = 188,
-	OP_WARN		 = 189,
-	OP_DIE		 = 190,
-	OP_RESET	 = 191,
-	OP_LINESEQ	 = 192,
-	OP_NEXTSTATE	 = 193,
-	OP_DBSTATE	 = 194,
-	OP_UNSTACK	 = 195,
-	OP_ENTER	 = 196,
-	OP_LEAVE	 = 197,
-	OP_SCOPE	 = 198,
-	OP_ENTERITER	 = 199,
-	OP_ITER		 = 200,
-	OP_ENTERLOOP	 = 201,
-	OP_LEAVELOOP	 = 202,
-	OP_RETURN	 = 203,
-	OP_LAST		 = 204,
-	OP_NEXT		 = 205,
-	OP_REDO		 = 206,
-	OP_DUMP		 = 207,
-	OP_GOTO		 = 208,
-	OP_EXIT		 = 209,
-	OP_METHOD_NAMED	 = 210,
-	OP_METHOD_SUPER	 = 211,
-	OP_METHOD_REDIR	 = 212,
-	OP_METHOD_REDIR_SUPER = 213,
-	OP_ENTERGIVEN	 = 214,
-	OP_LEAVEGIVEN	 = 215,
-	OP_ENTERWHEN	 = 216,
-	OP_LEAVEWHEN	 = 217,
-	OP_BREAK	 = 218,
-	OP_CONTINUE	 = 219,
-	OP_OPEN		 = 220,
-	OP_CLOSE	 = 221,
-	OP_PIPE_OP	 = 222,
-	OP_FILENO	 = 223,
-	OP_UMASK	 = 224,
-	OP_BINMODE	 = 225,
-	OP_TIE		 = 226,
-	OP_UNTIE	 = 227,
-	OP_TIED		 = 228,
-	OP_DBMOPEN	 = 229,
-	OP_DBMCLOSE	 = 230,
-	OP_SSELECT	 = 231,
-	OP_SELECT	 = 232,
-	OP_GETC		 = 233,
-	OP_READ		 = 234,
-	OP_ENTERWRITE	 = 235,
-	OP_LEAVEWRITE	 = 236,
-	OP_PRTF		 = 237,
-	OP_PRINT	 = 238,
-	OP_SAY		 = 239,
-	OP_SYSOPEN	 = 240,
-	OP_SYSSEEK	 = 241,
-	OP_SYSREAD	 = 242,
-	OP_SYSWRITE	 = 243,
-	OP_EOF		 = 244,
-	OP_TELL		 = 245,
-	OP_SEEK		 = 246,
-	OP_TRUNCATE	 = 247,
-	OP_FCNTL	 = 248,
-	OP_IOCTL	 = 249,
-	OP_FLOCK	 = 250,
-	OP_SEND		 = 251,
-	OP_RECV		 = 252,
-	OP_SOCKET	 = 253,
-	OP_SOCKPAIR	 = 254,
-	OP_BIND		 = 255,
-	OP_CONNECT	 = 256,
-	OP_LISTEN	 = 257,
-	OP_ACCEPT	 = 258,
-	OP_SHUTDOWN	 = 259,
-	OP_GSOCKOPT	 = 260,
-	OP_SSOCKOPT	 = 261,
-	OP_GETSOCKNAME	 = 262,
-	OP_GETPEERNAME	 = 263,
-	OP_LSTAT	 = 264,
-	OP_STAT		 = 265,
-	OP_FTRREAD	 = 266,
-	OP_FTRWRITE	 = 267,
-	OP_FTREXEC	 = 268,
-	OP_FTEREAD	 = 269,
-	OP_FTEWRITE	 = 270,
-	OP_FTEEXEC	 = 271,
-	OP_FTIS		 = 272,
-	OP_FTSIZE	 = 273,
-	OP_FTMTIME	 = 274,
-	OP_FTATIME	 = 275,
-	OP_FTCTIME	 = 276,
-	OP_FTROWNED	 = 277,
-	OP_FTEOWNED	 = 278,
-	OP_FTZERO	 = 279,
-	OP_FTSOCK	 = 280,
-	OP_FTCHR	 = 281,
-	OP_FTBLK	 = 282,
-	OP_FTFILE	 = 283,
-	OP_FTDIR	 = 284,
-	OP_FTPIPE	 = 285,
-	OP_FTSUID	 = 286,
-	OP_FTSGID	 = 287,
-	OP_FTSVTX	 = 288,
-	OP_FTLINK	 = 289,
-	OP_FTTTY	 = 290,
-	OP_FTTEXT	 = 291,
-	OP_FTBINARY	 = 292,
-	OP_CHDIR	 = 293,
-	OP_CHOWN	 = 294,
-	OP_CHROOT	 = 295,
-	OP_UNLINK	 = 296,
-	OP_CHMOD	 = 297,
-	OP_UTIME	 = 298,
-	OP_RENAME	 = 299,
-	OP_LINK		 = 300,
-	OP_SYMLINK	 = 301,
-	OP_READLINK	 = 302,
-	OP_MKDIR	 = 303,
-	OP_RMDIR	 = 304,
-	OP_OPEN_DIR	 = 305,
-	OP_READDIR	 = 306,
-	OP_TELLDIR	 = 307,
-	OP_SEEKDIR	 = 308,
-	OP_REWINDDIR	 = 309,
-	OP_CLOSEDIR	 = 310,
-	OP_FORK		 = 311,
-	OP_WAIT		 = 312,
-	OP_WAITPID	 = 313,
-	OP_SYSTEM	 = 314,
-	OP_EXEC		 = 315,
-	OP_KILL		 = 316,
-	OP_GETPPID	 = 317,
-	OP_GETPGRP	 = 318,
-	OP_SETPGRP	 = 319,
-	OP_GETPRIORITY	 = 320,
-	OP_SETPRIORITY	 = 321,
-	OP_TIME		 = 322,
-	OP_TMS		 = 323,
-	OP_LOCALTIME	 = 324,
-	OP_GMTIME	 = 325,
-	OP_ALARM	 = 326,
-	OP_SLEEP	 = 327,
-	OP_SHMGET	 = 328,
-	OP_SHMCTL	 = 329,
-	OP_SHMREAD	 = 330,
-	OP_SHMWRITE	 = 331,
-	OP_MSGGET	 = 332,
-	OP_MSGCTL	 = 333,
-	OP_MSGSND	 = 334,
-	OP_MSGRCV	 = 335,
-	OP_SEMOP	 = 336,
-	OP_SEMGET	 = 337,
-	OP_SEMCTL	 = 338,
-	OP_REQUIRE	 = 339,
-	OP_DOFILE	 = 340,
-	OP_HINTSEVAL	 = 341,
-	OP_ENTEREVAL	 = 342,
-	OP_LEAVEEVAL	 = 343,
-	OP_ENTERTRY	 = 344,
-	OP_LEAVETRY	 = 345,
-	OP_GHBYNAME	 = 346,
-	OP_GHBYADDR	 = 347,
-	OP_GHOSTENT	 = 348,
-	OP_GNBYNAME	 = 349,
-	OP_GNBYADDR	 = 350,
-	OP_GNETENT	 = 351,
-	OP_GPBYNAME	 = 352,
-	OP_GPBYNUMBER	 = 353,
-	OP_GPROTOENT	 = 354,
-	OP_GSBYNAME	 = 355,
-	OP_GSBYPORT	 = 356,
-	OP_GSERVENT	 = 357,
-	OP_SHOSTENT	 = 358,
-	OP_SNETENT	 = 359,
-	OP_SPROTOENT	 = 360,
-	OP_SSERVENT	 = 361,
-	OP_EHOSTENT	 = 362,
-	OP_ENETENT	 = 363,
-	OP_EPROTOENT	 = 364,
-	OP_ESERVENT	 = 365,
-	OP_GPWNAM	 = 366,
-	OP_GPWUID	 = 367,
-	OP_GPWENT	 = 368,
-	OP_SPWENT	 = 369,
-	OP_EPWENT	 = 370,
-	OP_GGRNAM	 = 371,
-	OP_GGRGID	 = 372,
-	OP_GGRENT	 = 373,
-	OP_SGRENT	 = 374,
-	OP_EGRENT	 = 375,
-	OP_GETLOGIN	 = 376,
-	OP_SYSCALL	 = 377,
-	OP_LOCK		 = 378,
-	OP_ONCE		 = 379,
-	OP_CUSTOM	 = 380,
-	OP_COREARGS	 = 381,
-	OP_RUNCV	 = 382,
-	OP_FC		 = 383,
-	OP_PADCV	 = 384,
-	OP_INTROCV	 = 385,
-	OP_CLONECV	 = 386,
-	OP_PADRANGE	 = 387,
-	OP_REFASSIGN	 = 388,
-	OP_LVREF	 = 389,
-	OP_LVREFSLICE	 = 390,
-	OP_LVAVREF	 = 391,
-	OP_ANONCONST	 = 392,
+	OP_EACH		 = 143,
+	OP_VALUES	 = 144,
+	OP_KEYS		 = 145,
+	OP_DELETE	 = 146,
+	OP_EXISTS	 = 147,
+	OP_RV2HV	 = 148,
+	OP_HELEM	 = 149,
+	OP_HSLICE	 = 150,
+	OP_KVHSLICE	 = 151,
+	OP_MULTIDEREF	 = 152,
+	OP_UNPACK	 = 153,
+	OP_PACK		 = 154,
+	OP_SPLIT	 = 155,
+	OP_JOIN		 = 156,
+	OP_LIST		 = 157,
+	OP_LSLICE	 = 158,
+	OP_ANONLIST	 = 159,
+	OP_ANONHASH	 = 160,
+	OP_SPLICE	 = 161,
+	OP_PUSH		 = 162,
+	OP_POP		 = 163,
+	OP_SHIFT	 = 164,
+	OP_UNSHIFT	 = 165,
+	OP_SORT		 = 166,
+	OP_REVERSE	 = 167,
+	OP_GREPSTART	 = 168,
+	OP_GREPWHILE	 = 169,
+	OP_MAPSTART	 = 170,
+	OP_MAPWHILE	 = 171,
+	OP_RANGE	 = 172,
+	OP_FLIP		 = 173,
+	OP_FLOP		 = 174,
+	OP_AND		 = 175,
+	OP_OR		 = 176,
+	OP_XOR		 = 177,
+	OP_DOR		 = 178,
+	OP_COND_EXPR	 = 179,
+	OP_ANDASSIGN	 = 180,
+	OP_ORASSIGN	 = 181,
+	OP_DORASSIGN	 = 182,
+	OP_METHOD	 = 183,
+	OP_ENTERSUB	 = 184,
+	OP_LEAVESUB	 = 185,
+	OP_LEAVESUBLV	 = 186,
+	OP_ARGCHECK	 = 187,
+	OP_ARGELEM	 = 188,
+	OP_ARGDEFELEM	 = 189,
+	OP_CALLER	 = 190,
+	OP_WARN		 = 191,
+	OP_DIE		 = 192,
+	OP_RESET	 = 193,
+	OP_LINESEQ	 = 194,
+	OP_NEXTSTATE	 = 195,
+	OP_DBSTATE	 = 196,
+	OP_UNSTACK	 = 197,
+	OP_ENTER	 = 198,
+	OP_LEAVE	 = 199,
+	OP_SCOPE	 = 200,
+	OP_ENTERITER	 = 201,
+	OP_ITER		 = 202,
+	OP_ENTERLOOP	 = 203,
+	OP_LEAVELOOP	 = 204,
+	OP_RETURN	 = 205,
+	OP_LAST		 = 206,
+	OP_NEXT		 = 207,
+	OP_REDO		 = 208,
+	OP_DUMP		 = 209,
+	OP_GOTO		 = 210,
+	OP_EXIT		 = 211,
+	OP_METHOD_NAMED	 = 212,
+	OP_METHOD_SUPER	 = 213,
+	OP_METHOD_REDIR	 = 214,
+	OP_METHOD_REDIR_SUPER = 215,
+	OP_ENTERGIVEN	 = 216,
+	OP_LEAVEGIVEN	 = 217,
+	OP_ENTERWHEN	 = 218,
+	OP_LEAVEWHEN	 = 219,
+	OP_BREAK	 = 220,
+	OP_CONTINUE	 = 221,
+	OP_OPEN		 = 222,
+	OP_CLOSE	 = 223,
+	OP_PIPE_OP	 = 224,
+	OP_FILENO	 = 225,
+	OP_UMASK	 = 226,
+	OP_BINMODE	 = 227,
+	OP_TIE		 = 228,
+	OP_UNTIE	 = 229,
+	OP_TIED		 = 230,
+	OP_DBMOPEN	 = 231,
+	OP_DBMCLOSE	 = 232,
+	OP_SSELECT	 = 233,
+	OP_SELECT	 = 234,
+	OP_GETC		 = 235,
+	OP_READ		 = 236,
+	OP_ENTERWRITE	 = 237,
+	OP_LEAVEWRITE	 = 238,
+	OP_PRTF		 = 239,
+	OP_PRINT	 = 240,
+	OP_SAY		 = 241,
+	OP_SYSOPEN	 = 242,
+	OP_SYSSEEK	 = 243,
+	OP_SYSREAD	 = 244,
+	OP_SYSWRITE	 = 245,
+	OP_EOF		 = 246,
+	OP_TELL		 = 247,
+	OP_SEEK		 = 248,
+	OP_TRUNCATE	 = 249,
+	OP_FCNTL	 = 250,
+	OP_IOCTL	 = 251,
+	OP_FLOCK	 = 252,
+	OP_SEND		 = 253,
+	OP_RECV		 = 254,
+	OP_SOCKET	 = 255,
+	OP_SOCKPAIR	 = 256,
+	OP_BIND		 = 257,
+	OP_CONNECT	 = 258,
+	OP_LISTEN	 = 259,
+	OP_ACCEPT	 = 260,
+	OP_SHUTDOWN	 = 261,
+	OP_GSOCKOPT	 = 262,
+	OP_SSOCKOPT	 = 263,
+	OP_GETSOCKNAME	 = 264,
+	OP_GETPEERNAME	 = 265,
+	OP_LSTAT	 = 266,
+	OP_STAT		 = 267,
+	OP_FTRREAD	 = 268,
+	OP_FTRWRITE	 = 269,
+	OP_FTREXEC	 = 270,
+	OP_FTEREAD	 = 271,
+	OP_FTEWRITE	 = 272,
+	OP_FTEEXEC	 = 273,
+	OP_FTIS		 = 274,
+	OP_FTSIZE	 = 275,
+	OP_FTMTIME	 = 276,
+	OP_FTATIME	 = 277,
+	OP_FTCTIME	 = 278,
+	OP_FTROWNED	 = 279,
+	OP_FTEOWNED	 = 280,
+	OP_FTZERO	 = 281,
+	OP_FTSOCK	 = 282,
+	OP_FTCHR	 = 283,
+	OP_FTBLK	 = 284,
+	OP_FTFILE	 = 285,
+	OP_FTDIR	 = 286,
+	OP_FTPIPE	 = 287,
+	OP_FTSUID	 = 288,
+	OP_FTSGID	 = 289,
+	OP_FTSVTX	 = 290,
+	OP_FTLINK	 = 291,
+	OP_FTTTY	 = 292,
+	OP_FTTEXT	 = 293,
+	OP_FTBINARY	 = 294,
+	OP_CHDIR	 = 295,
+	OP_CHOWN	 = 296,
+	OP_CHROOT	 = 297,
+	OP_UNLINK	 = 298,
+	OP_CHMOD	 = 299,
+	OP_UTIME	 = 300,
+	OP_RENAME	 = 301,
+	OP_LINK		 = 302,
+	OP_SYMLINK	 = 303,
+	OP_READLINK	 = 304,
+	OP_MKDIR	 = 305,
+	OP_RMDIR	 = 306,
+	OP_OPEN_DIR	 = 307,
+	OP_READDIR	 = 308,
+	OP_TELLDIR	 = 309,
+	OP_SEEKDIR	 = 310,
+	OP_REWINDDIR	 = 311,
+	OP_CLOSEDIR	 = 312,
+	OP_FORK		 = 313,
+	OP_WAIT		 = 314,
+	OP_WAITPID	 = 315,
+	OP_SYSTEM	 = 316,
+	OP_EXEC		 = 317,
+	OP_KILL		 = 318,
+	OP_GETPPID	 = 319,
+	OP_GETPGRP	 = 320,
+	OP_SETPGRP	 = 321,
+	OP_GETPRIORITY	 = 322,
+	OP_SETPRIORITY	 = 323,
+	OP_TIME		 = 324,
+	OP_TMS		 = 325,
+	OP_LOCALTIME	 = 326,
+	OP_GMTIME	 = 327,
+	OP_ALARM	 = 328,
+	OP_SLEEP	 = 329,
+	OP_SHMGET	 = 330,
+	OP_SHMCTL	 = 331,
+	OP_SHMREAD	 = 332,
+	OP_SHMWRITE	 = 333,
+	OP_MSGGET	 = 334,
+	OP_MSGCTL	 = 335,
+	OP_MSGSND	 = 336,
+	OP_MSGRCV	 = 337,
+	OP_SEMOP	 = 338,
+	OP_SEMGET	 = 339,
+	OP_SEMCTL	 = 340,
+	OP_REQUIRE	 = 341,
+	OP_DOFILE	 = 342,
+	OP_HINTSEVAL	 = 343,
+	OP_ENTEREVAL	 = 344,
+	OP_LEAVEEVAL	 = 345,
+	OP_ENTERTRY	 = 346,
+	OP_LEAVETRY	 = 347,
+	OP_GHBYNAME	 = 348,
+	OP_GHBYADDR	 = 349,
+	OP_GHOSTENT	 = 350,
+	OP_GNBYNAME	 = 351,
+	OP_GNBYADDR	 = 352,
+	OP_GNETENT	 = 353,
+	OP_GPBYNAME	 = 354,
+	OP_GPBYNUMBER	 = 355,
+	OP_GPROTOENT	 = 356,
+	OP_GSBYNAME	 = 357,
+	OP_GSBYPORT	 = 358,
+	OP_GSERVENT	 = 359,
+	OP_SHOSTENT	 = 360,
+	OP_SNETENT	 = 361,
+	OP_SPROTOENT	 = 362,
+	OP_SSERVENT	 = 363,
+	OP_EHOSTENT	 = 364,
+	OP_ENETENT	 = 365,
+	OP_EPROTOENT	 = 366,
+	OP_ESERVENT	 = 367,
+	OP_GPWNAM	 = 368,
+	OP_GPWUID	 = 369,
+	OP_GPWENT	 = 370,
+	OP_SPWENT	 = 371,
+	OP_EPWENT	 = 372,
+	OP_GGRNAM	 = 373,
+	OP_GGRGID	 = 374,
+	OP_GGRENT	 = 375,
+	OP_SGRENT	 = 376,
+	OP_EGRENT	 = 377,
+	OP_GETLOGIN	 = 378,
+	OP_SYSCALL	 = 379,
+	OP_LOCK		 = 380,
+	OP_ONCE		 = 381,
+	OP_CUSTOM	 = 382,
+	OP_COREARGS	 = 383,
+	OP_AVHVSWITCH	 = 384,
+	OP_RUNCV	 = 385,
+	OP_FC		 = 386,
+	OP_PADCV	 = 387,
+	OP_INTROCV	 = 388,
+	OP_CLONECV	 = 389,
+	OP_PADRANGE	 = 390,
+	OP_REFASSIGN	 = 391,
+	OP_LVREF	 = 392,
+	OP_LVREFSLICE	 = 393,
+	OP_LVAVREF	 = 394,
+	OP_ANONCONST	 = 395,
 	OP_max		
 } opcode;
 
-#define MAXO 393
+#define MAXO 396
 #define OP_FREED MAXO
 
 /* the OP_IS_* macros are optimized to a simple range check because

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/pad.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/pad.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/pad.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -18,13 +18,7 @@
 
 /* offsets within a pad */
 
-#if PTRSIZE == 4
-typedef U32TYPE PADOFFSET;
-#else
-#   if PTRSIZE == 8
-typedef U64TYPE PADOFFSET;
-#   endif
-#endif
+typedef SSize_t PADOFFSET; /* signed so that -1 is a valid value */
 #define NOT_IN_PAD ((PADOFFSET) -1)
 
 /* B.xs expects the first members of these two structs to line up

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/parser.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/parser.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/parser.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -42,9 +42,9 @@
     /* Number of tokens to shift before error messages enabled.  */
     int		    yyerrstatus;
 
-    int		    stack_size;
     int		    yylen;	/* length of active reduction */
     yy_stack_frame  *stack;	/* base of stack */
+    yy_stack_frame  *stack_max1;/* (top-1)th element of allocated stack */
     yy_stack_frame  *ps;	/* current stack frame */
 
     /* lexer state */
@@ -56,8 +56,8 @@
     U8		lex_defer;	/* state after determined token */
     U8		lex_dojoin;	/* doing an array interpolation
 				   1 = @{...}  2 = ->@ */
-    U8		lex_expect;	/* UNUSED */
     U8		expect;		/* how to interpret ambiguous tokens */
+    bool	preambled;
     I32		lex_formbrack;	/* bracket count at outer format level */
     OP		*lex_inpat;	/* in pattern $) and $| are special */
     OP		*lex_op;	/* extra info to pass back on op */
@@ -68,12 +68,14 @@
     SV		*lex_stuff;	/* runtime pattern from m// or s/// */
     I32		multi_start;	/* 1st line of multi-line string */
     I32		multi_end;	/* last line of multi-line string */
-    char	multi_open;	/* delimiter of said string */
-    char	multi_close;	/* delimiter of said string */
-    bool	preambled;
+    UV		multi_open;	/* delimiter of said string */
+    UV		multi_close;	/* delimiter of said string */
     bool        lex_re_reparsing; /* we're doing G_RE_REPARSING */
+    U8		lex_super_state;/* lexer state to save */
+    U16		lex_sub_inwhat;	/* "lex_inwhat" to use in sublex_push */
     I32		lex_allbrackets;/* (), [], {}, ?: bracket count */
-    SUBLEXINFO	sublex_info;
+    OP		*lex_sub_op;	/* current op in y/// or pattern */
+    SV		*lex_sub_repl;	/* repl of s/// used in sublex_push */
     LEXSHARED	*lex_shared;
     SV		*linestr;	/* current chunk of src text */
     char	*bufptr;	/* carries the cursor (current parsing
@@ -96,18 +98,25 @@
     HV		*in_my_stash;	/* declared class of this "my" declaration */
     PerlIO	*rsfp;		/* current source file pointer */
     AV		*rsfp_filters;	/* holds chain of active source filters */
-    U8		form_lex_state;	/* remember lex_state when parsing fmt */
 
     YYSTYPE	nextval[5];	/* value of next token, if any */
     I32		nexttype[5];	/* type of next token */
-    U32		nexttoke;
-
+    U8		nexttoke;
+    U8		form_lex_state;	/* remember lex_state when parsing fmt */
+    U8		lex_fakeeof;	/* precedence at which to fake EOF */
+    U8		lex_flags;
     COP		*saved_curcop;	/* the previous PL_curcop */
     char	tokenbuf[256];
     line_t	herelines;	/* number of lines in here-doc */
     line_t	preambling;	/* line # when processing $ENV{PERL5DB} */
-    U8		lex_fakeeof;	/* precedence at which to fake EOF */
-    U8		lex_flags;
+
+    /* these are valid while parsing a subroutine signature */
+    IV          sig_elems;      /* number of signature elements seen so far */
+    IV          sig_optelems;   /* number of optional signature elems seen */
+    char        sig_slurpy;     /* the sigil of the slurpy var (or null) */
+
+    bool        recheck_utf8_validity;
+
     PERL_BITFIELD16	in_pod:1;      /* lexer is within a =pod section */
     PERL_BITFIELD16	filtered:1;    /* source filters in evalbytes */
     PERL_BITFIELD16	saw_infix_sigil:1; /* saw & or * or % operator */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -14,7 +14,7 @@
  * exactly on the third column */
 
 #define PERL_REVISION	5		/* age */
-#define PERL_VERSION	24		/* epoch */
+#define PERL_VERSION	26		/* epoch */
 #define PERL_SUBVERSION	1		/* generation */
 
 /* The following numbers describe the earliest compatible version of
@@ -35,7 +35,7 @@
    changing them should not be necessary.
 */
 #define PERL_API_REVISION	5
-#define PERL_API_VERSION	24
+#define PERL_API_VERSION	26
 #define PERL_API_SUBVERSION	0
 /*
    XXX Note:  The selection of non-default Configure options, such
@@ -90,8 +90,8 @@
 
 #!perl
 die "Usage: perl -x patchlevel.h comment ..." unless @ARGV;
-open PLIN, "patchlevel.h" or die "Couldn't open patchlevel.h : $!";
-open PLOUT, ">patchlevel.new" or die "Couldn't write on patchlevel.new : $!";
+open PLIN, "<", "patchlevel.h" or die "Couldn't open patchlevel.h : $!";
+open PLOUT, ">", "patchlevel.new" or die "Couldn't write on patchlevel.new : $!";
 my $seen=0;
 while (<PLIN>) {
     if (/\t,NULL/ and $seen) {

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perl.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perl.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perl.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -28,6 +28,16 @@
 #   include "config.h"
 #endif
 
+/* this is used for functions which take a depth trailing
+ * argument under debugging */
+#ifdef DEBUGGING
+#define _pDEPTH ,U32 depth
+#define _aDEPTH ,depth
+#else
+#define _pDEPTH
+#define _aDEPTH
+#endif
+
 /* NOTE 1: that with gcc -std=c89 the __STDC_VERSION__ is *not* defined
  * because the __STDC_VERSION__ became a thing only with C90.  Therefore,
  * with gcc, HAS_C99 will never become true as long as we use -std=c89.
@@ -322,12 +332,7 @@
  * or variables/arguments that are used only in certain configurations.
  */
 #ifndef PERL_UNUSED_ARG
-#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-#    include <note.h>
-#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
-#  else
-#    define PERL_UNUSED_ARG(x) ((void)sizeof(x))
-#  endif
+#  define PERL_UNUSED_ARG(x) ((void)sizeof(x))
 #endif
 #ifndef PERL_UNUSED_VAR
 #  define PERL_UNUSED_VAR(x) ((void)sizeof(x))
@@ -729,6 +734,10 @@
 #   include <locale.h>
 #endif
 
+#ifdef I_XLOCALE
+#   include <xlocale.h>
+#endif
+
 #if !defined(NO_LOCALE) && defined(HAS_SETLOCALE)
 #   define USE_LOCALE
 #   define HAS_SKIP_LOCALE_INIT /* Solely for XS code to test for this
@@ -757,10 +766,6 @@
 #   endif
 #endif /* !NO_LOCALE && HAS_SETLOCALE */
 
-/* Is $^ENCODING set, or are we under the encoding pragma? */
-#define IN_ENCODING UNLIKELY(PL_encoding                                      \
-                             || (PL_lex_encoding && _get_encoding() != NULL))
-
 #include <setjmp.h>
 
 #ifdef I_SYS_PARAM
@@ -1041,9 +1046,8 @@
 #    endif
 #  endif
 #else
-#   ifndef memcmp
-#	define memcmp 	my_memcmp
-#   endif
+#   undef memcmp
+#   define memcmp   my_memcmp
 #endif /* HAS_MEMCMP && HAS_SANE_MEMCMP */
 
 #ifndef memzero
@@ -1271,14 +1275,13 @@
 #define CLEAR_ERRSV() STMT_START {					\
     SV ** const svp = &GvSV(PL_errgv);					\
     if (!*svp) {							\
-	goto clresv_newemptypv;						\
+        *svp = newSVpvs("");                                            \
     } else if (SvREADONLY(*svp)) {					\
 	SvREFCNT_dec_NN(*svp);						\
-	clresv_newemptypv:						\
 	*svp = newSVpvs("");						\
     } else {								\
 	SV *const errsv = *svp;						\
-	sv_setpvs(errsv, "");						\
+        SvPVCLEAR(errsv);                                               \
 	SvPOK_only(errsv);						\
 	if (SvMAGICAL(errsv)) {						\
 	    mg_free(errsv);						\
@@ -2022,6 +2025,12 @@
 #   define Perl_isinf(x) isinfq(x)
 #   define Perl_isnan(x) isnanq(x)
 #   define Perl_isfinite(x) !(isnanq(x) || isinfq(x))
+#   define Perl_fp_class(x) ((x) == 0.0Q ? 0 : isinfq(x) ? 3 : isnanq(x) ? 4 : PERL_ABS(x) < FLT128_MIN ? 2 : 1)
+#   define Perl_fp_class_inf(x)    (Perl_fp_class(x) == 3)
+#   define Perl_fp_class_nan(x)    (Perl_fp_class(x) == 4)
+#   define Perl_fp_class_norm(x)   (Perl_fp_class(x) == 1)
+#   define Perl_fp_class_denorm(x) (Perl_fp_class(x) == 2)
+#   define Perl_fp_class_zero(x)   (Perl_fp_class(x) == 0)
 #else
 #   define NV_DIG DBL_DIG
 #   ifdef DBL_MANT_DIG
@@ -2666,6 +2675,11 @@
 typedef struct padnamelist PADNAMELIST;
 typedef struct padname PADNAME;
 
+/* enable PERL_OP_PARENT by default */
+#if !defined(PERL_OP_PARENT) && !defined(PERL_NO_OP_PARENT)
+#  define PERL_OP_PARENT
+#endif
+
 /* enable PERL_COPY_ON_WRITE by default */
 #if !defined(PERL_COPY_ON_WRITE) && !defined(PERL_NO_COW)
 #  define PERL_COPY_ON_WRITE
@@ -3064,6 +3078,8 @@
  */
 #if defined(USE_ITHREADS) && defined(I_PTHREAD) && \
     defined(__clang__) && \
+    !defined(PERL_GLOBAL_STRUCT) && \
+    !defined(PERL_GLOBAL_STRUCT_PRIVATE) && \
     !defined(SWIG) && \
   ((!defined(__apple_build_version__) &&               \
     ((__clang_major__ == 3 && __clang_minor__ >= 6) || \
@@ -3777,7 +3793,7 @@
 #  define USEMYBINMODE /**/
 #  include <io.h> /* for setmode() prototype */
 #  define my_binmode(fp, iotype, mode) \
-            (PerlLIO_setmode(fileno(fp), mode) != -1 ? TRUE : FALSE)
+            cBOOL(PerlLIO_setmode(fileno(fp), mode) != -1)
 #endif
 
 #ifdef __CYGWIN__
@@ -3789,6 +3805,14 @@
 #else
 union any {
     void*	any_ptr;
+    SV*         any_sv;
+    SV**        any_svp;
+    GV*         any_gv;
+    AV*         any_av;
+    HV*         any_hv;
+    OP*         any_op;
+    char*       any_pv;
+    char**      any_pvp;
     I32		any_i32;
     U32		any_u32;
     IV		any_iv;
@@ -3872,12 +3896,6 @@
 #  define USE_HASH_SEED
 #endif
 
-/* Win32 defines a type 'WORD' in windef.h, and AmigaOS in exec/types.h.
- * This conflicts with the enumerator 'WORD' defined in perly.h.
- * The yytokentype enum is only a debugging aid, so it's not really needed. */
-#if defined(WIN32) || defined(__amigaos4__)
-#  define YYTOKENTYPE
-#endif
 #include "perly.h"
 
 
@@ -3918,14 +3936,6 @@
 #undef _XPVMG_HEAD
 #undef _XPVCV_COMMON
 
-typedef struct _sublex_info SUBLEXINFO;
-struct _sublex_info {
-    U8 super_state;	/* lexer state to save */
-    U16 sub_inwhat;	/* "lex_inwhat" to use */
-    OP *sub_op;		/* "lex_op" to use */
-    SV *repl;		/* replacement of s/// or y/// */
-};
-
 #include "parser.h"
 
 typedef struct magic_state MGS;	/* struct magic_state defined in mg.c */
@@ -4177,34 +4187,34 @@
 #define DEBUG_DB_RECURSE_FLAG	0x40000000
 #define DEBUG_TOP_FLAG		0x80000000 /* -D was given --> PL_debug |= FLAG */
 
-#  define DEBUG_p_TEST_ (PL_debug & DEBUG_p_FLAG)
-#  define DEBUG_s_TEST_ (PL_debug & DEBUG_s_FLAG)
-#  define DEBUG_l_TEST_ (PL_debug & DEBUG_l_FLAG)
-#  define DEBUG_t_TEST_ (PL_debug & DEBUG_t_FLAG)
-#  define DEBUG_o_TEST_ (PL_debug & DEBUG_o_FLAG)
-#  define DEBUG_c_TEST_ (PL_debug & DEBUG_c_FLAG)
-#  define DEBUG_P_TEST_ (PL_debug & DEBUG_P_FLAG)
-#  define DEBUG_m_TEST_ (PL_debug & DEBUG_m_FLAG)
-#  define DEBUG_f_TEST_ (PL_debug & DEBUG_f_FLAG)
-#  define DEBUG_r_TEST_ (PL_debug & DEBUG_r_FLAG)
-#  define DEBUG_x_TEST_ (PL_debug & DEBUG_x_FLAG)
-#  define DEBUG_u_TEST_ (PL_debug & DEBUG_u_FLAG)
-#  define DEBUG_U_TEST_ (PL_debug & DEBUG_U_FLAG)
-#  define DEBUG_H_TEST_ (PL_debug & DEBUG_H_FLAG)
-#  define DEBUG_X_TEST_ (PL_debug & DEBUG_X_FLAG)
-#  define DEBUG_D_TEST_ (PL_debug & DEBUG_D_FLAG)
-#  define DEBUG_S_TEST_ (PL_debug & DEBUG_S_FLAG)
-#  define DEBUG_T_TEST_ (PL_debug & DEBUG_T_FLAG)
-#  define DEBUG_R_TEST_ (PL_debug & DEBUG_R_FLAG)
-#  define DEBUG_J_TEST_ (PL_debug & DEBUG_J_FLAG)
-#  define DEBUG_v_TEST_ (PL_debug & DEBUG_v_FLAG)
-#  define DEBUG_C_TEST_ (PL_debug & DEBUG_C_FLAG)
-#  define DEBUG_A_TEST_ (PL_debug & DEBUG_A_FLAG)
-#  define DEBUG_q_TEST_ (PL_debug & DEBUG_q_FLAG)
-#  define DEBUG_M_TEST_ (PL_debug & DEBUG_M_FLAG)
-#  define DEBUG_B_TEST_ (PL_debug & DEBUG_B_FLAG)
-#  define DEBUG_L_TEST_ (PL_debug & DEBUG_L_FLAG)
-#  define DEBUG_i_TEST_ (PL_debug & DEBUG_i_FLAG)
+#  define DEBUG_p_TEST_ UNLIKELY(PL_debug & DEBUG_p_FLAG)
+#  define DEBUG_s_TEST_ UNLIKELY(PL_debug & DEBUG_s_FLAG)
+#  define DEBUG_l_TEST_ UNLIKELY(PL_debug & DEBUG_l_FLAG)
+#  define DEBUG_t_TEST_ UNLIKELY(PL_debug & DEBUG_t_FLAG)
+#  define DEBUG_o_TEST_ UNLIKELY(PL_debug & DEBUG_o_FLAG)
+#  define DEBUG_c_TEST_ UNLIKELY(PL_debug & DEBUG_c_FLAG)
+#  define DEBUG_P_TEST_ UNLIKELY(PL_debug & DEBUG_P_FLAG)
+#  define DEBUG_m_TEST_ UNLIKELY(PL_debug & DEBUG_m_FLAG)
+#  define DEBUG_f_TEST_ UNLIKELY(PL_debug & DEBUG_f_FLAG)
+#  define DEBUG_r_TEST_ UNLIKELY(PL_debug & DEBUG_r_FLAG)
+#  define DEBUG_x_TEST_ UNLIKELY(PL_debug & DEBUG_x_FLAG)
+#  define DEBUG_u_TEST_ UNLIKELY(PL_debug & DEBUG_u_FLAG)
+#  define DEBUG_U_TEST_ UNLIKELY(PL_debug & DEBUG_U_FLAG)
+#  define DEBUG_H_TEST_ UNLIKELY(PL_debug & DEBUG_H_FLAG)
+#  define DEBUG_X_TEST_ UNLIKELY(PL_debug & DEBUG_X_FLAG)
+#  define DEBUG_D_TEST_ UNLIKELY(PL_debug & DEBUG_D_FLAG)
+#  define DEBUG_S_TEST_ UNLIKELY(PL_debug & DEBUG_S_FLAG)
+#  define DEBUG_T_TEST_ UNLIKELY(PL_debug & DEBUG_T_FLAG)
+#  define DEBUG_R_TEST_ UNLIKELY(PL_debug & DEBUG_R_FLAG)
+#  define DEBUG_J_TEST_ UNLIKELY(PL_debug & DEBUG_J_FLAG)
+#  define DEBUG_v_TEST_ UNLIKELY(PL_debug & DEBUG_v_FLAG)
+#  define DEBUG_C_TEST_ UNLIKELY(PL_debug & DEBUG_C_FLAG)
+#  define DEBUG_A_TEST_ UNLIKELY(PL_debug & DEBUG_A_FLAG)
+#  define DEBUG_q_TEST_ UNLIKELY(PL_debug & DEBUG_q_FLAG)
+#  define DEBUG_M_TEST_ UNLIKELY(PL_debug & DEBUG_M_FLAG)
+#  define DEBUG_B_TEST_ UNLIKELY(PL_debug & DEBUG_B_FLAG)
+#  define DEBUG_L_TEST_ UNLIKELY(PL_debug & DEBUG_L_FLAG)
+#  define DEBUG_i_TEST_ UNLIKELY(PL_debug & DEBUG_i_FLAG)
 #  define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_)
 #  define DEBUG_Uv_TEST_ (DEBUG_U_TEST_ && DEBUG_v_TEST_)
 #  define DEBUG_Pv_TEST_ (DEBUG_P_TEST_ && DEBUG_v_TEST_)
@@ -4259,21 +4269,30 @@
      /* Temporarily turn off memory debugging in case the a
       * does memory allocation, either directly or indirectly. */
 #  define DEBUG_m(a)  \
-    STMT_START {							\
-        if (PERL_GET_INTERP) { dTHX; if (DEBUG_m_TEST) {PL_debug&=~DEBUG_m_FLAG; a; PL_debug|=DEBUG_m_FLAG;} } \
+    STMT_START {					                \
+        if (PERL_GET_INTERP) {                                          \
+                                dTHX;                                   \
+                                if (DEBUG_m_TEST) {                     \
+                                    PL_debug &= ~DEBUG_m_FLAG;          \
+                                    a;                                  \
+                                    PL_debug |= DEBUG_m_FLAG;           \
+                                }                                       \
+                              }                                         \
     } STMT_END
 
-#  define DEBUG__(t, a) \
-	STMT_START { \
-		if (t) STMT_START {a;} STMT_END; \
-	} STMT_END
+#  define DEBUG__(t, a)                                                 \
+        STMT_START {                                                    \
+                if (t) STMT_START {a;} STMT_END;                        \
+        } STMT_END
 
 #  define DEBUG_f(a) DEBUG__(DEBUG_f_TEST, a)
+
 #ifndef PERL_EXT_RE_BUILD
 #  define DEBUG_r(a) DEBUG__(DEBUG_r_TEST, a)
 #else
 #  define DEBUG_r(a) STMT_START {a;} STMT_END
 #endif /* PERL_EXT_RE_BUILD */
+
 #  define DEBUG_x(a) DEBUG__(DEBUG_x_TEST, a)
 #  define DEBUG_u(a) DEBUG__(DEBUG_u_TEST, a)
 #  define DEBUG_U(a) DEBUG__(DEBUG_U_TEST, a)
@@ -4780,6 +4799,12 @@
 EXTCONST char PL_uuemap[65]
   INIT("`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_");
 
+/* a special string address whose value is "isa", but which perl knows
+ * to treat as if it were really "DOES" when printing the method name in
+ *  the "Can't call method '%s'" error message */
+EXTCONST char PL_isa_DOES[]
+  INIT("isa");
+
 #ifdef DOINIT
 EXTCONST char PL_uudmap[256] =
 #  ifdef PERL_MICRO
@@ -5124,7 +5149,7 @@
 
 /* These are all the compile time options that affect binary compatibility.
    Other compile time options that are binary compatible are in perl.c
-   Both are combined for the output of perl -V
+   (in S_Internals_V()). Both are combined for the output of perl -V
    However, this string will be embedded in any shared perl library, which will
    allow us add a comparison check in perlmain.c in the near future.  */
 #ifdef DOINIT
@@ -5284,9 +5309,11 @@
 #  define PL_dirty cBOOL(PL_phase == PERL_PHASE_DESTRUCT)
 
 #  define PL_amagic_generation PL_na
+#  define PL_encoding ((SV *)NULL)
 #endif /* !PERL_CORE */
 
 #define PL_hints PL_compiling.cop_hints
+#define PL_maxo  MAXO
 
 END_EXTERN_C
 
@@ -5322,6 +5349,8 @@
     /* update exp_name[] in toke.c if adding to this enum */
 } expectation;
 
+#define KEY_sigvar 0xFFFF /* fake keyword representing a signature var */
+
 /* Hints are now stored in a dedicated U32, so the bottom 8 bits are no longer
    special and there is no need for HINT_PRIVATE_MASK for COPs
    However, bitops store HINT_INTEGER in their op_private.
@@ -5709,122 +5738,19 @@
 
 /* In C99 we could use designated (named field) union initializers.
  * In C89 we need to initialize the member declared first.
+ * In C++ we need extern C initializers.
  *
  * With the U8_NV version you will want to have inner braces,
- * while with the NV_U8 use just the NV.*/
+ * while with the NV_U8 use just the NV. */
+
+#ifdef __cplusplus
+#define INFNAN_U8_NV_DECL EXTERN_C const union { U8 u8[NVSIZE]; NV nv; }
+#define INFNAN_NV_U8_DECL EXTERN_C const union { NV nv; U8 u8[NVSIZE]; }
+#else
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }
 #define INFNAN_NV_U8_DECL EXTCONST union { NV nv; U8 u8[NVSIZE]; }
-
-#ifdef DOINIT
-
-/* PL_inf and PL_nan initialization.
- *
- * For inf and nan initialization the ultimate fallback is dividing
- * one or zero by zero: however, some compilers will warn or even fail
- * on divide-by-zero, but hopefully something earlier will work.
- *
- * If you are thinking of using HUGE_VAL for infinity, or using
- * <math.h> functions to generate NV_INF (e.g. exp(1e9), log(-1.0)),
- * stop.  Neither will work portably: HUGE_VAL can be just DBL_MAX,
- * and the math functions might be just generating DBL_MAX, or even zero.
- *
- * Also, do NOT try doing NV_NAN based on NV_INF and trying (NV_INF-NV_INF).
- * Though logically correct, some compilers (like Visual C 2003)
- * falsely misoptimize that to zero (x-x is always zero, right?)
- */
-
-/* The quadmath literals are anon structs which -Wc++-compat doesn't like. */
-GCC_DIAG_IGNORE(-Wc++-compat)
-
-#  ifdef USE_QUADMATH
-/* Cannot use HUGE_VALQ for PL_inf because not a compile-time
- * constant. */
-INFNAN_NV_U8_DECL PL_inf = { 1.0Q/0.0Q };
-#  elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLINFBYTES)
-INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } };
-#  elif NVSIZE == DOUBLESIZE && defined(DOUBLEINFBYTES)
-INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } };
-#  else
-#    if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE)
-#      if defined(LDBL_INFINITY)
-INFNAN_NV_U8_DECL PL_inf = { LDBL_INFINITY };
-#      elif defined(LDBL_INF)
-INFNAN_NV_U8_DECL PL_inf = { LDBL_INF };
-#      elif defined(INFINITY)
-INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY };
-#      elif defined(INF)
-INFNAN_NV_U8_DECL PL_inf = { (NV)INF };
-#      else
-INFNAN_NV_U8_DECL PL_inf = { 1.0L/0.0L }; /* keep last */
-#      endif
-#    else
-#      if defined(DBL_INFINITY)
-INFNAN_NV_U8_DECL PL_inf = { DBL_INFINITY };
-#      elif defined(DBL_INF)
-INFNAN_NV_U8_DECL PL_inf = { DBL_INF };
-#      elif defined(INFINITY) /* C99 */
-INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY };
-#      elif defined(INF)
-INFNAN_NV_U8_DECL PL_inf = { (NV)INF };
-#      else
-INFNAN_NV_U8_DECL PL_inf = { 1.0/0.0 }; /* keep last */
-#      endif
-#    endif
-#  endif
-
-#  ifdef USE_QUADMATH
-/* Cannot use nanq("0") for PL_nan because not a compile-time
- * constant. */
-INFNAN_NV_U8_DECL PL_nan = { 0.0Q/0.0Q };
-#  elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLNANBYTES)
-INFNAN_U8_NV_DECL PL_nan = { { LONGDBLNANBYTES } };
-#  elif NVSIZE == DOUBLESIZE && defined(DOUBLENANBYTES)
-INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } };
-#  else
-#    if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE)
-#      if defined(LDBL_NAN)
-INFNAN_NV_U8_DECL PL_nan = { LDBL_NAN };
-#      elif defined(LDBL_QNAN)
-INFNAN_NV_U8_DECL PL_nan = { LDBL_QNAN };
-#      elif defined(NAN)
-INFNAN_NV_U8_DECL PL_nan = { (NV)NAN };
-#      else
-INFNAN_NV_U8_DECL PL_nan = { 0.0L/0.0L }; /* keep last */
-#      endif
-#    else
-#      if defined(DBL_NAN)
-INFNAN_NV_U8_DECL PL_nan = { DBL_NAN };
-#      elif defined(DBL_QNAN)
-INFNAN_NV_U8_DECL PL_nan = { DBL_QNAN };
-#      elif defined(NAN) /* C99 */
-INFNAN_NV_U8_DECL PL_nan = { (NV)NAN };
-#      else
-INFNAN_NV_U8_DECL PL_nan = { 0.0/0.0 }; /* keep last */
-#      endif
-#    endif
-#  endif
-
-GCC_DIAG_RESTORE
-
-#else
-
-INFNAN_NV_U8_DECL PL_inf;
-INFNAN_NV_U8_DECL PL_nan;
-
 #endif
 
-/* If you have not defined NV_INF/NV_NAN (like for example win32/win32.h),
- * we will define NV_INF/NV_NAN as the nv part of the global const
- * PL_inf/PL_nan.  Note, however, that the preexisting NV_INF/NV_NAN
- * might not be a compile-time constant, in which case it cannot be
- * used to initialize PL_inf/PL_nan above. */
-#ifndef NV_INF
-#  define NV_INF PL_inf.nv
-#endif
-#ifndef NV_NAN
-#  define NV_NAN PL_nan.nv
-#endif
-
 /* if these never got defined, they need defaults */
 #ifndef PERL_SET_CONTEXT
 #  define PERL_SET_CONTEXT(i)		PERL_SET_INTERP(i)
@@ -5962,14 +5888,31 @@
 /* These locale things are all subject to change */
 
 #   define LOCALE_INIT   MUTEX_INIT(&PL_locale_mutex)
-#   define LOCALE_TERM   MUTEX_DESTROY(&PL_locale_mutex)
 
+#   ifdef USE_THREAD_SAFE_LOCALE
+#       define LOCALE_TERM                                                  \
+                    STMT_START {                                            \
+                        MUTEX_DESTROY(&PL_locale_mutex);                    \
+                        if (PL_C_locale_obj) {                              \
+                            /* Make sure we aren't using the locale         \
+                             * space we are about to free */                \
+                            uselocale(LC_GLOBAL_LOCALE);                    \
+                            freelocale(PL_C_locale_obj);                    \
+                            PL_C_locale_obj = (locale_t) NULL;              \
+                        }                                                   \
+                     } STMT_END
+    }
+#   else
+#       define LOCALE_TERM   MUTEX_DESTROY(&PL_locale_mutex)
+#   endif
+
 #   define LOCALE_LOCK   MUTEX_LOCK(&PL_locale_mutex)
 #   define LOCALE_UNLOCK MUTEX_UNLOCK(&PL_locale_mutex)
 
 /* Returns TRUE if the plain locale pragma without a parameter is in effect
  */
-#   define IN_LOCALE_RUNTIME	cBOOL(CopHINTS_get(PL_curcop) & HINT_LOCALE)
+#   define IN_LOCALE_RUNTIME	(PL_curcop \
+                                && CopHINTS_get(PL_curcop) & HINT_LOCALE)
 
 /* Returns TRUE if either form of the locale pragma is in effect */
 #   define IN_SOME_LOCALE_FORM_RUNTIME   \
@@ -5990,7 +5933,7 @@
 
 #   define IN_LC_PARTIAL_COMPILETIME   cBOOL(PL_hints & HINT_LOCALE_PARTIAL)
 #   define IN_LC_PARTIAL_RUNTIME  \
-                        cBOOL(CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL)
+               (PL_curcop && CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL)
 
 #   define IN_LC_COMPILETIME(category)                                       \
        (IN_LC_ALL_COMPILETIME || (IN_LC_PARTIAL_COMPILETIME                  \
@@ -6029,8 +5972,8 @@
 	STMT_START {                                                        \
             if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) {         \
                 Perl_warner(aTHX_ packWARN(WARN_LOCALE),                    \
-                                        "Wide character (U+%"UVXf") in %s", \
-                                        (UV) cp, OP_DESC(PL_op));           \
+                                       "Wide character (U+%" UVXf ") in %s",\
+                                       (UV) cp, OP_DESC(PL_op));            \
             }                                                               \
         }  STMT_END
 
@@ -6039,7 +5982,7 @@
             if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) {         \
                 UV cp = utf8_to_uvchr_buf((U8 *) s, (U8 *) send, NULL);     \
                 Perl_warner(aTHX_ packWARN(WARN_LOCALE),                    \
-                    "Wide character (U+%"UVXf") in %s",                     \
+                    "Wide character (U+%" UVXf ") in %s",                   \
                     (cp == 0)                                               \
                      ? UNICODE_REPLACEMENT                                  \
                      : (UV) cp,                                             \
@@ -6049,6 +5992,20 @@
 
 #   endif   /* PERL_CORE or PERL_IN_XSUB_RE */
 
+#if      defined(USE_ITHREADS)              \
+    &&   defined(HAS_NEWLOCALE)             \
+    &&   defined(LC_ALL_MASK)               \
+    &&   defined(HAS_FREELOCALE)            \
+    &&   defined(HAS_USELOCALE)             \
+    && ! defined(NO_THREAD_SAFE_USELOCALE)
+
+    /* The code is written for simplicity to assume that any platform advanced
+     * enough to have the Posix 2008 locale functions has LC_ALL.  The test
+     * above makes sure that assumption is valid */
+
+#   define USE_THREAD_SAFE_LOCALE
+#endif
+
 #else   /* No locale usage */
 #   define LOCALE_INIT
 #   define LOCALE_TERM
@@ -6230,14 +6187,20 @@
         _restore_LC_NUMERIC_function = &Perl_set_numeric_standard;          \
     }
 
-/* Lock to the C locale until unlock is called */
+/* Lock/unlock to the C locale until unlock is called.  This needs to be
+ * recursively callable.  [perl #128207] */
 #define LOCK_LC_NUMERIC_STANDARD()                          \
         (__ASSERT_(PL_numeric_standard)                     \
-        PL_numeric_standard = 2)
-
+        PL_numeric_standard++)
 #define UNLOCK_LC_NUMERIC_STANDARD()                        \
-        (__ASSERT_(PL_numeric_standard == 2)                \
-        PL_numeric_standard = 1)
+            STMT_START {                                    \
+                if (PL_numeric_standard > 1) {              \
+                    PL_numeric_standard--;                  \
+                }                                           \
+                else {                                      \
+                    assert(0);                              \
+                }                                           \
+            } STMT_END
 
 #define RESTORE_LC_NUMERIC_UNDERLYING()                     \
 	if (_was_local) set_numeric_local();
@@ -6304,7 +6267,7 @@
 #    ifdef __hpux
 #        define strtoll __strtoll	/* secret handshake */
 #    endif
-#    ifdef WIN64
+#    if defined(WIN64) && defined(_MSC_VER)
 #        define strtoll _strtoi64	/* secret handshake */
 #    endif
 #   if !defined(Strtol) && defined(HAS_STRTOLL)
@@ -6338,7 +6301,7 @@
 #    ifdef __hpux
 #        define strtoull __strtoull	/* secret handshake */
 #    endif
-#    ifdef WIN64
+#    if defined(WIN64) && defined(_MSC_VER)
 #        define strtoull _strtoui64	/* secret handshake */
 #    endif
 #    if !defined(Strtoul) && defined(HAS_STRTOULL)
@@ -6738,6 +6701,14 @@
 #define PERL_PV_PRETTY_DUMP  PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
 #define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII
 
+#if DOUBLEKIND == DOUBLE_IS_VAX_F_FLOAT || \
+    DOUBLEKIND == DOUBLE_IS_VAX_D_FLOAT || \
+    DOUBLEKIND == DOUBLE_IS_VAX_G_FLOAT
+#  define DOUBLE_IS_VAX_FLOAT
+#else
+#  define DOUBLE_IS_IEEE_FORMAT
+#endif
+
 #if DOUBLEKIND == DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN || \
     DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN || \
     DOUBLEKIND == DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
@@ -6755,11 +6726,77 @@
 #  define DOUBLE_MIX_ENDIAN
 #endif
 
+/* The VAX fp formats are neither consistently little-endian nor
+ * big-endian, and neither are they really IEEE-mixed endian like
+ * the mixed-endian ARM IEEE formats (with swapped bytes).
+ * Ultimately, the VAX format came from the PDP-11.
+ *
+ * The ordering of the parts in VAX floats is quite vexing.
+ * In the below the fraction_n are the mantissa bits.
+ *
+ * The fraction_1 is the most significant (numbering as by DEC/Digital),
+ * while the rightmost bit in each fraction is the least significant:
+ * in other words, big-endian bit order within the fractions.
+ *
+ * The fraction segments themselves would be big-endianly, except that
+ * within 32 bit segments the less significant half comes first, the more
+ * significant after, except that in the format H (used for long doubles)
+ * the first fraction segment is alone, because the exponent is wider.
+ * This means for example that both the most and the least significant
+ * bits can be in the middle of the floats, not at either end.
+ *
+ * References:
+ * http://nssdc.gsfc.nasa.gov/nssdc/formats/VAXFloatingPoint.htm
+ * http://www.quadibloc.com/comp/cp0201.htm
+ * http://h71000.www7.hp.com/doc/82final/6443/6443pro_028.html
+ * (somebody at HP should be fired for the URLs)
+ *
+ * F   fraction_2:16 sign:1 exp:8  fraction_1:7
+ *     (exponent bias 128, hidden first one-bit)
+ *
+ * D   fraction_2:16 sign:1 exp:8  fraction_1:7
+ *     fraction_4:16               fraction_3:16
+ *     (exponent bias 128, hidden first one-bit)
+ *
+ * G   fraction_2:16 sign:1 exp:11 fraction_1:4
+ *     fraction_4:16               fraction_3:16
+ *     (exponent bias 1024, hidden first one-bit)
+ *
+ * H   fraction_1:16 sign:1 exp:15
+ *     fraction_3:16               fraction_2:16
+ *     fraction_5:16               fraction_4:16
+ *     fraction_7:16               fraction_6:16
+ *     (exponent bias 16384, hidden first one-bit)
+ *     (available only on VAX, and only on Fortran?)
+ *
+ * The formats S, T and X are available on the Alpha (and Itanium,
+ * also known as I64/IA64) and are equivalent with the IEEE-754 formats
+ * binary32, binary64, and binary128 (commonly: float, double, long double).
+ *
+ * S   sign:1 exp:8 mantissa:23
+ *     (exponent bias 127, hidden first one-bit)
+ *
+ * T   sign:1 exp:11 mantissa:52
+ *     (exponent bias 1022, hidden first one-bit)
+ *
+ * X   sign:1 exp:15 mantissa:112
+ *     (exponent bias 16382, hidden first one-bit)
+ *
+ */
+
+#ifdef DOUBLE_IS_VAX_FLOAT
+#  define DOUBLE_VAX_ENDIAN
+#endif
+
+#ifdef DOUBLE_IS_IEEE_FORMAT
 /* All the basic IEEE formats have the implicit bit,
- * except for the 80-bit extended formats, which will undef this. */
-#define NV_IMPLICIT_BIT
+ * except for the x86 80-bit extended formats, which will undef this.
+ * Also note that the IEEE 754 subnormals (formerly known as denormals)
+ * do not have the implicit bit of one. */
+#  define NV_IMPLICIT_BIT
+#endif
 
-#ifdef LONG_DOUBLEKIND
+#if defined(LONG_DOUBLEKIND) && LONG_DOUBLEKIND != LONG_DOUBLE_IS_DOUBLE
 
 #  if LONG_DOUBLEKIND == LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN || \
       LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN || \
@@ -6783,6 +6820,7 @@
 #    define LONGDOUBLE_X86_80_BIT
 #    ifdef USE_LONG_DOUBLE
 #      undef NV_IMPLICIT_BIT
+#      define NV_X86_80_BIT
 #    endif
 #  endif
 
@@ -6793,6 +6831,10 @@
 #    define LONGDOUBLE_DOUBLEDOUBLE
 #  endif
 
+#  if LONG_DOUBLEKIND == LONG_DOUBLE_IS_VAX_H_FLOAT
+#    define LONGDOUBLE_VAX_ENDIAN
+#  endif
+
 #endif /* LONG_DOUBLEKIND */
 
 #ifdef USE_QUADMATH /* assume quadmath endianness == native double endianness */
@@ -6813,6 +6855,9 @@
 #  ifdef DOUBLE_MIX_ENDIAN
 #    define NV_MIX_ENDIAN
 #  endif
+#  ifdef DOUBLE_VAX_ENDIAN
+#    define NV_VAX_ENDIAN
+#  endif
 #elif NVSIZE == LONG_DOUBLESIZE
 #  ifdef LONGDOUBLE_LITTLE_ENDIAN
 #    define NV_LITTLE_ENDIAN
@@ -6823,8 +6868,134 @@
 #  ifdef LONGDOUBLE_MIX_ENDIAN
 #    define NV_MIX_ENDIAN
 #  endif
+#  ifdef LONGDOUBLE_VAX_ENDIAN
+#    define NV_VAX_ENDIAN
+#  endif
 #endif
 
+#ifdef DOUBLE_IS_IEEE_FORMAT
+#  define DOUBLE_HAS_INF
+#  define DOUBLE_HAS_NAN
+#endif
+
+#ifdef DOUBLE_HAS_NAN
+
+#ifdef DOINIT
+
+/* PL_inf and PL_nan initialization.
+ *
+ * For inf and nan initialization the ultimate fallback is dividing
+ * one or zero by zero: however, some compilers will warn or even fail
+ * on divide-by-zero, but hopefully something earlier will work.
+ *
+ * If you are thinking of using HUGE_VAL for infinity, or using
+ * <math.h> functions to generate NV_INF (e.g. exp(1e9), log(-1.0)),
+ * stop.  Neither will work portably: HUGE_VAL can be just DBL_MAX,
+ * and the math functions might be just generating DBL_MAX, or even zero.
+ *
+ * Also, do NOT try doing NV_NAN based on NV_INF and trying (NV_INF-NV_INF).
+ * Though logically correct, some compilers (like Visual C 2003)
+ * falsely misoptimize that to zero (x-x is always zero, right?)
+ *
+ * Finally, note that not all floating point formats define Inf (or NaN).
+ * For the infinity a large number may be used instead.  Operations that
+ * under the IEEE floating point would return Inf or NaN may return
+ * either large numbers (positive or negative), or they may cause
+ * a floating point exception or some other fault.
+ */
+
+/* The quadmath literals are anon structs which -Wc++-compat doesn't like. */
+GCC_DIAG_IGNORE(-Wc++-compat)
+
+#  ifdef USE_QUADMATH
+/* Cannot use HUGE_VALQ for PL_inf because not a compile-time
+ * constant. */
+INFNAN_NV_U8_DECL PL_inf = { 1.0Q/0.0Q };
+#  elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLINFBYTES)
+INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } };
+#  elif NVSIZE == DOUBLESIZE && defined(DOUBLEINFBYTES)
+INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } };
+#  else
+#    if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE)
+#      if defined(LDBL_INFINITY)
+INFNAN_NV_U8_DECL PL_inf = { LDBL_INFINITY };
+#      elif defined(LDBL_INF)
+INFNAN_NV_U8_DECL PL_inf = { LDBL_INF };
+#      elif defined(INFINITY)
+INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY };
+#      elif defined(INF)
+INFNAN_NV_U8_DECL PL_inf = { (NV)INF };
+#      else
+INFNAN_NV_U8_DECL PL_inf = { 1.0L/0.0L }; /* keep last */
+#      endif
+#    else
+#      if defined(DBL_INFINITY)
+INFNAN_NV_U8_DECL PL_inf = { DBL_INFINITY };
+#      elif defined(DBL_INF)
+INFNAN_NV_U8_DECL PL_inf = { DBL_INF };
+#      elif defined(INFINITY) /* C99 */
+INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY };
+#      elif defined(INF)
+INFNAN_NV_U8_DECL PL_inf = { (NV)INF };
+#      else
+INFNAN_NV_U8_DECL PL_inf = { 1.0/0.0 }; /* keep last */
+#      endif
+#    endif
+#  endif
+
+#  ifdef USE_QUADMATH
+/* Cannot use nanq("0") for PL_nan because not a compile-time
+ * constant. */
+INFNAN_NV_U8_DECL PL_nan = { 0.0Q/0.0Q };
+#  elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLNANBYTES)
+INFNAN_U8_NV_DECL PL_nan = { { LONGDBLNANBYTES } };
+#  elif NVSIZE == DOUBLESIZE && defined(DOUBLENANBYTES)
+INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } };
+#  else
+#    if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE)
+#      if defined(LDBL_NAN)
+INFNAN_NV_U8_DECL PL_nan = { LDBL_NAN };
+#      elif defined(LDBL_QNAN)
+INFNAN_NV_U8_DECL PL_nan = { LDBL_QNAN };
+#      elif defined(NAN)
+INFNAN_NV_U8_DECL PL_nan = { (NV)NAN };
+#      else
+INFNAN_NV_U8_DECL PL_nan = { 0.0L/0.0L }; /* keep last */
+#      endif
+#    else
+#      if defined(DBL_NAN)
+INFNAN_NV_U8_DECL PL_nan = { DBL_NAN };
+#      elif defined(DBL_QNAN)
+INFNAN_NV_U8_DECL PL_nan = { DBL_QNAN };
+#      elif defined(NAN) /* C99 */
+INFNAN_NV_U8_DECL PL_nan = { (NV)NAN };
+#      else
+INFNAN_NV_U8_DECL PL_nan = { 0.0/0.0 }; /* keep last */
+#      endif
+#    endif
+#  endif
+
+GCC_DIAG_RESTORE
+
+#else
+
+INFNAN_NV_U8_DECL PL_inf;
+INFNAN_NV_U8_DECL PL_nan;
+
+#endif
+
+/* If you have not defined NV_INF/NV_NAN (like for example win32/win32.h),
+ * we will define NV_INF/NV_NAN as the nv part of the global const
+ * PL_inf/PL_nan.  Note, however, that the preexisting NV_INF/NV_NAN
+ * might not be a compile-time constant, in which case it cannot be
+ * used to initialize PL_inf/PL_nan above. */
+#ifndef NV_INF
+#  define NV_INF PL_inf.nv
+#endif
+#ifndef NV_NAN
+#  define NV_NAN PL_nan.nv
+#endif
+
 /* NaNs (not-a-numbers) can carry payload bits, in addition to
  * "nan-ness".  Part of the payload is the quiet/signaling bit.
  * To back up a bit (harhar):
@@ -6975,6 +7146,8 @@
 #  elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
 #    define NV_NAN_QS_BYTE_OFFSET 5 /* bytes 3 2 1 0 7 6 5 4 (MSB 7) */
 #  else
+/* For example the VAX formats should never
+ * get here because they do not have NaN. */
 #    error "Unexpected double format"
 #  endif
 #endif
@@ -7177,6 +7350,10 @@
 #    error "Unexpected double format"
 #  endif
 #endif
+
+#endif /* DOUBLE_HAS_NAN */
+
+
 /*
 
    (KEEP THIS LAST IN perl.h!)

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perlapi.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perlapi.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perlapi.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -99,6 +99,8 @@
 
 #else	/* !PERL_CORE */
 
+#undef  PL_C_locale_obj
+#define PL_C_locale_obj		(*Perl_GC_locale_obj_ptr(NULL))
 #undef  PL_appctx
 #define PL_appctx		(*Perl_Gappctx_ptr(NULL))
 #undef  PL_check
@@ -147,6 +149,8 @@
 #define PL_perlio_fd_refcnt_size	(*Perl_Gperlio_fd_refcnt_size_ptr(NULL))
 #undef  PL_perlio_mutex
 #define PL_perlio_mutex		(*Perl_Gperlio_mutex_ptr(NULL))
+#undef  PL_perllib_sep
+#define PL_perllib_sep		(*Perl_Gperllib_sep_ptr(NULL))
 #undef  PL_ppaddr
 #define PL_ppaddr		(*Perl_Gppaddr_ptr(NULL))
 #undef  PL_sh_path

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -836,15 +836,15 @@
     int fileno = win32_dup(win32_fileno(pf));
 
     /* open the file in the same mode */
-    if((pf)->_flag & _IOREAD) {
+    if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RD) {
 	mode[0] = 'r';
 	mode[1] = 0;
     }
-    else if((pf)->_flag & _IOWRT) {
+    else if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_WR) {
 	mode[0] = 'a';
 	mode[1] = 0;
     }
-    else if((pf)->_flag & _IORW) {
+    else if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RW) {
 	mode[0] = 'r';
 	mode[1] = '+';
 	mode[2] = 0;
@@ -2177,17 +2177,11 @@
 void
 CPerlHost::Add(LPCSTR lpStr)
 {
-    char szBuffer[1024];
     LPSTR *lpPtr;
-    int index, length = strlen(lpStr)+1;
+    STRLEN length = strlen(lpStr)+1;
 
-    for(index = 0; lpStr[index] != '\0' && lpStr[index] != '='; ++index)
-	szBuffer[index] = lpStr[index];
-
-    szBuffer[index] = '\0';
-
     // replacing ?
-    lpPtr = Lookup(szBuffer);
+    lpPtr = Lookup(lpStr);
     if (lpPtr != NULL) {
 	// must allocate things via host memory allocation functions 
 	// rather than perl's Renew() et al, as the perl interpreter

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -101,6 +101,10 @@
 PERLVAR(G, hints_mutex, perl_mutex)    /* Mutex for refcounted he refcounting */
 PERLVAR(G, locale_mutex, perl_mutex)   /* Mutex for setlocale() changing */
 
+#   ifdef HAS_NEWLOCALE
+PERLVAR(G, C_locale_obj, locale_t)
+#   endif
+
 #endif
 
 #ifdef DEBUGGING
@@ -244,3 +248,10 @@
 
 PERLVARI(G, hash_seed_set, bool, FALSE)	/* perl.c */
 PERLVARA(G, hash_seed, PERL_HASH_SEED_BYTES, unsigned char) /* perl.c and hv.h */
+
+/* The path separator can vary depending on whether we're running under DCL or
+ * a Unix shell.
+ */
+#ifdef __VMS
+PERLVAR(G, perllib_sep, char)
+#endif

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perly.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perly.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perly.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -4,25 +4,25 @@
    Any changes made here will be lost!
  */
 
-#define PERL_BISON_VERSION  20007
+#define PERL_BISON_VERSION  30000
 
 #ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 2.7.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
 /* Bison interface for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2012 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/>.  */
 
@@ -35,11 +35,11 @@
    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.  */
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -47,182 +47,100 @@
 extern int yydebug;
 #endif
 
-/* 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 {
-     GRAMPROG = 258,
-     GRAMEXPR = 259,
-     GRAMBLOCK = 260,
-     GRAMBARESTMT = 261,
-     GRAMFULLSTMT = 262,
-     GRAMSTMTSEQ = 263,
-     WORD = 264,
-     METHOD = 265,
-     FUNCMETH = 266,
-     THING = 267,
-     PMFUNC = 268,
-     PRIVATEREF = 269,
-     QWLIST = 270,
-     FUNC0OP = 271,
-     FUNC0SUB = 272,
-     UNIOPSUB = 273,
-     LSTOPSUB = 274,
-     PLUGEXPR = 275,
-     PLUGSTMT = 276,
-     LABEL = 277,
-     FORMAT = 278,
-     SUB = 279,
-     ANONSUB = 280,
-     PACKAGE = 281,
-     USE = 282,
-     WHILE = 283,
-     UNTIL = 284,
-     IF = 285,
-     UNLESS = 286,
-     ELSE = 287,
-     ELSIF = 288,
-     CONTINUE = 289,
-     FOR = 290,
-     GIVEN = 291,
-     WHEN = 292,
-     DEFAULT = 293,
-     LOOPEX = 294,
-     DOTDOT = 295,
-     YADAYADA = 296,
-     FUNC0 = 297,
-     FUNC1 = 298,
-     FUNC = 299,
-     UNIOP = 300,
-     LSTOP = 301,
-     RELOP = 302,
-     EQOP = 303,
-     MULOP = 304,
-     ADDOP = 305,
-     DOLSHARP = 306,
-     DO = 307,
-     HASHBRACK = 308,
-     NOAMP = 309,
-     LOCAL = 310,
-     MY = 311,
-     REQUIRE = 312,
-     COLONATTR = 313,
-     FORMLBRACK = 314,
-     FORMRBRACK = 315,
-     PREC_LOW = 316,
-     DOROP = 317,
-     OROP = 318,
-     ANDOP = 319,
-     NOTOP = 320,
-     ASSIGNOP = 321,
-     DORDOR = 322,
-     OROR = 323,
-     ANDAND = 324,
-     BITOROP = 325,
-     BITANDOP = 326,
-     SHIFTOP = 327,
-     MATCHOP = 328,
-     REFGEN = 329,
-     UMINUS = 330,
-     POWOP = 331,
-     POSTJOIN = 332,
-     POSTDEC = 333,
-     POSTINC = 334,
-     PREDEC = 335,
-     PREINC = 336,
-     ARROW = 337
-   };
+  enum yytokentype
+  {
+    GRAMPROG = 258,
+    GRAMEXPR = 259,
+    GRAMBLOCK = 260,
+    GRAMBARESTMT = 261,
+    GRAMFULLSTMT = 262,
+    GRAMSTMTSEQ = 263,
+    BAREWORD = 264,
+    METHOD = 265,
+    FUNCMETH = 266,
+    THING = 267,
+    PMFUNC = 268,
+    PRIVATEREF = 269,
+    QWLIST = 270,
+    FUNC0OP = 271,
+    FUNC0SUB = 272,
+    UNIOPSUB = 273,
+    LSTOPSUB = 274,
+    PLUGEXPR = 275,
+    PLUGSTMT = 276,
+    LABEL = 277,
+    FORMAT = 278,
+    SUB = 279,
+    ANONSUB = 280,
+    PACKAGE = 281,
+    USE = 282,
+    WHILE = 283,
+    UNTIL = 284,
+    IF = 285,
+    UNLESS = 286,
+    ELSE = 287,
+    ELSIF = 288,
+    CONTINUE = 289,
+    FOR = 290,
+    GIVEN = 291,
+    WHEN = 292,
+    DEFAULT = 293,
+    LOOPEX = 294,
+    DOTDOT = 295,
+    YADAYADA = 296,
+    FUNC0 = 297,
+    FUNC1 = 298,
+    FUNC = 299,
+    UNIOP = 300,
+    LSTOP = 301,
+    RELOP = 302,
+    EQOP = 303,
+    MULOP = 304,
+    ADDOP = 305,
+    DOLSHARP = 306,
+    DO = 307,
+    HASHBRACK = 308,
+    NOAMP = 309,
+    LOCAL = 310,
+    MY = 311,
+    REQUIRE = 312,
+    COLONATTR = 313,
+    FORMLBRACK = 314,
+    FORMRBRACK = 315,
+    PREC_LOW = 316,
+    OROP = 317,
+    DOROP = 318,
+    ANDOP = 319,
+    NOTOP = 320,
+    ASSIGNOP = 321,
+    OROR = 322,
+    DORDOR = 323,
+    ANDAND = 324,
+    BITOROP = 325,
+    BITANDOP = 326,
+    SHIFTOP = 327,
+    MATCHOP = 328,
+    UMINUS = 329,
+    REFGEN = 330,
+    POWOP = 331,
+    PREINC = 332,
+    PREDEC = 333,
+    POSTINC = 334,
+    POSTDEC = 335,
+    POSTJOIN = 336,
+    ARROW = 337
+  };
 #endif
 
-/* Tokens.  */
-#define GRAMPROG 258
-#define GRAMEXPR 259
-#define GRAMBLOCK 260
-#define GRAMBARESTMT 261
-#define GRAMFULLSTMT 262
-#define GRAMSTMTSEQ 263
-#define WORD 264
-#define METHOD 265
-#define FUNCMETH 266
-#define THING 267
-#define PMFUNC 268
-#define PRIVATEREF 269
-#define QWLIST 270
-#define FUNC0OP 271
-#define FUNC0SUB 272
-#define UNIOPSUB 273
-#define LSTOPSUB 274
-#define PLUGEXPR 275
-#define PLUGSTMT 276
-#define LABEL 277
-#define FORMAT 278
-#define SUB 279
-#define ANONSUB 280
-#define PACKAGE 281
-#define USE 282
-#define WHILE 283
-#define UNTIL 284
-#define IF 285
-#define UNLESS 286
-#define ELSE 287
-#define ELSIF 288
-#define CONTINUE 289
-#define FOR 290
-#define GIVEN 291
-#define WHEN 292
-#define DEFAULT 293
-#define LOOPEX 294
-#define DOTDOT 295
-#define YADAYADA 296
-#define FUNC0 297
-#define FUNC1 298
-#define FUNC 299
-#define UNIOP 300
-#define LSTOP 301
-#define RELOP 302
-#define EQOP 303
-#define MULOP 304
-#define ADDOP 305
-#define DOLSHARP 306
-#define DO 307
-#define HASHBRACK 308
-#define NOAMP 309
-#define LOCAL 310
-#define MY 311
-#define REQUIRE 312
-#define COLONATTR 313
-#define FORMLBRACK 314
-#define FORMRBRACK 315
-#define PREC_LOW 316
-#define DOROP 317
-#define OROP 318
-#define ANDOP 319
-#define NOTOP 320
-#define ASSIGNOP 321
-#define DORDOR 322
-#define OROR 323
-#define ANDAND 324
-#define BITOROP 325
-#define BITANDOP 326
-#define SHIFTOP 327
-#define MATCHOP 328
-#define REFGEN 329
-#define UMINUS 330
-#define POWOP 331
-#define POSTJOIN 332
-#define POSTDEC 333
-#define POSTINC 334
-#define PREDEC 335
-#define PREINC 336
-#define ARROW 337
-
-
+/* Value type.  */
 #ifdef PERL_IN_TOKE_C
 static bool
 S_is_opval_token(int type) {
     switch (type) {
+    case BAREWORD:
     case FUNC0OP:
     case FUNC0SUB:
     case FUNCMETH:
@@ -235,7 +153,6 @@
     case QWLIST:
     case THING:
     case UNIOPSUB:
-    case WORD:
 	return 1;
     }
     return 0;
@@ -243,9 +160,9 @@
 #endif /* PERL_IN_TOKE_C */
 #endif /* PERL_CORE */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
 {
-/* Line 2058 of yacc.c  */
 
     I32	ival; /* __DEFAULT__ (marker for regen_perly.pl;
 				must always be 1st union member) */
@@ -253,31 +170,17 @@
     OP *opval;
     GV *gvval;
 
-
-/* Line 2058 of yacc.c  */
-} YYSTYPE;
+};
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+
 int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 /* Generated from:
- * 703ebd267cf8ca45f9dee9bc0f4b21511117a0c1dca1c8bc9438ce91950217ae perly.y
- * a4923588f219644801577c514014847e1e5240f49413fa3b89d3306fa4874d07 regen_perly.pl
+ * a8b5527eacb1205d15c8c01acb4a8f99b494e5b453ddd68a2a2e7fca4be3302a perly.y
+ * 153cba5d215c1a083a0459c43f4d55c45fd0a7093c197d7247a456dcde21ea53 regen_perly.pl
  * ex: set ro: */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/pp.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/pp.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/pp.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -55,9 +55,7 @@
 #define MARK mark
 #define TARG targ
 
-#if defined(DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
-
-#  define PUSHMARK(p) \
+#define PUSHMARK(p) \
     STMT_START {                                                      \
         I32 * mark_stack_entry;                                       \
         if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr)          \
@@ -65,48 +63,20 @@
 	    mark_stack_entry = markstack_grow();                      \
         *mark_stack_entry  = (I32)((p) - PL_stack_base);              \
         DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,                 \
-                "MARK push %p %"IVdf"\n",                             \
+                "MARK push %p %" IVdf "\n",                           \
                 PL_markstack_ptr, (IV)*mark_stack_entry)));           \
     } STMT_END
 
-#  define TOPMARK \
-    ({                                                                \
-        DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,                 \
-                "MARK top  %p %"IVdf"\n",                             \
-                PL_markstack_ptr, (IV)*PL_markstack_ptr)));           \
-        *PL_markstack_ptr;                                            \
-    })
+#define TOPMARK S_TOPMARK(aTHX)
+#define POPMARK S_POPMARK(aTHX)
 
-#  define POPMARK \
-    ({                                                                \
+#define INCMARK \
+    STMT_START {                                                      \
         DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,                 \
-                "MARK pop  %p %"IVdf"\n",                             \
-                (PL_markstack_ptr-1), (IV)*(PL_markstack_ptr-1))));   \
-        assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow");\
-        *PL_markstack_ptr--;                                          \
-    })
-
-#  define INCMARK \
-    ({                                                                \
-        DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,                 \
-                "MARK inc  %p %"IVdf"\n",                             \
+                "MARK inc  %p %" IVdf "\n",                           \
                 (PL_markstack_ptr+1), (IV)*(PL_markstack_ptr+1))));   \
-        *PL_markstack_ptr++;                                          \
-    })
-
-#else
-
-#  define PUSHMARK(p)                                                   \
-    STMT_START {					              \
-        I32 * mark_stack_entry;                                       \
-        if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) == PL_markstack_max)) \
-	    mark_stack_entry = markstack_grow();                      \
-        *mark_stack_entry  = (I32)((p) - PL_stack_base);              \
+        PL_markstack_ptr++;                                           \
     } STMT_END
-#  define TOPMARK                (*PL_markstack_ptr)
-#  define POPMARK                (*PL_markstack_ptr--)
-#  define INCMARK                (*PL_markstack_ptr++)
-#endif
 
 #define dSP		SV **sp = PL_stack_sp
 #define djSP		dSP

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -19,9 +19,13 @@
 PERL_CALLCONV OP *Perl_pp_anonconst(pTHX);
 PERL_CALLCONV OP *Perl_pp_anonhash(pTHX);
 PERL_CALLCONV OP *Perl_pp_anonlist(pTHX);
+PERL_CALLCONV OP *Perl_pp_argcheck(pTHX);
+PERL_CALLCONV OP *Perl_pp_argdefelem(pTHX);
+PERL_CALLCONV OP *Perl_pp_argelem(pTHX);
 PERL_CALLCONV OP *Perl_pp_aslice(pTHX);
 PERL_CALLCONV OP *Perl_pp_atan2(pTHX);
 PERL_CALLCONV OP *Perl_pp_av2arylen(pTHX);
+PERL_CALLCONV OP *Perl_pp_avhvswitch(pTHX);
 PERL_CALLCONV OP *Perl_pp_backtick(pTHX);
 PERL_CALLCONV OP *Perl_pp_bind(pTHX);
 PERL_CALLCONV OP *Perl_pp_binmode(pTHX);
@@ -194,7 +198,6 @@
 PERL_CALLCONV OP *Perl_pp_prtf(pTHX);
 PERL_CALLCONV OP *Perl_pp_push(pTHX);
 PERL_CALLCONV OP *Perl_pp_pushmark(pTHX);
-PERL_CALLCONV OP *Perl_pp_pushre(pTHX);
 PERL_CALLCONV OP *Perl_pp_qr(pTHX);
 PERL_CALLCONV OP *Perl_pp_quotemeta(pTHX);
 PERL_CALLCONV OP *Perl_pp_rand(pTHX);
@@ -293,4 +296,9 @@
 PERL_CALLCONV OP *Perl_pp_xor(pTHX);
 PERL_CALLCONV OP *Perl_unimplemented_op(pTHX);
 
+/* alternative functions */
+#if defined(__GLIBC__) && IVSIZE == 8  && ( __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 8))
+PERL_CALLCONV OP *Perl_pp_i_modulo_glibc_bugfix(pTHX);
+#endif
+
 /* ex: set ro: */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/proto.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/proto.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/proto.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -17,30 +17,36 @@
  */
 
 START_EXTERN_C
+#ifndef NO_MATHOMS
 PERL_CALLCONV UV	ASCII_TO_NEED(const UV enc, const UV ch)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__
 			__attribute__pure__;
+#endif
 
 PERL_CALLCONV int	Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing);
 #define PERL_ARGS_ASSERT_GV_AMUPDATE	\
 	assert(stash)
+#ifndef NO_MATHOMS
 PERL_CALLCONV UV	NATIVE_TO_NEED(const UV enc, const UV ch)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__
 			__attribute__pure__;
+#endif
 
 PERL_CALLCONV const char *	Perl_PerlIO_context_layers(pTHX_ const char *mode);
 PERL_CALLCONV void*	Perl_Slab_Alloc(pTHX_ size_t sz)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV void	Perl_Slab_Free(pTHX_ void *op);
 #define PERL_ARGS_ASSERT_SLAB_FREE	\
 	assert(op)
-PERL_CALLCONV SV*	Perl__get_encoding(pTHX)
-			__attribute__pure__;
-
+PERL_CALLCONV char *	Perl__byte_dump_string(pTHX_ const U8 * s, const STRLEN len, const bool format);
+#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING	\
+	assert(s)
+PERL_CALLCONV void	Perl__force_out_malformed_utf8_message(pTHX_ const U8 *const p, const U8 * const e, const U32 flags, const bool die_here);
+#define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE	\
+	assert(p); assert(e)
 PERL_CALLCONV bool	Perl__is_in_locale_category(pTHX_ const bool compiling, const int category);
 PERL_CALLCONV bool	Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
 			__attribute__warn_unused_result__;
@@ -51,11 +57,22 @@
 PERL_CALLCONV bool	Perl__is_uni_perl_idstart(pTHX_ UV c)
 			__attribute__warn_unused_result__;
 
-PERL_CALLCONV bool	Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p)
+PERL_CALLCONV bool	Perl__is_utf8_FOO(pTHX_ U8 classnum, const U8 * const p, const char * const name, const char * const alternative, const bool use_utf8, const bool use_locale, const char * const file, const unsigned line)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__IS_UTF8_FOO	\
-	assert(p)
+	assert(p); assert(name); assert(alternative); assert(file)
 
+PERL_CALLCONV bool	Perl__is_utf8_FOO_with_len(pTHX_ const U8 classnum, const U8 *p, const U8 * const e)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__IS_UTF8_FOO_WITH_LEN	\
+	assert(p); assert(e)
+
+PERL_CALLCONV STRLEN	Perl__is_utf8_char_helper(const U8 * const s, const U8 * e, const U32 flags)
+			__attribute__warn_unused_result__
+			__attribute__pure__;
+#define PERL_ARGS_ASSERT__IS_UTF8_CHAR_HELPER	\
+	assert(s); assert(e)
+
 PERL_CALLCONV bool	Perl__is_utf8_idcont(pTHX_ const U8 *p)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__IS_UTF8_IDCONT	\
@@ -71,15 +88,15 @@
 #define PERL_ARGS_ASSERT__IS_UTF8_MARK	\
 	assert(p)
 
-PERL_CALLCONV bool	Perl__is_utf8_perl_idcont(pTHX_ const U8 *p)
+PERL_CALLCONV bool	Perl__is_utf8_perl_idcont_with_len(pTHX_ const U8 *p, const U8 * const e)
 			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT	\
-	assert(p)
+#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT_WITH_LEN	\
+	assert(p); assert(e)
 
-PERL_CALLCONV bool	Perl__is_utf8_perl_idstart(pTHX_ const U8 *p)
+PERL_CALLCONV bool	Perl__is_utf8_perl_idstart_with_len(pTHX_ const U8 *p, const U8 * const e)
 			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART	\
-	assert(p)
+#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART_WITH_LEN	\
+	assert(p); assert(e)
 
 PERL_CALLCONV bool	Perl__is_utf8_xidcont(pTHX_ const U8 *p)
 			__attribute__warn_unused_result__;
@@ -94,19 +111,25 @@
 PERL_CALLCONV UV	Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags);
 #define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS	\
 	assert(p); assert(lenp)
-PERL_CALLCONV UV	Perl__to_utf8_fold_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, U8 flags);
+PERL_CALLCONV UV	Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, U8 flags, const char * const file, const int line);
 #define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS	\
-	assert(p); assert(ustrp)
-PERL_CALLCONV UV	Perl__to_utf8_lower_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, bool flags);
+	assert(p); assert(ustrp); assert(file)
+PERL_CALLCONV UV	Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line);
 #define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS	\
-	assert(p); assert(ustrp)
-PERL_CALLCONV UV	Perl__to_utf8_title_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, bool flags);
+	assert(p); assert(ustrp); assert(file)
+PERL_CALLCONV UV	Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line);
 #define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS	\
-	assert(p); assert(ustrp)
-PERL_CALLCONV UV	Perl__to_utf8_upper_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, bool flags);
+	assert(p); assert(ustrp); assert(file)
+PERL_CALLCONV UV	Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line);
 #define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS	\
-	assert(p); assert(ustrp)
+	assert(p); assert(ustrp); assert(file)
 PERL_CALLCONV void	Perl__warn_problematic_locale(void);
+PERL_CALLCONV_NO_RET void	Perl_abort_execution(pTHX_ const char * const msg, const char * const name)
+			__attribute__noreturn__;
+#define PERL_ARGS_ASSERT_ABORT_EXECUTION	\
+	assert(msg); assert(name)
+
+PERL_CALLCONV LOGOP*	Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other);
 PERL_CALLCONV PADOFFSET	Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags);
 #define PERL_ARGS_ASSERT_ALLOCMY	\
 	assert(name)
@@ -117,6 +140,11 @@
 #define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL	\
 	assert(ref)
 PERL_CALLCONV bool	Perl_amagic_is_enabled(pTHX_ int method);
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE void	S_append_utf8_from_native_byte(const U8 byte, U8** dest);
+#define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE	\
+	assert(dest)
+#endif
 PERL_CALLCONV I32	Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
 #define PERL_ARGS_ASSERT_APPLY	\
 	assert(mark); assert(sp)
@@ -192,6 +220,13 @@
 /* PERL_CALLCONV SSize_t	Perl_av_tindex(pTHX_ AV *av)
 			__attribute__warn_unused_result__; */
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE SSize_t	S_av_top_index(pTHX_ AV *av)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_AV_TOP_INDEX	\
+	assert(av)
+#endif
+
 PERL_CALLCONV void	Perl_av_undef(pTHX_ AV *av);
 #define PERL_ARGS_ASSERT_AV_UNDEF	\
 	assert(av)
@@ -520,8 +555,14 @@
 #define PERL_ARGS_ASSERT_CK_WARNER_D	\
 	assert(pat)
 
-PERL_CALLCONV bool	Perl_ckwarn(pTHX_ U32 w);
-PERL_CALLCONV bool	Perl_ckwarn_d(pTHX_ U32 w);
+PERL_CALLCONV bool	Perl_ckwarn(pTHX_ U32 w)
+			__attribute__warn_unused_result__
+			__attribute__pure__;
+
+PERL_CALLCONV bool	Perl_ckwarn_d(pTHX_ U32 w)
+			__attribute__warn_unused_result__
+			__attribute__pure__;
+
 PERL_CALLCONV void	Perl_clear_defarray(pTHX_ AV* av, bool abandon);
 #define PERL_ARGS_ASSERT_CLEAR_DEFARRAY	\
 	assert(av)
@@ -545,6 +586,10 @@
 			__attribute__noreturn__
 			__attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
 
+PERL_CALLCONV_NO_RET void	Perl_croak_caller(const char* pat, ...)
+			__attribute__noreturn__
+			__attribute__format__null_ok__(__printf__,1,2);
+
 PERL_STATIC_NO_RET void	S_croak_memory_wrap(void)
 			__attribute__noreturn__;
 
@@ -586,9 +631,7 @@
 PERL_CALLCONV void	Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
 #define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER	\
 	assert(ppaddr); assert(xop)
-/* PERL_CALLCONV const XOP *	Perl_custom_op_xop(pTHX_ const OP *o)
-			__attribute__pure__; */
-
+/* PERL_CALLCONV const XOP *	Perl_custom_op_xop(pTHX_ const OP *o); */
 PERL_CALLCONV void	Perl_cv_ckproto_len_flags(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len, const U32 flags);
 #define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS	\
 	assert(cv)
@@ -659,6 +702,9 @@
 PERL_CALLCONV char*	Perl_delimcpy(char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen);
 #define PERL_ARGS_ASSERT_DELIMCPY	\
 	assert(to); assert(toend); assert(from); assert(fromend); assert(retlen)
+PERL_CALLCONV char*	Perl_delimcpy_no_escape(char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen);
+#define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE	\
+	assert(to); assert(toend); assert(from); assert(fromend); assert(retlen)
 PERL_CALLCONV void	Perl_despatch_signals(pTHX);
 PERL_CALLCONV_NO_RET OP*	Perl_die(pTHX_ const char* pat, ...)
 			__attribute__noreturn__
@@ -674,9 +720,11 @@
 #define PERL_ARGS_ASSERT_DIE_UNWIND	\
 	assert(msv)
 
-/* PERL_CALLCONV bool	Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV bool	Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
 #define PERL_ARGS_ASSERT_DO_AEXEC	\
 	assert(mark); assert(sp)
+#endif
 PERL_CALLCONV bool	Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int do_report);
 #define PERL_ARGS_ASSERT_DO_AEXEC5	\
 	assert(mark); assert(sp)
@@ -714,9 +762,11 @@
 PERL_CALLCONV void	Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
 #define PERL_ARGS_ASSERT_DO_OP_DUMP	\
 	assert(file)
-/* PERL_CALLCONV bool	Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV bool	Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
 #define PERL_ARGS_ASSERT_DO_OPEN	\
 	assert(gv); assert(name)
+#endif
 PERL_CALLCONV bool	Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num);
 #define PERL_ARGS_ASSERT_DO_OPEN6	\
 	assert(gv); assert(oname)
@@ -756,7 +806,7 @@
 PERL_CALLCONV I32	Perl_do_trans(pTHX_ SV* sv);
 #define PERL_ARGS_ASSERT_DO_TRANS	\
 	assert(sv)
-PERL_CALLCONV UV	Perl_do_vecget(pTHX_ SV* sv, SSize_t offset, int size);
+PERL_CALLCONV UV	Perl_do_vecget(pTHX_ SV* sv, STRLEN offset, int size);
 #define PERL_ARGS_ASSERT_DO_VECGET	\
 	assert(sv)
 PERL_CALLCONV void	Perl_do_vecset(pTHX_ SV* sv);
@@ -856,21 +906,21 @@
 PERL_CALLCONV char*	Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags);
 #define PERL_ARGS_ASSERT_FIND_SCRIPT	\
 	assert(scriptname)
-PERL_CALLCONV I32	Perl_foldEQ(const char* a, const char* b, I32 len)
-			__attribute__pure__;
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE I32	Perl_foldEQ(const char* a, const char* b, I32 len);
 #define PERL_ARGS_ASSERT_FOLDEQ	\
 	assert(a); assert(b)
-
-PERL_CALLCONV I32	Perl_foldEQ_latin1(const char* a, const char* b, I32 len)
-			__attribute__pure__;
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE I32	Perl_foldEQ_latin1(const char* a, const char* b, I32 len);
 #define PERL_ARGS_ASSERT_FOLDEQ_LATIN1	\
 	assert(a); assert(b)
-
-PERL_CALLCONV I32	Perl_foldEQ_locale(const char* a, const char* b, I32 len)
-			__attribute__pure__;
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE I32	Perl_foldEQ_locale(const char* a, const char* b, I32 len);
 #define PERL_ARGS_ASSERT_FOLDEQ_LOCALE	\
 	assert(a); assert(b)
-
+#endif
 /* PERL_CALLCONV I32	foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
 PERL_CALLCONV I32	Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags);
 #define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS	\
@@ -961,9 +1011,15 @@
 PERL_CALLCONV UV	Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
 #define PERL_ARGS_ASSERT_GROK_OCT	\
 	assert(start); assert(len_p); assert(flags)
-/* PERL_CALLCONV GV*	Perl_gv_AVadd(pTHX_ GV *gv); */
-/* PERL_CALLCONV GV*	Perl_gv_HVadd(pTHX_ GV *gv); */
-/* PERL_CALLCONV GV*	Perl_gv_IOadd(pTHX_ GV* gv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV GV*	Perl_gv_AVadd(pTHX_ GV *gv);
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV GV*	Perl_gv_HVadd(pTHX_ GV *gv);
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV GV*	Perl_gv_IOadd(pTHX_ GV* gv);
+#endif
 PERL_CALLCONV GV*	Perl_gv_add_by_type(pTHX_ GV *gv, svtype type);
 /* PERL_CALLCONV GV*	gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method)
 			__attribute__warn_unused_result__; */
@@ -995,9 +1051,11 @@
 PERL_CALLCONV void	Perl_gv_efullname(pTHX_ SV* sv, const GV* gv);
 #define PERL_ARGS_ASSERT_GV_EFULLNAME	\
 	assert(sv); assert(gv)
-/* PERL_CALLCONV void	Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
 #define PERL_ARGS_ASSERT_GV_EFULLNAME3	\
 	assert(sv); assert(gv)
+#endif
 PERL_CALLCONV void	Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
 #define PERL_ARGS_ASSERT_GV_EFULLNAME4	\
 	assert(sv); assert(gv)
@@ -1027,9 +1085,11 @@
 PERL_CALLCONV GV*	Perl_gv_fetchmeth_sv_autoload(pTHX_ HV* stash, SV* namesv, I32 level, U32 flags);
 #define PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD	\
 	assert(namesv)
-/* PERL_CALLCONV GV*	Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV GV*	Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name);
 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD	\
 	assert(stash); assert(name)
+#endif
 PERL_CALLCONV GV*	Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload);
 #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD	\
 	assert(stash); assert(name)
@@ -1054,9 +1114,11 @@
 PERL_CALLCONV void	Perl_gv_fullname(pTHX_ SV* sv, const GV* gv);
 #define PERL_ARGS_ASSERT_GV_FULLNAME	\
 	assert(sv); assert(gv)
-/* PERL_CALLCONV void	Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
 #define PERL_ARGS_ASSERT_GV_FULLNAME3	\
 	assert(sv); assert(gv)
+#endif
 PERL_CALLCONV void	Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
 #define PERL_ARGS_ASSERT_GV_FULLNAME4	\
 	assert(sv); assert(gv)
@@ -1097,6 +1159,11 @@
 PERL_CALLCONV AV**	Perl_hv_backreferences_p(pTHX_ HV *hv);
 #define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P	\
 	assert(hv)
+PERL_CALLCONV SV*	Perl_hv_bucket_ratio(pTHX_ HV *hv)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_BUCKET_RATIO	\
+	assert(hv)
+
 PERL_CALLCONV void	Perl_hv_clear(pTHX_ HV *hv);
 PERL_CALLCONV void	Perl_hv_clear_placeholders(pTHX_ HV *hv);
 #define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS	\
@@ -1111,12 +1178,16 @@
 PERL_CALLCONV void	Perl_hv_delayfree_ent(pTHX_ HV *hv, HE *entry);
 #define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT	\
 	assert(hv)
-/* PERL_CALLCONV SV*	Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV SV*	Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags);
 #define PERL_ARGS_ASSERT_HV_DELETE	\
 	assert(key)
-/* PERL_CALLCONV SV*	Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash); */
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV SV*	Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash);
 #define PERL_ARGS_ASSERT_HV_DELETE_ENT	\
 	assert(keysv)
+#endif
 PERL_CALLCONV HE**	Perl_hv_eiter_p(pTHX_ HV *hv)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_HV_EITER_P	\
@@ -1131,22 +1202,30 @@
 PERL_CALLCONV void	Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
 #define PERL_ARGS_ASSERT_HV_ENAME_DELETE	\
 	assert(hv); assert(name)
-/* PERL_CALLCONV bool	Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV bool	Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_HV_EXISTS	\
 	assert(key)
+#endif
 
-/* PERL_CALLCONV bool	Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV bool	Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_HV_EXISTS_ENT	\
 	assert(keysv)
+#endif
 
-/* PERL_CALLCONV SV**	Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV SV**	Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval);
 #define PERL_ARGS_ASSERT_HV_FETCH	\
 	assert(key)
-/* PERL_CALLCONV HE*	Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash); */
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV HE*	Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash);
 #define PERL_ARGS_ASSERT_HV_FETCH_ENT	\
 	assert(keysv)
+#endif
 PERL_CALLCONV STRLEN	Perl_hv_fill(pTHX_ HV *const hv);
 #define PERL_ARGS_ASSERT_HV_FILL	\
 	assert(hv)
@@ -1166,10 +1245,12 @@
 #define PERL_ARGS_ASSERT_HV_ITERKEYSV	\
 	assert(entry)
 
-/* PERL_CALLCONV HE*	Perl_hv_iternext(pTHX_ HV *hv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV HE*	Perl_hv_iternext(pTHX_ HV *hv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_HV_ITERNEXT	\
 	assert(hv)
+#endif
 
 PERL_CALLCONV HE*	Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags)
 			__attribute__warn_unused_result__;
@@ -1189,9 +1270,11 @@
 PERL_CALLCONV void	Perl_hv_ksplit(pTHX_ HV *hv, IV newmax);
 #define PERL_ARGS_ASSERT_HV_KSPLIT	\
 	assert(hv)
-/* PERL_CALLCONV void	Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
 #define PERL_ARGS_ASSERT_HV_MAGIC	\
 	assert(hv)
+#endif
 PERL_CALLCONV void	Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
 #define PERL_ARGS_ASSERT_HV_NAME_SET	\
 	assert(hv)
@@ -1224,13 +1307,25 @@
 #define PERL_ARGS_ASSERT_HV_SCALAR	\
 	assert(hv)
 
-/* PERL_CALLCONV SV**	Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); */
-/* PERL_CALLCONV HE*	Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); */
-/* PERL_CALLCONV SV**	Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV SV**	Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash);
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV HE*	Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash);
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV SV**	Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags);
+#endif
 /* PERL_CALLCONV void	hv_undef(pTHX_ HV *hv); */
 PERL_CALLCONV void	Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
-/* PERL_CALLCONV I32	ibcmp(pTHX_ const char* a, const char* b, I32 len); */
-/* PERL_CALLCONV I32	ibcmp_locale(pTHX_ const char* a, const char* b, I32 len); */
+/* PERL_CALLCONV I32	ibcmp(pTHX_ const char* a, const char* b, I32 len)
+			__attribute__warn_unused_result__
+			__attribute__pure__; */
+
+/* PERL_CALLCONV I32	ibcmp_locale(pTHX_ const char* a, const char* b, I32 len)
+			__attribute__warn_unused_result__
+			__attribute__pure__; */
+
 /* PERL_CALLCONV I32	ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
 PERL_CALLCONV void	Perl_init_argv_symbols(pTHX_ int argc, char **argv);
 #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS	\
@@ -1244,11 +1339,13 @@
 PERL_CALLCONV void	Perl_init_tm(pTHX_ struct tm *ptm);
 #define PERL_ARGS_ASSERT_INIT_TM	\
 	assert(ptm)
+#ifndef NO_MATHOMS
 PERL_CALLCONV char*	Perl_instr(const char* big, const char* little)
 			__attribute__warn_unused_result__
 			__attribute__pure__;
 #define PERL_ARGS_ASSERT_INSTR	\
 	assert(big); assert(little)
+#endif
 
 PERL_CALLCONV U32	Perl_intro_my(pTHX);
 PERL_CALLCONV OP*	Perl_invert(pTHX_ OP* cmd)
@@ -1259,58 +1356,83 @@
 	assert(io)
 PERL_CALLCONV bool	Perl_isALNUM_lazy(pTHX_ const char* p)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_ISALNUM_LAZY	\
 	assert(p)
 
 PERL_CALLCONV bool	Perl_isIDFIRST_lazy(pTHX_ const char* p)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_ISIDFIRST_LAZY	\
 	assert(p)
 
-/* PERL_CALLCONV bool	Perl_is_ascii_string(pTHX_ const U8 *s, STRLEN len)
-			__attribute__warn_unused_result__; */
+/* PERL_CALLCONV bool	Perl_is_ascii_string(const U8* const s, const STRLEN len)
+			__attribute__warn_unused_result__
+			__attribute__pure__; */
 
-PERL_CALLCONV bool	Perl_is_invariant_string(const U8 *s, STRLEN len)
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_c9strict_utf8_string(const U8 *s, const STRLEN len)
 			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_INVARIANT_STRING	\
+#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING	\
 	assert(s)
+#endif
 
+/* PERL_CALLCONV bool	is_c9strict_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep); */
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_c9strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el);
+#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN	\
+	assert(s)
+#endif
+/* PERL_CALLCONV bool	Perl_is_invariant_string(const U8* const s, const STRLEN len)
+			__attribute__warn_unused_result__
+			__attribute__pure__; */
+
 PERL_CALLCONV I32	Perl_is_lvalue_sub(pTHX)
 			__attribute__warn_unused_result__;
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL	\
+	assert(pv); assert(what); assert(op_name)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_strict_utf8_string(const U8 *s, const STRLEN len)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING	\
+	assert(s)
+#endif
+
+/* PERL_CALLCONV bool	is_strict_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep); */
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el);
+#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN	\
+	assert(s)
+#endif
 PERL_CALLCONV bool	Perl_is_uni_alnum(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_alnum_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_alnumc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_alnumc_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_alpha(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_alpha_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_ascii(pTHX_ UV c)
 			__attribute__deprecated__
@@ -1344,63 +1466,51 @@
 
 PERL_CALLCONV bool	Perl_is_uni_digit(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_digit_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_graph(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_graph_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_idfirst(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_idfirst_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_lower(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_lower_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_print(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_print_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_punct(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_punct_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_space(pTHX_ UV c)
 			__attribute__deprecated__
@@ -1414,13 +1524,11 @@
 
 PERL_CALLCONV bool	Perl_is_uni_upper(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_upper_lc(pTHX_ UV c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV bool	Perl_is_uni_xdigit(pTHX_ UV c)
 			__attribute__deprecated__
@@ -1467,9 +1575,11 @@
 #define PERL_ARGS_ASSERT_IS_UTF8_CHAR	\
 	assert(s)
 
-/* PERL_CALLCONV STRLEN	Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV STRLEN	Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end);
 #define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF	\
 	assert(buf); assert(buf_end)
+#endif
 PERL_CALLCONV bool	Perl_is_utf8_cntrl(pTHX_ const U8 *p)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__;
@@ -1482,6 +1592,13 @@
 #define PERL_ARGS_ASSERT_IS_UTF8_DIGIT	\
 	assert(p)
 
+/* PERL_CALLCONV bool	is_utf8_fixed_width_buf_flags(const U8 * const s, const STRLEN len, const U32 flags); */
+/* PERL_CALLCONV bool	is_utf8_fixed_width_buf_loc_flags(const U8 * const s, const STRLEN len, const U8 **ep, const U32 flags); */
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, const STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
+#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS	\
+	assert(s)
+#endif
 PERL_CALLCONV bool	Perl_is_utf8_graph(pTHX_ const U8 *p)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__;
@@ -1500,6 +1617,13 @@
 #define PERL_ARGS_ASSERT_IS_UTF8_IDFIRST	\
 	assert(p)
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_invariant_string(const U8* const s, STRLEN const len)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING	\
+	assert(s)
+#endif
+
 PERL_CALLCONV bool	Perl_is_utf8_lower(pTHX_ const U8 *p)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__;
@@ -1548,15 +1672,36 @@
 #define PERL_ARGS_ASSERT_IS_UTF8_SPACE	\
 	assert(p)
 
-PERL_CALLCONV bool	Perl_is_utf8_string(const U8 *s, STRLEN len);
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	Perl_is_utf8_string(const U8 *s, const STRLEN len)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_IS_UTF8_STRING	\
 	assert(s)
-/* PERL_CALLCONV bool	Perl_is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_string_flags(const U8 *s, const STRLEN len, const U32 flags)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS	\
+	assert(s)
+#endif
+
+#ifndef NO_MATHOMS
+PERL_CALLCONV bool	Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep);
 #define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC	\
-	assert(s)
-PERL_CALLCONV bool	Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
+	assert(s); assert(ep)
+#endif
+/* PERL_CALLCONV bool	is_utf8_string_loc_flags(const U8 *s, const STRLEN len, const U8 **ep, const U32 flags); */
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	Perl_is_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el);
 #define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN	\
 	assert(s)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_string_loclen_flags(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
+#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS	\
+	assert(s)
+#endif
 PERL_CALLCONV bool	Perl_is_utf8_upper(pTHX_ const U8 *p)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__;
@@ -1563,6 +1708,17 @@
 #define PERL_ARGS_ASSERT_IS_UTF8_UPPER	\
 	assert(p)
 
+/* PERL_CALLCONV bool	is_utf8_valid_partial_char(const U8 * const s, const U8 * const e)
+			__attribute__warn_unused_result__
+			__attribute__pure__; */
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS	\
+	assert(s); assert(e)
+#endif
+
 PERL_CALLCONV bool	Perl_is_utf8_xdigit(pTHX_ const U8 *p)
 			__attribute__deprecated__
 			__attribute__warn_unused_result__;
@@ -1581,7 +1737,10 @@
 #define PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST	\
 	assert(p)
 
-PERL_CALLCONV bool	Perl_isinfnan(NV nv);
+PERL_CALLCONV bool	Perl_isinfnan(NV nv)
+			__attribute__warn_unused_result__
+			__attribute__pure__;
+
 PERL_CALLCONV bool	Perl_isinfnansv(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_ISINFNANSV	\
 	assert(sv)
@@ -1589,6 +1748,7 @@
 #define PERL_ARGS_ASSERT_JMAYBE	\
 	assert(o)
 PERL_CALLCONV I32	Perl_keyword(pTHX_ const char *name, I32 len, bool all_keywords)
+			__attribute__warn_unused_result__
 			__attribute__pure__;
 #define PERL_ARGS_ASSERT_KEYWORD	\
 	assert(name)
@@ -1914,7 +2074,9 @@
 
 PERL_CALLCONV I32	Perl_my_fflush_all(pTHX);
 PERL_CALLCONV Pid_t	Perl_my_fork(void);
-/* PERL_CALLCONV I32	Perl_my_lstat(pTHX); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV I32	Perl_my_lstat(pTHX);
+#endif
 PERL_CALLCONV I32	Perl_my_lstat_flags(pTHX_ const U32 flags);
 PERL_CALLCONV PerlIO*	Perl_my_popen_list(pTHX_ const char* mode, int n, SV ** args);
 #define PERL_ARGS_ASSERT_MY_POPEN_LIST	\
@@ -1926,7 +2088,9 @@
 	assert(buffer); assert(format)
 
 PERL_CALLCONV int	Perl_my_socketpair(int family, int type, int protocol, int fd[2]);
-/* PERL_CALLCONV I32	Perl_my_stat(pTHX); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV I32	Perl_my_stat(pTHX);
+#endif
 PERL_CALLCONV I32	Perl_my_stat_flags(pTHX_ const U32 flags);
 PERL_CALLCONV char*	Perl_my_strerror(pTHX_ const int errnum);
 PERL_CALLCONV char *	Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst)
@@ -1940,35 +2104,31 @@
 	assert(buffer); assert(format)
 PERL_CALLCONV OP*	Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
 PERL_CALLCONV OP*	Perl_newANONHASH(pTHX_ OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newANONLIST(pTHX_ OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block);
 PERL_CALLCONV OP*	Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 /* PERL_CALLCONV CV*	newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); */
 PERL_CALLCONV CV*	Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv);
-/* PERL_CALLCONV AV*	Perl_newAV(pTHX)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV AV*	Perl_newAV(pTHX)
+			__attribute__warn_unused_result__;
+#endif
 
 PERL_CALLCONV OP*	Perl_newAVREF(pTHX_ OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWAVREF	\
 	assert(o)
 
 PERL_CALLCONV OP*	Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* falseop)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWCONDOP	\
 	assert(first)
@@ -1976,7 +2136,6 @@
 PERL_CALLCONV CV*	Perl_newCONSTSUB(pTHX_ HV* stash, const char* name, SV* sv);
 PERL_CALLCONV CV*	Perl_newCONSTSUB_flags(pTHX_ HV* stash, const char* name, STRLEN len, U32 flags, SV* sv);
 PERL_CALLCONV OP*	Perl_newCVREF(pTHX_ I32 flags, OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newDEFSVOP(pTHX)
@@ -1984,13 +2143,11 @@
 
 PERL_CALLCONV void	Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block);
 PERL_CALLCONV OP*	Perl_newFOROP(pTHX_ I32 flags, OP* sv, OP* expr, OP* block, OP* cont)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWFOROP	\
 	assert(expr)
 
 PERL_CALLCONV OP*	Perl_newGIVENOP(pTHX_ OP* cond, OP* block, PADOFFSET defsv_off)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWGIVENOP	\
 	assert(cond); assert(block)
@@ -1999,67 +2156,59 @@
 #define PERL_ARGS_ASSERT_NEWGP	\
 	assert(gv)
 PERL_CALLCONV OP*	Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWGVOP	\
 	assert(gv)
 
 PERL_CALLCONV OP*	Perl_newGVREF(pTHX_ I32 type, OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 /* PERL_CALLCONV GV*	newGVgen(pTHX_ const char* pack); */
 PERL_CALLCONV GV*	Perl_newGVgen_flags(pTHX_ const char* pack, U32 flags)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS	\
 	assert(pack)
 
-/* PERL_CALLCONV HV*	Perl_newHV(pTHX)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV HV*	Perl_newHV(pTHX)
+			__attribute__warn_unused_result__;
+#endif
 
 PERL_CALLCONV OP*	Perl_newHVREF(pTHX_ OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWHVREF	\
 	assert(o)
 
 PERL_CALLCONV HV*	Perl_newHVhv(pTHX_ HV *hv)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
-/* PERL_CALLCONV IO*	Perl_newIO(pTHX)
-			__attribute__malloc__
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV IO*	Perl_newIO(pTHX)
+			__attribute__warn_unused_result__;
+#endif
 
 PERL_CALLCONV OP*	Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWLOGOP	\
 	assert(first); assert(other)
 
 PERL_CALLCONV OP*	Perl_newLOOPEX(pTHX_ I32 type, OP* label)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWLOOPEX	\
 	assert(label)
 
 PERL_CALLCONV OP*	Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newMETHOP(pTHX_ I32 type, I32 flags, OP* dynamic_meth)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWMETHOP	\
 	assert(dynamic_meth)
 
 PERL_CALLCONV OP*	Perl_newMETHOP_named(pTHX_ I32 type, I32 flags, SV* const_meth)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWMETHOP_NAMED	\
 	assert(const_meth)
@@ -2068,31 +2217,25 @@
 #define PERL_ARGS_ASSERT_NEWMYSUB	\
 	assert(o)
 PERL_CALLCONV OP*	Perl_newNULLLIST(pTHX)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newOP(pTHX_ I32 optype, I32 flags)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV PADNAMELIST *	Perl_newPADNAMELIST(size_t max)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV PADNAME *	Perl_newPADNAMEouter(PADNAME *outer)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWPADNAMEOUTER	\
 	assert(outer)
 
 PERL_CALLCONV PADNAME *	Perl_newPADNAMEpvn(const char *s, STRLEN len)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWPADNAMEPVN	\
 	assert(s)
 
 PERL_CALLCONV OP*	Perl_newPMOP(pTHX_ I32 type, I32 flags)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV void	Perl_newPROG(pTHX_ OP* o);
@@ -2099,87 +2242,72 @@
 #define PERL_ARGS_ASSERT_NEWPROG	\
 	assert(o)
 PERL_CALLCONV OP*	Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWRANGE	\
 	assert(left); assert(right)
 
 PERL_CALLCONV SV*	Perl_newRV(pTHX_ SV *const sv)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWRV	\
 	assert(sv)
 
 PERL_CALLCONV SV*	Perl_newRV_noinc(pTHX_ SV *const tmpRef)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWRV_NOINC	\
 	assert(tmpRef)
 
 PERL_CALLCONV OP*	Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV CV*	Perl_newSTUB(pTHX_ GV *gv, bool fake);
 #define PERL_ARGS_ASSERT_NEWSTUB	\
 	assert(gv)
-/* PERL_CALLCONV CV*	Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV CV*	Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
+#endif
 PERL_CALLCONV SV*	Perl_newSV(pTHX_ const STRLEN len)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWSVOP	\
 	assert(sv)
 
 PERL_CALLCONV OP*	Perl_newSVREF(pTHX_ OP* o)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWSVREF	\
 	assert(o)
 
 PERL_CALLCONV SV*	Perl_newSV_type(pTHX_ const svtype type)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVavdefelem(pTHX_ AV *av, SSize_t ix, bool extendible)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWSVAVDEFELEM	\
 	assert(av)
 
 PERL_CALLCONV SV*	Perl_newSVhek(pTHX_ const HEK *const hek)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSViv(pTHX_ const IV i)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVnv(pTHX_ const NV n)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVpv(pTHX_ const char *const s, const STRLEN len)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVpv_share(pTHX_ const char* s, U32 hash)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVpvf(pTHX_ const char *const pat, ...)
-			__attribute__malloc__
 			__attribute__warn_unused_result__
 			__attribute__format__(__printf__,pTHX_1,pTHX_2);
 #define PERL_ARGS_ASSERT_NEWSVPVF	\
@@ -2186,15 +2314,12 @@
 	assert(pat)
 
 PERL_CALLCONV SV*	Perl_newSVpvn(pTHX_ const char *const s, const STRLEN len)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVrv(pTHX_ SV *const rv, const char *const classname);
@@ -2201,29 +2326,23 @@
 #define PERL_ARGS_ASSERT_NEWSVRV	\
 	assert(rv)
 PERL_CALLCONV SV*	Perl_newSVsv(pTHX_ SV *const old)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_newSVuv(pTHX_ const UV u)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP* first, UNOP_AUX_item *aux)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV OP*	Perl_newWHENOP(pTHX_ OP* cond, OP* block)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWWHENOP	\
 	assert(block)
 
 PERL_CALLCONV OP*	Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV CV*	Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename);
@@ -2244,7 +2363,6 @@
 	assert(newctype)
 PERL_CALLCONV void	Perl_new_numeric(pTHX_ const char* newcoll);
 PERL_CALLCONV PERL_SI*	Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_new_version(pTHX_ SV *ver);
@@ -2251,7 +2369,6 @@
 #define PERL_ARGS_ASSERT_NEW_VERSION	\
 	assert(ver)
 PERL_CALLCONV STRLEN *	Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD	\
 	assert(bits)
@@ -2259,11 +2376,6 @@
 PERL_CALLCONV PerlIO*	Perl_nextargv(pTHX_ GV* gv, bool nomagicopen);
 #define PERL_ARGS_ASSERT_NEXTARGV	\
 	assert(gv)
-PERL_CALLCONV char*	Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
-			__attribute__pure__;
-#define PERL_ARGS_ASSERT_NINSTR	\
-	assert(big); assert(bigend); assert(little); assert(lend)
-
 PERL_CALLCONV_NO_RET void	Perl_noperl_die(const char* pat, ...)
 			__attribute__noreturn__
 			__attribute__format__(__printf__,1,2);
@@ -2271,6 +2383,7 @@
 	assert(pat)
 
 PERL_CALLCONV int	Perl_nothreadhook(pTHX);
+PERL_CALLCONV void	Perl_notify_parser_that_changed_to_utf8(pTHX);
 PERL_CALLCONV OP*	Perl_oopsAV(pTHX_ OP* o)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_OOPSAV	\
@@ -2283,6 +2396,7 @@
 
 PERL_CALLCONV OP*	Perl_op_append_elem(pTHX_ I32 optype, OP* first, OP* last);
 PERL_CALLCONV OP*	Perl_op_append_list(pTHX_ I32 optype, OP* first, OP* last);
+PERL_CALLCONV OPclass	Perl_op_class(pTHX_ const OP *o);
 PERL_CALLCONV void	Perl_op_clear(pTHX_ OP* o);
 #define PERL_ARGS_ASSERT_OP_CLEAR	\
 	assert(o)
@@ -2339,8 +2453,10 @@
 	assert(func)
 PERL_CALLCONV PADOFFSET	Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
 PERL_CALLCONV void	Perl_pad_block_start(pTHX_ int full);
+#ifndef NO_MATHOMS
 PERL_CALLCONV HV*	Perl_pad_compname_type(pTHX_ const PADOFFSET po)
 			__attribute__warn_unused_result__;
+#endif
 
 PERL_CALLCONV PADOFFSET	Perl_pad_findmy_pv(pTHX_ const char* name, U32 flags);
 #define PERL_ARGS_ASSERT_PAD_FINDMY_PV	\
@@ -2357,7 +2473,6 @@
 PERL_CALLCONV void	Perl_pad_free(pTHX_ PADOFFSET po);
 PERL_CALLCONV OP *	Perl_pad_leavemy(pTHX);
 PERL_CALLCONV PADLIST*	Perl_pad_new(pTHX_ int flags)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV void	Perl_pad_push(pTHX_ PADLIST *padlist, int depth);
@@ -2390,9 +2505,6 @@
 PERL_CALLCONV SV*	Perl_parse_label(pTHX_ U32 flags);
 PERL_CALLCONV OP*	Perl_parse_listexpr(pTHX_ U32 flags);
 PERL_CALLCONV OP*	Perl_parse_stmtseq(pTHX_ U32 flags);
-PERL_CALLCONV OP *	Perl_parse_subsignature(pTHX)
-			__attribute__warn_unused_result__;
-
 PERL_CALLCONV OP*	Perl_parse_termexpr(pTHX_ U32 flags);
 PERL_CALLCONV U32	Perl_parse_unicode_opts(pTHX_ const char **popt);
 #define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS	\
@@ -2418,7 +2530,7 @@
 #define PERL_ARGS_ASSERT_PERL_RUN	\
 	assert(my_perl)
 PERL_CALLCONV void	Perl_pmop_dump(pTHX_ PMOP* pm);
-PERL_CALLCONV OP*	Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, bool isreg, I32 floor);
+PERL_CALLCONV OP*	Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor);
 #define PERL_ARGS_ASSERT_PMRUNTIME	\
 	assert(o); assert(expr)
 PERL_CALLCONV void	Perl_pop_scope(pTHX);
@@ -2448,7 +2560,6 @@
 
 PERL_CALLCONV void	Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl);
 PERL_CALLCONV PTR_TBL_t*	Perl_ptr_table_new(pTHX)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV void	Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl);
@@ -2486,7 +2597,6 @@
 #define PERL_ARGS_ASSERT_RE_OP_COMPILE	\
 	assert(eng)
 PERL_CALLCONV Malloc_t	Perl_realloc(Malloc_t where, MEM_SIZE nbytes)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV void	Perl_reentrant_free(pTHX);
@@ -2495,7 +2605,9 @@
 #define PERL_ARGS_ASSERT_REENTRANT_RETRY	\
 	assert(f)
 PERL_CALLCONV void	Perl_reentrant_size(pTHX);
-/* PERL_CALLCONV OP*	Perl_ref(pTHX_ OP* o, I32 type); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV OP*	Perl_ref(pTHX_ OP* o, I32 type);
+#endif
 PERL_CALLCONV HV *	Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags);
 PERL_CALLCONV SV *	Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags);
 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV	\
@@ -2582,6 +2694,7 @@
 #define PERL_ARGS_ASSERT_REQUIRE_PV	\
 	assert(pv)
 PERL_CALLCONV char*	Perl_rninstr(const char* big, const char* bigend, const char* little, const char* lend)
+			__attribute__warn_unused_result__
 			__attribute__pure__;
 #define PERL_ARGS_ASSERT_RNINSTR	\
 	assert(big); assert(bigend); assert(little); assert(lend)
@@ -2611,7 +2724,6 @@
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV Malloc_t	Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV void	Perl_save_I16(pTHX_ I16* intp);
@@ -2650,9 +2762,15 @@
 #define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR	\
 	assert(p)
 PERL_CALLCONV void	Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p);
-/* PERL_CALLCONV void	Perl_save_freeop(pTHX_ OP* o); */
-/* PERL_CALLCONV void	Perl_save_freepv(pTHX_ char* pv); */
-/* PERL_CALLCONV void	Perl_save_freesv(pTHX_ SV* sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_save_freeop(pTHX_ OP* o);
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_save_freepv(pTHX_ char* pv);
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_save_freesv(pTHX_ SV* sv);
+#endif
 PERL_CALLCONV void	Perl_save_generic_pvref(pTHX_ char** str);
 #define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF	\
 	assert(str)
@@ -2691,13 +2809,17 @@
 PERL_CALLCONV void	Perl_save_long(pTHX_ long* longp);
 #define PERL_ARGS_ASSERT_SAVE_LONG	\
 	assert(longp)
-/* PERL_CALLCONV void	Perl_save_mortalizesv(pTHX_ SV* sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_save_mortalizesv(pTHX_ SV* sv);
 #define PERL_ARGS_ASSERT_SAVE_MORTALIZESV	\
 	assert(sv)
+#endif
 PERL_CALLCONV void	Perl_save_nogv(pTHX_ GV* gv);
 #define PERL_ARGS_ASSERT_SAVE_NOGV	\
 	assert(gv)
-/* PERL_CALLCONV void	Perl_save_op(pTHX); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_save_op(pTHX);
+#endif
 PERL_CALLCONV void	Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off);
 PERL_CALLCONV void	Perl_save_pptr(pTHX_ char** pptr);
 #define PERL_ARGS_ASSERT_SAVE_PPTR	\
@@ -2826,9 +2948,11 @@
 PERL_CALLCONV IO*	Perl_sv_2io(pTHX_ SV *const sv);
 #define PERL_ARGS_ASSERT_SV_2IO	\
 	assert(sv)
-/* PERL_CALLCONV IV	Perl_sv_2iv(pTHX_ SV *sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV IV	Perl_sv_2iv(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_SV_2IV	\
 	assert(sv)
+#endif
 PERL_CALLCONV IV	Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_2IV_FLAGS	\
 	assert(sv)
@@ -2839,36 +2963,46 @@
 PERL_CALLCONV NV	Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_2NV_FLAGS	\
 	assert(sv)
-/* PERL_CALLCONV char*	Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp);
 #define PERL_ARGS_ASSERT_SV_2PV	\
 	assert(sv)
+#endif
 PERL_CALLCONV char*	Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_2PV_FLAGS	\
 	assert(sv)
-/* PERL_CALLCONV char*	Perl_sv_2pv_nolen(pTHX_ SV* sv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_2pv_nolen(pTHX_ SV* sv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_2PV_NOLEN	\
 	assert(sv)
+#endif
 
 PERL_CALLCONV char*	Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp);
 #define PERL_ARGS_ASSERT_SV_2PVBYTE	\
 	assert(sv)
-/* PERL_CALLCONV char*	Perl_sv_2pvbyte_nolen(pTHX_ SV* sv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_2pvbyte_nolen(pTHX_ SV* sv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN	\
 	assert(sv)
+#endif
 
 PERL_CALLCONV char*	Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp);
 #define PERL_ARGS_ASSERT_SV_2PVUTF8	\
 	assert(sv)
-/* PERL_CALLCONV char*	Perl_sv_2pvutf8_nolen(pTHX_ SV* sv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_2pvutf8_nolen(pTHX_ SV* sv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN	\
 	assert(sv)
+#endif
 
-/* PERL_CALLCONV UV	Perl_sv_2uv(pTHX_ SV *sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV UV	Perl_sv_2uv(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_SV_2UV	\
 	assert(sv)
+#endif
 PERL_CALLCONV UV	Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_2UV_FLAGS	\
 	assert(sv)
@@ -2900,24 +3034,32 @@
 #define PERL_ARGS_ASSERT_SV_CATPVF_MG	\
 	assert(sv); assert(pat)
 
-/* PERL_CALLCONV void	Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len);
 #define PERL_ARGS_ASSERT_SV_CATPVN	\
 	assert(dsv); assert(sstr)
+#endif
 PERL_CALLCONV void	Perl_sv_catpvn_flags(pTHX_ SV *const dstr, const char *sstr, const STRLEN len, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS	\
 	assert(dstr); assert(sstr)
-/* PERL_CALLCONV void	Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
 #define PERL_ARGS_ASSERT_SV_CATPVN_MG	\
 	assert(sv); assert(ptr)
-/* PERL_CALLCONV void	Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr); */
+#endif
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr);
 #define PERL_ARGS_ASSERT_SV_CATSV	\
 	assert(dstr)
+#endif
 PERL_CALLCONV void	Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_CATSV_FLAGS	\
 	assert(dsv)
-/* PERL_CALLCONV void	Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv);
 #define PERL_ARGS_ASSERT_SV_CATSV_MG	\
 	assert(dsv)
+#endif
 PERL_CALLCONV void	Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr);
 #define PERL_ARGS_ASSERT_SV_CHOP	\
 	assert(sv)
@@ -2930,9 +3072,11 @@
 PERL_CALLCONV I32	Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
 PERL_CALLCONV I32	Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2);
 PERL_CALLCONV I32	Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
-/* PERL_CALLCONV void	Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv);
 #define PERL_ARGS_ASSERT_SV_COPYPV	\
 	assert(dsv); assert(ssv)
+#endif
 PERL_CALLCONV void	Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_COPYPV_FLAGS	\
 	assert(dsv); assert(ssv)
@@ -2984,13 +3128,13 @@
 	assert(sv); assert(namesv)
 
 PERL_CALLCONV void	Perl_sv_dump(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_SV_DUMP	\
-	assert(sv)
 /* PERL_CALLCONV I32	sv_eq(pTHX_ SV* sv1, SV* sv2); */
 PERL_CALLCONV I32	Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
-/* PERL_CALLCONV void	Perl_sv_force_normal(pTHX_ SV *sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_force_normal(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_SV_FORCE_NORMAL	\
 	assert(sv)
+#endif
 PERL_CALLCONV void	Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags);
 #define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS	\
 	assert(sv)
@@ -2999,11 +3143,9 @@
 #define PERL_ARGS_ASSERT_SV_FREE2	\
 	assert(sv)
 PERL_CALLCONV void	Perl_sv_free_arenas(pTHX);
-PERL_CALLCONV SV*	Perl_sv_get_backrefs(SV *const sv)
-			__attribute__pure__;
+PERL_CALLCONV SV*	Perl_sv_get_backrefs(SV *const sv);
 #define PERL_ARGS_ASSERT_SV_GET_BACKREFS	\
 	assert(sv)
-
 PERL_CALLCONV char*	Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append);
 #define PERL_ARGS_ASSERT_SV_GETS	\
 	assert(sv); assert(fp)
@@ -3012,10 +3154,12 @@
 	assert(sv)
 PERL_CALLCONV void	Perl_sv_inc(pTHX_ SV *const sv);
 PERL_CALLCONV void	Perl_sv_inc_nomg(pTHX_ SV *const sv);
-/* PERL_CALLCONV void	Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen);
 #define PERL_ARGS_ASSERT_SV_INSERT	\
 	assert(bigstr); assert(little)
-PERL_CALLCONV void	Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags);
+#endif
+PERL_CALLCONV void	Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *little, const STRLEN littlelen, const U32 flags);
 #define PERL_ARGS_ASSERT_SV_INSERT_FLAGS	\
 	assert(bigstr); assert(little)
 PERL_CALLCONV int	Perl_sv_isa(pTHX_ SV* sv, const char *const name);
@@ -3039,12 +3183,12 @@
 PERL_CALLCONV MAGIC *	Perl_sv_magicext_mglob(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB	\
 	assert(sv)
-/* PERL_CALLCONV SV*	Perl_sv_mortalcopy(pTHX_ SV *const oldsv)
-			__attribute__malloc__
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV SV*	Perl_sv_mortalcopy(pTHX_ SV *const oldsv)
+			__attribute__warn_unused_result__;
+#endif
 
 PERL_CALLCONV SV*	Perl_sv_mortalcopy_flags(pTHX_ SV *const oldsv, U32 flags)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_sv_newmortal(pTHX)
@@ -3051,11 +3195,21 @@
 			__attribute__warn_unused_result__;
 
 PERL_CALLCONV SV*	Perl_sv_newref(pTHX_ SV *const sv);
-/* PERL_CALLCONV void	Perl_sv_nolocking(pTHX_ SV *sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_nolocking(pTHX_ SV *sv);
+#endif
 PERL_CALLCONV void	Perl_sv_nosharing(pTHX_ SV *sv);
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_nounlocking(pTHX_ SV *sv);
+#endif
 PERL_CALLCONV NV	Perl_sv_nv(pTHX_ SV* sv);
 #define PERL_ARGS_ASSERT_SV_NV	\
 	assert(sv)
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_sv_only_taint_gmagic(SV *sv);
+#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC	\
+	assert(sv)
+#endif
 PERL_CALLCONV char*	Perl_sv_peek(pTHX_ SV* sv);
 PERL_CALLCONV void	Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp);
 #define PERL_ARGS_ASSERT_SV_POS_B2U	\
@@ -3069,15 +3223,19 @@
 PERL_CALLCONV STRLEN	Perl_sv_pos_u2b_flags(pTHX_ SV *const sv, STRLEN uoffset, STRLEN *const lenp, U32 flags);
 #define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS	\
 	assert(sv)
-/* PERL_CALLCONV char*	Perl_sv_pv(pTHX_ SV *sv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_pv(pTHX_ SV *sv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_PV	\
 	assert(sv)
+#endif
 
-/* PERL_CALLCONV char*	Perl_sv_pvbyte(pTHX_ SV *sv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_pvbyte(pTHX_ SV *sv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_PVBYTE	\
 	assert(sv)
+#endif
 
 PERL_CALLCONV char*	Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp);
 #define PERL_ARGS_ASSERT_SV_PVBYTEN	\
@@ -3088,9 +3246,11 @@
 PERL_CALLCONV char*	Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp);
 #define PERL_ARGS_ASSERT_SV_PVN	\
 	assert(sv); assert(lp)
-/* PERL_CALLCONV char*	Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
 #define PERL_ARGS_ASSERT_SV_PVN_FORCE	\
 	assert(sv)
+#endif
 PERL_CALLCONV char*	Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS	\
 	assert(sv)
@@ -3097,10 +3257,12 @@
 PERL_CALLCONV char*	Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp);
 #define PERL_ARGS_ASSERT_SV_PVN_NOMG	\
 	assert(sv)
-/* PERL_CALLCONV char*	Perl_sv_pvutf8(pTHX_ SV *sv)
-			__attribute__warn_unused_result__; */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_sv_pvutf8(pTHX_ SV *sv)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_PVUTF8	\
 	assert(sv)
+#endif
 
 PERL_CALLCONV char*	Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp);
 #define PERL_ARGS_ASSERT_SV_PVUTF8N	\
@@ -3130,6 +3292,9 @@
 PERL_CALLCONV SV*	Perl_sv_rvweaken(pTHX_ SV *const sv);
 #define PERL_ARGS_ASSERT_SV_RVWEAKEN	\
 	assert(sv)
+PERL_CALLCONV void	Perl_sv_set_undef(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_SV_SET_UNDEF	\
+	assert(sv)
 PERL_CALLCONV void	Perl_sv_sethek(pTHX_ SV *const sv, const HEK *const hek);
 #define PERL_ARGS_ASSERT_SV_SETHEK	\
 	assert(sv)
@@ -3148,6 +3313,9 @@
 PERL_CALLCONV void	Perl_sv_setpv(pTHX_ SV *const sv, const char *const ptr);
 #define PERL_ARGS_ASSERT_SV_SETPV	\
 	assert(sv)
+PERL_CALLCONV char  *	Perl_sv_setpv_bufsize(pTHX_ SV *const sv, const STRLEN cur, const STRLEN len);
+#define PERL_ARGS_ASSERT_SV_SETPV_BUFSIZE	\
+	assert(sv)
 PERL_CALLCONV void	Perl_sv_setpv_mg(pTHX_ SV *const sv, const char *const ptr);
 #define PERL_ARGS_ASSERT_SV_SETPV_MG	\
 	assert(sv)
@@ -3161,12 +3329,16 @@
 #define PERL_ARGS_ASSERT_SV_SETPVF_MG	\
 	assert(sv); assert(pat)
 
+#ifndef NO_MATHOMS
 PERL_CALLCONV void	Perl_sv_setpviv(pTHX_ SV *const sv, const IV num);
 #define PERL_ARGS_ASSERT_SV_SETPVIV	\
 	assert(sv)
+#endif
+#ifndef NO_MATHOMS
 PERL_CALLCONV void	Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv);
 #define PERL_ARGS_ASSERT_SV_SETPVIV_MG	\
 	assert(sv)
+#endif
 PERL_CALLCONV void	Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
 #define PERL_ARGS_ASSERT_SV_SETPVN	\
 	assert(sv)
@@ -3188,9 +3360,11 @@
 PERL_CALLCONV SV*	Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv);
 #define PERL_ARGS_ASSERT_SV_SETREF_UV	\
 	assert(rv)
-/* PERL_CALLCONV void	Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr);
 #define PERL_ARGS_ASSERT_SV_SETSV	\
 	assert(dstr)
+#endif
 PERL_CALLCONV void	Perl_sv_setsv_flags(pTHX_ SV *dstr, SV *sstr, const I32 flags);
 #define PERL_ARGS_ASSERT_SV_SETSV_FLAGS	\
 	assert(dstr)
@@ -3203,9 +3377,11 @@
 PERL_CALLCONV void	Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u);
 #define PERL_ARGS_ASSERT_SV_SETUV_MG	\
 	assert(sv)
-/* PERL_CALLCONV void	Perl_sv_taint(pTHX_ SV* sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_taint(pTHX_ SV* sv);
 #define PERL_ARGS_ASSERT_SV_TAINT	\
 	assert(sv)
+#endif
 PERL_CALLCONV bool	Perl_sv_tainted(pTHX_ SV *const sv)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SV_TAINTED	\
@@ -3223,9 +3399,11 @@
 PERL_CALLCONV int	Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl);
 #define PERL_ARGS_ASSERT_SV_UNMAGICEXT	\
 	assert(sv)
-/* PERL_CALLCONV void	Perl_sv_unref(pTHX_ SV* sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_unref(pTHX_ SV* sv);
 #define PERL_ARGS_ASSERT_SV_UNREF	\
 	assert(sv)
+#endif
 PERL_CALLCONV void	Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags);
 #define PERL_ARGS_ASSERT_SV_UNREF_FLAGS	\
 	assert(ref)
@@ -3235,15 +3413,19 @@
 PERL_CALLCONV void	Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type);
 #define PERL_ARGS_ASSERT_SV_UPGRADE	\
 	assert(sv)
-/* PERL_CALLCONV void	Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len);
 #define PERL_ARGS_ASSERT_SV_USEPVN	\
 	assert(sv)
+#endif
 PERL_CALLCONV void	Perl_sv_usepvn_flags(pTHX_ SV *const sv, char* ptr, const STRLEN len, const U32 flags);
 #define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS	\
 	assert(sv)
-/* PERL_CALLCONV void	Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV void	Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
 #define PERL_ARGS_ASSERT_SV_USEPVN_MG	\
 	assert(sv)
+#endif
 PERL_CALLCONV bool	Perl_sv_utf8_decode(pTHX_ SV *const sv);
 #define PERL_ARGS_ASSERT_SV_UTF8_DECODE	\
 	assert(sv)
@@ -3253,9 +3435,11 @@
 PERL_CALLCONV void	Perl_sv_utf8_encode(pTHX_ SV *const sv);
 #define PERL_ARGS_ASSERT_SV_UTF8_ENCODE	\
 	assert(sv)
-/* PERL_CALLCONV STRLEN	Perl_sv_utf8_upgrade(pTHX_ SV *sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV STRLEN	Perl_sv_utf8_upgrade(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE	\
 	assert(sv)
+#endif
 /* PERL_CALLCONV STRLEN	Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags); */
 PERL_CALLCONV STRLEN	Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra);
 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW	\
@@ -3315,8 +3499,7 @@
 	assert(p); assert(lenp)
 PERL_CALLCONV U32	Perl_to_uni_lower_lc(pTHX_ U32 c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV UV	Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp);
 #define PERL_ARGS_ASSERT_TO_UNI_TITLE	\
@@ -3323,8 +3506,7 @@
 	assert(p); assert(lenp)
 PERL_CALLCONV U32	Perl_to_uni_title_lc(pTHX_ U32 c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV UV	Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp);
 #define PERL_ARGS_ASSERT_TO_UNI_UPPER	\
@@ -3331,8 +3513,7 @@
 	assert(p); assert(lenp)
 PERL_CALLCONV U32	Perl_to_uni_upper_lc(pTHX_ U32 c)
 			__attribute__deprecated__
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 PERL_CALLCONV UV	Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special)
 			__attribute__deprecated__;
@@ -3339,18 +3520,34 @@
 #define PERL_ARGS_ASSERT_TO_UTF8_CASE	\
 	assert(p); assert(ustrp); assert(swashp); assert(normal)
 
-/* PERL_CALLCONV UV	Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV UV	Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
+			__attribute__deprecated__;
 #define PERL_ARGS_ASSERT_TO_UTF8_FOLD	\
 	assert(p); assert(ustrp)
-/* PERL_CALLCONV UV	Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */
+#endif
+
+#ifndef NO_MATHOMS
+PERL_CALLCONV UV	Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
+			__attribute__deprecated__;
 #define PERL_ARGS_ASSERT_TO_UTF8_LOWER	\
 	assert(p); assert(ustrp)
-/* PERL_CALLCONV UV	Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */
+#endif
+
+#ifndef NO_MATHOMS
+PERL_CALLCONV UV	Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
+			__attribute__deprecated__;
 #define PERL_ARGS_ASSERT_TO_UTF8_TITLE	\
 	assert(p); assert(ustrp)
-/* PERL_CALLCONV UV	Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */
+#endif
+
+#ifndef NO_MATHOMS
+PERL_CALLCONV UV	Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
+			__attribute__deprecated__;
 #define PERL_ARGS_ASSERT_TO_UTF8_UPPER	\
 	assert(p); assert(ustrp)
+#endif
+
 PERL_CALLCONV bool	Perl_try_amagic_bin(pTHX_ int method, int flags);
 PERL_CALLCONV bool	Perl_try_amagic_un(pTHX_ int method, int flags);
 PERL_CALLCONV I32	Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags);
@@ -3370,18 +3567,41 @@
 PERL_CALLCONV U8*	Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen);
 #define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED	\
 	assert(p); assert(d); assert(newlen)
-PERL_CALLCONV IV	Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE IV	Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_UTF8_DISTANCE	\
 	assert(a); assert(b)
+#endif
 
-PERL_CALLCONV U8*	Perl_utf8_hop(const U8 *s, SSize_t off)
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE U8*	Perl_utf8_hop(const U8 *s, SSize_t off)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_UTF8_HOP	\
 	assert(s)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE U8*	Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_UTF8_HOP_BACK	\
+	assert(s); assert(start)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE U8*	Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_UTF8_HOP_FORWARD	\
+	assert(s); assert(end)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE U8*	Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_UTF8_HOP_SAFE	\
+	assert(s); assert(start); assert(end)
+#endif
+
 PERL_CALLCONV STRLEN	Perl_utf8_length(pTHX_ const U8* s, const U8 *e)
 			__attribute__warn_unused_result__
 			__attribute__pure__;
@@ -3396,7 +3616,9 @@
 #define PERL_ARGS_ASSERT_UTF8_TO_UVCHR	\
 	assert(s)
 
-/* PERL_CALLCONV UV	utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen); */
+PERL_CALLCONV UV	Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
+#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF	\
+	assert(s); assert(send)
 PERL_CALLCONV UV	Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
 			__attribute__deprecated__;
 #define PERL_ARGS_ASSERT_UTF8_TO_UVUNI	\
@@ -3407,9 +3629,12 @@
 #define PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF	\
 	assert(s); assert(send)
 
-PERL_CALLCONV UV	Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags);
+PERL_CALLCONV UV	Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags);
 #define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR	\
 	assert(s)
+PERL_CALLCONV UV	Perl_utf8n_to_uvchr_error(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors);
+#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_ERROR	\
+	assert(s)
 PERL_CALLCONV UV	Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags);
 #define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI	\
 	assert(s)
@@ -3418,7 +3643,7 @@
 	assert(idop)
 /* PERL_CALLCONV U8*	uvchr_to_utf8(pTHX_ U8 *d, UV uv); */
 /* PERL_CALLCONV U8*	uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); */
-PERL_CALLCONV U8*	Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags);
+PERL_CALLCONV U8*	Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, const UV flags);
 #define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS	\
 	assert(d)
 PERL_CALLCONV U8*	Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
@@ -3427,9 +3652,13 @@
 PERL_CALLCONV U8*	Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags);
 #define PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS	\
 	assert(d)
-PERL_CALLCONV UV	Perl_valid_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen);
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE UV	Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR	\
 	assert(s)
+#endif
+
 PERL_CALLCONV UV	Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
 			__attribute__deprecated__;
 #define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI	\
@@ -3465,7 +3694,6 @@
 #define PERL_ARGS_ASSERT_VMESS	\
 	assert(pat)
 PERL_CALLCONV SV*	Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_VNEWSVPVF	\
 	assert(pat)
@@ -3537,10 +3765,9 @@
 #define PERL_ARGS_ASSERT_YYERROR_PV	\
 	assert(s)
 PERL_CALLCONV int	Perl_yyerror_pvn(pTHX_ const char *const s, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_YYERROR_PVN	\
-	assert(s)
 PERL_CALLCONV int	Perl_yylex(pTHX);
 PERL_CALLCONV int	Perl_yyparse(pTHX_ int gramtype);
+PERL_CALLCONV void	Perl_yyquit(pTHX);
 PERL_CALLCONV void	Perl_yyunlex(pTHX);
 #if !(defined(DEBUGGING))
 #  if !defined(NV_PRESERVES_UV)
@@ -3551,13 +3778,18 @@
 #    endif
 #  endif
 #endif
+#if !(defined(HAS_MEMMEM))
+PERL_CALLCONV char*	Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
+			__attribute__warn_unused_result__
+			__attribute__pure__;
+#define PERL_ARGS_ASSERT_NINSTR	\
+	assert(big); assert(bigend); assert(little); assert(lend)
+
+#endif
 #if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO))
 PERL_CALLCONV Signal_t	Perl_csighandler(int sig);
 PERL_CALLCONV Signal_t	Perl_sighandler(int sig);
 #endif
-#if !(defined(NO_MATHOMS))
-PERL_CALLCONV void	Perl_sv_nounlocking(pTHX_ SV *sv);
-#endif
 #if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION))
 PERL_CALLCONV bool	Perl_do_exec(pTHX_ const char* cmd);
 #define PERL_ARGS_ASSERT_DO_EXEC	\
@@ -3571,9 +3803,7 @@
 #  endif
 #endif
 #if !(defined(WIN32))
-/* PERL_CALLCONV char*	my_setlocale(pTHX_ int category, const char* locale)
-			__attribute__pure__; */
-
+/* PERL_CALLCONV char*	my_setlocale(pTHX_ int category, const char* locale); */
 #endif
 #if !(defined(_MSC_VER))
 PERL_CALLCONV_NO_RET int	Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg)
@@ -3594,6 +3824,7 @@
 #endif
 #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
 PERL_CALLCONV int	Perl_my_memcmp(const void* vs1, const void* vs2, size_t len)
+			__attribute__warn_unused_result__
 			__attribute__pure__;
 #define PERL_ARGS_ASSERT_MY_MEMCMP	\
 	assert(vs1); assert(vs2)
@@ -3625,6 +3856,7 @@
 #endif
 #if !defined(HAS_SIGNBIT)
 PERL_CALLCONV int	Perl_signbit(NV f)
+			__attribute__warn_unused_result__
 			__attribute__pure__;
 
 #endif
@@ -3659,28 +3891,58 @@
 #endif
 #if !defined(PERL_EXT_RE_BUILD)
 #  if defined(PERL_IN_REGCOMP_C)
+STATIC void	S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
+#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST	\
+	assert(invlist)
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE UV*	S__invlist_array_init(SV* const invlist, const bool will_have_0)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT	\
+	assert(invlist)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE IV*	S_get_invlist_previous_index_addr(SV* invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR	\
 	assert(invlist)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_invlist_clear(pTHX_ SV* invlist);
 #define PERL_ARGS_ASSERT_INVLIST_CLEAR	\
 	assert(invlist)
+#endif
+STATIC void	S_invlist_extend(pTHX_ SV* const invlist, const UV len);
+#define PERL_ARGS_ASSERT_INVLIST_EXTEND	\
+	assert(invlist)
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE UV	S_invlist_max(SV* const invlist)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_INVLIST_MAX	\
+	assert(invlist)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE IV	S_invlist_previous_index(SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX	\
 	assert(invlist)
+#endif
 
 STATIC void	S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src);
 #define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC	\
 	assert(dest); assert(src)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_invlist_set_previous_index(SV* const invlist, const IV index);
 #define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX	\
 	assert(invlist)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_invlist_trim(SV* invlist);
 #define PERL_ARGS_ASSERT_INVLIST_TRIM	\
 	assert(invlist)
+#endif
 #  endif
 #endif
 #if !defined(PERL_IMPLICIT_SYS)
@@ -3697,82 +3959,97 @@
 #  endif
 #endif
 #if !defined(PERL_NO_INLINE_FUNCTIONS)
-PERL_STATIC_INLINE STRLEN	S__is_utf8_char_slow(const U8 *s, const U8 *e)
-			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW	\
-	assert(s); assert(e)
-
-PERL_STATIC_INLINE void	S_append_utf8_from_native_byte(const U8 byte, U8** dest);
-#define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE	\
-	assert(dest)
-PERL_STATIC_INLINE SSize_t	S_av_top_index(pTHX_ AV *av)
-			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_TOP_INDEX	\
-	assert(av)
-
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popblock(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPBLOCK	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popeval(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPEVAL	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popformat(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPFORMAT	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popgiven(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPGIVEN	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_poploop(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPLOOP	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popsub(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPSUB	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popsub_args(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPSUB_ARGS	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popsub_common(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPSUB_COMMON	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_popwhen(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_POPWHEN	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE PERL_CONTEXT *	S_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix);
 #define PERL_ARGS_ASSERT_CX_PUSHBLOCK	\
 	assert(sp)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv);
 #define PERL_ARGS_ASSERT_CX_PUSHEVAL	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv);
 #define PERL_ARGS_ASSERT_CX_PUSHFORMAT	\
 	assert(cx); assert(cv)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv);
 #define PERL_ARGS_ASSERT_CX_PUSHGIVEN	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV *itersave);
 #define PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR	\
 	assert(cx); assert(itervarp)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs);
 #define PERL_ARGS_ASSERT_CX_PUSHSUB	\
 	assert(cx); assert(cv)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_pushwhen(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_PUSHWHEN	\
 	assert(cx)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_cx_topblock(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_TOPBLOCK	\
 	assert(cx)
-PERL_STATIC_INLINE bool	S_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
-			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL	\
-	assert(pv); assert(what); assert(op_name)
-
-PERL_STATIC_INLINE bool	S_sv_only_taint_gmagic(SV *sv);
-#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC	\
-	assert(sv)
 #endif
+#endif
 #if !defined(PERL_NO_UTF16_FILTER)
 #  if defined(PERL_IN_TOKE_C)
 STATIC U8*	S_add_utf16_textfilter(pTHX_ U8 *const s, bool reversed);
@@ -3839,7 +4116,7 @@
 STATIC const regnode*	S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth);
 #define PERL_ARGS_ASSERT_DUMPUNTIL	\
 	assert(r); assert(start); assert(node); assert(sv)
-STATIC bool	S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node);
+STATIC bool	S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const bool force_as_is_display);
 #define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS	\
 	assert(sv); assert(bitmap)
 STATIC SV*	S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert);
@@ -3891,16 +4168,35 @@
 #  endif
 #  if defined(USE_LOCALE)     && (defined(PERL_IN_LOCALE_C) || defined (PERL_EXT_POSIX))
 PERL_CALLCONV char *	Perl__setlocale_debug_string(const int category, const char* const locale, const char* const retval)
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
 #  endif
+#  if defined(USE_LOCALE) && defined(PERL_IN_LOCALE_C)
+STATIC void	S_print_collxfrm_input_and_return(pTHX_ const char * const s, const char * const e, const STRLEN * const xlen, const bool is_utf8);
+#define PERL_ARGS_ASSERT_PRINT_COLLXFRM_INPUT_AND_RETURN	\
+	assert(s); assert(e)
+#  endif
 #endif
+#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
+#  if defined(PERL_IN_REGCOMP_C)
+STATIC void	S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, AV * stack, const IV fence, AV * fence_stack);
+#define PERL_ARGS_ASSERT_DUMP_REGEX_SETS_STRUCTURES	\
+	assert(pRExC_state); assert(stack); assert(fence_stack)
+#  endif
+#endif
 #if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
 PERL_CALLCONV void	Perl_dump_sv_child(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_DUMP_SV_CHILD	\
 	assert(sv)
 #endif
+#if defined(HAS_MEMMEM)
+PERL_CALLCONV char*	Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
+			__attribute__warn_unused_result__
+			__attribute__pure__;
+#define PERL_ARGS_ASSERT_NINSTR	\
+	assert(big); assert(bigend); assert(little); assert(lend)
+
+#endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 PERL_CALLCONV I32	Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
 #define PERL_ARGS_ASSERT_DO_IPCCTL	\
@@ -3950,9 +4246,6 @@
 	assert(p)
 
 #endif
-#if defined(NO_MATHOMS)
-/* PERL_CALLCONV void	Perl_sv_nounlocking(pTHX_ SV *sv); */
-#endif
 #if defined(PERL_ANY_COW)
 PERL_CALLCONV SV*	Perl_sv_setsv_cow(pTHX_ SV* dstr, SV* sstr);
 #define PERL_ARGS_ASSERT_SV_SETSV_COW	\
@@ -3971,10 +4264,12 @@
 PERL_CALLCONV void	Perl_parser_free_nexttoke_ops(pTHX_ yy_parser *parser, OPSLAB *slab);
 #define PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS	\
 	assert(parser); assert(slab)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool	S_should_warn_nl(const char *pv)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SHOULD_WARN_NL	\
 	assert(pv)
+#endif
 
 #  if defined(PERL_DEBUG_READONLY_OPS)
 PERL_CALLCONV void	Perl_Slab_to_ro(pTHX_ OPSLAB *slab);
@@ -3986,10 +4281,12 @@
 #  endif
 #endif
 #if defined(PERL_CORE) || defined (PERL_EXT)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE STRLEN	S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp);
 #define PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B	\
 	assert(sv); assert(pv)
 #endif
+#endif
 #if defined(PERL_CR_FILTER)
 #  if defined(PERL_IN_TOKE_C)
 STATIC I32	S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
@@ -4018,8 +4315,10 @@
 /* PERL_CALLCONV bool	Perl_do_exec(pTHX_ const char* cmd); */
 #endif
 #if defined(PERL_DONT_CREATE_GVSV)
-/* PERL_CALLCONV GV*	Perl_gv_SVadd(pTHX_ GV *gv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV GV*	Perl_gv_SVadd(pTHX_ GV *gv);
 #endif
+#endif
 #if defined(PERL_GLOBAL_STRUCT)
 PERL_CALLCONV struct perl_vars *	Perl_GetVars(pTHX);
 PERL_CALLCONV void	Perl_free_global_struct(pTHX_ struct perl_vars *plvarsp);
@@ -4195,7 +4494,9 @@
 STATIC bool	S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type);
 #define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH	\
 	assert(stash); assert(name)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE GV*	S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags);
+#endif
 STATIC void	S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type);
 #define PERL_ARGS_ASSERT_GV_INIT_SVTYPE	\
 	assert(gv)
@@ -4202,16 +4503,20 @@
 STATIC bool	S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8);
 #define PERL_ARGS_ASSERT_GV_IS_IN_MAIN	\
 	assert(name)
-STATIC bool	S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, bool addmg, const svtype sv_type);
+STATIC bool	S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, const svtype sv_type);
 #define PERL_ARGS_ASSERT_GV_MAGICALIZE	\
 	assert(gv); assert(stash); assert(name)
 STATIC void	S_gv_magicalize_isa(pTHX_ GV *gv);
 #define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA	\
 	assert(gv)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE HV*	S_gv_stashpvn_internal(pTHX_ const char* name, U32 namelen, I32 flags);
 #define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL	\
 	assert(name)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE HV*	S_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char* name, U32 namelen, I32 flags);
+#endif
 STATIC void	S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type);
 #define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV	\
 	assert(gv); assert(name)
@@ -4218,9 +4523,9 @@
 STATIC bool	S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, STRLEN *len, const char *nambeg, STRLEN full_len, const U32 is_utf8, const I32 add);
 #define PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME	\
 	assert(stash); assert(gv); assert(name); assert(len); assert(nambeg)
-STATIC HV*	S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv, const U32 flags);
+STATIC void	S_require_tie_mod(pTHX_ GV *gv, const char varname, const char * name, STRLEN len, const U32 flags);
 #define PERL_ARGS_ASSERT_REQUIRE_TIE_MOD	\
-	assert(gv); assert(varpv); assert(namesv); assert(methpv)
+	assert(gv); assert(varname); assert(name)
 #endif
 #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
 PERL_CALLCONV void	Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv);
@@ -4256,10 +4561,11 @@
 	assert(key); assert(msg)
 
 STATIC HE*	S_new_he(pTHX)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE U32	S_ptr_hash(PTRV u);
+#endif
 STATIC SV *	S_refcounted_he_value(pTHX_ const struct refcounted_he *he);
 #define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE	\
 	assert(he)
@@ -4286,6 +4592,13 @@
 #define PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY	\
 	assert(hv); assert(indexp)
 #endif
+#if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
+#  if defined(USE_LOCALE_COLLATE)
+PERL_CALLCONV char*	Perl__mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen, bool utf8);
+#define PERL_ARGS_ASSERT__MEM_COLLXFRM	\
+	assert(input_string); assert(xlen)
+#  endif
+#endif
 #if defined(PERL_IN_MALLOC_C)
 STATIC int	S_adjust_size_and_find_bucket(size_t *nbytes_p);
 #define PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET	\
@@ -4354,7 +4667,7 @@
 STATIC void	S_find_and_forget_pmops(pTHX_ OP *o);
 #define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS	\
 	assert(o)
-STATIC OP*	S_fold_constants(pTHX_ OP *o);
+STATIC OP*	S_fold_constants(pTHX_ OP * const o);
 #define PERL_ARGS_ASSERT_FOLD_CONSTANTS	\
 	assert(o)
 STATIC OP*	S_force_list(pTHX_ OP* arg, bool nullit);
@@ -4384,7 +4697,9 @@
 STATIC OP*	S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg);
 #define PERL_ARGS_ASSERT_NEWGIVWHENOP	\
 	assert(block)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE OP*	S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP* dynamic_meth, SV* const_meth);
+#endif
 STATIC OP*	S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEW_LOGOP	\
@@ -4398,12 +4713,16 @@
 #define PERL_ARGS_ASSERT_NO_FH_ALLOWED	\
 	assert(o)
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE OP*	S_op_integerize(pTHX_ OP *o);
 #define PERL_ARGS_ASSERT_OP_INTEGERIZE	\
 	assert(o)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE OP*	S_op_std_init(pTHX_ OP *o);
 #define PERL_ARGS_ASSERT_OP_STD_INIT	\
 	assert(o)
+#endif
 STATIC OP*	S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
 #define PERL_ARGS_ASSERT_PMTRANS	\
 	assert(o); assert(expr); assert(repl)
@@ -4437,9 +4756,11 @@
 #define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV	\
 	assert(o); assert(name)
 #  if defined(USE_ITHREADS)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_op_relocate_sv(pTHX_ SV** svp, PADOFFSET* targp);
 #define PERL_ARGS_ASSERT_OP_RELOCATE_SV	\
 	assert(svp); assert(targp)
+#endif
 #  endif
 #endif
 #if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C)
@@ -4527,7 +4848,7 @@
 #define PERL_ARGS_ASSERT_DESTROY_MATCHER	\
 	assert(matcher)
 STATIC OP*	S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other, const bool copied);
-STATIC OP*	S_docatch(pTHX_ OP *o)
+STATIC OP*	S_docatch(pTHX_ Perl_ppaddr_t firstpp)
 			__attribute__warn_unused_result__;
 
 STATIC bool	S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV* hh);
@@ -4574,10 +4895,12 @@
 STATIC bool	S_num_overflow(NV value, I32 fldsize, I32 frcsize)
 			__attribute__warn_unused_result__;
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool	S_path_is_searchable(const char *name)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE	\
 	assert(name)
+#endif
 
 STATIC I32	S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
 			__attribute__warn_unused_result__;
@@ -4598,10 +4921,12 @@
 STATIC void	S_do_oddball(pTHX_ SV **oddkey, SV **firstkey);
 #define PERL_ARGS_ASSERT_DO_ODDBALL	\
 	assert(oddkey); assert(firstkey)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE HV*	S_opmethod_stash(pTHX_ SV* meth);
 #define PERL_ARGS_ASSERT_OPMETHOD_STASH	\
 	assert(meth)
 #endif
+#endif
 #if defined(PERL_IN_PP_PACK_C)
 STATIC int	S_div128(pTHX_ SV *pnum, bool *done);
 #define PERL_ARGS_ASSERT_DIV128	\
@@ -4690,18 +5015,8 @@
 #define PERL_ARGS_ASSERT_DOFORM	\
 	assert(cv); assert(gv)
 STATIC SV *	S_space_join_names_mortal(pTHX_ char *const *array);
-#define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL	\
-	assert(array)
 #endif
 #if defined(PERL_IN_REGCOMP_C)
-STATIC void	S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
-#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST	\
-	assert(invlist)
-PERL_STATIC_INLINE UV*	S__invlist_array_init(SV* const invlist, const bool will_have_0)
-			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT	\
-	assert(invlist)
-
 STATIC SV*	S__make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__MAKE_EXACTF_INVLIST	\
@@ -4710,8 +5025,10 @@
 STATIC void	S_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** invlist);
 #define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS	\
 	assert(pRExC_state); assert(invlist)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE SV*	S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp)
 			__attribute__warn_unused_result__;
+#endif
 
 STATIC U32	S_add_data(RExC_state_t* const pRExC_state, const char* const s, const U32 n)
 			__attribute__warn_unused_result__;
@@ -4721,20 +5038,24 @@
 STATIC AV*	S_add_multi_match(pTHX_ AV* multi_char_matches, SV* multi_string, const STRLEN cp_count);
 #define PERL_ARGS_ASSERT_ADD_MULTI_MATCH	\
 	assert(multi_string)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_alloc_maybe_populate_EXACT(pTHX_ RExC_state_t *pRExC_state, regnode *node, I32 *flagp, STRLEN len, UV code_point, bool downgradable);
 #define PERL_ARGS_ASSERT_ALLOC_MAYBE_POPULATE_EXACT	\
 	assert(pRExC_state); assert(node); assert(flagp)
+#endif
 STATIC const char *	S_cntrl_to_mnemonic(const U8 c)
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE U8	S_compute_EXACTish(RExC_state_t *pRExC_state);
 #define PERL_ARGS_ASSERT_COMPUTE_EXACTISH	\
 	assert(pRExC_state)
+#endif
 STATIC regnode *	S_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *source, U32 depth);
 #define PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE	\
 	assert(pRExC_state); assert(source)
 STATIC int	S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const STRLEN y, const SSize_t maxDistance)
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_EDIT_DISTANCE	\
 	assert(src); assert(tgt)
 
@@ -4741,17 +5062,21 @@
 STATIC SV*	S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass* const node);
 #define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC	\
 	assert(pRExC_state); assert(node)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE STRLEN*	S_get_invlist_iter_addr(SV* invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR	\
 	assert(invlist)
+#endif
 
 STATIC bool	S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode** nodep, UV *code_point_p, int* cp_count, I32 *flagp, const bool strict, const U32 depth);
 #define PERL_ARGS_ASSERT_GROK_BSLASH_N	\
 	assert(pRExC_state); assert(flagp)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE regnode*	S_handle_named_backref(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, char * parse_start, char ch);
 #define PERL_ARGS_ASSERT_HANDLE_NAMED_BACKREF	\
 	assert(pRExC_state); assert(flagp); assert(parse_start)
+#endif
 STATIC int	S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char* const s, char ** updated_parse_ptr, AV** posix_warnings, const bool check_only);
 #define PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX	\
 	assert(pRExC_state); assert(s)
@@ -4758,10 +5083,12 @@
 STATIC regnode*	S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** return_invlist, I32 *flagp, U32 depth, char * const oregcomp_parse);
 #define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS	\
 	assert(pRExC_state); assert(flagp); assert(oregcomp_parse)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE SV*	S_invlist_clone(pTHX_ SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_CLONE	\
 	assert(invlist)
+#endif
 
 STATIC SV*	S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style)
 			__attribute__warn_unused_result__;
@@ -4768,38 +5095,40 @@
 #define PERL_ARGS_ASSERT_INVLIST_CONTENTS	\
 	assert(invlist)
 
-STATIC void	S_invlist_extend(pTHX_ SV* const invlist, const UV len);
-#define PERL_ARGS_ASSERT_INVLIST_EXTEND	\
-	assert(invlist)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE UV	S_invlist_highest(SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_HIGHEST	\
 	assert(invlist)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool	S_invlist_is_iterating(SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING	\
 	assert(invlist)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_invlist_iterfinish(SV* invlist);
 #define PERL_ARGS_ASSERT_INVLIST_ITERFINISH	\
 	assert(invlist)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_invlist_iterinit(SV* invlist);
 #define PERL_ARGS_ASSERT_INVLIST_ITERINIT	\
 	assert(invlist)
+#endif
 STATIC bool	S_invlist_iternext(SV* invlist, UV* start, UV* end)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_ITERNEXT	\
 	assert(invlist); assert(start); assert(end)
 
-PERL_STATIC_INLINE UV	S_invlist_max(SV* const invlist)
-			__attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_MAX	\
-	assert(invlist)
-
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset);
 #define PERL_ARGS_ASSERT_INVLIST_SET_LEN	\
 	assert(invlist)
+#endif
 STATIC bool	S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ssc * ssc);
 #define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT	\
 	assert(pRExC_state); assert(ssc)
@@ -4835,15 +5164,14 @@
 STATIC regnode*	S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op);
 #define PERL_ARGS_ASSERT_REG_NODE	\
 	assert(pRExC_state)
-STATIC UV	S_reg_recode(pTHX_ const U8 value, SV **encp);
-#define PERL_ARGS_ASSERT_REG_RECODE	\
-	assert(encp)
 STATIC SV *	S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags);
 #define PERL_ARGS_ASSERT_REG_SCAN_NAME	\
 	assert(pRExC_state)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE char *	S_reg_skipcomment(RExC_state_t *pRExC_state, char * p);
 #define PERL_ARGS_ASSERT_REG_SKIPCOMMENT	\
 	assert(pRExC_state); assert(p)
+#endif
 STATIC regnode*	S_reganode(pTHX_ RExC_state_t *pRExC_state, U8 op, U32 arg);
 #define PERL_ARGS_ASSERT_REGANODE	\
 	assert(pRExC_state)
@@ -4857,11 +5185,11 @@
 #define PERL_ARGS_ASSERT_REGCLASS	\
 	assert(pRExC_state); assert(flagp)
 STATIC unsigned int	S_regex_set_precedence(const U8 my_operator)
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 
-STATIC void	S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *opnd, U32 depth);
+STATIC void	S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *operand, U32 depth);
 #define PERL_ARGS_ASSERT_REGINSERT	\
-	assert(pRExC_state); assert(opnd)
+	assert(pRExC_state); assert(operand)
 STATIC regnode*	S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len, const char* const name);
 #define PERL_ARGS_ASSERT_REGNODE_GUTS	\
 	assert(pRExC_state); assert(name)
@@ -4880,9 +5208,11 @@
 STATIC void	S_skip_to_be_ignored_text(pTHX_ RExC_state_t *pRExC_state, char ** p, const bool force_to_xmod);
 #define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT	\
 	assert(pRExC_state); assert(p)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_ssc_add_range(pTHX_ regnode_ssc *ssc, UV const start, UV const end);
 #define PERL_ARGS_ASSERT_SSC_ADD_RANGE	\
 	assert(ssc)
+#endif
 STATIC void	S_ssc_and(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *and_with);
 #define PERL_ARGS_ASSERT_SSC_AND	\
 	assert(pRExC_state); assert(ssc); assert(and_with)
@@ -4889,12 +5219,16 @@
 STATIC void	S_ssc_anything(pTHX_ regnode_ssc *ssc);
 #define PERL_ARGS_ASSERT_SSC_ANYTHING	\
 	assert(ssc)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_ssc_clear_locale(regnode_ssc *ssc);
 #define PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE	\
 	assert(ssc)
+#endif
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_ssc_cp_and(pTHX_ regnode_ssc *ssc, UV const cp);
 #define PERL_ARGS_ASSERT_SSC_CP_AND	\
 	assert(ssc)
+#endif
 STATIC void	S_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc);
 #define PERL_ARGS_ASSERT_SSC_FINALIZE	\
 	assert(pRExC_state); assert(ssc)
@@ -4901,9 +5235,11 @@
 STATIC void	S_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc);
 #define PERL_ARGS_ASSERT_SSC_INIT	\
 	assert(pRExC_state); assert(ssc)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_ssc_intersection(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd);
 #define PERL_ARGS_ASSERT_SSC_INTERSECTION	\
 	assert(ssc); assert(invlist)
+#endif
 STATIC int	S_ssc_is_anything(const regnode_ssc *ssc)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SSC_IS_ANYTHING	\
@@ -4917,9 +5253,11 @@
 STATIC void	S_ssc_or(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *or_with);
 #define PERL_ARGS_ASSERT_SSC_OR	\
 	assert(pRExC_state); assert(ssc); assert(or_with)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_ssc_union(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd);
 #define PERL_ARGS_ASSERT_SSC_UNION	\
 	assert(ssc); assert(invlist)
+#endif
 STATIC SSize_t	S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, SSize_t *minlenp, SSize_t *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U32 recursed_depth, regnode_ssc *and_withp, U32 flags, U32 depth);
 #define PERL_ARGS_ASSERT_STUDY_CHUNK	\
 	assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last)
@@ -4957,17 +5295,21 @@
 #define PERL_ARGS_ASSERT__GET_SWASH_INVLIST	\
 	assert(swash)
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool	S__invlist_contains_cp(SV* const invlist, const UV cp)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP	\
 	assert(invlist)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE UV	S__invlist_len(SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__INVLIST_LEN	\
 	assert(invlist)
+#endif
 
-PERL_CALLCONV IV	Perl__invlist_search(SV* const invlist, const UV cp)
+PERL_CALLCONV SSize_t	Perl__invlist_search(SV* const invlist, const UV cp)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__INVLIST_SEARCH	\
 	assert(invlist)
@@ -4977,15 +5319,19 @@
 #define PERL_ARGS_ASSERT__SWASH_INVERSION_HASH	\
 	assert(swash)
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool*	S_get_invlist_offset_addr(SV* invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR	\
 	assert(invlist)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE UV*	S_invlist_array(SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_ARRAY	\
 	assert(invlist)
+#endif
 
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_TOKE_C)
@@ -4994,10 +5340,12 @@
 	assert(pkg); assert(name); assert(listsv)
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE char*	S_form_short_octal_warning(pTHX_ const char * const s, const STRLEN len)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING	\
 	assert(s)
+#endif
 
 PERL_CALLCONV char	Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning)
 			__attribute__warn_unused_result__;
@@ -5012,15 +5360,16 @@
 #define PERL_ARGS_ASSERT_GROK_BSLASH_X	\
 	assert(s); assert(uv); assert(error_msg)
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE I32	S_regcurly(const char *s)
-			__attribute__warn_unused_result__
-			__attribute__pure__;
+			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_REGCURLY	\
 	assert(s)
+#endif
 
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV SV*	Perl__add_range_to_invlist(pTHX_ SV* invlist, const UV start, const UV end)
+PERL_CALLCONV SV*	Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end)
 			__attribute__warn_unused_result__;
 
 /* PERL_CALLCONV void	_invlist_intersection(pTHX_ SV* const a, SV* const b, SV** i); */
@@ -5068,6 +5417,11 @@
 #define PERL_ARGS_ASSERT_ADVANCE_ONE_WB	\
 	assert(curpos); assert(strend)
 
+STATIC GCB_enum	S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_BACKUP_ONE_GCB	\
+	assert(strbeg); assert(curpos)
+
 STATIC LB_enum	S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_BACKUP_ONE_LB	\
@@ -5088,16 +5442,15 @@
 #define PERL_ARGS_ASSERT_FIND_BYCLASS	\
 	assert(prog); assert(c); assert(s); assert(strend)
 
-STATIC bool	S_isFOO_lc(pTHX_ const U8 classnum, const U8 character)
-			__attribute__warn_unused_result__;
-
 STATIC bool	S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_ISFOO_UTF8_LC	\
 	assert(character)
 
-PERL_STATIC_INLINE bool	S_isGCB(const GCB_enum before, const GCB_enum after)
+STATIC bool	S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
 			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_ISGCB	\
+	assert(strbeg); assert(curpos)
 
 STATIC bool	S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
 			__attribute__warn_unused_result__;
@@ -5119,10 +5472,13 @@
 #define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED	\
 	assert(rex); assert(scan)
 
-STATIC void	S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p);
+STATIC void	S_regcp_restore(pTHX_ regexp *rex, I32 ix, U32 *maxopenparen_p _pDEPTH);
+#define PERL_ARGS_ASSERT_REGCP_RESTORE	\
+	assert(rex); assert(maxopenparen_p)
+STATIC void	S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p _pDEPTH);
 #define PERL_ARGS_ASSERT_REGCPPOP	\
 	assert(rex); assert(maxopenparen_p)
-STATIC CHECKPOINT	S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen);
+STATIC CHECKPOINT	S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen _pDEPTH);
 #define PERL_ARGS_ASSERT_REGCPPUSH	\
 	assert(rex)
 STATIC U8*	S_reghop3(U8 *s, SSize_t off, const U8 *lim)
@@ -5135,7 +5491,7 @@
 #define PERL_ARGS_ASSERT_REGHOP4	\
 	assert(s); assert(llim); assert(rlim)
 
-STATIC U8*	S_reghopmaybe3(U8 *s, SSize_t off, const U8 *lim)
+STATIC U8*	S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_REGHOPMAYBE3	\
 	assert(s); assert(lim)
@@ -5150,7 +5506,7 @@
 #define PERL_ARGS_ASSERT_REGMATCH	\
 	assert(reginfo); assert(startpos); assert(prog)
 
-STATIC I32	S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, regmatch_info *const reginfo, I32 max, int depth)
+STATIC I32	S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, regmatch_info *const reginfo, I32 max _pDEPTH)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_REGREPEAT	\
 	assert(prog); assert(startposp); assert(p); assert(reginfo)
@@ -5167,6 +5523,18 @@
 #define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR	\
 	assert(prog)
 #endif
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
+PERL_CALLCONV bool	Perl__is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *strend, const UV cp)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__IS_GRAPHEME	\
+	assert(strbeg); assert(s); assert(strend)
+
+#endif
+#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
+PERL_CALLCONV bool	Perl_isFOO_lc(pTHX_ const U8 classnum, const U8 character)
+			__attribute__warn_unused_result__;
+
+#endif
 #if defined(PERL_IN_SCOPE_C)
 STATIC void	S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type);
 STATIC SV*	S_save_scalar_at(pTHX_ SV **sptr, const U32 flags);
@@ -5191,7 +5559,7 @@
 #define PERL_ARGS_ASSERT_EXPECT_NUMBER	\
 	assert(pattern)
 
-STATIC I32	S_find_array_subscript(pTHX_ const AV *const av, const SV *const val);
+STATIC SSize_t	S_find_array_subscript(pTHX_ const AV *const av, const SV *const val);
 #define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT	\
 	assert(val)
 STATIC SV *	S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val);
@@ -5239,9 +5607,11 @@
 STATIC STRLEN	S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, const STRLEN uend);
 #define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY	\
 	assert(start); assert(send)
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE void	S_sv_unglob(pTHX_ SV *const sv, U32 flags);
 #define PERL_ARGS_ASSERT_SV_UNGLOB	\
 	assert(sv)
+#endif
 STATIC char *	S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_UIV_2BUF	\
@@ -5271,7 +5641,7 @@
 #  endif
 #endif
 #if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
-PERL_CALLCONV SV *	Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type)
+PERL_CALLCONV SV *	Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, SSize_t aindex, int subscript_type)
 			__attribute__warn_unused_result__;
 
 #endif
@@ -5306,7 +5676,7 @@
 STATIC char*	S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack);
 #define PERL_ARGS_ASSERT_FORCE_WORD	\
 	assert(start)
-PERL_STATIC_INLINE SV*	S_get_and_check_backslash_N_name(pTHX_ const char* s, const char* const e)
+STATIC SV*	S_get_and_check_backslash_N_name(pTHX_ const char* s, const char* const e)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME	\
 	assert(s); assert(e)
@@ -5320,7 +5690,7 @@
 STATIC int	S_intuit_more(pTHX_ char *s);
 #define PERL_ARGS_ASSERT_INTUIT_MORE	\
 	assert(s)
-STATIC I32	S_lop(pTHX_ I32 f, int x, char *s);
+STATIC I32	S_lop(pTHX_ I32 f, U8 x, char *s);
 #define PERL_ARGS_ASSERT_LOP	\
 	assert(s)
 PERL_STATIC_NO_RET void	S_missingterm(pTHX_ char *s)
@@ -5332,7 +5702,7 @@
 STATIC void	S_no_op(pTHX_ const char *const what, char *s);
 #define PERL_ARGS_ASSERT_NO_OP	\
 	assert(what)
-STATIC void	S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8);
+STATIC void	S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar);
 #define PERL_ARGS_ASSERT_PARSE_IDENT	\
 	assert(s); assert(d); assert(e)
 STATIC int	S_pending_ident(pTHX);
@@ -5423,16 +5793,56 @@
 STATIC UV	S__to_utf8_case(pTHX_ const UV uv1, const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special);
 #define PERL_ARGS_ASSERT__TO_UTF8_CASE	\
 	assert(p); assert(ustrp); assert(swashp); assert(normal)
+STATIC U32	S_check_and_deprecate(pTHX_ const U8 * p, const U8 ** e, const unsigned type, const bool use_locale, const char * const file, const unsigned line);
+#define PERL_ARGS_ASSERT_CHECK_AND_DEPRECATE	\
+	assert(p); assert(e); assert(file)
 STATIC UV	S_check_locale_boundary_crossing(pTHX_ const U8* const p, const UV result, U8* const ustrp, STRLEN *lenp)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING	\
 	assert(p); assert(ustrp); assert(lenp)
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_does_utf8_overflow(const U8 * const s, const U8 * e)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_DOES_UTF8_OVERFLOW	\
+	assert(s); assert(e)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_isFF_OVERLONG(const U8 * const s, const STRLEN len)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_ISFF_OVERLONG	\
+	assert(s)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool	S_is_utf8_common(pTHX_ const U8 *const p, SV **swash, const char * const swashname, SV* const invlist)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_IS_UTF8_COMMON	\
 	assert(p); assert(swash); assert(swashname)
+#endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_common_with_len(pTHX_ const U8 *const p, const U8 *const e, SV **swash, const char * const swashname, SV* const invlist)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_UTF8_COMMON_WITH_LEN	\
+	assert(p); assert(e); assert(swash); assert(swashname)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_cp_above_31_bits(const U8 * const s, const U8 * const e)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_UTF8_CP_ABOVE_31_BITS	\
+	assert(s); assert(e)
+#endif
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool	S_is_utf8_overlong_given_start_byte_ok(const U8 * const s, const STRLEN len)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_IS_UTF8_OVERLONG_GIVEN_START_BYTE_OK	\
+	assert(s)
+#endif
+
 STATIC U8*	S_swash_scan_list_line(pTHX_ U8* l, U8* const lend, UV* min, UV* max, UV* val, const bool wants_value, const U8* const typestr)
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SWASH_SCAN_LIST_LINE	\
@@ -5443,9 +5853,17 @@
 #define PERL_ARGS_ASSERT_SWATCH_GET	\
 	assert(swash)
 
-STATIC U8	S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp)
+STATIC U8	S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy)
 			__attribute__warn_unused_result__;
 
+STATIC char *	S_unexpected_non_continuation_text(pTHX_ const U8 * const s, STRLEN print_len, const STRLEN non_cont_byte_pos, const STRLEN expect_len)
+			__attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_UNEXPECTED_NON_CONTINUATION_TEXT	\
+	assert(s)
+
+STATIC void	S_warn_on_first_deprecated_use(pTHX_ const char * const name, const char * const alternative, const bool use_locale, const char * const file, const unsigned line);
+#define PERL_ARGS_ASSERT_WARN_ON_FIRST_DEPRECATED_USE	\
+	assert(name); assert(alternative); assert(file)
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 PERL_CALLCONV UV	Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const char S_or_s);
@@ -5530,7 +5948,6 @@
 #define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL	\
 	assert(param)
 PERL_CALLCONV CLONE_PARAMS *	Perl_clone_params_new(PerlInterpreter *const from, PerlInterpreter *const to)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW	\
 	assert(from); assert(to)
@@ -5572,7 +5989,6 @@
 #define PERL_ARGS_ASSERT_MRO_META_DUP	\
 	assert(smeta); assert(param)
 PERL_CALLCONV OP*	Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_NEWPADOP	\
 	assert(sv)
@@ -5613,7 +6029,6 @@
 	assert(param)
 
 PERL_CALLCONV ANY*	Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param)
-			__attribute__malloc__
 			__attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SS_DUP	\
 	assert(proto_perl); assert(param)
@@ -5641,9 +6056,11 @@
 PERL_CALLCONV int	Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
 #define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM	\
 	assert(sv); assert(mg)
-PERL_CALLCONV char*	Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen);
+#ifndef NO_MATHOMS
+PERL_CALLCONV char*	Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen);
 #define PERL_ARGS_ASSERT_MEM_COLLXFRM	\
-	assert(s); assert(xlen)
+	assert(input_string); assert(xlen)
+#endif
 /* PERL_CALLCONV char*	sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp); */
 PERL_CALLCONV char*	Perl_sv_collxfrm_flags(pTHX_ SV *const sv, STRLEN *const nxp, I32 const flags);
 #define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS	\
@@ -5700,9 +6117,7 @@
 	assert(format)
 #endif
 #if defined(WIN32)
-PERL_CALLCONV char*	Perl_my_setlocale(pTHX_ int category, const char* locale)
-			__attribute__pure__;
-
+PERL_CALLCONV char*	Perl_my_setlocale(pTHX_ int category, const char* locale);
 PERL_CALLCONV_NO_RET void	win32_croak_not_implemented(const char * fname)
 			__attribute__noreturn__;
 #define PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED	\

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -28,25 +28,25 @@
 /*** GENERATED CODE ***/
 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1        \
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : ( is_utf8 ) ?                                                         \
-	( ( 0xC2 == ((U8*)s)[0] ) ?                                         \
-	    ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                             \
-	: ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
-    : ( 0x85 == ((U8*)s)[0] ) )                                             \
+	( ( 0xC2 == ((const U8*)s)[0] ) ?                                   \
+	    ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                       \
+	: ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+    : ( 0x85 == ((const U8*)s)[0] ) )                                       \
 : ((e)-(s) > 1) ?                                                           \
-    ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1        \
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : ( is_utf8 ) ?                                                         \
-	( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 )  \
-    : ( 0x85 == ((U8*)s)[0] ) )                                             \
+	( ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
+    : ( 0x85 == ((const U8*)s)[0] ) )                                       \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
+    ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) ? 1        \
     : ( !( is_utf8 ) ) ?                                                    \
-	( 0x85 == ((U8*)s)[0] )                                             \
+	( 0x85 == ((const U8*)s)[0] )                                       \
     : 0 )                                                                   \
 : 0 )
 
@@ -53,30 +53,30 @@
 /*** GENERATED CODE ***/
 #define is_LNBREAK_utf8_safe(s,e)                                           \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
-    : ( 0xC2 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
-    : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+    ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1        \
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 )                           \
+    : ( 0xC2 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
+    : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
-    : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 )      \
+    ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1        \
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 )                           \
+    : ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
 : ((e)-(s) > 0) ?                                                           \
-    ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D )                          \
+    ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D )              \
 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_LNBREAK_latin1_safe(s,e)                                         \
 ( ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) || 0x85 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) || 0x85 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
+    ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x85 == ((const U8*)s)[0] )\
 : 0 )
 
 /*
@@ -86,13 +86,13 @@
 */
 /*** GENERATED CODE ***/
 #define is_HORIZWS_high(s)                                                  \
-( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x9A == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
-	( ( ( ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )      \
-    : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ((const U8*)s)[2] <= 0x8A ) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_HORIZWS_cp_high(cp)                                              \
@@ -108,7 +108,7 @@
 */
 /*** GENERATED CODE ***/
 #define is_VERTWS_high(s)                                                   \
-( ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
+( ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_VERTWS_cp_high(cp)                                               \
@@ -121,10 +121,10 @@
 */
 /*** GENERATED CODE ***/
 #define is_XDIGIT_high(s)                                                   \
-( ( 0xEF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0xBC == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x99 ) || ( 0xA1 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA6 ) ) ? 3 : 0 )\
-    : ( ( 0xBD == ((U8*)s)[1] ) && ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )\
+( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0xBC == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x90 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x99 ) || ( 0xA1 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xA6 ) ) ? 3 : 0 )\
+    : ( ( 0xBD == ((const U8*)s)[1] ) && ( 0x81 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )\
 : 0 )
 
 /*** GENERATED CODE ***/
@@ -139,13 +139,13 @@
 */
 /*** GENERATED CODE ***/
 #define is_XPERLSPACE_high(s)                                               \
-( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x9A == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
-	( ( ( ((U8*)s)[2] <= 0x8A ) || ( ((U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ((const U8*)s)[2] <= 0x8A ) || ( ((const U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_XPERLSPACE_cp_high(cp)                                           \
@@ -163,7 +163,7 @@
 */
 /*** GENERATED CODE ***/
 #define is_REPLACEMENT_utf8_safe(s,e)                                       \
-( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xEF == ((U8*)s)[0] ) ) && ( 0xBF == ((U8*)s)[1] ) ) && ( 0xBD == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xEF == ((const U8*)s)[0] ) ) && ( 0xBF == ((const U8*)s)[1] ) ) && ( 0xBD == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*
 	NONCHAR: Non character code points
@@ -171,25 +171,25 @@
 	\p{_Perl_Nchar}
 */
 /*** GENERATED CODE ***/
-#define is_NONCHAR_utf8(s)                                                  \
-( ( 0xEF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0xB7 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ? 3 : 0 )          \
-    : ( ( 0xBF == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0xBE ) ) ? 3 : 0 )      \
-: ( 0xF0 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( ((U8*)s)[1] == 0x9F || ( ( ((U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
-: ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF3 ) ?                          \
-    ( ( ( ( ( ((U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
-: ( ( ( ( 0xF4 == ((U8*)s)[0] ) && ( 0x8F == ((U8*)s)[1] ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )
+#define is_NONCHAR_utf8_safe(s,e)                                           \
+( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\
+	    ( ( 0xB7 == ((const U8*)s)[1] ) ?                               \
+		( ( 0x90 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xAF ) ? 3 : 0 )\
+	    : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xBE ) ) ? 3 : 0 )\
+	: ( 0xF0 == ((const U8*)s)[0] ) ?                                   \
+	    ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 )\
+	: ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ?      \
+	    ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 )\
+	: ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 ) : 0 )
 
 /*
-	SURROGATE: Surrogate characters
+	SURROGATE: Surrogate code points
 
 	\p{_Perl_Surrogate}
 */
 /*** GENERATED CODE ***/
-#define is_SURROGATE_utf8(s)                                                \
-( ( ( 0xED == ((U8*)s)[0] ) && ( ((U8*)s)[1] >= 0xA0 ) ) ? 3 : 0 )
+#define is_SURROGATE_utf8_safe(s,e)                                         \
+( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )
 
 /*
 	QUOTEMETA: Meta-characters that \Q should quote
@@ -198,53 +198,53 @@
 */
 /*** GENERATED CODE ***/
 #define is_QUOTEMETA_high(s)                                                \
-( ( 0xCD == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x8F == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xD8 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x9C == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x85 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x9F == ((U8*)s)[2] || 0xA0 == ((U8*)s)[2] ) ? 3 : 0 )          \
-    : ( 0x9A == ((U8*)s)[1] ) ?                                             \
-	( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( 0x9E == ((U8*)s)[1] ) ?                                             \
-	( ( ( ((U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 )                      \
-    : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8E ) ) ? 3 : 0 )\
-: ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
-	( ( ((U8*)s)[2] <= 0xBE ) ? 3 : 0 )                                 \
-    : ( 0x81 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\
-    : ( 0x86 == ((U8*)s)[1] ) ?                                             \
-	( ( ((U8*)s)[2] >= 0x90 ) ? 3 : 0 )                                 \
-    : ( ( 0x87 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x90 ) || ( 0x94 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x9C ) || ( 0x9F <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xAF ) || ( ((U8*)s)[1] & 0xFE ) == 0xB8 ) ?\
+( ( 0xCD == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xD8 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x85 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x9F == ((const U8*)s)[2] || 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x9A == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( 0x9E == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ((const U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 )                \
+    : ( ( 0xA0 == ((const U8*)s)[1] ) && ( 0x8B <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x8E ) ) ? 3 : 0 )\
+: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
+	( ( ((const U8*)s)[2] <= 0xBE ) ? 3 : 0 )                           \
+    : ( 0x81 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x81 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[1] ) ?                                       \
+	( ( ((const U8*)s)[2] >= 0x90 ) ? 3 : 0 )                           \
+    : ( ( 0x87 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x90 ) || ( 0x94 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x9C ) || ( 0x9F <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xAF ) || ( ((const U8*)s)[1] & 0xFE ) == 0xB8 ) ?\
 	3                                                                   \
-    : ( 0x91 == ((U8*)s)[1] ) ?                                             \
-	( ( ((U8*)s)[2] <= 0x9F ) ? 3 : 0 )                                 \
-    : ( 0x9D == ((U8*)s)[1] ) ?                                             \
-	( ( ((U8*)s)[2] <= 0xB5 ) ? 3 : 0 )                                 \
-    : ( ( 0x9E == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0x94 ) ) ? 3 : 0 )      \
-: ( 0xE3 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
-	( ( ( ((U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA0 ) || 0xB0 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( ( 0x85 == ((U8*)s)[1] ) && ( 0xA4 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xEF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0xB4 == ((U8*)s)[1] ) ?                                             \
-	( ( ((U8*)s)[2] >= 0xBE ) ? 3 : 0 )                                 \
-    : ( 0xB8 == ((U8*)s)[1] ) ?                                             \
-	( ( ((U8*)s)[2] <= 0x8F ) ? 3 : 0 )                                 \
-    : ( 0xB9 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x85 == ((U8*)s)[2] || 0x86 == ((U8*)s)[2] ) ? 3 : 0 )          \
-    : ( 0xBB == ((U8*)s)[1] ) ?                                             \
-	( ( 0xBF == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( 0xBE == ((U8*)s)[1] ) ?                                             \
-	( ( 0xA0 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0xBF == ((U8*)s)[1] ) && ( 0xB0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xB8 ) ) ? 3 : 0 )\
-: ( 0xF0 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x9B == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0xB2 == ((U8*)s)[2] ) && ( ( ((U8*)s)[3] & 0xFC ) == 0xA0 ) ) ? 4 : 0 )\
-    : ( ( ( 0x9D == ((U8*)s)[1] ) && ( 0x85 == ((U8*)s)[2] ) ) && ( 0xB3 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\
-: ( ( 0xF3 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 4 : 0 )
+    : ( 0x91 == ((const U8*)s)[1] ) ?                                       \
+	( ( ((const U8*)s)[2] <= 0x9F ) ? 3 : 0 )                           \
+    : ( 0x9D == ((const U8*)s)[1] ) ?                                       \
+	( ( ((const U8*)s)[2] <= 0xB5 ) ? 3 : 0 )                           \
+    : ( ( 0x9E == ((const U8*)s)[1] ) && ( ((const U8*)s)[2] >= 0x94 ) ) ? 3 : 0 )\
+: ( 0xE3 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ((const U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xA0 ) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xEF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0xB4 == ((const U8*)s)[1] ) ?                                       \
+	( ( ((const U8*)s)[2] >= 0xBE ) ? 3 : 0 )                           \
+    : ( 0xB8 == ((const U8*)s)[1] ) ?                                       \
+	( ( ((const U8*)s)[2] <= 0x8F ) ? 3 : 0 )                           \
+    : ( 0xB9 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x85 == ((const U8*)s)[2] || 0x86 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0xBB == ((const U8*)s)[1] ) ?                                       \
+	( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
+	( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xB0 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xB8 ) ) ? 3 : 0 )\
+: ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x9B == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0xB2 == ((const U8*)s)[2] ) && ( ( ((const U8*)s)[3] & 0xFC ) == 0xA0 ) ) ? 4 : 0 )\
+    : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( 0xB3 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\
+: ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 )
 
 /*
 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
@@ -253,58 +253,58 @@
 */
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
-( ( 0x61 == ((U8*)s)[0] ) ?                                                 \
-	( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x66 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x66 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x68 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x69 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x6A == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x73 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x74 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xC5 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0xBF == ((U8*)s)[1] ) && ( 0xC5 == ((U8*)s)[2] ) ) && ( 0xBF == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xCA == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xCE == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ?                              \
-	    ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xCF == ((U8*)s)[0] ) ?                                             \
-	( ( 0x81 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x85 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
-		( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x89 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xD5 == ((U8*)s)[0] ) ?                                             \
-	( ( 0xA5 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB4 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
-	: ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xE1 == ((U8*)s)[0] ) ?                                             \
-	( ( 0xBC == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-	: ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+( ( 0x61 == ((const U8*)s)[0] ) ?                                           \
+	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x66 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x68 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x69 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x6A == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x73 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x74 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xC5 == ((const U8*)s)[2] ) ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xBC == ((const U8*)s)[1] ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
+	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
+		( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
+	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
     : 0 )
 
 
@@ -311,79 +311,79 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
 ( ((e)-(s) > 3) ?                                                           \
-    ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x66 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x66 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x68 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x69 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x6A == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x73 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x74 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xC5 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0xBF == ((U8*)s)[1] ) && ( 0xC5 == ((U8*)s)[2] ) ) && ( 0xBF == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xCA == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xCE == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ?                              \
-	    ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xCF == ((U8*)s)[0] ) ?                                             \
-	( ( 0x81 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x85 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
-		( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x89 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xD5 == ((U8*)s)[0] ) ?                                             \
-	( ( 0xA5 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB4 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
-	: ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+    ( ( 0x61 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x66 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x68 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x69 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x6A == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x73 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x74 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xC5 == ((const U8*)s)[2] ) ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xBC == ((const U8*)s)[1] ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
+	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
+		( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
+	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
     : 0 )                                                                   \
 : ((e)-(s) > 2) ?                                                           \
-    ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x66 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x66 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x68 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x69 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x6A == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x73 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x74 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0xBC == ((U8*)s)[1] ) ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( 0x61 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x66 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x68 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x69 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x6A == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x73 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x74 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( 0x66 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x66 == ((U8*)s)[1] || 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )\
-    : ( ( 0x73 == ((U8*)s)[0] ) && ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ) ? 2 : 0 )\
+    ( ( 0x66 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x66 == ((const U8*)s)[1] || 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( ( 0x73 == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
 : 0 )
 
 
@@ -390,78 +390,78 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
 ( ((e)-(s) > 5) ?                                                           \
-    ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x66 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x66 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x68 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x69 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x6A == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x73 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x74 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xC5 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0xBF == ((U8*)s)[1] ) && ( 0xC5 == ((U8*)s)[2] ) ) && ( 0xBF == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xCA == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xCE == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ?                              \
-	    ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x82 == ((U8*)s)[3] ) ?                                 \
-		    ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\
+    ( ( 0x61 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x66 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x68 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x69 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x6A == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x73 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x74 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xC5 == ((const U8*)s)[2] ) ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xBC == ((const U8*)s)[1] ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
+	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
+		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
 		: 0 )                                                       \
-	    : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB9 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
-		( ( 0x88 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xCC == ((U8*)s)[4] ) ?                             \
-			( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )      \
-		    : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\
+	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
+		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
+			( ( ( ((const U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )\
+		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
 		: 0 )                                                       \
-	    : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
 	: 0 )                                                               \
-    : ( 0xCF == ((U8*)s)[0] ) ?                                             \
-	( ( 0x81 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x85 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
-		( ( 0x88 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xCC == ((U8*)s)[4] ) ?                             \
-			( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )      \
-		    : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-		: ( 0x93 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xCC == ((U8*)s)[4] ) ?                             \
-			( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 4 )      \
-		    : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 4 )\
+    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
+		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
+			( ( ( ((const U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )\
+		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+		: ( 0x93 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
+			( ( ( ((const U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 4 )\
+		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
 		: 0 )                                                       \
-	    : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x89 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x82 == ((U8*)s)[3] ) ?                                 \
-		    ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\
+	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
+		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
 		: 0 )                                                       \
-	    : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xD5 == ((U8*)s)[0] ) ?                                             \
-	( ( 0xA5 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0xB4 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
-	: ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xE1 == ((U8*)s)[0] ) ?                                             \
-	( ( 0xBC == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-	: ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
+	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
     : 0 )                                                                   \
 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )
 
@@ -473,15 +473,15 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ?                                  \
-	( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) ?                              \
-	    ( ( ( ( ((U8*)s)[2] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[2] & 0xDF ) == 0x4C ) ) ? 3 : 2 )\
-	: ( ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
-    : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
+    ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x46 ) ?                            \
+	( ( ( ((const U8*)s)[1] & 0xDF ) == 0x46 ) ?                        \
+	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 0x49 ) || ( ( ((const U8*)s)[2] & 0xDF ) == 0x4C ) ) ? 3 : 2 )\
+	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
+    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ?                                  \
-	( ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
-    : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
+    ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x46 ) ?                            \
+	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x46 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
+    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
 : 0 )
 
 /*
@@ -491,25 +491,25 @@
 */
 /*** GENERATED CODE ***/
 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
-( ( 0xC3 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xC4 == ((U8*)s)[0] || 0xC7 == ((U8*)s)[0] ) ?                          \
-    ( ( 0xB0 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xC5 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x89 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xCE == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ((U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                          \
-: ( 0xD6 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x87 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0xBA == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x96 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x9A ) || 0x9E == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0xBD == ((U8*)s)[1] ) ?                                             \
-	( ( ( ((U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                      \
-    : ( 0xBE == ((U8*)s)[1] ) ?                                             \
-	( ( ( ( ((U8*)s)[2] & 0xE0 ) == 0x80 ) || ( ( ((U8*)s)[2] & 0xF0 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFA ) == 0xB2 ) || ( ( ((U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
-    : ( ( 0xBF == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((U8*)s)[2] & 0xF7 ) == 0x84 ) || ((U8*)s)[2] == 0xA4 || ( ( ((U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
-: ( ( ( 0xEF == ((U8*)s)[0] ) && ( 0xAC == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] <= 0x86 ) || ( 0x93 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x97 ) ) ) ? 3 : 0 )
+( ( 0xC3 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
+    ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                    \
+: ( 0xD6 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0xBA == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x96 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x9A ) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0xBD == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                \
+    : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ( ((const U8*)s)[2] & 0xE0 ) == 0x80 ) || ( ( ((const U8*)s)[2] & 0xF0 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFA ) == 0xB2 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
+    : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x84 ) || ((const U8*)s)[2] == 0xA4 || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
+: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] <= 0x86 ) || ( 0x93 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x97 ) ) ) ? 3 : 0 )
 
 /*
 	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
@@ -518,20 +518,20 @@
 */
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
-( ( ((U8*)s)[0] <= 0x7F ) ? 1                                               \
-: ( ( ((U8*)s)[0] & 0xFE ) == 0xC2 ) ?                                      \
+( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
+: ( ( ((const U8*)s)[0] & 0xFE ) == 0xC2 ) ?                                \
     2                                                                       \
-: ( 0xC4 == ((U8*)s)[0] || 0xC7 == ((U8*)s)[0] ) ?                          \
-    ( ( 0xB0 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xC5 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x89 == ((U8*)s)[1] || 0xB8 == ((U8*)s)[1] || 0xBF == ((U8*)s)[1] ) ? 2 : 0 )\
-: ( 0xCE == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ((U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                          \
-: ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0xBA == ((U8*)s)[1] ) && ( ( 0x96 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x9A ) || 0x9E == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x84 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\
-: ( ( ( 0xEF == ((U8*)s)[0] ) && ( 0xAC == ((U8*)s)[1] ) ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )
+: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
+    ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
+: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
+: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0xBA == ((const U8*)s)[1] ) && ( ( 0x96 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x9A ) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x84 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\
+: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( ((const U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
@@ -555,22 +555,22 @@
 */
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
-( ( ((U8*)s)[0] <= 0x7F ) ? 1                                               \
-: ( ( ((U8*)s)[0] & 0xFE ) == 0xC2 ) ?                                      \
+( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
+: ( ( ((const U8*)s)[0] & 0xFE ) == 0xC2 ) ?                                \
     2                                                                       \
-: ( 0xC4 == ((U8*)s)[0] || 0xC7 == ((U8*)s)[0] ) ?                          \
-    ( ( 0xB0 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xC5 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x89 == ((U8*)s)[1] || 0xB8 == ((U8*)s)[1] || 0xBF == ((U8*)s)[1] ) ? 2 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0xBC == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xCE == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ((U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                          \
-: ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0xBA == ((U8*)s)[1] ) && ( ( 0x96 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x9A ) || 0x9E == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x84 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\
-: ( ( ( 0xEF == ((U8*)s)[0] ) && ( 0xAC == ((U8*)s)[1] ) ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )
+: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
+    ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
+: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0xBA == ((const U8*)s)[1] ) && ( ( 0x96 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x9A ) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x84 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\
+: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( ((const U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
@@ -596,13 +596,13 @@
 /*** GENERATED CODE ***/
 #define is_PATWS_safe(s,e,is_utf8)                                          \
 ( ( LIKELY((e) > (s)) ) ?                                                   \
-    ( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+    ( ( ( 0x09 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x20 == ((const U8*)s)[0] ) ? 1\
     : (! is_utf8 ) ?                                                        \
-	    ( 0x85 == ((U8*)s)[0] )                                         \
+	    ( 0x85 == ((const U8*)s)[0] )                                   \
 	: ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ?                          \
-	    ( ( 0xC2 == ((U8*)s)[0] ) ?                                     \
-		( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                         \
-	    : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x8E || ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+	    ( ( 0xC2 == ((const U8*)s)[0] ) ?                               \
+		( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                   \
+	    : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0x8E || ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
 	: 0 )                                                               \
 : 0 )
 
@@ -630,44 +630,44 @@
 /*** GENERATED CODE ***/
 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
-    : ( ( ( ( is_utf8 ) && ( 0xCA == ((U8*)s)[0] ) ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
+    : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\
+    ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_LNBREAK_utf8_safe(s,e)                                           \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
-    : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
+    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\
+    ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_LNBREAK_latin1_safe(s,e)                                         \
 ( ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\
+    ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
 : 0 )
 
 /*
@@ -677,15 +677,15 @@
 */
 /*** GENERATED CODE ***/
 #define is_HORIZWS_high(s)                                                  \
-( ( 0xBC == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x63 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x56 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x73 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_HORIZWS_cp_high(cp)                                              \
@@ -701,7 +701,7 @@
 */
 /*** GENERATED CODE ***/
 #define is_VERTWS_high(s)                                                   \
-( ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_VERTWS_cp_high(cp)                                               \
@@ -714,9 +714,9 @@
 */
 /*** GENERATED CODE ***/
 #define is_XDIGIT_high(s)                                                   \
-( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x73 == ((U8*)s)[1] ) ) ? ( ( 0x67 == ((U8*)s)[2] ) ?\
-	    ( ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x68 ) ) ? 4 : 0 )\
-	: ( ( ( ((U8*)s)[2] & 0xFE ) == 0x68 ) && ( 0x42 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 )
+( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
+	    ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x68 ) ) ? 4 : 0 )\
+	: ( ( ( ((const U8*)s)[2] & 0xFE ) == 0x68 ) && ( 0x42 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 )
 
 /*** GENERATED CODE ***/
 #define is_XDIGIT_cp_high(cp)                                               \
@@ -730,15 +730,15 @@
 */
 /*** GENERATED CODE ***/
 #define is_XPERLSPACE_high(s)                                               \
-( ( 0xBC == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x63 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x73 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_XPERLSPACE_cp_high(cp)                                           \
@@ -756,7 +756,7 @@
 */
 /*** GENERATED CODE ***/
 #define is_REPLACEMENT_utf8_safe(s,e)                                       \
-( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((U8*)s)[0] ) ) && ( 0x73 == ((U8*)s)[1] ) ) && ( 0x73 == ((U8*)s)[2] ) ) && ( 0x71 == ((U8*)s)[3] ) ) ? 4 : 0 )
+( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x73 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x71 == ((const U8*)s)[3] ) ) ? 4 : 0 )
 
 /*
 	NONCHAR: Non character code points
@@ -764,108 +764,105 @@
 	\p{_Perl_Nchar}
 */
 /*** GENERATED CODE ***/
-#define is_NONCHAR_utf8(s)                                                  \
-( ( 0xDD == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x73 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x55 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( ((U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
-	: ( 0x56 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
-	: ( ( 0x73 == ((U8*)s)[2] ) && ( ( ((U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\
-    : 0 )                                                                   \
-: ( 0xDF == ((U8*)s)[0] || 0xEA == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ?   \
-    ( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x73 == ((U8*)s)[2] ) ) && ( ( ((U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\
-: ( 0xED == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( ( ((U8*)s)[1] == 0x4A || ((U8*)s)[1] == 0x52 || ( ( ((U8*)s)[1] & 0xFD ) == 0x54 ) || ((U8*)s)[1] == 0x58 || ((U8*)s)[1] == 0x62 || ( ( ((U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) && ( ( ((U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 )\
-: ( ( ( ( ( 0xEE == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x73 == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) && ( ( ((U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 )
+#define is_NONCHAR_utf8_safe(s,e)                                           \
+( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
+	    ( ( 0x73 == ((const U8*)s)[1] ) ?                               \
+		( ( 0x55 == ((const U8*)s)[2] ) ?                           \
+		    ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
+		: ( 0x56 == ((const U8*)s)[2] ) ?                           \
+		    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
+		: ( ( 0x73 == ((const U8*)s)[2] ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\
+	    : 0 )                                                           \
+	: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
+	    ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\
+	: ( 0xED == ((const U8*)s)[0] ) ?                                   \
+	    ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( ( ((const U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 )\
+	: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( ( ((const U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 ) : 0 )
 
 /*
-	SURROGATE: Surrogate characters
+	SURROGATE: Surrogate code points
 
 	\p{_Perl_Surrogate}
 */
 /*** GENERATED CODE ***/
-#define is_SURROGATE_utf8(s)                                                \
-( ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x65 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( ((U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )
+#define is_SURROGATE_utf8_safe(s,e)                                         \
+( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x65 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )
 
 /*
-	UTF8_CHAR: Matches legal UTF-EBCDIC encoded characters from 2 through 3 bytes
+	QUOTEMETA: Meta-characters that \Q should quote
 
-	0xA0 - 0x3FFF
+	\p{_Perl_Quotemeta}
 */
 /*** GENERATED CODE ***/
-#define is_UTF8_CHAR_utf8_no_length_checks(s)                               \
-( ( 0x80 == ((U8*)s)[0] || ( 0x8A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xB6 ) ) ?\
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
-: ( ( ( ( ( ((U8*)s)[0] & 0xFC ) == 0xB8 ) || ((U8*)s)[0] == 0xBC || ( ( ((U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((U8*)s)[0] & 0xFC ) == 0xCC ) ) && ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )
+#define is_QUOTEMETA_high_part0(s)                                          \
+( ( 0x41 == ((const U8*)s)[1] || ( 0x54 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ?\
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
+    : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x42 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x62 == ((const U8*)s)[2] || ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
+    : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\
+    : ( ( 0x53 == ((const U8*)s)[1] ) && ( ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )
 
-/*
-	QUOTEMETA: Meta-characters that \Q should quote
 
-	\p{_Perl_Quotemeta}
-*/
 /*** GENERATED CODE ***/
-#define is_QUOTEMETA_high(s)                                                \
-( ( 0xB1 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x56 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xB8 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x57 == ((U8*)s)[1] ) && ( 0x70 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xBB == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x51 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x73 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xBC == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x63 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x41 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0x71 == ((U8*)s)[1] ) && ( 0x63 == ((U8*)s)[2] || 0x64 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xBE == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x41 == ((U8*)s)[1] ) && ( 0x52 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] || ( 0x54 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ?\
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
-    : ( 0x43 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x42 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x62 == ((U8*)s)[2] || ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
-    : ( 0x44 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\
-    : ( ( 0x53 == ((U8*)s)[1] ) && ( ( 0x57 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xCB == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( ((U8*)s)[1] & 0xE7 ) == 0x41 ) || ( ( ((U8*)s)[1] & 0xCE ) == 0x42 ) || ((U8*)s)[1] == 0x4A || ( ( ((U8*)s)[1] & 0xFC ) == 0x54 ) || ((U8*)s)[1] == 0x58 || ( ( ((U8*)s)[1] & 0xFC ) == 0x64 ) || ( ( ((U8*)s)[1] & 0xFE ) == 0x68 ) || ((U8*)s)[1] == 0x71 ) ?\
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
-    : ( 0x6A == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x64 ) ) ? 3 : 0 )\
-    : ( ( 0x70 == ((U8*)s)[1] ) && ( ( 0x63 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xCC == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xCD == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( 0x57 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x62 == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xCE == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) || ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x41 == ((U8*)s)[2] || 0x57 == ((U8*)s)[2] ) ? 3 : 0 )          \
-    : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x45 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xDD == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x73 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x4A == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( ((U8*)s)[3] & 0xFE ) == 0x72 ) ? 4 : 0 )                  \
-	: ( 0x57 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
-	: ( 0x59 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( ((U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 )                  \
-	: ( 0x66 == ((U8*)s)[2] ) ?                                         \
-	    ( ( 0x73 == ((U8*)s)[3] ) ? 4 : 0 )                             \
-	: ( 0x71 == ((U8*)s)[2] ) ?                                         \
-	    ( ( 0x41 == ((U8*)s)[3] ) ? 4 : 0 )                             \
-	: ( ( 0x73 == ((U8*)s)[2] ) && ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x67 ) ) ) ? 4 : 0 )\
+#define is_QUOTEMETA_high_part1(s)                                          \
+( ( 0xCB == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( ((const U8*)s)[1] & 0xE7 ) == 0x41 ) || ( ( ((const U8*)s)[1] & 0xCE ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ( ( ((const U8*)s)[1] & 0xFC ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFC ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFE ) == 0x68 ) || ((const U8*)s)[1] == 0x71 ) ?\
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
+    : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x64 ) ) ? 3 : 0 )\
+    : ( ( 0x70 == ((const U8*)s)[1] ) && ( ( 0x63 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
+: ( 0xCC == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
+: ( 0xCD == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x62 == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
+: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) || ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xDD == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( ((const U8*)s)[3] & 0xFE ) == 0x72 ) ? 4 : 0 )            \
+	: ( 0x57 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
+	: ( 0x59 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( ((const U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 )            \
+	: ( 0x66 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
+	: ( 0x71 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
+	: ( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x67 ) ) ) ? 4 : 0 )\
     : 0 )                                                                   \
-: ( 0xDF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x56 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x46 == ((U8*)s)[2] ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\
-    : ( ( ( 0x63 == ((U8*)s)[1] ) && ( 0x52 == ((U8*)s)[2] ) ) && ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x69 ) ) ? 4 : 0 )\
-: ( ( ( ( ( 0xED == ((U8*)s)[0] ) && ( 0x70 == ((U8*)s)[1] ) ) && ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( ((U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x6A ) || ( ((U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )
+: ( 0xDF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x46 == ((const U8*)s)[2] ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\
+    : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x69 ) ) ? 4 : 0 )\
+: ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )
 
+
+/*** GENERATED CODE ***/
+#define is_QUOTEMETA_high(s)                                                \
+( ( 0xB1 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBB == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBC == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0x71 == ((const U8*)s)[1] ) && ( 0x63 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBE == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x41 == ((const U8*)s)[1] ) && ( 0x52 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) )
+
 /*
 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
 
@@ -873,125 +870,205 @@
 */
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
-( ( 0x81 == ((U8*)s)[0] ) ?                                                 \
-	( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x8F == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x8F == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xAB == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0x70 == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xB4 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x58 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xB1 == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x68 == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xB5 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x42 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xAF == ((U8*)s)[2] ) && ( 0x62 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x46 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x62 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x4A == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xB1 == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB4 == ((U8*)s)[2] ) ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xBF == ((U8*)s)[0] ) ?                                             \
-	( ( 0x67 == ((U8*)s)[1] || 0x68 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-	: ( ( ( ( 0x6A == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x63 == ((U8*)s)[2] || 0x70 == ((U8*)s)[2] ) ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+( ( 0x86 == ((const U8*)s)[1] ) ?                                           \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
+( ( 0x88 == ((const U8*)s)[0] ) ?                                           \
+	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x8F == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0x70 == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
+		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
+		: 0 )                                                       \
+	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
+			( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\
+		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+		: 0 )                                                       \
+	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: 0 )                                                               \
+    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
+			( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\
+		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+		: ( 0x62 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
+			( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 4 )\
+		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
+		: 0 )                                                       \
+	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
+		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
+		: 0 )                                                       \
+	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
+		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
+		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+	    : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+	: 0 )                                                               \
+    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x67 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
     : 0 )
 
 
 /*** GENERATED CODE ***/
-#define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
+#define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
+( ( 0x81 == ((const U8*)s)[0] ) ?                                           \
+	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x88 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x8F == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0x70 == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x67 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+    : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
 ( ((e)-(s) > 3) ?                                                           \
-    ( ( 0x81 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x8F == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x8F == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xAB == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0x70 == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xB4 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x58 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xB1 == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x68 == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xB5 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x42 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xAF == ((U8*)s)[2] ) && ( 0x62 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x46 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x62 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x4A == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xB1 == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB4 == ((U8*)s)[2] ) ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+    ( ( 0x81 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x88 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x8F == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0x70 == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
     : 0 )                                                                   \
 : ((e)-(s) > 2) ?                                                           \
-    ( ( 0x81 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( ( ( 0xAB == ((U8*)s)[0] ) && ( 0x70 == ((U8*)s)[1] ) ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( 0x81 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x88 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] || 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )\
-    : ( ( 0xA2 == ((U8*)s)[0] ) && ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\
+    ( ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] || 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( ( 0xA2 == ((const U8*)s)[0] ) && ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\
 : 0 )
 
 
@@ -998,82 +1075,10 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
 ( ((e)-(s) > 5) ?                                                           \
-    ( ( 0x81 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x8F == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x8F == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xAB == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0x70 == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xB4 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x58 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xB1 == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ?                                 \
-		    ( ( ( 0xB4 == ((U8*)s)[4] ) && ( 0x68 == ((U8*)s)[5] ) ) ? 6 : 4 )\
-		: 0 )                                                       \
-	    : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x68 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x49 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xAF == ((U8*)s)[4] ) ?                             \
-			( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\
-		    : ( ( 0xB1 == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-		: 0 )                                                       \
-	    : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: 0 )                                                               \
-    : ( 0xB5 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x42 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xAF == ((U8*)s)[2] ) && ( 0x62 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x46 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x49 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xAF == ((U8*)s)[4] ) ?                             \
-			( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\
-		    : ( ( 0xB1 == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-		: ( 0x62 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xAF == ((U8*)s)[4] ) ?                             \
-			( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 4 )\
-		    : ( ( 0xB1 == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 4 )\
-		: 0 )                                                       \
-	    : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x4A == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xB1 == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ?                                 \
-		    ( ( ( 0xB4 == ((U8*)s)[4] ) && ( 0x68 == ((U8*)s)[5] ) ) ? 6 : 4 )\
-		: 0 )                                                       \
-	    : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB4 == ((U8*)s)[2] ) ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xB8 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x52 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x46 == ((U8*)s)[2] ) ?                                     \
-		( ( ( ( 0xB8 == ((U8*)s)[3] ) && ( 0x53 == ((U8*)s)[4] ) ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-	    : ( 0x63 == ((U8*)s)[2] ) ?                                     \
-		( ( ( ( 0xB8 == ((U8*)s)[3] ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x46 == ((U8*)s)[5] || 0x52 == ((U8*)s)[5] || 0x54 == ((U8*)s)[5] || 0x65 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-	    : ( ( ( ( 0x72 == ((U8*)s)[2] ) && ( 0xB8 == ((U8*)s)[3] ) ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x65 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-	: 0 )                                                               \
-    : ( 0xBF == ((U8*)s)[0] ) ?                                             \
-	( ( 0x67 == ((U8*)s)[1] || 0x68 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-	: ( ( ( ( 0x6A == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x63 == ((U8*)s)[2] || 0x70 == ((U8*)s)[2] ) ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-    : 0 )                                                                   \
-: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )
+    ( ( 0x81 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
+: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
 
 /*
 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
@@ -1083,15 +1088,15 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ?                                  \
-	( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) ?                              \
-	    ( ( ( ( ((U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\
-	: ( ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
-    : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
+    ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ?                            \
+	( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) ?                        \
+	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\
+	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
+    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ?                                  \
-	( ( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
-    : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
+    ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ?                            \
+	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
+    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
 : 0 )
 
 /*
@@ -1101,27 +1106,27 @@
 */
 /*** GENERATED CODE ***/
 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
-( ( 0x8A == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x73 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8D == ((U8*)s)[0] || 0x9C == ((U8*)s)[0] || ( 0xB3 == ((U8*)s)[0] || 0xB4 == ((U8*)s)[0] ) ) ?\
-    ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8E == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xB8 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x53 == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xBF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x63 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x65 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x69 ) || 0x72 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x69 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x57 == ((U8*)s)[2] || 0x59 == ((U8*)s)[2] || 0x63 == ((U8*)s)[2] || 0x65 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x70 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
-    : ( 0x71 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) || 0x59 == ((U8*)s)[2] || ( ((U8*)s)[2] & 0xFE ) == 0x62 || ( 0x65 == ((U8*)s)[2] || 0x66 == ((U8*)s)[2] ) || 0x70 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x72 == ((U8*)s)[1] ) ?                                             \
-	( ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xFE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x53 || ((U8*)s)[2] == 0x59 || ( ( ((U8*)s)[2] & 0xFB ) == 0x62 ) || ((U8*)s)[2] == 0x65 ) ? 3 : 0 )\
-    : ( ( 0x73 == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xFE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x59 || ( ( ((U8*)s)[2] & 0xFE ) == 0x62 ) || ((U8*)s)[2] == 0x65 || ((U8*)s)[2] == 0x66 || ((U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x67 == ((U8*)s)[2] ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 )
+( ( 0x8A == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || ( 0xB3 == ((const U8*)s)[0] || 0xB4 == ((const U8*)s)[0] ) ) ?\
+    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x65 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x69 ) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x65 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\
+    : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) || 0x59 == ((const U8*)s)[2] || ( ((const U8*)s)[2] & 0xFE ) == 0x62 || ( 0x65 == ((const U8*)s)[2] || 0x66 == ((const U8*)s)[2] ) || 0x70 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xFE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x53 || ((const U8*)s)[2] == 0x59 || ( ( ((const U8*)s)[2] & 0xFB ) == 0x62 ) || ((const U8*)s)[2] == 0x65 ) ? 3 : 0 )\
+    : ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xFE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ( ( ((const U8*)s)[2] & 0xFE ) == 0x62 ) || ((const U8*)s)[2] == 0x65 || ((const U8*)s)[2] == 0x66 || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 )
 
 /*
 	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
@@ -1130,22 +1135,22 @@
 */
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
-( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\
-: ( 0x80 == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0x8A ) ?               \
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
-: ( 0x8D == ((U8*)s)[0] || 0x9C == ((U8*)s)[0] ) ?                          \
-    ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8E == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8F == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x67 == ((U8*)s)[1] || 0x73 == ((U8*)s)[1] ) ? 2 : 0 )              \
-: ( 0xB3 == ((U8*)s)[0] || 0xB4 == ((U8*)s)[0] ) ?                          \
-    ( ( 0x70 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xBF == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x63 == ((U8*)s)[1] ) && ( ( 0x65 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x69 ) || 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x67 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
+( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\
+: ( 0x80 == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0x8A ) ?   \
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
+: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] ) ?              \
+    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8F == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
+: ( 0xB3 == ((const U8*)s)[0] || 0xB4 == ((const U8*)s)[0] ) ?              \
+    ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( ( 0x65 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x69 ) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
@@ -1169,22 +1174,22 @@
 */
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
-( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\
-: ( 0x80 == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0x8A ) ?               \
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
-: ( 0x8D == ((U8*)s)[0] || 0x9C == ((U8*)s)[0] ) ?                          \
-    ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8E == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8F == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x67 == ((U8*)s)[1] || 0x73 == ((U8*)s)[1] ) ? 2 : 0 )              \
-: ( 0xAB == ((U8*)s)[0] || ( 0xB3 == ((U8*)s)[0] || 0xB4 == ((U8*)s)[0] ) ) ?\
-    ( ( 0x70 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xBF == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x63 == ((U8*)s)[1] ) && ( ( 0x65 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x69 ) || 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x67 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
+( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\
+: ( 0x80 == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0x8A ) ?   \
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
+: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] ) ?              \
+    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8F == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
+: ( 0xAB == ((const U8*)s)[0] || ( 0xB3 == ((const U8*)s)[0] || 0xB4 == ((const U8*)s)[0] ) ) ?\
+    ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( ( 0x65 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x69 ) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
@@ -1210,10 +1215,10 @@
 /*** GENERATED CODE ***/
 #define is_PATWS_safe(s,e,is_utf8)                                          \
 ( ( LIKELY((e) > (s)) ) ?                                                   \
-    ( ( ( ( ((U8*)s)[0] & 0xEF ) == 0x05 ) || ((U8*)s)[0] == 0x0B || ( ( ((U8*)s)[0] & 0xFE ) == 0x0C ) || ((U8*)s)[0] == 0x25 || ((U8*)s)[0] == 0x40 ) ? 1\
-    : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((U8*)s)[0] ) ) ? ( ( 0x41 == ((U8*)s)[1] ) ?\
-		    ( ( 0x55 == ((U8*)s)[2] || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\
-		: ( ( 0x42 == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\
+    ( ( ( ( ((const U8*)s)[0] & 0xEF ) == 0x05 ) || ((const U8*)s)[0] == 0x0B || ( ( ((const U8*)s)[0] & 0xFE ) == 0x0C ) || ((const U8*)s)[0] == 0x25 || ((const U8*)s)[0] == 0x40 ) ? 1\
+    : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
+		    ( ( 0x55 == ((const U8*)s)[2] || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
+		: ( ( 0x42 == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\
 : 0 )
 
 /*** GENERATED CODE ***/
@@ -1242,44 +1247,44 @@
 /*** GENERATED CODE ***/
 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
-    : ( ( ( ( is_utf8 ) && ( 0xCA == ((U8*)s)[0] ) ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
+    : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\
+    ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_LNBREAK_utf8_safe(s,e)                                           \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
-    : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
+    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\
+    ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_LNBREAK_latin1_safe(s,e)                                         \
 ( ((e)-(s) > 1) ?                                                           \
-    ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\
-    : ( 0x0D == ((U8*)s)[0] ) ?                                             \
-	( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 )                                 \
+    ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
+    : ( 0x0D == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 )                           \
     : 0 )                                                                   \
 : ((e)-(s) > 0) ?                                                           \
-    ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\
+    ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
 : 0 )
 
 /*
@@ -1289,15 +1294,15 @@
 */
 /*** GENERATED CODE ***/
 #define is_HORIZWS_high(s)                                                  \
-( ( 0xBD == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x62 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x56 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_HORIZWS_cp_high(cp)                                              \
@@ -1313,7 +1318,7 @@
 */
 /*** GENERATED CODE ***/
 #define is_VERTWS_high(s)                                                   \
-( ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_VERTWS_cp_high(cp)                                               \
@@ -1326,9 +1331,9 @@
 */
 /*** GENERATED CODE ***/
 #define is_XDIGIT_high(s)                                                   \
-( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) ? ( ( 0x66 == ((U8*)s)[2] ) ?\
-	    ( ( ( ( ((U8*)s)[3] & 0xF7 ) == 0x57 ) || ( ( ((U8*)s)[3] & 0xFE ) == 0x58 ) || ( ( ((U8*)s)[3] & 0xFE ) == 0x62 ) || ( ( ((U8*)s)[3] & 0xFC ) == 0x64 ) ) ? 4 : 0 )\
-	: ( ( 0x67 == ((U8*)s)[2] || 0x68 == ((U8*)s)[2] ) && ( 0x42 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 )
+( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
+	    ( ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0x57 ) || ( ( ((const U8*)s)[3] & 0xFE ) == 0x58 ) || ( ( ((const U8*)s)[3] & 0xFE ) == 0x62 ) || ( ( ((const U8*)s)[3] & 0xFC ) == 0x64 ) ) ? 4 : 0 )\
+	: ( ( 0x67 == ((const U8*)s)[2] || 0x68 == ((const U8*)s)[2] ) && ( 0x42 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 )
 
 /*** GENERATED CODE ***/
 #define is_XDIGIT_cp_high(cp)                                               \
@@ -1342,15 +1347,15 @@
 */
 /*** GENERATED CODE ***/
 #define is_XPERLSPACE_high(s)                                               \
-( ( 0xBD == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x62 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_XPERLSPACE_cp_high(cp)                                           \
@@ -1368,7 +1373,7 @@
 */
 /*** GENERATED CODE ***/
 #define is_REPLACEMENT_utf8_safe(s,e)                                       \
-( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((U8*)s)[0] ) ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x70 == ((U8*)s)[3] ) ) ? 4 : 0 )
+( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )
 
 /*
 	NONCHAR: Non character code points
@@ -1376,42 +1381,31 @@
 	\p{_Perl_Nchar}
 */
 /*** GENERATED CODE ***/
-#define is_NONCHAR_utf8(s)                                                  \
-( ( 0xDD == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x72 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x55 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
-	: ( 0x56 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
-	: ( ( 0x72 == ((U8*)s)[2] ) && ( 0x71 == ((U8*)s)[3] || 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : 0 )                                                                   \
-: ( 0xDF == ((U8*)s)[0] || 0xEA == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ?   \
-    ( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x71 == ((U8*)s)[3] || 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-: ( 0xED == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( ( ((U8*)s)[1] == 0x4A || ((U8*)s)[1] == 0x52 || ( ( ((U8*)s)[1] & 0xFD ) == 0x54 ) || ((U8*)s)[1] == 0x58 || ((U8*)s)[1] == 0x5F || ((U8*)s)[1] == 0x63 || ( ( ((U8*)s)[1] & 0xFD ) == 0x65 ) || ((U8*)s)[1] == 0x69 || ( ( ((U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) && ( 0x71 == ((U8*)s)[4] || 0x72 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-: ( ( ( ( ( 0xEE == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) && ( 0x71 == ((U8*)s)[4] || 0x72 == ((U8*)s)[4] ) ) ? 5 : 0 )
+#define is_NONCHAR_utf8_safe(s,e)                                           \
+( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
+	    ( ( 0x72 == ((const U8*)s)[1] ) ?                               \
+		( ( 0x55 == ((const U8*)s)[2] ) ?                           \
+		    ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
+		: ( 0x56 == ((const U8*)s)[2] ) ?                           \
+		    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
+		: ( ( 0x72 == ((const U8*)s)[2] ) && ( 0x71 == ((const U8*)s)[3] || 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	    : 0 )                                                           \
+	: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
+	    ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x71 == ((const U8*)s)[3] || 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0xED == ((const U8*)s)[0] ) ?                                   \
+	    ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( 0x71 == ((const U8*)s)[4] || 0x72 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( 0x71 == ((const U8*)s)[4] || 0x72 == ((const U8*)s)[4] ) ) ? 5 : 0 ) : 0 )
 
 /*
-	SURROGATE: Surrogate characters
+	SURROGATE: Surrogate code points
 
 	\p{_Perl_Surrogate}
 */
 /*** GENERATED CODE ***/
-#define is_SURROGATE_utf8(s)                                                \
-( ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( ( ((U8*)s)[1] & 0xFE ) == 0x64 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )
+#define is_SURROGATE_utf8_safe(s,e)                                         \
+( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( ( ((const U8*)s)[1] & 0xFE ) == 0x64 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )
 
 /*
-	UTF8_CHAR: Matches legal UTF-EBCDIC encoded characters from 2 through 3 bytes
-
-	0xA0 - 0x3FFF
-*/
-/*** GENERATED CODE ***/
-#define is_UTF8_CHAR_utf8_no_length_checks(s)                               \
-( ( 0x78 == ((U8*)s)[0] || 0x80 == ((U8*)s)[0] || ( 0x8A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xB5 ) ) ?\
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
-: ( ( ( ((U8*)s)[0] == 0xB7 || ( ( ((U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((U8*)s)[0] & 0xFC ) == 0xCC ) ) && ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )
-
-/*
 	QUOTEMETA: Meta-characters that \Q should quote
 
 	\p{_Perl_Quotemeta}
@@ -1418,73 +1412,73 @@
 */
 /*** GENERATED CODE ***/
 #define is_QUOTEMETA_high_part0(s)                                          \
-( ( 0x51 == ((U8*)s)[1] ) ?                                                 \
-	( ( 0x72 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 )
+( ( 0x41 == ((const U8*)s)[1] || ( 0x54 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ? 3 : 0 )\
+    : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x42 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x63 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
+    : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\
+    : ( ( 0x53 == ((const U8*)s)[1] ) && ( ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )
 
 
 /*** GENERATED CODE ***/
 #define is_QUOTEMETA_high_part1(s)                                          \
-( ( 0xBD == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x62 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x41 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
-    : ( ( 0x70 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x62 ) ) ? 3 : 0 )\
-: ( 0xBE == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x41 == ((U8*)s)[1] ) && ( 0x52 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] || ( 0x54 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ?\
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFE ) == 0x70 ) ? 3 : 0 )\
-    : ( 0x43 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x42 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x63 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
-    : ( 0x44 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\
-    : ( ( 0x53 == ((U8*)s)[1] ) && ( ( 0x57 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xCB == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x43 ) || ( 0x49 == ((U8*)s)[1] || 0x4A == ((U8*)s)[1] ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x68 ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ?\
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
-    : ( 0x69 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( ((U8*)s)[2] & 0xFE ) == 0x62 ) ? 3 : 0 )\
-    : ( ( 0x6A == ((U8*)s)[1] ) && ( ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xCC == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xCD == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( ( ((U8*)s)[1] & 0xF7 ) == 0x57 ) || ( ( ((U8*)s)[1] & 0xFE ) == 0x58 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xCE == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x41 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) || ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
-    : ( 0x42 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x41 == ((U8*)s)[2] || 0x57 == ((U8*)s)[2] ) ? 3 : 0 )          \
-    : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x45 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xDD == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x72 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x4A == ((U8*)s)[2] ) ?                                         \
-	    ( ( 0x71 == ((U8*)s)[3] || 0x72 == ((U8*)s)[3] ) ? 4 : 0 )      \
-	: ( 0x57 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
-	: ( 0x59 == ((U8*)s)[2] ) ?                                         \
-	    ( ( ( ((U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 )                  \
-	: ( 0x65 == ((U8*)s)[2] ) ?                                         \
-	    ( ( 0x72 == ((U8*)s)[3] ) ? 4 : 0 )                             \
-	: ( 0x70 == ((U8*)s)[2] ) ?                                         \
-	    ( ( 0x41 == ((U8*)s)[3] ) ? 4 : 0 )                             \
-	: ( ( 0x72 == ((U8*)s)[2] ) && ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 )\
+( ( 0xCB == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x43 ) || ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x68 ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
+    : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( ((const U8*)s)[2] & 0xFE ) == 0x62 ) ? 3 : 0 )\
+    : ( ( 0x6A == ((const U8*)s)[1] ) && ( ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
+: ( 0xCC == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
+: ( 0xCD == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( ( ((const U8*)s)[1] & 0xF7 ) == 0x57 ) || ( ( ((const U8*)s)[1] & 0xFE ) == 0x58 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
+: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) || ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xDD == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
+	    ( ( 0x71 == ((const U8*)s)[3] || 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )\
+	: ( 0x57 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
+	: ( 0x59 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( ((const U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 )            \
+	: ( 0x65 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
+	: ( 0x70 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
+	: ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 )\
     : 0 )                                                                   \
-: ( 0xDF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x56 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x46 == ((U8*)s)[2] ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\
-    : ( ( ( 0x62 == ((U8*)s)[1] ) && ( 0x52 == ((U8*)s)[2] ) ) && ( 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x68 ) ) ) ? 4 : 0 )\
-: ( ( ( ( ( 0xED == ((U8*)s)[0] ) && ( 0x6A == ((U8*)s)[1] ) ) && ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x59 ) || 0x5F == ((U8*)s)[4] || ( 0x62 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )
+: ( 0xDF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x46 == ((const U8*)s)[2] ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\
+    : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x68 ) ) ) ? 4 : 0 )\
+: ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )
 
 
 /*** GENERATED CODE ***/
 #define is_QUOTEMETA_high(s)                                                \
-( ( 0xAF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x56 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xB7 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x57 == ((U8*)s)[1] ) && ( 0x6A == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xBC == ((U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) )
+( ( 0xAF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBC == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBD == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
+    : ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0x62 ) ) ? 3 : 0 )\
+: ( 0xBE == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x41 == ((const U8*)s)[1] ) && ( 0x52 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) )
 
 /*
 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
@@ -1493,125 +1487,205 @@
 */
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
-( ( 0x81 == ((U8*)s)[0] ) ?                                                 \
-	( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x8E == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xAA == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0x6A == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xB3 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x58 == ((U8*)s)[1] || 0x65 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x67 == ((U8*)s)[1] ) && ( 0xAF == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xB4 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x42 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xAD == ((U8*)s)[2] ) && ( 0x5F == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x46 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x5F == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x4A == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB3 == ((U8*)s)[2] ) ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xBF == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0x66 ) ?                              \
-	    ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-	: ( ( ( ( 0x69 == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || 0x6A == ((U8*)s)[2] ) ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+( ( 0x86 == ((const U8*)s)[1] ) ?                                           \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
+( ( 0x88 == ((const U8*)s)[0] ) ?                                           \
+	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x8E == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0x6A == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
+		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
+		: 0 )                                                       \
+	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
+			( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\
+		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+		: 0 )                                                       \
+	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: 0 )                                                               \
+    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
+			( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\
+		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+		: ( 0x5F == ((const U8*)s)[3] ) ?                           \
+		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
+			( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 4 )\
+		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
+		: 0 )                                                       \
+	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
+		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
+		: 0 )                                                       \
+	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
+		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
+		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+	    : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+	: 0 )                                                               \
+    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0x66 ) ?                        \
+	    ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
     : 0 )
 
 
 /*** GENERATED CODE ***/
-#define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
+#define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
+( ( 0x81 == ((const U8*)s)[0] ) ?                                           \
+	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x88 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x8E == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0x6A == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0x66 ) ?                        \
+	    ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+    : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
 ( ((e)-(s) > 3) ?                                                           \
-    ( ( 0x81 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x8E == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xAA == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0x6A == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xB3 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x58 == ((U8*)s)[1] || 0x65 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x67 == ((U8*)s)[1] ) && ( 0xAF == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xB4 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x42 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xAD == ((U8*)s)[2] ) && ( 0x5F == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x46 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x5F == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x4A == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 )                         \
-	    : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB3 == ((U8*)s)[2] ) ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+    ( ( 0x81 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x88 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x8E == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0x6A == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
+	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
+		( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
+		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
+	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
     : 0 )                                                                   \
 : ((e)-(s) > 2) ?                                                           \
-    ( ( 0x81 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( ( ( 0xAA == ((U8*)s)[0] ) && ( 0x6A == ((U8*)s)[1] ) ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )\
+    ( ( 0x81 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] ) ?                                   \
+	    ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\
+	: ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( 0x88 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x89 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x91 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA2 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                \
+    : ( 0xA3 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ?          \
+	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] || 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )\
-    : ( ( 0xA2 == ((U8*)s)[0] ) && ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\
+    ( ( 0x86 == ((const U8*)s)[0] ) ?                                       \
+	( ( 0x86 == ((const U8*)s)[1] || 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\
+    : ( ( 0xA2 == ((const U8*)s)[0] ) && ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\
 : 0 )
 
 
@@ -1618,82 +1692,10 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
 ( ((e)-(s) > 5) ?                                                           \
-    ( ( 0x81 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x86 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x86 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 )      \
-	: ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )          \
-    : ( 0x88 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x89 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0x8E == ((U8*)s)[0] ) ?                                             \
-	( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0x91 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA2 == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 )                      \
-    : ( 0xA3 == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ?                      \
-	( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xAA == ((U8*)s)[0] ) ?                                             \
-	( ( ( 0x6A == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
-    : ( 0xB3 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ?                  \
-	    ( ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x58 == ((U8*)s)[1] || 0x65 == ((U8*)s)[1] ) ?                  \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ?                                 \
-		    ( ( ( 0xB3 == ((U8*)s)[4] ) && ( 0x67 == ((U8*)s)[5] ) ) ? 6 : 4 )\
-		: 0 )                                                       \
-	    : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x67 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x49 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xAD == ((U8*)s)[4] ) ?                             \
-			( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\
-		    : ( ( 0xAF == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-		: 0 )                                                       \
-	    : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: 0 )                                                               \
-    : ( 0xB4 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x42 == ((U8*)s)[1] ) ?                                         \
-	    ( ( ( 0xAD == ((U8*)s)[2] ) && ( 0x5F == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x46 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAD == ((U8*)s)[2] ) ?                                     \
-		( ( 0x49 == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xAD == ((U8*)s)[4] ) ?                             \
-			( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\
-		    : ( ( 0xAF == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-		: ( 0x5F == ((U8*)s)[3] ) ?                                 \
-		    ( ( 0xAD == ((U8*)s)[4] ) ?                             \
-			( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 4 )\
-		    : ( ( 0xAF == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 4 )\
-		: 0 )                                                       \
-	    : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( 0x4A == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0xAF == ((U8*)s)[2] ) ?                                     \
-		( ( 0x43 == ((U8*)s)[3] ) ?                                 \
-		    ( ( ( 0xB3 == ((U8*)s)[4] ) && ( 0x67 == ((U8*)s)[5] ) ) ? 6 : 4 )\
-		: 0 )                                                       \
-	    : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-	: ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB3 == ((U8*)s)[2] ) ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\
-    : ( 0xB7 == ((U8*)s)[0] ) ?                                             \
-	( ( 0x52 == ((U8*)s)[1] ) ?                                         \
-	    ( ( 0x46 == ((U8*)s)[2] ) ?                                     \
-		( ( ( ( 0xB7 == ((U8*)s)[3] ) && ( 0x53 == ((U8*)s)[4] ) ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-	    : ( 0x62 == ((U8*)s)[2] ) ?                                     \
-		( ( ( ( 0xB7 == ((U8*)s)[3] ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x46 == ((U8*)s)[5] || 0x52 == ((U8*)s)[5] || 0x54 == ((U8*)s)[5] || 0x64 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-	    : ( ( ( ( 0x71 == ((U8*)s)[2] ) && ( 0xB7 == ((U8*)s)[3] ) ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x64 == ((U8*)s)[5] ) ) ? 6 : 0 )\
-	: 0 )                                                               \
-    : ( 0xBF == ((U8*)s)[0] ) ?                                             \
-	( ( ( ((U8*)s)[1] & 0xFE ) == 0x66 ) ?                              \
-	    ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-	: ( ( ( ( 0x69 == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || 0x6A == ((U8*)s)[2] ) ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\
-    : 0 )                                                                   \
-: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )
+    ( ( 0x81 == ((const U8*)s)[0] ) ?                                       \
+	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+    : ( 0x86 == ((const U8*)s)[0] ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
+: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
 
 /*
 	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
@@ -1703,15 +1705,15 @@
 /*** GENERATED CODE ***/
 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
 ( ((e)-(s) > 2) ?                                                           \
-    ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ?                                  \
-	( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) ?                              \
-	    ( ( ( ( ((U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\
-	: ( ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
-    : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
+    ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ?                            \
+	( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) ?                        \
+	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\
+	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
+    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
 : ((e)-(s) > 1) ?                                                           \
-    ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ?                                  \
-	( ( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
-    : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
+    ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ?                            \
+	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\
+    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\
 : 0 )
 
 /*
@@ -1721,27 +1723,27 @@
 */
 /*** GENERATED CODE ***/
 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
-( ( 0x80 == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x72 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8C == ((U8*)s)[0] || 0x9B == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0xB2 ) ?\
-    ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8D == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xB7 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x53 == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
-: ( 0xBF == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x62 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x68 ) || 0x71 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x68 == ((U8*)s)[1] ) ?                                             \
-	( ( 0x57 == ((U8*)s)[2] || 0x59 == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || 0x64 == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x6A == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
-    : ( 0x70 == ((U8*)s)[1] ) ?                                             \
-	( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) || 0x59 == ((U8*)s)[2] || 0x5F == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || ( ((U8*)s)[2] & 0xFE ) == 0x64 || 0x6A == ((U8*)s)[2] ) ? 3 : 0 )\
-    : ( 0x71 == ((U8*)s)[1] ) ?                                             \
-	( ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xDE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x53 || ((U8*)s)[2] == 0x59 || ((U8*)s)[2] == 0x5F ) ? 3 : 0 )\
-    : ( ( 0x72 == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xDE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x59 || ((U8*)s)[2] == 0x5F || ( ( ((U8*)s)[2] & 0xF7 ) == 0x62 ) ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x71 == ((U8*)s)[1] ) ) && ( 0x66 == ((U8*)s)[2] ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x65 ) ) ) ? 4 : 0 )
+( ( 0x80 == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0xB2 ) ?\
+    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x68 ) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x68 == ((const U8*)s)[1] ) ?                                       \
+	( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\
+    : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || ( ((const U8*)s)[2] & 0xFE ) == 0x64 || 0x6A == ((const U8*)s)[2] ) ? 3 : 0 )\
+    : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x53 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F ) ? 3 : 0 )\
+    : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x62 ) ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x65 ) ) ) ? 4 : 0 )
 
 /*
 	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
@@ -1750,22 +1752,22 @@
 */
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
-( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x5C ) || ((U8*)s)[0] == 0x5E || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x6C ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ((U8*)s)[0] == 0xB0 || ( ( ((U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\
-: ( 0x78 == ((U8*)s)[0] || 0x80 == ((U8*)s)[0] || 0x8A == ((U8*)s)[0] ) ?   \
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
-: ( 0x8C == ((U8*)s)[0] || 0x9B == ((U8*)s)[0] ) ?                          \
-    ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8D == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8E == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x66 == ((U8*)s)[1] || 0x72 == ((U8*)s)[1] ) ? 2 : 0 )              \
-: ( ( ((U8*)s)[0] & 0xFE ) == 0xB2 ) ?                                      \
-    ( ( 0x6A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xBF == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x62 == ((U8*)s)[1] ) && ( ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x68 ) || 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x71 == ((U8*)s)[1] ) ) && ( 0x66 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
+( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x5C ) || ((const U8*)s)[0] == 0x5E || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x6C ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ((const U8*)s)[0] == 0xB0 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\
+: ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
+: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] ) ?              \
+    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
+: ( ( ((const U8*)s)[0] & 0xFE ) == 0xB2 ) ?                                \
+    ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x68 ) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
@@ -1789,22 +1791,22 @@
 */
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
-( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x5C ) || ((U8*)s)[0] == 0x5E || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x6C ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ((U8*)s)[0] == 0xB0 || ( ( ((U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\
-: ( 0x78 == ((U8*)s)[0] || 0x80 == ((U8*)s)[0] || 0x8A == ((U8*)s)[0] ) ?   \
-    ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
-: ( 0x8C == ((U8*)s)[0] || 0x9B == ((U8*)s)[0] ) ?                          \
-    ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8D == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0x8E == ((U8*)s)[0] ) ?                                                 \
-    ( ( 0x66 == ((U8*)s)[1] || 0x72 == ((U8*)s)[1] ) ? 2 : 0 )              \
-: ( 0xAA == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0xB2 ) ?               \
-    ( ( 0x6A == ((U8*)s)[1] ) ? 2 : 0 )                                     \
-: ( 0xBF == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x62 == ((U8*)s)[1] ) && ( ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x68 ) || 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xCA == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x71 == ((U8*)s)[1] ) ) && ( 0x66 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
+( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x5C ) || ((const U8*)s)[0] == 0x5E || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x6C ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ((const U8*)s)[0] == 0xB0 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\
+: ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
+: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] ) ?              \
+    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
+: ( 0xAA == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0xB2 ) ?   \
+    ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
+: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x68 ) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 )
 
 /*** GENERATED CODE ***/
 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
@@ -1830,10 +1832,10 @@
 /*** GENERATED CODE ***/
 #define is_PATWS_safe(s,e,is_utf8)                                          \
 ( ( LIKELY((e) > (s)) ) ?                                                   \
-    ( ( ( ( ((U8*)s)[0] & 0xEF ) == 0x05 ) || ((U8*)s)[0] == 0x0B || ( ( ((U8*)s)[0] & 0xFE ) == 0x0C ) || ((U8*)s)[0] == 0x25 || ((U8*)s)[0] == 0x40 ) ? 1\
-    : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((U8*)s)[0] ) ) ? ( ( 0x41 == ((U8*)s)[1] ) ?\
-		    ( ( 0x55 == ((U8*)s)[2] || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\
-		: ( ( 0x42 == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\
+    ( ( ( ( ((const U8*)s)[0] & 0xEF ) == 0x05 ) || ((const U8*)s)[0] == 0x0B || ( ( ((const U8*)s)[0] & 0xFE ) == 0x0C ) || ((const U8*)s)[0] == 0x25 || ((const U8*)s)[0] == 0x40 ) ? 1\
+    : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
+		    ( ( 0x55 == ((const U8*)s)[2] || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
+		: ( ( 0x42 == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\
 : 0 )
 
 /*** GENERATED CODE ***/
@@ -1852,52 +1854,52 @@
 #endif /* H_REGCHARCLASS */
 
 /* Generated from:
- * cb3170dd603ad12ba0299440e99e8f50a8afde60ade2ffcbf1ff4a8a53854b90 lib/Unicode/UCD.pm
- * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt
- * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt
- * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt
- * 288fc7b85c76bda296e296c8465f1f4baeb456cb814430dfaa0f546bfbe86b4a lib/unicore/Blocks.txt
- * 86e075f2ede997b3fa5965516c75190b5a88bb82d302272d9c3179b7a57af03f lib/unicore/CaseFolding.txt
- * 2fafee5be73bf2817ee669c53c504a6c4aa02ac7344194af18511aea2e05d750 lib/unicore/CompositionExclusions.txt
- * 302f6d6171dc9c6165db86d0226b7923a64cea06c493d339d35436bf137606a3 lib/unicore/DAge.txt
- * ff666dece87dfdbdbf04a2e26a0bfb52c4ba98db1f8965b0b01ddb9e15f97476 lib/unicore/DCoreProperties.txt
- * 6cc76100d402d7dd12bd769ac61158b91e71aad58c8333abb848f1b9c9fdde2d lib/unicore/DNormalizationProps.txt
- * ccc571829b384b8a2c24b7a62f8aa6a891a6e8c48f08513ef84fd6da26dba4bb lib/unicore/EastAsianWidth.txt
- * 2320db06cf88c755ec7b9cfec96dd9e1d774173521dbc3ee7985377c2ab90d32 lib/unicore/HangulSyllableType.txt
- * e52216b5fdb04910e06e94f01cabdf70656b0077c92b756c7b38822626d572f2 lib/unicore/IndicPositionalCategory.txt
- * 4db71a39102e173095cb8bda8b4c35e78fe6b365e443c584b19f081d8c4894fc lib/unicore/IndicSyllabicCategory.txt
- * eeb30346bb545bb45ff16486d9234397bfe1a195bb12b54fc1d9f48f87e8aa5e lib/unicore/Jamo.txt
- * 13e2b7087bcca3163272e64e34e480534bd2f8353a0245c26e6642566f59a60d lib/unicore/LineBreak.txt
- * 9bb54cd7b5509779f269fa60341bcbfca8da8f17d3c4999e44a5a51671d3c402 lib/unicore/NameAliases.txt
- * e4c29d9ceefbe2382af819ac7646265a9e4ea599ce04a90d31bec97cfaa2848f lib/unicore/NamedSequences.txt
- * 70d40297f1bf91397fbdab5a770c12100733e67c5c3398446c5e950715d5e535 lib/unicore/PropList.txt
- * 03a440f2a4b9151043a6bb53d4a4e528b73238079f9d686dc2a5846e6895588a lib/unicore/PropValueAliases.txt
- * 8e8b48c2080d31aa6713f5535aad94a1f7bc9a65cc52563724e5e69b0a3b4196 lib/unicore/PropertyAliases.txt
- * 45d42b1ecbac2263c1c63c95104e63ea64313eb99be94542e040aea11c449f6c lib/unicore/ScriptExtensions.txt
- * 79fbd73ad82c30fdb67d36a349d12667bd58d3e9da6a8ce7dd26383b637ba85f lib/unicore/Scripts.txt
- * fb2025dae3b9b17649b6e379c1cdbddf50641267ca6d2446caeccf4a141fe167 lib/unicore/SpecialCasing.txt
- * 38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20 lib/unicore/UnicodeData.txt
- * 0cedd6e0f5cadf57ce9cfc96beccfd083b0faa0809a631a777cd25f0316bfabb lib/unicore/auxiliary/GCBTest.txt
- * 230005412f9a47128e37bc52330766aaa0b5522a53737a89cff66e891e14527a lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * 149b14ab93b06c887a958fb16d0ad01193063ef69cc14f10338ae4d0accd6c28 lib/unicore/auxiliary/LBTest.txt
- * 41bf82452d71ce15eda8c9bb1bb0c20b72205acaaf503e3cb84734ed8e85d33a lib/unicore/auxiliary/SBTest.txt
- * d3b45cdb0a73eeb9d25158336583dfc1e6f64da59537acb0008988b40e6b3b63 lib/unicore/auxiliary/SentenceBreakProperty.txt
- * a661f42a54f7cc4dded72a61c508be2b482f912d4b6cf140335010f0c684dbb9 lib/unicore/auxiliary/WBTest.txt
- * c255bd2e1f163373510679bf4b272eee97b635bfce2a6550d6c10fe5c917f01a lib/unicore/auxiliary/WordBreakProperty.txt
- * 16dac6f1c164a4f52741b71221a8aafb6acb52cd8a436af139da6e93d86efdfb lib/unicore/extracted/DBidiClass.txt
- * c4e78efc041668548117f7462af03b28dfbb2caca5d46a1ae78ae0ce0bb26c4a lib/unicore/extracted/DBinaryProperties.txt
- * 5886bb44aae8f2821663f742793cb91d4ed0923c6840f3bfb73530e37030abf8 lib/unicore/extracted/DCombiningClass.txt
- * 9edba3785ed0e6e46e10f67e2dd0ec3cb0799b7f75f526fe918429576060352e lib/unicore/extracted/DDecompositionType.txt
- * b774387f79b27ae4268ae89450f971408dc9bbbb523426482ab4375c962bd922 lib/unicore/extracted/DEastAsianWidth.txt
- * ba4207d2464077e807b20caf063041142afc0a8a38c328c5c23b3417c9f2da33 lib/unicore/extracted/DGeneralCategory.txt
- * 29fdd151266595eb1b37715937afe0727bb632a2bc1130f0d2314040175df82e lib/unicore/extracted/DJoinGroup.txt
- * 7725fe247da06986e43e89fd316b8b22a0619546d0c1ed499a94b25e9164c150 lib/unicore/extracted/DJoinType.txt
- * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt
- * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt
- * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt
- * 285aef7ed2bf69724b1fa9bba177640636f666e1a5dd0ba5e538d4790129bbfe lib/unicore/mktables
- * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version
+ * 59e717586b720a821ee0d7397679d5322e38b49f6fb7840545aedf669c733b70 lib/Unicode/UCD.pm
+ * 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 lib/unicore/ArabicShaping.txt
+ * 153f0a100c315f9f3945e78f57137611d36c44b3a975919c499fd403413fede8 lib/unicore/BidiBrackets.txt
+ * fbe806975c1bf9fc9960bbaa39ff6290c42c7da8315f9cd459109b024cc1c485 lib/unicore/BidiMirroring.txt
+ * 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 lib/unicore/Blocks.txt
+ * 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 lib/unicore/CaseFolding.txt
+ * 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee lib/unicore/CompositionExclusions.txt
+ * 5cb15b04693c43df16e0d304deca049e93b001445d163184e0ff1b7c8c852146 lib/unicore/DAge.txt
+ * 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b lib/unicore/DCoreProperties.txt
+ * 02d8e12cea7c61a9f3cc5fbf8eaceadf8da23fe83d60c64cf647088830b810cc lib/unicore/DNormalizationProps.txt
+ * 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 lib/unicore/EastAsianWidth.txt
+ * cb02ff25c375e78c82afffc852180eae7fc17c2f4434e697107720d05c52b26e lib/unicore/HangulSyllableType.txt
+ * 850043bc9db08eddb271e43ed9176b865df76745a5fb6e9a4a1d9e54e5036471 lib/unicore/IndicPositionalCategory.txt
+ * 90a3a00a5f5810850986c9279849b03c2f3133cfeeefb0554e851dd5ad7324dc lib/unicore/IndicSyllabicCategory.txt
+ * bbd36a8d27f76e0fe0f2b0ca2827ac80da4b4a8d5247f0b0670fcaaac68ae6e1 lib/unicore/Jamo.txt
+ * e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad lib/unicore/LineBreak.txt
+ * 9d5353b1d318e72a63a49aa6a6a051d350382ea44b2cf31fe925bb94ce7e129b lib/unicore/NameAliases.txt
+ * 009477f536f63016d901aeb1a4c820ad291e30e72ee9eb9ac1dfb6294a8a9bcc lib/unicore/NamedSequences.txt
+ * f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 lib/unicore/PropList.txt
+ * 56582d9875c1997876cf09305ccfc83448195de5d84d6374c78efaffeca4dfd7 lib/unicore/PropValueAliases.txt
+ * 047ab0f815b6d1b30a863d6fcbd49e6358e168a3bd6c7189e80ab9863957d222 lib/unicore/PropertyAliases.txt
+ * cde011921972dffe3e30dcbc7afbf069bf2eb01269097111dd7533b4c524caac lib/unicore/ScriptExtensions.txt
+ * fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d lib/unicore/Scripts.txt
+ * dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 lib/unicore/SpecialCasing.txt
+ * 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f lib/unicore/UnicodeData.txt
+ * c76e7ed44a602f85161758ec54d2bcbcb7baf38f97720605a3e81ce02af47061 lib/unicore/auxiliary/GCBTest.txt
+ * 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 0c609ae4a32a89905c004010ef29885df3c60a941311a1a6e16003333d7fcdc8 lib/unicore/auxiliary/LBTest.txt
+ * 26afdd5f38561167807b0f191af55b05761029ae6be2b7fe85b88f28effc66b5 lib/unicore/auxiliary/SBTest.txt
+ * 53982766eeaf26674e7e2ec956c52846d52992ea9f4f1a202d488fb5cd76dd10 lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 7f60beacc5ec5671edb56db36defc90cfc0016de4fd2bdfde7a3e4ec209840ce lib/unicore/auxiliary/WBTest.txt
+ * cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 73573a4bee7f7377d936bc1710cd578001d00ba516e72ee54e906ae51a8c1fcb lib/unicore/extracted/DBidiClass.txt
+ * ae8f55d8bb2bb69a63f70eef38cf5921fc3ba8e06d4d88f37950d32313a14754 lib/unicore/extracted/DBinaryProperties.txt
+ * cf263ac4848d47264300139f97ed15c2c22896d2cef411483cbe292098c08bea lib/unicore/extracted/DCombiningClass.txt
+ * 5bac89caf8d1fa23fcbbbf4d49ea0699b680ef1a73cbfa0daaac38c993906a74 lib/unicore/extracted/DDecompositionType.txt
+ * e17138d36cd91f0e0d16437780a887c5ac637bde0de370b96f08a3424fcc322f lib/unicore/extracted/DEastAsianWidth.txt
+ * fad25c183f4d439622c6be33c22ed709cdc4ac19feef0250527cf319a06952fe lib/unicore/extracted/DGeneralCategory.txt
+ * c0d080b188fbe67dead10a3897dd2ca23da862c7f0b03508a92dcf27cd7e1f41 lib/unicore/extracted/DJoinGroup.txt
+ * 3a8f8642084ed23b0de52af72dea0ff3d0b6928e6c7442832c663899e2b85e9d lib/unicore/extracted/DJoinType.txt
+ * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt
+ * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt
+ * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt
+ * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d lib/unicore/mktables
+ * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl
- * d9c04ac46bdd81bb3e26519f2b8eb6242cb12337205add3f7cf092b0c58dccc4 regen/regcharclass.pl
+ * c468aea5062ef84422219d74e83b6f3216f2823544b445f53ee1af71deeb2044 regen/regcharclass.pl
  * 393f8d882713a3ba227351ad0f00ea4839fda74fcf77dcd1cdf31519925adba5 regen/regcharclass_multi_char_folds.pl
  * ex: set ro: */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -107,8 +107,7 @@
                                    Used to make it easier to clone and free arbitrary
                                    data that the regops need. Often the ARG field of
                                    a regop is an index into this structure */
-	struct reg_code_block *code_blocks;/* positions of literal (?{}) */
-	int num_code_blocks;	/* size of code_blocks[] */
+	struct reg_code_blocks *code_blocks;/* positions of literal (?{}) */
 	regnode program[1];	/* Unwarranted chumminess with compiler. */
 } regexp_internal;
 
@@ -522,7 +521,7 @@
                |ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD))   \
              == ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD)
 
-/* Spare:                                       0x10 */
+/* Spare: Be sure to change ANYOF_FLAGS_ALL if this gets used  0x10 */
 
 /* If set, the node matches every code point NUM_ANYOF_CODE_POINTS and above.
  * Can be in an SSC */
@@ -1054,7 +1053,7 @@
 /* get_sv() can return NULL during global destruction. */
 #define GET_RE_DEBUG_FLAGS DEBUG_r({ \
         SV * re_debug_flags_sv = NULL; \
-        re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, 1) : NULL; \
+        re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, GV_ADD) : NULL; \
         if (re_debug_flags_sv) { \
             if (!SvIOK(re_debug_flags_sv)) \
                 sv_setuv(re_debug_flags_sv, RE_DEBUG_COMPILE_DUMP | RE_DEBUG_EXECUTE_MASK ); \

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -85,7 +85,15 @@
     REGEXP *src_regex;
 };
 
+/* array of reg_code_block's plus header info */
 
+struct reg_code_blocks {
+    int refcnt; /* we may be pointed to from a regex and from the savestack */
+    int  count;    /* how many code blocks */
+    struct reg_code_block *cb; /* array of reg_code_block's */
+};
+
+
 /*
   The regexp/REGEXP struct, see L<perlreapi> for further documentation
   on the individual fields. The struct is ordered so that the most
@@ -262,7 +270,7 @@
 */
 
 #define SvRX(sv)   (Perl_get_re_arg(aTHX_ sv))
-#define SvRXOK(sv) (Perl_get_re_arg(aTHX_ sv) ? TRUE : FALSE)
+#define SvRXOK(sv) cBOOL(Perl_get_re_arg(aTHX_ sv))
 
 
 /* Flags stored in regexp->extflags
@@ -278,25 +286,26 @@
 
 #include "op_reg_common.h"
 
-#define RXf_PMf_STD_PMMOD	(RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_NOCAPTURE)
+#define RXf_PMf_STD_PMMOD	(RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_NOCAPTURE)
 
 #define CASE_STD_PMMOD_FLAGS_PARSE_SET(pmfl, x_count)                       \
     case IGNORE_PAT_MOD:    *(pmfl) |= RXf_PMf_FOLD;       break;           \
     case MULTILINE_PAT_MOD: *(pmfl) |= RXf_PMf_MULTILINE;  break;           \
     case SINGLE_PAT_MOD:    *(pmfl) |= RXf_PMf_SINGLELINE; break;           \
-    case XTENDED_PAT_MOD:   *(pmfl) |= RXf_PMf_EXTENDED; (x_count)++; break;\
+    case XTENDED_PAT_MOD:   if (x_count == 0) {                             \
+                                *(pmfl) |= RXf_PMf_EXTENDED;                \
+                                *(pmfl) &= ~RXf_PMf_EXTENDED_MORE;          \
+                            }                                               \
+                            else {                                          \
+                                *(pmfl) |= RXf_PMf_EXTENDED                 \
+                                          |RXf_PMf_EXTENDED_MORE;           \
+                            }                                               \
+                            (x_count)++; break;                             \
     case NOCAPTURE_PAT_MOD: *(pmfl) |= RXf_PMf_NOCAPTURE; break;
 
-#define STD_PMMOD_FLAGS_PARSE_X_WARN(x_count)                                   \
-    if (UNLIKELY((x_count) > 1)) {                                              \
-        Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_REGEXP),         \
-                    "Having more than one /%c regexp modifier is deprecated",   \
-                    XTENDED_PAT_MOD);                                           \
-    }
-
 /* Note, includes charset ones, assumes 0 is the default for them */
 #define STD_PMMOD_FLAGS_CLEAR(pmfl)                        \
-    *(pmfl) &= ~(RXf_PMf_FOLD|RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_EXTENDED|RXf_PMf_CHARSET|RXf_PMf_NOCAPTURE)
+    *(pmfl) &= ~(RXf_PMf_FOLD|RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_CHARSET|RXf_PMf_NOCAPTURE)
 
 /* chars and strings used as regex pattern modifiers
  * Singular is a 'c'har, plural is a "string"
@@ -358,9 +367,8 @@
  */
 
 /*
-  Set in Perl_pmruntime if op_flags & OPf_SPECIAL, i.e. split. Will
-  be used by regex engines to check whether they should set
-  RXf_SKIPWHITE
+  Set in Perl_pmruntime for a split. Will be used by regex engines to
+  check whether they should set RXf_SKIPWHITE
 */
 #define RXf_SPLIT   RXf_PMf_SPLIT
 

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regnodes.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regnodes.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regnodes.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -7,7 +7,7 @@
 /* Regops and State definitions */
 
 #define REGNODE_MAX           	92
-#define REGMATCH_STATE_MAX    	132
+#define REGMATCH_STATE_MAX    	134
 
 #define	END                   	0	/* 0000 End of program. */
 #define	SUCCEED               	1	/* 0x01 Return from a subroutine, basically. */
@@ -107,44 +107,46 @@
 	/* ------------ States ------------- */
 #define	TRIE_next             	(REGNODE_MAX + 1)	/* state for TRIE */
 #define	TRIE_next_fail        	(REGNODE_MAX + 2)	/* state for TRIE */
-#define	EVAL_AB               	(REGNODE_MAX + 3)	/* state for EVAL */
-#define	EVAL_AB_fail          	(REGNODE_MAX + 4)	/* state for EVAL */
-#define	CURLYX_end            	(REGNODE_MAX + 5)	/* state for CURLYX */
-#define	CURLYX_end_fail       	(REGNODE_MAX + 6)	/* state for CURLYX */
-#define	WHILEM_A_pre          	(REGNODE_MAX + 7)	/* state for WHILEM */
-#define	WHILEM_A_pre_fail     	(REGNODE_MAX + 8)	/* state for WHILEM */
-#define	WHILEM_A_min          	(REGNODE_MAX + 9)	/* state for WHILEM */
-#define	WHILEM_A_min_fail     	(REGNODE_MAX + 10)	/* state for WHILEM */
-#define	WHILEM_A_max          	(REGNODE_MAX + 11)	/* state for WHILEM */
-#define	WHILEM_A_max_fail     	(REGNODE_MAX + 12)	/* state for WHILEM */
-#define	WHILEM_B_min          	(REGNODE_MAX + 13)	/* state for WHILEM */
-#define	WHILEM_B_min_fail     	(REGNODE_MAX + 14)	/* state for WHILEM */
-#define	WHILEM_B_max          	(REGNODE_MAX + 15)	/* state for WHILEM */
-#define	WHILEM_B_max_fail     	(REGNODE_MAX + 16)	/* state for WHILEM */
-#define	BRANCH_next           	(REGNODE_MAX + 17)	/* state for BRANCH */
-#define	BRANCH_next_fail      	(REGNODE_MAX + 18)	/* state for BRANCH */
-#define	CURLYM_A              	(REGNODE_MAX + 19)	/* state for CURLYM */
-#define	CURLYM_A_fail         	(REGNODE_MAX + 20)	/* state for CURLYM */
-#define	CURLYM_B              	(REGNODE_MAX + 21)	/* state for CURLYM */
-#define	CURLYM_B_fail         	(REGNODE_MAX + 22)	/* state for CURLYM */
-#define	IFMATCH_A             	(REGNODE_MAX + 23)	/* state for IFMATCH */
-#define	IFMATCH_A_fail        	(REGNODE_MAX + 24)	/* state for IFMATCH */
-#define	CURLY_B_min_known     	(REGNODE_MAX + 25)	/* state for CURLY */
-#define	CURLY_B_min_known_fail	(REGNODE_MAX + 26)	/* state for CURLY */
-#define	CURLY_B_min           	(REGNODE_MAX + 27)	/* state for CURLY */
-#define	CURLY_B_min_fail      	(REGNODE_MAX + 28)	/* state for CURLY */
-#define	CURLY_B_max           	(REGNODE_MAX + 29)	/* state for CURLY */
-#define	CURLY_B_max_fail      	(REGNODE_MAX + 30)	/* state for CURLY */
-#define	COMMIT_next           	(REGNODE_MAX + 31)	/* state for COMMIT */
-#define	COMMIT_next_fail      	(REGNODE_MAX + 32)	/* state for COMMIT */
-#define	MARKPOINT_next        	(REGNODE_MAX + 33)	/* state for MARKPOINT */
-#define	MARKPOINT_next_fail   	(REGNODE_MAX + 34)	/* state for MARKPOINT */
-#define	SKIP_next             	(REGNODE_MAX + 35)	/* state for SKIP */
-#define	SKIP_next_fail        	(REGNODE_MAX + 36)	/* state for SKIP */
-#define	CUTGROUP_next         	(REGNODE_MAX + 37)	/* state for CUTGROUP */
-#define	CUTGROUP_next_fail    	(REGNODE_MAX + 38)	/* state for CUTGROUP */
-#define	KEEPS_next            	(REGNODE_MAX + 39)	/* state for KEEPS */
-#define	KEEPS_next_fail       	(REGNODE_MAX + 40)	/* state for KEEPS */
+#define	EVAL_B                	(REGNODE_MAX + 3)	/* state for EVAL */
+#define	EVAL_B_fail           	(REGNODE_MAX + 4)	/* state for EVAL */
+#define	EVAL_postponed_AB     	(REGNODE_MAX + 5)	/* state for EVAL */
+#define	EVAL_postponed_AB_fail	(REGNODE_MAX + 6)	/* state for EVAL */
+#define	CURLYX_end            	(REGNODE_MAX + 7)	/* state for CURLYX */
+#define	CURLYX_end_fail       	(REGNODE_MAX + 8)	/* state for CURLYX */
+#define	WHILEM_A_pre          	(REGNODE_MAX + 9)	/* state for WHILEM */
+#define	WHILEM_A_pre_fail     	(REGNODE_MAX + 10)	/* state for WHILEM */
+#define	WHILEM_A_min          	(REGNODE_MAX + 11)	/* state for WHILEM */
+#define	WHILEM_A_min_fail     	(REGNODE_MAX + 12)	/* state for WHILEM */
+#define	WHILEM_A_max          	(REGNODE_MAX + 13)	/* state for WHILEM */
+#define	WHILEM_A_max_fail     	(REGNODE_MAX + 14)	/* state for WHILEM */
+#define	WHILEM_B_min          	(REGNODE_MAX + 15)	/* state for WHILEM */
+#define	WHILEM_B_min_fail     	(REGNODE_MAX + 16)	/* state for WHILEM */
+#define	WHILEM_B_max          	(REGNODE_MAX + 17)	/* state for WHILEM */
+#define	WHILEM_B_max_fail     	(REGNODE_MAX + 18)	/* state for WHILEM */
+#define	BRANCH_next           	(REGNODE_MAX + 19)	/* state for BRANCH */
+#define	BRANCH_next_fail      	(REGNODE_MAX + 20)	/* state for BRANCH */
+#define	CURLYM_A              	(REGNODE_MAX + 21)	/* state for CURLYM */
+#define	CURLYM_A_fail         	(REGNODE_MAX + 22)	/* state for CURLYM */
+#define	CURLYM_B              	(REGNODE_MAX + 23)	/* state for CURLYM */
+#define	CURLYM_B_fail         	(REGNODE_MAX + 24)	/* state for CURLYM */
+#define	IFMATCH_A             	(REGNODE_MAX + 25)	/* state for IFMATCH */
+#define	IFMATCH_A_fail        	(REGNODE_MAX + 26)	/* state for IFMATCH */
+#define	CURLY_B_min_known     	(REGNODE_MAX + 27)	/* state for CURLY */
+#define	CURLY_B_min_known_fail	(REGNODE_MAX + 28)	/* state for CURLY */
+#define	CURLY_B_min           	(REGNODE_MAX + 29)	/* state for CURLY */
+#define	CURLY_B_min_fail      	(REGNODE_MAX + 30)	/* state for CURLY */
+#define	CURLY_B_max           	(REGNODE_MAX + 31)	/* state for CURLY */
+#define	CURLY_B_max_fail      	(REGNODE_MAX + 32)	/* state for CURLY */
+#define	COMMIT_next           	(REGNODE_MAX + 33)	/* state for COMMIT */
+#define	COMMIT_next_fail      	(REGNODE_MAX + 34)	/* state for COMMIT */
+#define	MARKPOINT_next        	(REGNODE_MAX + 35)	/* state for MARKPOINT */
+#define	MARKPOINT_next_fail   	(REGNODE_MAX + 36)	/* state for MARKPOINT */
+#define	SKIP_next             	(REGNODE_MAX + 37)	/* state for SKIP */
+#define	SKIP_next_fail        	(REGNODE_MAX + 38)	/* state for SKIP */
+#define	CUTGROUP_next         	(REGNODE_MAX + 39)	/* state for CUTGROUP */
+#define	CUTGROUP_next_fail    	(REGNODE_MAX + 40)	/* state for CUTGROUP */
+#define	KEEPS_next            	(REGNODE_MAX + 41)	/* state for KEEPS */
+#define	KEEPS_next_fail       	(REGNODE_MAX + 42)	/* state for KEEPS */
 
 /* PL_regkind[] What type of regop or state is this. */
 
@@ -248,8 +250,10 @@
 	/* ------------ States ------------- */
 	TRIE,     	/* TRIE_next              */
 	TRIE,     	/* TRIE_next_fail         */
-	EVAL,     	/* EVAL_AB                */
-	EVAL,     	/* EVAL_AB_fail           */
+	EVAL,     	/* EVAL_B                 */
+	EVAL,     	/* EVAL_B_fail            */
+	EVAL,     	/* EVAL_postponed_AB      */
+	EVAL,     	/* EVAL_postponed_AB_fail */
 	CURLYX,   	/* CURLYX_end             */
 	CURLYX,   	/* CURLYX_end_fail        */
 	WHILEM,   	/* WHILEM_A_pre           */
@@ -592,44 +596,46 @@
 	/* ------------ States ------------- */
 	"TRIE_next",             	/* REGNODE_MAX +0x01 */
 	"TRIE_next_fail",        	/* REGNODE_MAX +0x02 */
-	"EVAL_AB",               	/* REGNODE_MAX +0x03 */
-	"EVAL_AB_fail",          	/* REGNODE_MAX +0x04 */
-	"CURLYX_end",            	/* REGNODE_MAX +0x05 */
-	"CURLYX_end_fail",       	/* REGNODE_MAX +0x06 */
-	"WHILEM_A_pre",          	/* REGNODE_MAX +0x07 */
-	"WHILEM_A_pre_fail",     	/* REGNODE_MAX +0x08 */
-	"WHILEM_A_min",          	/* REGNODE_MAX +0x09 */
-	"WHILEM_A_min_fail",     	/* REGNODE_MAX +0x0a */
-	"WHILEM_A_max",          	/* REGNODE_MAX +0x0b */
-	"WHILEM_A_max_fail",     	/* REGNODE_MAX +0x0c */
-	"WHILEM_B_min",          	/* REGNODE_MAX +0x0d */
-	"WHILEM_B_min_fail",     	/* REGNODE_MAX +0x0e */
-	"WHILEM_B_max",          	/* REGNODE_MAX +0x0f */
-	"WHILEM_B_max_fail",     	/* REGNODE_MAX +0x10 */
-	"BRANCH_next",           	/* REGNODE_MAX +0x11 */
-	"BRANCH_next_fail",      	/* REGNODE_MAX +0x12 */
-	"CURLYM_A",              	/* REGNODE_MAX +0x13 */
-	"CURLYM_A_fail",         	/* REGNODE_MAX +0x14 */
-	"CURLYM_B",              	/* REGNODE_MAX +0x15 */
-	"CURLYM_B_fail",         	/* REGNODE_MAX +0x16 */
-	"IFMATCH_A",             	/* REGNODE_MAX +0x17 */
-	"IFMATCH_A_fail",        	/* REGNODE_MAX +0x18 */
-	"CURLY_B_min_known",     	/* REGNODE_MAX +0x19 */
-	"CURLY_B_min_known_fail",	/* REGNODE_MAX +0x1a */
-	"CURLY_B_min",           	/* REGNODE_MAX +0x1b */
-	"CURLY_B_min_fail",      	/* REGNODE_MAX +0x1c */
-	"CURLY_B_max",           	/* REGNODE_MAX +0x1d */
-	"CURLY_B_max_fail",      	/* REGNODE_MAX +0x1e */
-	"COMMIT_next",           	/* REGNODE_MAX +0x1f */
-	"COMMIT_next_fail",      	/* REGNODE_MAX +0x20 */
-	"MARKPOINT_next",        	/* REGNODE_MAX +0x21 */
-	"MARKPOINT_next_fail",   	/* REGNODE_MAX +0x22 */
-	"SKIP_next",             	/* REGNODE_MAX +0x23 */
-	"SKIP_next_fail",        	/* REGNODE_MAX +0x24 */
-	"CUTGROUP_next",         	/* REGNODE_MAX +0x25 */
-	"CUTGROUP_next_fail",    	/* REGNODE_MAX +0x26 */
-	"KEEPS_next",            	/* REGNODE_MAX +0x27 */
-	"KEEPS_next_fail",       	/* REGNODE_MAX +0x28 */
+	"EVAL_B",                	/* REGNODE_MAX +0x03 */
+	"EVAL_B_fail",           	/* REGNODE_MAX +0x04 */
+	"EVAL_postponed_AB",     	/* REGNODE_MAX +0x05 */
+	"EVAL_postponed_AB_fail",	/* REGNODE_MAX +0x06 */
+	"CURLYX_end",            	/* REGNODE_MAX +0x07 */
+	"CURLYX_end_fail",       	/* REGNODE_MAX +0x08 */
+	"WHILEM_A_pre",          	/* REGNODE_MAX +0x09 */
+	"WHILEM_A_pre_fail",     	/* REGNODE_MAX +0x0a */
+	"WHILEM_A_min",          	/* REGNODE_MAX +0x0b */
+	"WHILEM_A_min_fail",     	/* REGNODE_MAX +0x0c */
+	"WHILEM_A_max",          	/* REGNODE_MAX +0x0d */
+	"WHILEM_A_max_fail",     	/* REGNODE_MAX +0x0e */
+	"WHILEM_B_min",          	/* REGNODE_MAX +0x0f */
+	"WHILEM_B_min_fail",     	/* REGNODE_MAX +0x10 */
+	"WHILEM_B_max",          	/* REGNODE_MAX +0x11 */
+	"WHILEM_B_max_fail",     	/* REGNODE_MAX +0x12 */
+	"BRANCH_next",           	/* REGNODE_MAX +0x13 */
+	"BRANCH_next_fail",      	/* REGNODE_MAX +0x14 */
+	"CURLYM_A",              	/* REGNODE_MAX +0x15 */
+	"CURLYM_A_fail",         	/* REGNODE_MAX +0x16 */
+	"CURLYM_B",              	/* REGNODE_MAX +0x17 */
+	"CURLYM_B_fail",         	/* REGNODE_MAX +0x18 */
+	"IFMATCH_A",             	/* REGNODE_MAX +0x19 */
+	"IFMATCH_A_fail",        	/* REGNODE_MAX +0x1a */
+	"CURLY_B_min_known",     	/* REGNODE_MAX +0x1b */
+	"CURLY_B_min_known_fail",	/* REGNODE_MAX +0x1c */
+	"CURLY_B_min",           	/* REGNODE_MAX +0x1d */
+	"CURLY_B_min_fail",      	/* REGNODE_MAX +0x1e */
+	"CURLY_B_max",           	/* REGNODE_MAX +0x1f */
+	"CURLY_B_max_fail",      	/* REGNODE_MAX +0x20 */
+	"COMMIT_next",           	/* REGNODE_MAX +0x21 */
+	"COMMIT_next_fail",      	/* REGNODE_MAX +0x22 */
+	"MARKPOINT_next",        	/* REGNODE_MAX +0x23 */
+	"MARKPOINT_next_fail",   	/* REGNODE_MAX +0x24 */
+	"SKIP_next",             	/* REGNODE_MAX +0x25 */
+	"SKIP_next_fail",        	/* REGNODE_MAX +0x26 */
+	"CUTGROUP_next",         	/* REGNODE_MAX +0x27 */
+	"CUTGROUP_next_fail",    	/* REGNODE_MAX +0x28 */
+	"KEEPS_next",            	/* REGNODE_MAX +0x29 */
+	"KEEPS_next_fail",       	/* REGNODE_MAX +0x2a */
 };
 #endif /* DOINIT */
 

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/scope.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/scope.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/scope.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -8,7 +8,7 @@
  *
  */
 
-/* *** these are ordered by number of of auto-popped args */
+/* *** Update arg_counts[] in scope.c if you modify these */
 
 /* zero args */
 
@@ -17,8 +17,6 @@
 #define SAVEt_CLEARSV		2
 #define SAVEt_REGCONTEXT	3
 
-#define SAVEt_ARG0_MAX		3
-
 /* one arg */
 
 #define SAVEt_TMPSFLOOR		4
@@ -41,8 +39,6 @@
 #define SAVEt_READONLY_OFF	21
 #define SAVEt_FREEPADNAME	22
 
-#define SAVEt_ARG1_MAX		22
-
 /* two args */
 
 #define SAVEt_AV		23
@@ -71,8 +67,6 @@
 #define SAVEt_ADELETE		46
 #define SAVEt_APTR		47
 
-#define SAVEt_ARG2_MAX		47
-
 /* three args */
 
 #define SAVEt_HELEM		48
@@ -173,20 +167,16 @@
 =for apidoc Ams||LEAVE
 Closing bracket on a callback.  See C<L</ENTER>> and L<perlcall>.
 
-=over
+=for apidoc Ams||ENTER_with_name(name)
 
-=item ENTER_with_name(name)
-
-Same as C<ENTER>, but when debugging is enabled it also associates the
+Same as C<L</ENTER>>, but when debugging is enabled it also associates the
 given literal string with the new scope.
 
-=item LEAVE_with_name(name)
+=for apidoc Ams||LEAVE_with_name(name)
 
-Same as C<LEAVE>, but when debugging is enabled it first checks that the
+Same as C<L</LEAVE>>, but when debugging is enabled it first checks that the
 scope has the given name. C<name> must be a C<NUL>-terminated literal string.
 
-=back
-
 =cut
 */
 

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/sv.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/sv.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/sv.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -155,14 +155,15 @@
 /* *** any alterations to the SV types above need to be reflected in
  * SVt_MASK and the various PL_valid_types_* tables.  As of this writing those
  * tables are in perl.h.  There are also two affected names tables in dump.c,
- * one in B.xs, and 'bodies_by_type[]' in sv.c */
+ * one in B.xs, and 'bodies_by_type[]' in sv.c.
+ *
+ * The bits that match 0xf0 are CURRENTLY UNUSED, except that 0xFF means a
+ * freed SV.  The bits above that are for flags, like SVf_IOK */
 
 #define SVt_MASK 0xf	/* smallest bitmask that covers all types */
 
 #ifndef PERL_CORE
-/* Although Fast Boyer Moore tables are now being stored in PVGVs, for most
-   purposes external code wanting to consider PVBM probably needs to think of
-   PVMG instead.  */
+/* Fast Boyer Moore tables are now stored in magic attached to PVMGs */
 #  define SVt_PVBM	SVt_PVMG
 /* Anything wanting to create a reference from clean should ensure that it has
    a scalar of type SVt_IV now:  */
@@ -269,7 +270,8 @@
 =head1 SV Manipulation Functions
 
 =for apidoc Am|U32|SvREFCNT|SV* sv
-Returns the value of the object's reference count.
+Returns the value of the object's reference count. Exposed
+to perl code via Internals::SvREFCNT().
 
 =for apidoc Am|SV*|SvREFCNT_inc|SV* sv
 Increments the reference count of the given SV, returning the SV.
@@ -368,8 +370,7 @@
 #define SVp_IOK		0x00001000  /* has valid non-public integer value */
 #define SVp_NOK		0x00002000  /* has valid non-public numeric value */
 #define SVp_POK		0x00004000  /* has valid non-public pointer value */
-#define SVp_SCREAM	0x00008000  /* method name is DOES */
-                                    /* eval cx text is ref counted */
+#define SVp_SCREAM	0x00008000  /* currently unused on plain scalars */
 #define SVphv_CLONEABLE	SVp_SCREAM  /* PVHV (stashes) clone its objects */
 #define SVpgv_GP	SVp_SCREAM  /* GV has a valid GP */
 #define SVprv_PCS_IMPORTED  SVp_SCREAM  /* RV is a proxy for a constant
@@ -376,6 +377,15 @@
 				       subroutine in another package. Set the
 				       GvIMPORTED_CV_on() if it needs to be
 				       expanded to a real GV */
+
+/* SVf_PROTECT is what SVf_READONLY should have been: i.e. modifying
+ * this SV is completely illegal. However, SVf_READONLY (via
+ * Internals::SvREADONLY()) has come to be seen as a flag that can be
+ * temporarily set and unset by the user to indicate e.g. whether a hash
+ * is "locked". Now, Hash::Util et al only set SVf_READONLY, while core
+ * sets both (SVf_READONLY|SVf_PROTECT) to indicate both to core and user
+ * code that this SV should not be messed with.
+ */
 #define SVf_PROTECT	0x00010000  /* very read-only */
 #define SVs_PADTMP	0x00020000  /* in use as tmp */
 #define SVs_PADSTALE	0x00040000  /* lexical has gone out of scope;
@@ -415,7 +425,12 @@
 
 #define PRIVSHIFT 4	/* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */
 
-/* Note that SVf_AMAGIC is now only set on stashes.  */
+/* SVf_AMAGIC means that the stash *may* have have overload methods. It's
+ * set each time a function is compiled into a stash, and is reset by the
+ * overload code when called for the first time and finds that there are
+ * no overload methods. Note that this used to be set on the object; but
+ * is now only set on stashes.
+ */
 #define SVf_AMAGIC	0x10000000  /* has magical overloaded methods */
 #define SVf_IsCOW	0x10000000  /* copy on write (shared hash key if
 				       SvLEN == 0) */
@@ -437,28 +452,10 @@
 /* Some private flags. */
 
 
-/* The SVp_SCREAM|SVpbm_VALID (0x40008000) combination is up for grabs.
-   Formerly it was used for pad names, but now it is available.  The core
-   is careful to avoid setting both flags.
-
-   SVf_POK, SVp_POK also set:
-   0x00004400   Normal
-   0x0000C400   method name for DOES (SvSCREAM)
-   0x40004400   FBM compiled (SvVALID)
-   0x4000C400   *** Formerly used for pad names ***
-
-   0x00008000   GV with GP
-   0x00008800   RV with PCS imported
-*/
 /* PVAV */
 #define SVpav_REAL	0x40000000  /* free old entries */
 /* PVHV */
 #define SVphv_LAZYDEL	0x40000000  /* entry in xhv_eiter must be deleted */
-/* This is only set true on a PVGV when it's playing "PVBM", but is tested for
-   on any regular scalar (anything <= PVLV) */
-#define SVpbm_VALID	0x40000000
-/* Only used in toke.c on an SV stored in PL_lex_repl */
-#define SVrepl_EVAL	0x40000000  /* Replacement part of s///e */
 
 /* IV, PVIV, PVNV, PVMG, PVGV and (I assume) PVLV  */
 #define SVf_IVisUV	0x80000000  /* use XPVUV instead of XPVIV */
@@ -466,8 +463,6 @@
 #define SVpav_REIFY 	0x80000000  /* can become real */
 /* PVHV */
 #define SVphv_HASKFLAGS	0x80000000  /* keys have flag byte after hash */
-/* PVGV when SVpbm_VALID is true */
-#define SVpbm_TAIL	0x80000000  /* string has a fake "\n" appended */
 /* RV upwards. However, SVf_ROK and SVp_IOK are exclusive  */
 #define SVprv_WEAKREF   0x80000000  /* Weak reference */
 /* pad name vars only */
@@ -486,10 +481,8 @@
 union _xnvu {
     NV	    xnv_nv;		/* numeric value, if any */
     HV *    xgv_stash;
-    struct {
-	U32 xlow;
-	U32 xhigh;
-    }	    xpad_cop_seq;	/* used by pad.c for cop_sequence */
+    line_t  xnv_lines;           /* used internally by S_scan_subst() */
+    bool    xnv_bm_tail;        /* an SvVALID (BM) SV has an implicit "\n" */
 };
 
 union _xivu {
@@ -496,6 +489,8 @@
     IV	    xivu_iv;		/* integer value */
     UV	    xivu_uv;
     HEK *   xivu_namehek;	/* xpvlv, xpvgv: GvNAME */
+    bool    xivu_eval_seen;     /* used internally by S_scan_subst() */
+
 };
 
 union _xmgu {
@@ -546,7 +541,8 @@
     SV*		xlv_targ;
     char	xlv_type;	/* k=keys .=pos x=substr v=vec /=join/re
 				 * y=alem/helem/iter t=tie T=tied HE */
-    char	xlv_flags;	/* 1 = negative offset  2 = negative len */
+    char	xlv_flags;	/* 1 = negative offset  2 = negative len
+                                   4 = out of range (vec) */
 };
 
 #define xlv_targoff xlv_targoff_u.xlvu_targoff
@@ -563,8 +559,8 @@
                                    the list, merely toggle this flag  */
 };
 
-/* This structure works in 3 ways - regular scalar, GV with GP, or fast
-   Boyer-Moore.  */
+/* This structure works in 2 ways - regular scalar, or GV with GP */
+
 struct xpvgv {
     _XPV_HEAD;
     union _xivu xiv_u;
@@ -617,7 +613,7 @@
      * Perl_filter_add() tries to do with the dirp), hence the
      *  following union trick (as suggested by Gurusamy Sarathy).
      * For further information see Geir Johansen's problem report
-     * titled [ID 20000612.002] Perl problem on Cray system
+     * titled [ID 20000612.002 (#3366)] Perl problem on Cray system
      * The any pointer (known as IoANY()) will also be a good place
      * to hang any IO disciplines to.
      */
@@ -1089,6 +1085,22 @@
 #define SvOBJECT_on(sv)		(SvFLAGS(sv) |= SVs_OBJECT)
 #define SvOBJECT_off(sv)	(SvFLAGS(sv) &= ~SVs_OBJECT)
 
+/*
+=for apidoc Am|U32|SvREADONLY|SV* sv
+Returns true if the argument is readonly, otherwise returns false.
+Exposed to to perl code via Internals::SvREADONLY().
+
+=for apidoc Am|U32|SvREADONLY_on|SV* sv
+Mark an object as readonly. Exactly what this means depends on the object
+type. Exposed to perl code via Internals::SvREADONLY().
+
+=for apidoc Am|U32|SvREADONLY_off|SV* sv
+Mark an object as not-readonly. Exactly what this mean depends on the
+object type. Exposed to perl code via Internals::SvREADONLY().
+
+=cut
+*/
+
 #define SvREADONLY(sv)		(SvFLAGS(sv) & (SVf_READONLY|SVf_PROTECT))
 #ifdef PERL_CORE
 # define SvREADONLY_on(sv)	(SvFLAGS(sv) |= (SVf_READONLY|SVf_PROTECT))
@@ -1108,45 +1120,29 @@
 #  define SvCOMPILED_off(sv)
 #endif
 
-#define SvEVALED(sv)		(SvFLAGS(sv) & SVrepl_EVAL)
-#define SvEVALED_on(sv)		(SvFLAGS(sv) |= SVrepl_EVAL)
-#define SvEVALED_off(sv)	(SvFLAGS(sv) &= ~SVrepl_EVAL)
 
 #if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-#  define SvVALID(sv)		({ const SV *const _svvalid = (const SV*)(sv); \
-				   if (SvFLAGS(_svvalid) & SVpbm_VALID && !SvSCREAM(_svvalid)) \
-				       assert(!isGV_with_GP(_svvalid));	\
-				   (SvFLAGS(_svvalid) & SVpbm_VALID);	\
-				})
-#  define SvVALID_on(sv)	({ SV *const _svvalid = MUTABLE_SV(sv);	\
-				   assert(!isGV_with_GP(_svvalid));	\
-				   assert(!SvSCREAM(_svvalid));		\
-				   (SvFLAGS(_svvalid) |= SVpbm_VALID);	\
-				})
-#  define SvVALID_off(sv)	({ SV *const _svvalid = MUTABLE_SV(sv);	\
-				   assert(!isGV_with_GP(_svvalid));	\
-				   assert(!SvSCREAM(_svvalid));		\
-				   (SvFLAGS(_svvalid) &= ~SVpbm_VALID);	\
-				})
-
 #  define SvTAIL(sv)	({ const SV *const _svtail = (const SV *)(sv);	\
 			    assert(SvTYPE(_svtail) != SVt_PVAV);	\
 			    assert(SvTYPE(_svtail) != SVt_PVHV);	\
-			    assert(!SvSCREAM(_svtail));			\
-			    (SvFLAGS(sv) & (SVpbm_TAIL|SVpbm_VALID))	\
-				== (SVpbm_TAIL|SVpbm_VALID);		\
+			    assert(!(SvFLAGS(_svtail) & (SVf_NOK|SVp_NOK))); \
+			    assert(SvVALID(_svtail));                        \
+                            ((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail;     \
 			})
 #else
-#  define SvVALID(sv)		((SvFLAGS(sv) & SVpbm_VALID) && !SvSCREAM(sv))
-#  define SvVALID_on(sv)	(SvFLAGS(sv) |= SVpbm_VALID)
-#  define SvVALID_off(sv)	(SvFLAGS(sv) &= ~SVpbm_VALID)
-#  define SvTAIL(sv)	    ((SvFLAGS(sv) & (SVpbm_TAIL|SVpbm_VALID))	\
-			     == (SVpbm_TAIL|SVpbm_VALID))
-
+#  define SvTAIL(_svtail)  (((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail)
 #endif
-#define SvTAIL_on(sv)		(SvFLAGS(sv) |= SVpbm_TAIL)
-#define SvTAIL_off(sv)		(SvFLAGS(sv) &= ~SVpbm_TAIL)
 
+/* Does the SV have a Boyer-Moore table attached as magic?
+ * 'VALID' is a poor name, but is kept for historical reasons.  */
+#define SvVALID(_svvalid) (                                  \
+               SvPOKp(_svvalid)                              \
+            && SvSMAGICAL(_svvalid)                          \
+            && SvMAGIC(_svvalid)                             \
+            && (SvMAGIC(_svvalid)->mg_type == PERL_MAGIC_bm  \
+                || mg_find(_svvalid, PERL_MAGIC_bm))         \
+        )
+
 #define SvRVx(sv) SvRV(sv)
 
 #ifdef PERL_DEBUG_COW
@@ -1525,44 +1521,59 @@
 Like C<SvPV_nolen> but doesn't process magic.
 
 =for apidoc Am|IV|SvIV|SV* sv
-Coerces the given SV to an integer and returns it.  See C<L</SvIVx>> for a
-version which guarantees to evaluate C<sv> only once.
+Coerces the given SV to IV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s IV slot, but not in all cases.  (Use
+C<L</sv_setiv>> to make sure it does).
 
+See C<L</SvIVx>> for a version which guarantees to evaluate C<sv> only once.
+
 =for apidoc Am|IV|SvIV_nomg|SV* sv
 Like C<SvIV> but doesn't process magic.
 
 =for apidoc Am|IV|SvIVx|SV* sv
-Coerces the given SV to an integer and returns it.
-Guarantees to evaluate C<sv> only once.  Only use
-this if C<sv> is an expression with side effects,
-otherwise use the more efficient C<SvIV>.
+Coerces the given SV to IV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s IV slot, but not in all cases.  (Use
+C<L</sv_setiv>> to make sure it does).
 
+This form guarantees to evaluate C<sv> only once.  Only use this if C<sv> is an
+expression with side effects, otherwise use the more efficient C<SvIV>.
+
 =for apidoc Am|NV|SvNV|SV* sv
-Coerce the given SV to a double and return it.  See C<L</SvNVx>> for a version
-which guarantees to evaluate C<sv> only once.
+Coerces the given SV to NV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s NV slot, but not in all cases.  (Use
+C<L</sv_setnv>> to make sure it does).
 
+See C<L</SvNVx>> for a version which guarantees to evaluate C<sv> only once.
+
 =for apidoc Am|NV|SvNV_nomg|SV* sv
 Like C<SvNV> but doesn't process magic.
 
 =for apidoc Am|NV|SvNVx|SV* sv
-Coerces the given SV to a double and returns it.
-Guarantees to evaluate C<sv> only once.  Only use
-this if C<sv> is an expression with side effects,
-otherwise use the more efficient C<SvNV>.
+Coerces the given SV to NV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s NV slot, but not in all cases.  (Use
+C<L</sv_setnv>> to make sure it does).
 
+This form guarantees to evaluate C<sv> only once.  Only use this if C<sv> is an
+expression with side effects, otherwise use the more efficient C<SvNV>.
+
 =for apidoc Am|UV|SvUV|SV* sv
-Coerces the given SV to an unsigned integer and returns it.  See C<L</SvUVx>>
-for a version which guarantees to evaluate C<sv> only once.
+Coerces the given SV to UV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s UV slot, but not in all cases.  (Use
+C<L</sv_setuv>> to make sure it does).
 
+See C<L</SvUVx>> for a version which guarantees to evaluate C<sv> only once.
+
 =for apidoc Am|UV|SvUV_nomg|SV* sv
 Like C<SvUV> but doesn't process magic.
 
 =for apidoc Am|UV|SvUVx|SV* sv
-Coerces the given SV to an unsigned integer and
-returns it.  Guarantees to evaluate C<sv> only once.  Only
-use this if C<sv> is an expression with side effects,
-otherwise use the more efficient C<SvUV>.
+Coerces the given SV to UV and returns it.  The returned value in many
+circumstances will get stored in C<sv>'s UV slot, but not in all cases.  (Use
+C<L</sv_setuv>> to make sure it does).
 
+This form guarantees to evaluate C<sv> only once.  Only use this if C<sv> is an
+expression with side effects, otherwise use the more efficient C<SvUV>.
+
 =for apidoc Am|bool|SvTRUE|SV* sv
 Returns a boolean indicating whether Perl would evaluate the SV as true or
 false.  See C<L</SvOK>> for a defined/undefined test.  Handles 'get' magic
@@ -1814,10 +1825,10 @@
 #define SvSHARED_HASH(sv) (0 + SvSHARED_HEK_FROM_PV(SvPVX_const(sv))->hek_hash)
 
 /* flag values for sv_*_flags functions */
+#define SV_UTF8_NO_ENCODING	0       /* No longer used */
 #define SV_IMMEDIATE_UNREF	1
 #define SV_GMAGIC		2
 #define SV_COW_DROP_PV		4
-#define SV_UTF8_NO_ENCODING	8
 #define SV_NOSTEAL		16
 #define SV_CONST_RETURN		32
 #define SV_MUTABLE_RETURN	64
@@ -2021,9 +2032,17 @@
 buffer.  SV must be of type >= C<SVt_PV>.  One
 alternative is to call C<sv_grow> if you are not sure of the type of SV.
 
+You might mistakenly think that C<len> is the number of bytes to add to the
+existing size, but instead it is the total size C<sv> should be.
+
+=for apidoc Am|char *|SvPVCLEAR|SV* sv
+Ensures that sv is a SVt_PV and that its SvCUR is 0, and that it is
+properly null terminated. Equivalent to sv_setpvs(""), but more efficient.
+
 =cut
 */
 
+#define SvPVCLEAR(sv) sv_setpv_bufsize(sv,0,0)
 #define SvSHARE(sv) PL_sharehook(aTHX_ sv)
 #define SvLOCK(sv) PL_lockhook(aTHX_ sv)
 #define SvUNLOCK(sv) PL_unlockhook(aTHX_ sv)

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/time64.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/time64.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/time64.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -32,7 +32,8 @@
  * Otherwise, if we are on android, use const but
  * not with g++.
  */
-#  if defined(__GLIBC__) || (defined(__ANDROID__) && !defined(__cplusplus)) || defined(__QNX__)
+#  if defined(__GLIBC__) || (defined(__ANDROID__) && !defined(__cplusplus)) \
+    || defined(__QNX__) || defined(__CYGWIN__)
         const
 #  endif
         char    *tm_zone;

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -182,7 +182,7 @@
 /*#define HAS_GETLOGIN		/ **/
 
 /* HAS_GETPGID:
- *	This symbol, if defined, indicates to the C program that 
+ *	This symbol, if defined, indicates to the C program that
  *	the getpgid(pid) function is available to get the
  *	process group id.
  */
@@ -641,8 +641,8 @@
  *	This symbol holds the type used for the second argument to
  *	getgroups() and setgroups().  Usually, this is the same as
  *	gidtype (gid_t) , but sometimes it isn't.
- *	It can be int, ushort, gid_t, etc... 
- *	It may be necessary to include <sys/types.h> to get any 
+ *	It can be int, ushort, gid_t, etc...
+ *	It may be necessary to include <sys/types.h> to get any
  *	typedef'ed information.  This is only required if you have
  *	getgroups() or setgroups()..
  */
@@ -1398,8 +1398,8 @@
  *	This symbol contains the ~name expanded version of ARCHLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-/*#define ARCHLIB "/usr/local/lib/perl5/5.24/unknown"		/ **/
-/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.24/unknown"		/ **/
+/*#define ARCHLIB "/usr/local/lib/perl5/5.26/unknown"		/ **/
+/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.26/unknown"		/ **/
 
 /* BIN:
  *	This symbol holds the path of the bin directory where the package will
@@ -1452,8 +1452,8 @@
  *	This symbol contains the ~name expanded version of PRIVLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/usr/local/lib/perl5/5.24"		/**/
-#define PRIVLIB_EXP "/usr/local/lib/perl5/5.24"		/**/
+#define PRIVLIB "/usr/local/lib/perl5/5.26"		/**/
+#define PRIVLIB_EXP "/usr/local/lib/perl5/5.26"		/**/
 
 /* SITEARCH:
  *	This symbol contains the name of the private library for this package.
@@ -1470,8 +1470,8 @@
  *	This symbol contains the ~name expanded version of SITEARCH, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-/*#define SITEARCH "/usr/local/lib/perl5/5.24/unknown"		/ **/
-/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.24/unknown"		/ **/
+/*#define SITEARCH "/usr/local/lib/perl5/5.26/unknown"		/ **/
+/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.26/unknown"		/ **/
 
 /* SITELIB:
  *	This symbol contains the name of the private library for this package.
@@ -1493,8 +1493,8 @@
  *	removed.  The elements in inc_version_list (inc_version_list.U) can
  *	be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/usr/local/lib/perl5/5.24"		/**/
-#define SITELIB_EXP "/usr/local/lib/perl5/5.24"		/**/
+#define SITELIB "/usr/local/lib/perl5/5.26"		/**/
+#define SITELIB_EXP "/usr/local/lib/perl5/5.26"		/**/
 #define SITELIB_STEM "/usr/local/lib/perl5"		/**/
 
 /* PERL_VENDORARCH:
@@ -1907,9 +1907,34 @@
  *	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
  *	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
  *	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
+ *	LONG_DOUBLE_IS_VAX_H_FLOAT
  *	LONG_DOUBLE_IS_UNKNOWN_FORMAT
  *	It is only defined if the system supports long doubles.
  */
+/* LONG_DOUBLE_STYLE_IEEE:
+ *	This symbol, if defined, indicates that the long double
+ *	is any of the IEEE 754 style long doubles:
+ *	LONG_DOUBLE_STYLE_IEEE_STD, LONG_DOUBLE_STYLE_IEEE_EXTENDED,
+ *	LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE.
+ */
+/* LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 128-bit double-double.
+ */
+/* LONG_DOUBLE_STYLE_IEEE_EXTENDED:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 80-bit IEEE 754. Note that despite the 'extended' this
+ *	is less than the 'std', since this is an extension of
+ *	the double precision.
+ */
+/* LONG_DOUBLE_STYLE_IEEE_STD:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 128-bit IEEE 754.
+ */
+/* LONG_DOUBLE_STYLE_VAX:
+ *	This symbol, if defined, indicates that the long double is
+ *	the 128-bit VAX format H.
+ */
 /*#define  HAS_LDEXPL		/ **/
 /*#define HAS_LONG_DOUBLE		/ **/
 #ifdef HAS_LONG_DOUBLE
@@ -1924,9 +1949,15 @@
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE	6
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE	7
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE	8
+#define LONG_DOUBLE_IS_VAX_H_FLOAT			9
 #define LONG_DOUBLE_IS_UNKNOWN_FORMAT			-1
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */
 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN	LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */
+#undef LONG_DOUBLE_STYLE_IEEE
+#undef LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
+#undef LONG_DOUBLE_STYLE_IEEE_EXTENDED
+#undef LONG_DOUBLE_STYLE_IEEE_STD
+#undef LONG_DOUBLE_STYLE_VAX
 #endif
 
 /* HAS_LONG_LONG:
@@ -2845,6 +2876,13 @@
  */
 /*#define HAS_FUTIMES		/ **/
 
+/* HAS_GAI_STRERROR:
+ *	This symbol, if defined, indicates that the gai_strerror routine
+ *	is available to translate error codes returned by getaddrinfo()
+ *	into human readable strings.
+ */
+/*#define HAS_GAI_STRERROR	/ **/
+
 /* HAS_GETADDRINFO:
  *	This symbol, if defined, indicates that the getaddrinfo() function
  *	is available for use.
@@ -3211,9 +3249,19 @@
  *	This symbol, if defined, indicates that the uselocale routine is
  *	available to set the current locale for the calling thread.
  */
+/* HAS_QUERYLOCALE:
+ *	This symbol, if defined, indicates that the querylocale routine is
+ *	available to return the name of the locale for a category mask.
+ */
+/* I_XLOCALE:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include <xlocale.h> to get uselocale() and its friends.
+ */
 /*#define	HAS_NEWLOCALE	/ **/
 /*#define	HAS_FREELOCALE	/ **/
 /*#define	HAS_USELOCALE	/ **/
+/*#define	HAS_QUERYLOCALE	/ **/
+/*#define	I_XLOCALE               / **/
 
 /* HAS_NEXTAFTER:
  *	This symbol, if defined, indicates that the nextafter routine is
@@ -3467,6 +3515,13 @@
  */
 /*#define HAS_FSTATVFS		/ **/
 
+/* HAS_STRERROR_L:
+ *	This symbol, if defined, indicates that the strerror_l routine is
+ *	available to return the error message for a given errno value in
+ *	a particular locale (identified by a locale_t object).
+ */
+/*#define HAS_STRERROR_L		/ **/
+
 /* HAS_STRFTIME:
  *	This symbol, if defined, indicates that the strftime routine is
  *	available to do time formatting.
@@ -3646,6 +3701,12 @@
  */
 /*#define HAS_WRITEV		/ **/
 
+/* DEFAULT_INC_EXCLUDES_DOT:
+ *	This symbol, if defined, removes the legacy default behavior of
+ *	including '.' at the end of @INC.
+ */
+/*#define DEFAULT_INC_EXCLUDES_DOT	/ **/
+
 /* USE_DYNAMIC_LOADING:
  *	This symbol, if defined, indicates that dynamic loading of
  *	some sort is available.
@@ -3918,8 +3979,46 @@
  *	DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
  *	DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
  *	DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
+ *	DOUBLE_IS_VAX_F_FLOAT
+ *	DOUBLE_IS_VAX_D_FLOAT
+ *	DOUBLE_IS_VAX_G_FLOAT
+ *	DOUBLE_IS_IBM_SINGLE_32_BIT
+ *	DOUBLE_IS_IBM_DOUBLE_64_BIT
+ *	DOUBLE_IS_CRAY_SINGLE_64_BIT
  *	DOUBLE_IS_UNKNOWN_FORMAT
  */
+/* DOUBLE_HAS_INF:
+ *	This symbol, if defined, indicates that the double has
+ *	the infinity.
+ */
+/* DOUBLE_HAS_NAN:
+ *	This symbol, if defined, indicates that the double has
+ *	the not-a-number.
+ */
+/* DOUBLE_HAS_NEGATIVE_ZERO:
+ *	This symbol, if defined, indicates that the double has
+ *	the negative_zero.
+ */
+/* DOUBLE_HAS_SUBNORMALS:
+ *	This symbol, if defined, indicates that the double has
+ *	the subnormals (denormals).
+ */
+/* DOUBLE_STYLE_CRAY:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit CRAY mainframe format.
+ */
+/* DOUBLE_STYLE_IBM:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit IBM mainframe format.
+ */
+/* DOUBLE_STYLE_IEEE:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit IEEE 754.
+ */
+/* DOUBLE_STYLE_VAX:
+ *	This symbol, if defined, indicates that the double is
+ *	the 64-bit VAX format D or G.
+ */
 #define DOUBLEKIND 3		/**/
 #define DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN	1
 #define DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN	2
@@ -3929,11 +4028,25 @@
 #define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN	6
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE	7
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE	8
+#define DOUBLE_IS_VAX_F_FLOAT	9
+#define DOUBLE_IS_VAX_D_FLOAT	10
+#define DOUBLE_IS_VAX_G_FLOAT	11
+#define DOUBLE_IS_IBM_SINGLE_32_BIT	12
+#define DOUBLE_IS_IBM_DOUBLE_64_BIT	13
+#define DOUBLE_IS_CRAY_SINGLE_64_BIT	14
 #define DOUBLE_IS_UNKNOWN_FORMAT		-1
 /*#define PERL_PRIfldbl	"llf"	/ **/
 /*#define PERL_PRIgldbl	"llg"	/ **/
 /*#define PERL_PRIeldbl	"lle"	/ **/
 /*#define PERL_SCNfldbl	"llf"	/ **/
+#define DOUBLE_HAS_INF
+#define DOUBLE_HAS_NAN
+#define DOUBLE_HAS_NEGATIVE_ZERO
+#define DOUBLE_HAS_SUBNORMALS
+#undef DOUBLE_STYLE_CRAY
+#undef DOUBLE_STYLE_IBM
+#define DOUBLE_STYLE_IEEE
+#undef DOUBLE_STYLE_VAX
 
 /* DOUBLEMANTBITS:
  *	This symbol, if defined, tells how many mantissa bits
@@ -5241,6 +5354,6 @@
 #endif
 
 /* Generated from:
- * ce61c4f18e82f6356cdae44c5336ceac1d3253033d7449651927f5633be5c3c2 config_h.SH
- * fc611849cb5b1e14ec1687b255dac15414cc5e2e11b192d94e08136cfe277f75 uconfig.sh
+ * a0cea6273c16c1c5d8625665c84bda01926ce960c26873d4e5596b5b02a53e92 config_h.SH
+ * b1c042726e6a17692921b6947c4e7c196c5c0cee011667ba719b15af7c31e669 uconfig.sh
  * ex: set ro: */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -21,7 +21,31 @@
  *  "_TAIL"       if instead it represents all but the first byte.  This, and
  *                with no additional suffix are both string constants */
 
-#define UNICODE_MAJOR_VERSION   8
+/*
+=head1 Unicode Support
+
+=for apidoc AmU|placeholder|BOM_UTF8
+
+This is a macro that evaluates to a string constant of the  UTF-8 bytes that
+define the Unicode BYTE ORDER MARK (U+FEFF) for the platform that perl
+is compiled on.  This allows code to use a mnemonic for this character that
+works on both ASCII and EBCDIC platforms.
+S<C<sizeof(BOM_UTF8) - 1>> can be used to get its length in
+bytes.
+
+=for apidoc AmU|placeholder|REPLACEMENT_CHARACTER_UTF8
+
+This is a macro that evaluates to a string constant of the  UTF-8 bytes that
+define the Unicode REPLACEMENT CHARACTER (U+FFFD) for the platform that perl
+is compiled on.  This allows code to use a mnemonic for this character that
+works on both ASCII and EBCDIC platforms.
+S<C<sizeof(REPLACEMENT_CHARACTER_UTF8) - 1>> can be used to get its length in
+bytes.
+
+=cut
+*/
+
+#define UNICODE_MAJOR_VERSION   9
 #define UNICODE_DOT_VERSION     0
 #define UNICODE_DOT_DOT_VERSION 0
 
@@ -45,6 +69,10 @@
 #   define BOM_UTF8_FIRST_BYTE  0xEF    /* U+FEFF */
 #   define BOM_UTF8_TAIL  "\xBB\xBF"    /* U+FEFF */
 
+#   define BOM_UTF8  "\xEF\xBB\xBF"    /* U+FEFF */
+
+#   define REPLACEMENT_CHARACTER_UTF8  "\xEF\xBF\xBD"    /* U+FFFD */
+
 #   define NBSP_NATIVE  0xA0    /* U+00A0 */
 #   define NBSP_UTF8  "\xC2\xA0"    /* U+00A0 */
 
@@ -84,6 +112,10 @@
 #   define BOM_UTF8_FIRST_BYTE  0xDD    /* U+FEFF */
 #   define BOM_UTF8_TAIL  "\x73\x66\x73"    /* U+FEFF */
 
+#   define BOM_UTF8  "\xDD\x73\x66\x73"    /* U+FEFF */
+
+#   define REPLACEMENT_CHARACTER_UTF8  "\xDD\x73\x73\x71"    /* U+FFFD */
+
 #   define NBSP_NATIVE  0x41    /* U+00A0 */
 #   define NBSP_UTF8  "\x80\x41"    /* U+00A0 */
 
@@ -123,6 +155,10 @@
 #   define BOM_UTF8_FIRST_BYTE  0xDD    /* U+FEFF */
 #   define BOM_UTF8_TAIL  "\x72\x65\x72"    /* U+FEFF */
 
+#   define BOM_UTF8  "\xDD\x72\x65\x72"    /* U+FEFF */
+
+#   define REPLACEMENT_CHARACTER_UTF8  "\xDD\x72\x72\x70"    /* U+FFFD */
+
 #   define NBSP_NATIVE  0x41    /* U+00A0 */
 #   define NBSP_UTF8  "\x78\x41"    /* U+00A0 */
 
@@ -141,10 +177,10 @@
 #endif	/* EBCDIC 037 */
 
 /* The number of code points not matching \pC */
-#define NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C  120522
+#define NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C  128021
 
 /* The highest code point that has any type of case change */
-#define HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C  0x118DF
+#define HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C  0x1E943
 
 #endif /* H_UNICODE_CONSTANTS */
 

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -159,7 +159,7 @@
 
 #define BIT_BUCKET "/dev/null"
 
-#define dXSUB_SYS
+#define dXSUB_SYS dNOOP
 
 #ifndef NO_ENVIRON_ARRAY
 #define USE_ENVIRON_ARRAY

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -50,14 +50,21 @@
 
 =for apidoc is_ascii_string
 
-This is a misleadingly-named synonym for L</is_invariant_string>.
+This is a misleadingly-named synonym for L</is_utf8_invariant_string>.
 On ASCII-ish platforms, the name isn't misleading: the ASCII-range characters
 are exactly the UTF-8 invariants.  But EBCDIC machines have more invariants
-than just the ASCII characters, so C<is_invariant_string> is preferred.
+than just the ASCII characters, so C<is_utf8_invariant_string> is preferred.
 
+=for apidoc is_invariant_string
+
+This is a somewhat misleadingly-named synonym for L</is_utf8_invariant_string>.
+C<is_utf8_invariant_string> is preferred, as it indicates under what conditions
+the string is invariant.
+
 =cut
 */
-#define is_ascii_string(s, len)     is_invariant_string(s, len)
+#define is_ascii_string(s, len)     is_utf8_invariant_string(s, len)
+#define is_invariant_string(s, len) is_utf8_invariant_string(s, len)
 
 #define uvchr_to_utf8(a,b)          uvchr_to_utf8_flags(a,b,0)
 #define uvchr_to_utf8_flags(d,uv,flags)                                        \
@@ -65,15 +72,19 @@
 #define utf8_to_uvchr_buf(s, e, lenp)                                          \
                      utf8n_to_uvchr(s, (U8*)(e) - (U8*)(s), lenp,              \
                                     ckWARN_d(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY)
+#define utf8n_to_uvchr(s, len, lenp, flags)                                    \
+                                utf8n_to_uvchr_error(s, len, lenp, flags, 0)
 
 #define to_uni_fold(c, p, lenp) _to_uni_fold_flags(c, p, lenp, FOLD_FLAGS_FULL)
-#define to_utf8_fold(c, p, lenp) _to_utf8_fold_flags(c, p, lenp, FOLD_FLAGS_FULL)
-#define to_utf8_lower(a,b,c) _to_utf8_lower_flags(a,b,c,0)
-#define to_utf8_upper(a,b,c) _to_utf8_upper_flags(a,b,c,0)
-#define to_utf8_title(a,b,c) _to_utf8_title_flags(a,b,c,0)
 
-/* Source backward compatibility. */
-#define is_utf8_string_loc(s, len, ep)	is_utf8_string_loclen(s, len, ep, 0)
+#define to_utf8_fold(s, r, lenr)                                                \
+    _to_utf8_fold_flags (s, NULL, r, lenr, FOLD_FLAGS_FULL, __FILE__, __LINE__)
+#define to_utf8_lower(s, r, lenr)                                               \
+                  _to_utf8_lower_flags(s, NULL, r ,lenr, 0, __FILE__, __LINE__)
+#define to_utf8_upper(s, r, lenr)                                               \
+                  _to_utf8_upper_flags(s, NULL, r, lenr, 0, __FILE__, __LINE__)
+#define to_utf8_title(s, r, lenr)                                               \
+                  _to_utf8_title_flags(s, NULL, r, lenr ,0, __FILE__, __LINE__)
 
 #define foldEQ_utf8(s1, pe1, l1, u1, s2, pe2, l2, u2) \
 		    foldEQ_utf8_flags(s1, pe1, l1, u1, s2, pe2, l2, u2, 0)
@@ -156,8 +167,8 @@
  * rarely do we need to distinguish them.  The term "NATIVE_UTF8" applies to
  * whichever one is applicable on the current platform */
 #ifdef PERL_SMALL_MACRO_BUFFER
-#define NATIVE_UTF8_TO_I8(ch) (ch)
-#define I8_TO_NATIVE_UTF8(ch) (ch)
+#define NATIVE_UTF8_TO_I8(ch) ((U8) (ch))
+#define I8_TO_NATIVE_UTF8(ch) ((U8) (ch))
 #else
 #define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
 #define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
@@ -169,24 +180,30 @@
 
 /*
 
- The following table is from Unicode 3.2.
+ The following table is from Unicode 3.2, plus the Perl extensions for above
+ U+10FFFF
 
- Code Points		1st Byte  2nd Byte  3rd Byte  4th Byte
+ Code Points		1st Byte  2nd Byte  3rd    4th     5th     6th       7th   8th-13th
 
    U+0000..U+007F	00..7F
    U+0080..U+07FF     * C2..DF    80..BF
-   U+0800..U+0FFF	E0      * A0..BF    80..BF
-   U+1000..U+CFFF       E1..EC    80..BF    80..BF
-   U+D000..U+D7FF       ED        80..9F    80..BF
-   U+D800..U+DFFF       ED        A0..BF    80..BF  (surrogates)
-   U+E000..U+FFFF       EE..EF    80..BF    80..BF
-  U+10000..U+3FFFF	F0      * 90..BF    80..BF    80..BF
-  U+40000..U+FFFFF	F1..F3    80..BF    80..BF    80..BF
- U+100000..U+10FFFF	F4        80..8F    80..BF    80..BF
-    Below are non-Unicode code points
- U+110000..U+13FFFF	F4        90..BF    80..BF    80..BF
- U+110000..U+1FFFFF	F5..F7    80..BF    80..BF    80..BF
- U+200000..:            F8..    * 88..BF    80..BF    80..BF    80..BF
+   U+0800..U+0FFF	E0      * A0..BF  80..BF
+   U+1000..U+CFFF       E1..EC    80..BF  80..BF
+   U+D000..U+D7FF       ED        80..9F  80..BF
+   U+D800..U+DFFF       ED        A0..BF  80..BF  (surrogates)
+   U+E000..U+FFFF       EE..EF    80..BF  80..BF
+  U+10000..U+3FFFF	F0      * 90..BF  80..BF  80..BF
+  U+40000..U+FFFFF	F1..F3    80..BF  80..BF  80..BF
+ U+100000..U+10FFFF	F4        80..8F  80..BF  80..BF
+    Below are above-Unicode code points
+ U+110000..U+13FFFF	F4        90..BF  80..BF  80..BF
+ U+110000..U+1FFFFF	F5..F7    80..BF  80..BF  80..BF
+ U+200000..U+FFFFFF     F8      * 88..BF  80..BF  80..BF  80..BF
+U+1000000..U+3FFFFFF    F9..FB    80..BF  80..BF  80..BF  80..BF
+U+4000000..U+3FFFFFFF    FC     * 84..BF  80..BF  80..BF  80..BF  80..BF
+U+40000000..U+7FFFFFFF   FD       80..BF  80..BF  80..BF  80..BF  80..BF
+U+80000000..U+FFFFFFFFF  FE     * 82..BF  80..BF  80..BF  80..BF  80..BF    80..BF
+U+1000000000..           FF       80..BF  80..BF  80..BF  80..BF  80..BF  * 81..BF  80..BF
 
 Note the gaps before several of the byte entries above marked by '*'.  These are
 caused by legal UTF-8 avoiding non-shortest encodings: it is technically
@@ -210,17 +227,36 @@
 leading bits of the start byte tell how many bytes there are in the
 encoded character.
 
-Perl's extended UTF-8 means we can have start bytes up to FF.
+Perl's extended UTF-8 means we can have start bytes up through FF, though any
+beginning with FF yields a code point that is too large for 32-bit ASCII
+platforms.  FF signals to use 13 bytes for the encoded character.  This breaks
+the paradigm that the number of leading bits gives how many total bytes there
+are in the character.
 
 */
 
+/* Anything larger than this will overflow the word if it were converted into a UV */
+#if defined(UV_IS_QUAD)
+#   define HIGHEST_REPRESENTABLE_UTF8  "\xFF\x80\x8F\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"
+#else
+#   define HIGHEST_REPRESENTABLE_UTF8  "\xFE\x83\xBF\xBF\xBF\xBF\xBF"
+#endif
+
 /* Is the representation of the Unicode code point 'cp' the same regardless of
  * being encoded in UTF-8 or not? */
 #define OFFUNI_IS_INVARIANT(cp)     isASCII(cp)
 
-/* Is the representation of the code point 'cp' the same regardless of
- * being encoded in UTF-8 or not?  'cp' is native if < 256; Unicode otherwise
- * */
+/*
+=for apidoc Am|bool|UVCHR_IS_INVARIANT|UV cp
+
+Evaluates to 1 if the representation of code point C<cp> is the same whether or
+not it is encoded in UTF-8; otherwise evaluates to 0.  UTF-8 invariant
+characters can be copied as-is when converting to/from UTF-8, saving time.
+C<cp> is Unicode if above 255; otherwise is platform-native.
+
+=cut
+ */
+
 #define UVCHR_IS_INVARIANT(cp)      OFFUNI_IS_INVARIANT(cp)
 
 /* This defines the bits that are to be in the continuation bytes of a multi-byte
@@ -275,6 +311,104 @@
  * encounter */
 #define isUTF8_POSSIBLY_PROBLEMATIC(c) ((U8) c >= 0xED)
 
+/* A helper macro for isUTF8_CHAR, so use that one instead of this.  This was
+ * generated by regen/regcharclass.pl, and then moved here.  Then it was
+ * hand-edited to add some LIKELY() calls, presuming that malformations are
+ * unlikely.  The lines that generated it were then commented out.  This was
+ * done because it takes on the order of 10 minutes to generate, and is never
+ * going to change, unless the generated code is improved, and figuring out
+ * the LIKELYs there would be hard.
+ *
+        UTF8_CHAR: Matches legal UTF-8 variant code points up through 0x1FFFFFF
+
+	0x80 - 0x1FFFFF
+*/
+/*** GENERATED CODE ***/
+#define is_UTF8_CHAR_utf8_no_length_checks(s)                               \
+( ( 0xC2 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) ?                          \
+    ( LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 )                    \
+: ( 0xE0 == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( 0xE1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEF ) ?                          \
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( 0xF0 == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( 0x90 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBF ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+: ( ( ( ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF7 ) && LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ) && LIKELY( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )
+
+/* The above macro handles UTF-8 that has this start byte as the maximum */
+#define _IS_UTF8_CHAR_HIGHEST_START_BYTE 0xF7
+
+/* A helper macro for isSTRICT_UTF8_CHAR, so use that one instead of this.
+ * Like is_UTF8_CHAR_utf8_no_length_checks(), this was moved here and LIKELYs
+ * added manually.
+ *
+	STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points, no
+                          surrrogates nor non-character code points
+*/
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s)                        \
+( ( 0xC2 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) ?                          \
+    ( LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 )                          \
+: ( 0xE0 == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( ( 0xE1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) || 0xEE == ((const U8*)s)[0] ) ?\
+    ( ( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( 0xED == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( 0xEF == ((const U8*)s)[0] ) ?                                                 \
+    ( ( ( 0x80 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xB6 ) || ( 0xB8 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBE ) ) ?\
+	( LIKELY( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ? 3 : 0 )                      \
+    : ( 0xB7 == ((const U8*)s)[1] ) ?                                             \
+	( LIKELY( ( ((const U8*)s)[2] & 0xF0 ) == 0x80 || ( ((const U8*)s)[2] & 0xF0 ) == 0xB0 ) ? 3 : 0 )\
+    : ( ( 0xBF == ((const U8*)s)[1] ) && ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBD ) ) ? 3 : 0 )\
+: ( 0xF0 == ((const U8*)s)[0] ) ?                                                 \
+    ( ( ( 0x90 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x9E ) || ( 0xA0 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xAE ) || ( 0xB0 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBE ) ) ?\
+	( LIKELY( ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+    : ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) ?       \
+	( ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBE ) ?                  \
+	    ( LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ? 4 : 0 )                  \
+	: LIKELY( ( 0xBF == ((const U8*)s)[2] ) && ( 0x80 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBD ) ) ? 4 : 0 )\
+    : 0 )                                                                   \
+: ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ?                          \
+    ( ( ( ( ((const U8*)s)[1] & 0xC8 ) == 0x80 ) || ( ( ((const U8*)s)[1] & 0xCC ) == 0x88 ) || ( ( ((const U8*)s)[1] & 0xCE ) == 0x8C ) || ( ( ((const U8*)s)[1] & 0xCF ) == 0x8E ) ) ?\
+	( LIKELY( ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+    : ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) ?                                  \
+	( ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBE ) ?                  \
+	    ( LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ? 4 : 0 )                  \
+	: LIKELY( ( 0xBF == ((const U8*)s)[2] ) && ( 0x80 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBD ) ) ? 4 : 0 )\
+    : 0 )                                                                   \
+: ( 0xF4 == ((const U8*)s)[0] ) ?                                                 \
+    ( ( 0x80 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x8E ) ?                      \
+	( LIKELY( ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+    : ( 0x8F == ((const U8*)s)[1] ) ?                                             \
+	( ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBE ) ?                  \
+	    ( LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ? 4 : 0 )                  \
+	: LIKELY( ( 0xBF == ((const U8*)s)[2] ) && ( 0x80 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBD ) ) ? 4 : 0 )\
+    : 0 )                                                                   \
+: 0 )
+
+/*  Similarly,
+        C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code
+                                     points, no surrogates
+	0x0080 - 0xD7FF
+	0xE000 - 0x10FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s)                     \
+( ( 0xC2 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) ?                          \
+    ( LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 )                    \
+: ( 0xE0 == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( ( 0xE1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) || ( ((const U8*)s)[0] & 0xFE ) == 0xEE ) ?\
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( 0xED == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ( 0xF0 == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( 0x90 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBF ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+: ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ?                          \
+    ( LIKELY( ( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+: LIKELY( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( ( ((const U8*)s)[1] & 0xF0 ) == 0x80 ) ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )
+
 #endif /* EBCDIC vs ASCII */
 
 /* 2**UTF_ACCUMULATION_SHIFT - 1 */
@@ -338,11 +472,14 @@
  */
 #define UVCHR_SKIP(uv) ( UVCHR_IS_INVARIANT(uv) ? 1 : __BASE_UNI_SKIP(uv))
 
-/* As explained in the comments for __COMMON_UNI_SKIP, 32 start bytes with
+/* The largest code point representable by two UTF-8 bytes on this platform.
+ * As explained in the comments for __COMMON_UNI_SKIP, 32 start bytes with
  * UTF_ACCUMULATION_SHIFT bits of information each */
 #define MAX_UTF8_TWO_BYTE (32 * (1U << UTF_ACCUMULATION_SHIFT) - 1)
 
-/* constrained by EBCDIC which has 5 bits per continuation byte */
+/* The largest code point representable by two UTF-8 bytes on any platform that
+ * Perl runs on.  This value is constrained by EBCDIC which has 5 bits per
+ * continuation byte */
 #define MAX_PORTABLE_UTF8_TWO_BYTE (32 * (1U << 5) - 1)
 
 /* The maximum number of UTF-8 bytes a single Unicode character can
@@ -396,17 +533,11 @@
                                    | ((NATIVE_UTF8_TO_I8((U8)new))             \
                                        & UTF_CONTINUATION_MASK))
 
-/* If a value is anded with this, and the result is non-zero, then using the
- * original value in UTF8_ACCUMULATE will overflow, shifting bits off the left
- * */
-#define UTF_ACCUMULATION_OVERFLOW_MASK					\
-    (((UV) UTF_CONTINUATION_MASK) << ((sizeof(UV) * CHARBITS)           \
-           - UTF_ACCUMULATION_SHIFT))
-
 /* This works in the face of malformed UTF-8. */
-#define UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(s, e) (UTF8_IS_DOWNGRADEABLE_START(*s) \
-                                               && ( (e) - (s) > 1)             \
-                                               && UTF8_IS_CONTINUATION(*((s)+1)))
+#define UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(s, e)                                 \
+                                       (   UTF8_IS_DOWNGRADEABLE_START(*(s))  \
+                                        && ( (e) - (s) > 1)                   \
+                                        && UTF8_IS_CONTINUATION(*((s)+1)))
 
 /* Number of bytes a code point occupies in UTF-8. */
 #define NATIVE_SKIP(uv) UVCHR_SKIP(uv)
@@ -464,13 +595,27 @@
  * through 255 */
 #define UNI_IS_INVARIANT(cp)   UVCHR_IS_INVARIANT(cp)
 
-/* Is the byte 'c' the same character when encoded in UTF-8 as when not.  This
- * works on both UTF-8 encoded strings and non-encoded, as it returns TRUE in
- * each for the exact same set of bit patterns.  It is valid on a subset of
- * what UVCHR_IS_INVARIANT is valid on, so can just use that; and the compiler
- * should optimize out anything extraneous given the implementation of the
- * latter.  The |0 makes sure this isn't mistakenly called with a ptr argument.
- * */
+/*
+=for apidoc Am|bool|UTF8_IS_INVARIANT|char c
+
+Evaluates to 1 if the byte C<c> represents the same character when encoded in
+UTF-8 as when not; otherwise evaluates to 0.  UTF-8 invariant characters can be
+copied as-is when converting to/from UTF-8, saving time.
+
+In spite of the name, this macro gives the correct result if the input string
+from which C<c> comes is not encoded in UTF-8.
+
+See C<L</UVCHR_IS_INVARIANT>> for checking if a UV is invariant.
+
+=cut
+
+The reason it works on both UTF-8 encoded strings and non-UTF-8 encoded, is
+that it returns TRUE in each for the exact same set of bit patterns.  It is
+valid on a subset of what UVCHR_IS_INVARIANT is valid on, so can just use that;
+and the compiler should optimize out anything extraneous given the
+implementation of the latter.  The |0 makes sure this isn't mistakenly called
+with a ptr argument.
+*/
 #define UTF8_IS_INVARIANT(c)	UVCHR_IS_INVARIANT((c) | 0)
 
 /* Like the above, but its name implies a non-UTF8 input, which as the comments
@@ -533,20 +678,37 @@
  * beginning of a utf8 character.  Now that foo_utf8() determines that itself,
  * no need to do it again here
  */
-#define isIDFIRST_lazy_if(p,UTF) ((IN_BYTES || !UTF)                \
-				 ? isIDFIRST(*(p))                  \
-				 : isIDFIRST_utf8((const U8*)p))
-#define isWORDCHAR_lazy_if(p,UTF)   ((IN_BYTES || (!UTF))           \
-				 ? isWORDCHAR(*(p))                 \
-				 : isWORDCHAR_utf8((const U8*)p))
-#define isALNUM_lazy_if(p,UTF)   isWORDCHAR_lazy_if(p,UTF)
+#define isIDFIRST_lazy_if(p,UTF)                                            \
+            _is_utf8_FOO(_CC_IDFIRST, (const U8 *) p, "isIDFIRST_lazy_if",  \
+                         "isIDFIRST_lazy_if_safe",                          \
+                         cBOOL(UTF && ! IN_BYTES), 0, __FILE__,__LINE__)
 
+#define isIDFIRST_lazy_if_safe(p, e, UTF)                                   \
+                   ((IN_BYTES || !UTF)                                      \
+                     ? isIDFIRST(*(p))                                      \
+                     : isIDFIRST_utf8_safe(p, e))
+
+#define isWORDCHAR_lazy_if(p,UTF)                                           \
+            _is_utf8_FOO(_CC_IDFIRST, (const U8 *) p, "isWORDCHAR_lazy_if", \
+                         "isWORDCHAR_lazy_if_safe",                         \
+                         cBOOL(UTF && ! IN_BYTES), 0, __FILE__,__LINE__)
+
+#define isWORDCHAR_lazy_if_safe(p, e, UTF)                                  \
+                   ((IN_BYTES || !UTF)                                      \
+                     ? isWORDCHAR(*(p))                                     \
+                     : isWORDCHAR_utf8_safe((U8 *) p, (U8 *) e))
+
+#define isALNUM_lazy_if(p,UTF)                                              \
+            _is_utf8_FOO(_CC_IDFIRST, (const U8 *) p, "isALNUM_lazy_if",    \
+                         "isWORDCHAR_lazy_if_safe",                         \
+                         cBOOL(UTF && ! IN_BYTES), 0, __FILE__,__LINE__)
+
 #define UTF8_MAXLEN UTF8_MAXBYTES
 
 /* A Unicode character can fold to up to 3 characters */
 #define UTF8_MAX_FOLD_CHAR_EXPAND 3
 
-#define IN_BYTES (CopHINTS_get(PL_curcop) & HINT_BYTES)
+#define IN_BYTES UNLIKELY(CopHINTS_get(PL_curcop) & HINT_BYTES)
 
 /*
 
@@ -565,49 +727,65 @@
  * Is so within 'feature unicode_strings' or 'locale :not_characters', and not
  * within 'use bytes'.  UTF-8 locales are not tested for here, but perhaps
  * could be */
-#define IN_UNI_8_BIT                                                             \
-	    (((CopHINTS_get(PL_curcop) & (HINT_UNI_8_BIT))                       \
-               || (CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL                 \
-                   /* -1 below is for :not_characters */                         \
-                   && _is_in_locale_category(FALSE, -1)))                        \
-              && ! IN_BYTES)
+#define IN_UNI_8_BIT                                                    \
+	    ((    (      (CopHINTS_get(PL_curcop) & HINT_UNI_8_BIT))    \
+                   || (   CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL \
+                            /* -1 below is for :not_characters */       \
+                       && _is_in_locale_category(FALSE, -1)))           \
+              && (! IN_BYTES))
 
 
 #define UTF8_ALLOW_EMPTY		0x0001	/* Allow a zero length string */
+#define UTF8_GOT_EMPTY                  UTF8_ALLOW_EMPTY
 
 /* Allow first byte to be a continuation byte */
 #define UTF8_ALLOW_CONTINUATION		0x0002
+#define UTF8_GOT_CONTINUATION		UTF8_ALLOW_CONTINUATION
 
-/* Allow second... bytes to be non-continuation bytes */
+/* Unexpected continuation byte */
 #define UTF8_ALLOW_NON_CONTINUATION	0x0004
+#define UTF8_GOT_NON_CONTINUATION	UTF8_ALLOW_NON_CONTINUATION
 
 /* expecting more bytes than were available in the string */
 #define UTF8_ALLOW_SHORT		0x0008
+#define UTF8_GOT_SHORT		        UTF8_ALLOW_SHORT
 
-/* Overlong sequence; i.e., the code point can be specified in fewer bytes. */
+/* Overlong sequence; i.e., the code point can be specified in fewer bytes.
+ * First one will convert the overlong to the REPLACEMENT CHARACTER; second
+ * will return what the overlong evaluates to */
 #define UTF8_ALLOW_LONG                 0x0010
+#define UTF8_ALLOW_LONG_AND_ITS_VALUE   (UTF8_ALLOW_LONG|0x0020)
+#define UTF8_GOT_LONG                   UTF8_ALLOW_LONG
 
-#define UTF8_DISALLOW_SURROGATE		0x0020	/* Unicode surrogates */
-#define UTF8_WARN_SURROGATE		0x0040
+#define UTF8_ALLOW_OVERFLOW             0x0080
+#define UTF8_GOT_OVERFLOW               UTF8_ALLOW_OVERFLOW
 
-#define UTF8_DISALLOW_NONCHAR           0x0080	/* Unicode non-character */
-#define UTF8_WARN_NONCHAR               0x0100	/*  code points */
+#define UTF8_DISALLOW_SURROGATE		0x0100	/* Unicode surrogates */
+#define UTF8_GOT_SURROGATE		UTF8_DISALLOW_SURROGATE
+#define UTF8_WARN_SURROGATE		0x0200
 
-#define UTF8_DISALLOW_SUPER		0x0200	/* Super-set of Unicode: code */
-#define UTF8_WARN_SUPER		        0x0400	/* points above the legal max */
+#define UTF8_DISALLOW_NONCHAR           0x0400	/* Unicode non-character */
+#define UTF8_GOT_NONCHAR                UTF8_DISALLOW_NONCHAR
+#define UTF8_WARN_NONCHAR               0x0800	/*  code points */
 
+#define UTF8_DISALLOW_SUPER		0x1000	/* Super-set of Unicode: code */
+#define UTF8_GOT_SUPER		        UTF8_DISALLOW_SUPER
+#define UTF8_WARN_SUPER		        0x2000	/* points above the legal max */
+
 /* Code points which never were part of the original UTF-8 standard, which only
  * went up to 2 ** 31 - 1.  Note that these all overflow a signed 32-bit word,
  * The first byte of these code points is FE or FF on ASCII platforms.  If the
  * first byte is FF, it will overflow a 32-bit word. */
-#define UTF8_DISALLOW_ABOVE_31_BIT      0x0800
-#define UTF8_WARN_ABOVE_31_BIT          0x1000
+#define UTF8_DISALLOW_ABOVE_31_BIT      0x4000
+#define UTF8_GOT_ABOVE_31_BIT           UTF8_DISALLOW_ABOVE_31_BIT
+#define UTF8_WARN_ABOVE_31_BIT          0x8000
 
 /* For back compat, these old names are misleading for UTF_EBCDIC */
 #define UTF8_DISALLOW_FE_FF             UTF8_DISALLOW_ABOVE_31_BIT
 #define UTF8_WARN_FE_FF                 UTF8_WARN_ABOVE_31_BIT
 
-#define UTF8_CHECK_ONLY			0x2000
+#define UTF8_CHECK_ONLY			0x10000
+#define _UTF8_NO_CONFIDENCE_IN_CURLEN   0x20000  /* Internal core use only */
 
 /* For backwards source compatibility.  They do nothing, as the default now
  * includes what they used to mean.  The first one's meaning was to allow the
@@ -615,47 +793,107 @@
 #define UTF8_ALLOW_FFFF 0
 #define UTF8_ALLOW_SURROGATE 0
 
+/* C9 refers to Unicode Corrigendum #9: allows but discourages non-chars */
+#define UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE                                    \
+                                 (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_SURROGATE)
+#define UTF8_WARN_ILLEGAL_C9_INTERCHANGE (UTF8_WARN_SUPER|UTF8_WARN_SURROGATE)
+
 #define UTF8_DISALLOW_ILLEGAL_INTERCHANGE                                       \
-                       ( UTF8_DISALLOW_SUPER|UTF8_DISALLOW_NONCHAR              \
-                        |UTF8_DISALLOW_SURROGATE)
+                  (UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE|UTF8_DISALLOW_NONCHAR)
 #define UTF8_WARN_ILLEGAL_INTERCHANGE \
-                         (UTF8_WARN_SUPER|UTF8_WARN_NONCHAR|UTF8_WARN_SURROGATE)
-#define UTF8_ALLOW_ANY                                                          \
-	    (~( UTF8_DISALLOW_ILLEGAL_INTERCHANGE|UTF8_DISALLOW_ABOVE_31_BIT    \
-               |UTF8_WARN_ILLEGAL_INTERCHANGE|UTF8_WARN_ABOVE_31_BIT))
-#define UTF8_ALLOW_ANYUV                                                        \
-         (UTF8_ALLOW_EMPTY                                                      \
-	  & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE|UTF8_WARN_ILLEGAL_INTERCHANGE))
-#define UTF8_ALLOW_DEFAULT		(ckWARN(WARN_UTF8) ? 0 : \
-					 UTF8_ALLOW_ANYUV)
+                          (UTF8_WARN_ILLEGAL_C9_INTERCHANGE|UTF8_WARN_NONCHAR)
 
-/* Several of the macros below have a second parameter that is currently
- * unused; but could be used in the future to make sure that the input is
- * well-formed. */
+/* This is typically used for code that processes UTF-8 input and doesn't want
+ * to have to deal with any malformations that might be present.  All such will
+ * be safely replaced by the REPLACEMENT CHARACTER, unless other flags
+ * overriding this are also present. */
+#define UTF8_ALLOW_ANY ( UTF8_ALLOW_CONTINUATION                                \
+                        |UTF8_ALLOW_NON_CONTINUATION                            \
+                        |UTF8_ALLOW_SHORT                                       \
+                        |UTF8_ALLOW_LONG                                        \
+                        |UTF8_ALLOW_OVERFLOW)
 
-#define UTF8_IS_SURROGATE(s, e) cBOOL(is_SURROGATE_utf8(s))
-#define UTF8_IS_REPLACEMENT(s, send) cBOOL(is_REPLACEMENT_utf8_safe(s,send))
+/* Accept any Perl-extended UTF-8 that evaluates to any UV on the platform, but
+ * not any malformed.  This is the default.  (Note that UVs above IV_MAX are
+ * deprecated. */
+#define UTF8_ALLOW_ANYUV   0
+#define UTF8_ALLOW_DEFAULT UTF8_ALLOW_ANYUV
 
-/*		  ASCII		     EBCDIC I8
+/*
+=for apidoc Am|bool|UTF8_IS_SURROGATE|const U8 *s|const U8 *e
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one
+of the Unicode surrogate code points; otherwise it evaluates to 0.  If
+non-zero, the value gives how many bytes starting at C<s> comprise the code
+point's representation.
+
+=cut
+ */
+#define UTF8_IS_SURROGATE(s, e)      is_SURROGATE_utf8_safe(s, e)
+
+
+#define UTF8_IS_REPLACEMENT(s, send) is_REPLACEMENT_utf8_safe(s,send)
+
+/*
+=for apidoc Am|bool|UTF8_IS_SUPER|const U8 *s|const U8 *e
+
+Recall that Perl recognizes an extension to UTF-8 that can encode code
+points larger than the ones defined by Unicode, which are 0..0x10FFFF.
+
+This macro evaluates to non-zero if the first few bytes of the string starting
+at C<s> and looking no further than S<C<e - 1>> are from this UTF-8 extension;
+otherwise it evaluates to 0.  If non-zero, the value gives how many bytes
+starting at C<s> comprise the code point's representation.
+
+0 is returned if the bytes are not well-formed extended UTF-8, or if they
+represent a code point that cannot fit in a UV on the current platform.  Hence
+this macro can give different results when run on a 64-bit word machine than on
+one with a 32-bit word size.
+
+Note that it is deprecated to have code points that are larger than what can
+fit in an IV on the current machine.
+
+=cut
+
+ *		  ASCII		     EBCDIC I8
  * U+10FFFF: \xF4\x8F\xBF\xBF	\xF9\xA1\xBF\xBF\xBF	max legal Unicode
  * U+110000: \xF4\x90\x80\x80	\xF9\xA2\xA0\xA0\xA0
  * U+110001: \xF4\x90\x80\x81	\xF9\xA2\xA0\xA0\xA1
- *
- * BE AWARE that this test doesn't rule out malformed code points, in
- * particular overlongs */
-#ifdef EBCDIC /* Both versions assume well-formed UTF8 */
-#   define UTF8_IS_SUPER(s, e) (NATIVE_UTF8_TO_I8(* (U8*) (s)) >= 0xF9          \
-                         && (NATIVE_UTF8_TO_I8(* (U8*) (s)) > 0xF9              \
-                             || (NATIVE_UTF8_TO_I8(* ((U8*) (s) + 1)) >= 0xA2)))
+ */
+#ifdef EBCDIC
+#   define UTF8_IS_SUPER(s, e)                                              \
+                  ((    LIKELY((e) > (s) + 4)                               \
+                    &&      NATIVE_UTF8_TO_I8(*(s)) >= 0xF9                 \
+                    && (    NATIVE_UTF8_TO_I8(*(s)) >  0xF9                 \
+                        || (NATIVE_UTF8_TO_I8(*((s) + 1)) >= 0xA2))         \
+                    &&  LIKELY((s) + UTF8SKIP(s) <= (e)))                   \
+                    ? _is_utf8_char_helper(s, s + UTF8SKIP(s), 0) : 0)
 #else
-#   define UTF8_IS_SUPER(s, e) (*(U8*) (s) >= 0xF4                              \
-                           && (*(U8*) (s) > 0xF4 || (*((U8*) (s) + 1) >= 0x90)))
+#   define UTF8_IS_SUPER(s, e)                                              \
+                   ((    LIKELY((e) > (s) + 3)                              \
+                     &&  (*(U8*) (s)) >= 0xF4                               \
+                     && ((*(U8*) (s)) >  0xF4 || (*((U8*) (s) + 1) >= 0x90))\
+                     &&  LIKELY((s) + UTF8SKIP(s) <= (e)))                  \
+                    ? _is_utf8_char_helper(s, s + UTF8SKIP(s), 0) : 0)
 #endif
 
 /* These are now machine generated, and the 'given' clause is no longer
  * applicable */
 #define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e)          \
-                                                    cBOOL(is_NONCHAR_utf8(s))
+                                            cBOOL(is_NONCHAR_utf8_safe(s,e))
+
+/*
+=for apidoc Am|bool|UTF8_IS_NONCHAR|const U8 *s|const U8 *e
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one
+of the Unicode non-character code points; otherwise it evaluates to 0.  If
+non-zero, the value gives how many bytes starting at C<s> comprise the code
+point's representation.
+
+=cut
+ */
 #define UTF8_IS_NONCHAR(s, e)                                                  \
                 UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e)
 
@@ -676,10 +914,14 @@
 #define UNICODE_DISALLOW_NONCHAR      0x0020
 #define UNICODE_DISALLOW_SUPER        0x0040
 #define UNICODE_DISALLOW_ABOVE_31_BIT 0x0080
+#define UNICODE_WARN_ILLEGAL_C9_INTERCHANGE                                   \
+                                  (UNICODE_WARN_SURROGATE|UNICODE_WARN_SUPER)
 #define UNICODE_WARN_ILLEGAL_INTERCHANGE                                      \
-            (UNICODE_WARN_SURROGATE|UNICODE_WARN_NONCHAR|UNICODE_WARN_SUPER)
+                   (UNICODE_WARN_ILLEGAL_C9_INTERCHANGE|UNICODE_WARN_NONCHAR)
+#define UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE                               \
+                          (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_SUPER)
 #define UNICODE_DISALLOW_ILLEGAL_INTERCHANGE                                  \
- (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_NONCHAR|UNICODE_DISALLOW_SUPER)
+           (UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE|UNICODE_DISALLOW_NONCHAR)
 
 /* For backward source compatibility, as are now the default */
 #define UNICODE_ALLOW_SURROGATE 0
@@ -752,76 +994,169 @@
 
 #define SHARP_S_SKIP 2
 
-/* If you want to exclude surrogates, and beyond legal Unicode, see the blame
- * log for earlier versions which gave details for these */
+/*
 
-/* A helper macro for isUTF8_CHAR, so use that one, and not this one.  This is
- * retained solely for backwards compatibility and may be deprecated and
- * removed in a future Perl version.
- *
- * regen/regcharclass.pl generates is_UTF8_CHAR_utf8() macros for up to these
- * number of bytes.  So this has to be coordinated with that file */
-#ifdef EBCDIC
-#   define IS_UTF8_CHAR_FAST(n) ((n) <= 3)
-#else
-#   define IS_UTF8_CHAR_FAST(n) ((n) <= 4)
-#endif
+=for apidoc Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e
 
-#ifndef EBCDIC
-/* A helper macro for isUTF8_CHAR, so use that one instead of this.  This was
- * generated by regen/regcharclass.pl, and then moved here.  The lines that
- * generated it were then commented out.  This was done solely because it takes
- * on the order of 10 minutes to generate, and is never going to change, unless
- * the generated code is improved.
- *
- * The EBCDIC versions have been cut to not cover all of legal Unicode,
- * otherwise they take too long to generate; besides there is a separate one
- * for each code page, so they are in regcharclass.h instead of here */
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
+that represents some code point; otherwise it evaluates to 0.  If non-zero, the
+value gives how many bytes starting at C<s> comprise the code point's
+representation.  Any bytes remaining before C<e>, but beyond the ones needed to
+form the first code point in C<s>, are not examined.
+
+The code point can be any that will fit in a UV on this machine, using Perl's
+extension to official UTF-8 to represent those higher than the Unicode maximum
+of 0x10FFFF.  That means that this macro is used to efficiently decide if the
+next few bytes in C<s> is legal UTF-8 for a single character.
+
+Use C<L</isSTRICT_UTF8_CHAR>> to restrict the acceptable code points to those
+defined by Unicode to be fully interchangeable across applications;
+C<L</isC9_STRICT_UTF8_CHAR>> to use the L<Unicode Corrigendum
+#9|http://www.unicode.org/versions/corrigendum9.html> definition of allowable
+code points; and C<L</isUTF8_CHAR_flags>> for a more customized definition.
+
+Use C<L</is_utf8_string>>, C<L</is_utf8_string_loc>>, and
+C<L</is_utf8_string_loclen>> to check entire strings.
+
+Note that it is deprecated to use code points higher than what will fit in an
+IV.  This macro does not raise any warnings for such code points, treating them
+as valid.
+
+Note also that a UTF-8 INVARIANT character (i.e. ASCII on non-EBCDIC machines)
+is a valid UTF-8 character.
+
+=cut
+*/
+
+#define isUTF8_CHAR(s, e)                                                   \
+    (UNLIKELY((e) <= (s))                                                   \
+    ? 0                                                                     \
+    : (UTF8_IS_INVARIANT(*s))                                               \
+      ? 1                                                                   \
+      : UNLIKELY(((e) - (s)) < UTF8SKIP(s))                                 \
+        ? 0                                                                 \
+        : LIKELY(NATIVE_UTF8_TO_I8(*s) <= _IS_UTF8_CHAR_HIGHEST_START_BYTE) \
+          ? is_UTF8_CHAR_utf8_no_length_checks(s)                           \
+          : _is_utf8_char_helper(s, e, 0))
+
+#define is_utf8_char_buf(buf, buf_end) isUTF8_CHAR(buf, buf_end)
+
 /*
-	UTF8_CHAR: Matches legal UTF-8 encoded characters from 2 through 4 bytes
 
-	0x80 - 0x1FFFFF
+=for apidoc Am|STRLEN|isSTRICT_UTF8_CHAR|const U8 *s|const U8 *e
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some
+Unicode code point completely acceptable for open interchange between all
+applications; otherwise it evaluates to 0.  If non-zero, the value gives how
+many bytes starting at C<s> comprise the code point's representation.  Any
+bytes remaining before C<e>, but beyond the ones needed to form the first code
+point in C<s>, are not examined.
+
+The largest acceptable code point is the Unicode maximum 0x10FFFF, and must not
+be a surrogate nor a non-character code point.  Thus this excludes any code
+point from Perl's extended UTF-8.
+
+This is used to efficiently decide if the next few bytes in C<s> is
+legal Unicode-acceptable UTF-8 for a single character.
+
+Use C<L</isC9_STRICT_UTF8_CHAR>> to use the L<Unicode Corrigendum
+#9|http://www.unicode.org/versions/corrigendum9.html> definition of allowable
+code points; C<L</isUTF8_CHAR>> to check for Perl's extended UTF-8;
+and C<L</isUTF8_CHAR_flags>> for a more customized definition.
+
+Use C<L</is_strict_utf8_string>>, C<L</is_strict_utf8_string_loc>>, and
+C<L</is_strict_utf8_string_loclen>> to check entire strings.
+
+=cut
 */
-/*** GENERATED CODE ***/
-#define is_UTF8_CHAR_utf8_no_length_checks(s)                               \
-( ( 0xC2 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xDF ) ?                          \
-    ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 )                          \
-: ( 0xE0 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( ((U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
-: ( 0xE1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xEF ) ?                          \
-    ( ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
-: ( 0xF0 == ((U8*)s)[0] ) ?                                                 \
-    ( ( ( ( 0x90 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xBF ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
-: ( ( ( ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF7 ) && ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )
-#endif
 
+#define isSTRICT_UTF8_CHAR(s, e)                                            \
+    (UNLIKELY((e) <= (s))                                                   \
+    ? 0                                                                     \
+    : (UTF8_IS_INVARIANT(*s))                                               \
+      ? 1                                                                   \
+      : UNLIKELY(((e) - (s)) < UTF8SKIP(s))                                 \
+        ? 0                                                                 \
+        : is_STRICT_UTF8_CHAR_utf8_no_length_checks(s))
+
 /*
 
-=for apidoc Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e
+=for apidoc Am|STRLEN|isC9_STRICT_UTF8_CHAR|const U8 *s|const U8 *e
 
-Returns the number of bytes beginning at C<s> which form a legal UTF-8 (or
-UTF-EBCDIC) encoded character, looking no further than S<C<e - s>> bytes into
-C<s>.  Returns 0 if the sequence starting at C<s> through S<C<e - 1>> is not
-well-formed UTF-8.
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some
+Unicode non-surrogate code point; otherwise it evaluates to 0.  If non-zero,
+the value gives how many bytes starting at C<s> comprise the code point's
+representation.  Any bytes remaining before C<e>, but beyond the ones needed to
+form the first code point in C<s>, are not examined.
 
-Note that an INVARIANT character (i.e. ASCII on non-EBCDIC
-machines) is a valid UTF-8 character.
+The largest acceptable code point is the Unicode maximum 0x10FFFF.  This
+differs from C<L</isSTRICT_UTF8_CHAR>> only in that it accepts non-character
+code points.  This corresponds to
+L<Unicode Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>.
+which said that non-character code points are merely discouraged rather than
+completely forbidden in open interchange.  See
+L<perlunicode/Noncharacter code points>.
 
+Use C<L</isUTF8_CHAR>> to check for Perl's extended UTF-8; and
+C<L</isUTF8_CHAR_flags>> for a more customized definition.
+
+Use C<L</is_c9strict_utf8_string>>, C<L</is_c9strict_utf8_string_loc>>, and
+C<L</is_c9strict_utf8_string_loclen>> to check entire strings.
+
 =cut
 */
 
-#define isUTF8_CHAR(s, e)   (UNLIKELY((e) <= (s))                           \
-                             ? 0                                            \
-                             : (UTF8_IS_INVARIANT(*s))                      \
-                               ? 1                                          \
-                               : UNLIKELY(((e) - (s)) < UTF8SKIP(s))        \
-                                 ? 0                                        \
-                                 : LIKELY(IS_UTF8_CHAR_FAST(UTF8SKIP(s)))   \
-                                   ? is_UTF8_CHAR_utf8_no_length_checks(s)  \
-                                   : _is_utf8_char_slow(s, e))
+#define isC9_STRICT_UTF8_CHAR(s, e)                                         \
+    (UNLIKELY((e) <= (s))                                                   \
+    ? 0                                                                     \
+    : (UTF8_IS_INVARIANT(*s))                                               \
+      ? 1                                                                   \
+      : UNLIKELY(((e) - (s)) < UTF8SKIP(s))                                 \
+        ? 0                                                                 \
+        : is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s))
 
-#define is_utf8_char_buf(buf, buf_end) isUTF8_CHAR(buf, buf_end)
+/*
 
+=for apidoc Am|STRLEN|isUTF8_CHAR_flags|const U8 *s|const U8 *e| const U32 flags
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
+that represents some code point, subject to the restrictions given by C<flags>;
+otherwise it evaluates to 0.  If non-zero, the value gives how many bytes
+starting at C<s> comprise the code point's representation.  Any bytes remaining
+before C<e>, but beyond the ones needed to form the first code point in C<s>,
+are not examined.
+
+If C<flags> is 0, this gives the same results as C<L</isUTF8_CHAR>>;
+if C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results
+as C<L</isSTRICT_UTF8_CHAR>>;
+and if C<flags> is C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives
+the same results as C<L</isC9_STRICT_UTF8_CHAR>>.
+Otherwise C<flags> may be any combination of the C<UTF8_DISALLOW_I<foo>> flags
+understood by C<L</utf8n_to_uvchr>>, with the same meanings.
+
+The three alternative macros are for the most commonly needed validations; they
+are likely to run somewhat faster than this more general one, as they can be
+inlined into your code.
+
+Use L</is_utf8_string_flags>, L</is_utf8_string_loc_flags>, and
+L</is_utf8_string_loclen_flags> to check entire strings.
+
+=cut
+*/
+
+#define isUTF8_CHAR_flags(s, e, flags)                                      \
+    (UNLIKELY((e) <= (s))                                                   \
+    ? 0                                                                     \
+    : (UTF8_IS_INVARIANT(*s))                                               \
+      ? 1                                                                   \
+      : UNLIKELY(((e) - (s)) < UTF8SKIP(s))                                 \
+        ? 0                                                                 \
+        : _is_utf8_char_helper(s, e, flags))
+
 /* Do not use; should be deprecated.  Use isUTF8_CHAR() instead; this is
  * retained solely for backwards compatibility */
 #define IS_UTF8_CHAR(p, n)      (isUTF8_CHAR(p, (p) + (n)) == n)

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -185,9 +185,37 @@
 For 32-bit words, the 2nd through 7th bytes effectively function as leading
 zeros.  Above 32 bits, these fill up, with each byte yielding 5 bits of
 information, so that with 13 continuation bytes, we can handle 65 bits, just
-above what a 64 bit word can hold */
+above what a 64 bit word can hold
 
+ The following table gives the I8:
 
+   I8 Code Points      1st Byte  2nd Byte  3rd     4th     5th     6th     7th       8th  9th-14th
+
+   0x0000..0x009F       00..9F
+   0x00A0..0x00FF     * C5..C7    A0..BF
+   U+0100..U+03FF       C8..DF    A0..BF
+   U+0400..U+3FFF     * E1..EF    A0..BF  A0..BF
+   U+4000..U+7FFF       F0      * B0..BF  A0..BF  A0..BF
+   U+8000..U+D7FF       F1        A0..B5  A0..BF  A0..BF
+   U+D800..U+DFFF       F1        B6..B7  A0..BF  A0..BF (surrogates)
+   U+E000..U+FFFF       F1        B8..BF  A0..BF  A0..BF
+  U+10000..U+3FFFF	F2..F7    A0..BF  A0..BF  A0..BF
+  U+40000..U+FFFFF	F8      * A8..BF  A0..BF  A0..BF  A0..BF
+ U+100000..U+10FFFF	F9        A0..A1  A0..BF  A0..BF  A0..BF
+    Below are above-Unicode code points
+ U+110000..U+1FFFFF	F9        A2..BF  A0..BF  A0..BF  A0..BF
+ U+200000..U+3FFFFF	FA..FB    A0..BF  A0..BF  A0..BF  A0..BF
+ U+400000..U+1FFFFFF	FC      * A4..BF  A0..BF  A0..BF  A0..BF  A0..BF
+U+2000000..U+3FFFFFF	FD        A0..BF  A0..BF  A0..BF  A0..BF  A0..BF
+U+4000000..U+3FFFFFFF   FE      * A2..BF  A0..BF  A0..BF  A0..BF  A0..BF  A0..BF
+U+40000000..            FF        A0..BF  A0..BF  A0..BF  A0..BF  A0..BF  A0..BF  * A1..BF  A0..BF
+
+Note the gaps before several of the byte entries above marked by '*'.  These are
+caused by legal UTF-8 avoiding non-shortest encodings: it is technically
+possible to UTF-8-encode a single code point in different ways, but that is
+explicitly forbidden, and the shortest possible encoding should always be used
+(and that is what Perl does). */
+
 /* This is a fundamental property of UTF-EBCDIC */
 #define OFFUNI_IS_INVARIANT(c) (((UV)(c)) <  0xA0)
 
@@ -240,6 +268,256 @@
  * for more */
 #define QUESTION_MARK_CTRL   LATIN1_TO_NATIVE(0x9F)
 
+/* Any I8 string larger than this will overflow the word if it were converted into a UV */
+#if defined(UV_IS_QUAD)
+#   define HIGHEST_REPRESENTABLE_UTF8  "\xFF\xAF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"
+#else
+#   define HIGHEST_REPRESENTABLE_UTF8  "\xFF\xA0\xA0\xA0\xA0\xA0\xA0\xA3\xBF\xBF\xBF\xBF\xBF\xBF"
+#endif
+
+/* Helper macros for isUTF8_CHAR_foo, so use those instead of this.  These were
+ * generated by regen/regcharclass.pl, and then moved here.  Then they were
+ * hand-edited to add some LIKELY() calls, presuming that malformations are
+ * unlikely.  The lines that generated it were then commented out.  This was
+ * done because it takes on the order of 10 minutes to generate, and is never
+ * going to change, unless the generated code is improved, and figuring out the
+ * LIKELYs there would be hard.
+ *
+ */
+
+#if '^' == 95 /* CP 1047 */
+/*      UTF8_CHAR: Matches legal UTF-EBCDIC variant code points up through 0x1FFFFFF
+
+	0xA0 - 0x1FFFFF
+*/
+
+/*** GENERATED CODE ***/
+#define is_UTF8_CHAR_utf8_no_length_checks(s)                               \
+( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\
+    ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
+: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
+    ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
+: ( 0xDC == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( ( 0xDD <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
+    ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( 0xED == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
+: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )
+
+/*      UTF8_CHAR_STRICT: Matches legal Unicode UTF-8 variant code points, no
+                          surrrogates nor non-character code points */
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s)                  \
+( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\
+	( LIKELY( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+    : ( 0x73 == ((const U8*)s)[1] ) ?                                             \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
+	    ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
+	: LIKELY( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ) ? 4 : 0 )\
+    : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s)                  \
+( ( 0xED == ((const U8*)s)[0] ) ?                                                 \
+    ( ( ( ( ((const U8*)s)[1] & 0xEF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xF9 ) == 0x51 ) || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) ?\
+	( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
+    : ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) ?\
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
+	    ( LIKELY( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
+	: ( 0x73 == ((const U8*)s)[2] ) ?                                         \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ?\
+		( LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ? 5 : 0 )\
+	    : LIKELY( ( 0x73 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFE ) == 0x70 ) ) ? 5 : 0 )\
+	: 0 )                                                               \
+    : 0 )                                                                   \
+: ( 0xEE == ((const U8*)s)[0] ) ?                                                 \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                             \
+	( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                             \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
+	    ( LIKELY( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
+	: ( 0x73 == ((const U8*)s)[2] ) ?                                         \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ?\
+		( LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ? 5 : 0 )\
+	    : LIKELY( ( 0x73 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFE ) == 0x70 ) ) ? 5 : 0 )\
+	: 0 )                                                               \
+    : 0 )                                                                   \
+: 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s)                        \
+( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\
+    ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
+: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
+    ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
+: ( 0xDC == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( 0xDD == ((const U8*)s)[0] ) ?                                                 \
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x64 ) || ( 0x67 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\
+	( LIKELY( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+    : ( 0x73 == ((const U8*)s)[1] ) ?                                             \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x54 ) || ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
+	    ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
+	: ( 0x55 == ((const U8*)s)[2] ) ?                                         \
+	    ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
+	: ( 0x56 == ((const U8*)s)[2] ) ?                                         \
+	    ( LIKELY( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
+	: LIKELY( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ) ? 4 : 0 )\
+    : 0 )                                                                   \
+: ( 0xDE == ((const U8*)s)[0] || 0xE1 == ((const U8*)s)[0] || 0xEB == ((const U8*)s)[0] ) ?   \
+    ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) )
+
+/*      C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points
+                             including non-character code points, no surrogates
+	0x00A0 - 0xD7FF
+	0xE000 - 0x10FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s)             \
+( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\
+    ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
+: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
+    ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
+: ( 0xDC == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( 0xDD == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x64 ) || ( 0x67 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( ( ((const U8*)s)[0] & 0xFE ) == 0xDE || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
+    ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
+: ( 0xED == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
+: LIKELY( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] || 0x42 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )
+
+#endif
+
+#if '^' == 176 /* CP 037 */
+
+/*** GENERATED CODE ***/
+#define is_UTF8_CHAR_utf8_no_length_checks(s)                               \
+( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ?\
+    ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
+: ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
+    ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
+: ( 0xDC == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+: ( ( 0xDD <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
+    ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+: ( 0xED == ((const U8*)s)[0] ) ?                                                 \
+    ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
+: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )
+
+/* XXX Below do not have LIKELY() added */
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s)                  \
+( ( ( ( ((const U8*)s)[1] & 0xEF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xF9 ) == 0x51 ) || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ((const U8*)s)[1] == 0x71 ) ?\
+	( ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
+    : ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) ?\
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
+	    ( ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
+	: ( 0x72 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ?\
+		( ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ? 5 : 0 )\
+	    : ( ( 0x72 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || 0x70 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: 0 )                                                               \
+    : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s)                  \
+( ( 0xEE == ((const U8*)s)[0] ) ?                                           \
+    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
+    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
+	    ( ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
+	: ( 0x72 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ?\
+		( ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ? 5 : 0 )\
+	    : ( ( 0x72 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || 0x70 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+	: 0 )                                                               \
+    : 0 )                                                                   \
+: 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2(s)                  \
+( ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3(s)                  \
+( ( 0xDD == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( ((const U8*)s)[1] & 0xFE ) == 0x62 || ( 0x66 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFE ) == 0x70 ) ?\
+	( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+    : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x54 ) || ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
+	: ( 0x55 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
+	: ( 0x56 == ((const U8*)s)[2] ) ?                                   \
+	    ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
+	: ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : 0 )                                                                   \
+: ( 0xDE == ((const U8*)s)[0] || 0xE1 == ((const U8*)s)[0] || 0xEB == ((const U8*)s)[0] ) ?\
+    ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFE ) == 0x70 ) ?\
+	( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+    : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
+	( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
+	    ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
+	: ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
+    : 0 )                                                                   \
+: ( 0xED == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) )
+
+
+/*** GENERATED CODE ***/
+#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s)                        \
+( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ?\
+    ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
+: ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
+    ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
+: ( 0xDC == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3(s) )
+
+/*      C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points
+                             including non-character code points, no surrogates
+	0x00A0 - 0xD7FF
+	0xE000 - 0x10FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s)               \
+( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s)               \
+( ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
+    ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
+: ( 0xDC == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+: ( 0xDD == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( ((const U8*)s)[1] & 0xFE ) == 0x62 || ( 0x66 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+: ( ( ((const U8*)s)[0] & 0xFE ) == 0xDE || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
+    ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
+: ( 0xED == ((const U8*)s)[0] ) ?                                           \
+    ( ( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
+: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] || 0x42 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s)                     \
+( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ? is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) )
+
+#endif
+
+/* is_UTF8_CHAR_utf8_no_length_checks() in both code pages handles UTF-8 that
+ * has this start byte (expressed in I8) as the maximum */
+#define _IS_UTF8_CHAR_HIGHEST_START_BYTE 0xF9
+
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/util.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/util.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/util.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -8,6 +8,10 @@
  *
  */
 
+#ifndef PERL_UTIL_H_
+#define PERL_UTIL_H_
+
+
 #ifdef VMS
 #  define PERL_FILE_IS_ABSOLUTE(f) \
 	(*(f) == '/'							\
@@ -229,6 +233,15 @@
 #  define HS_CXT cv
 #endif
 
+#define instr(haystack, needle) strstr(haystack, needle)
+
+#ifdef HAS_MEMMEM
+#   define ninstr(big, bigend, little, lend)                                \
+            ((char *) memmem(big, bigend - big, little, lend - little))
+#endif
+
+#endif /* PERL_UTIL_H_ */
+
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/vdir.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/vdir.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/vdir.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -203,7 +203,8 @@
 void VDir::FromEnvA(char *pEnv, int index)
 {   /* gets the directory for index from the environment variable. */
     while (*pEnv != '\0') {
-	if ((pEnv[0] == '=') && (DriveIndex(pEnv[1]) == index)) {
+	if ((pEnv[0] == '=') && (DriveIndex(pEnv[1]) == index)
+            && pEnv[2] == ':' && pEnv[3] == '=') {
 	    SetDirA(&pEnv[4], index);
 	    break;
 	}
@@ -215,7 +216,8 @@
 void VDir::FromEnvW(WCHAR *pEnv, int index)
 {   /* gets the directory for index from the environment variable. */
     while (*pEnv != '\0') {
-	if ((pEnv[0] == '=') && (DriveIndex((char)pEnv[1]) == index)) {
+	if ((pEnv[0] == '=') && (DriveIndex((char)pEnv[1]) == index)
+            && pEnv[2] == ':' && pEnv[3] == '=') {
 	    SetDirW(&pEnv[4], index);
 	    break;
 	}

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -111,12 +111,18 @@
 #define WARN_MISSING			 64
 #define WARN_REDUNDANT			 65
 
+/* Warnings Categories added in Perl 5.025 */
+
+#define WARN_EXPERIMENTAL__DECLARED_REFS 66
+
 #define WARNsize			 17
 #define WARN_ALLstring			 "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
 #define WARN_NONEstring			 "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 
-#define isLEXWARN_on 	cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off	cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+	cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+	cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE	(PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)+1))
@@ -126,6 +132,64 @@
     : (STRLEN*)CopyD(p, PerlMemShared_malloc(sizeof(*p)+*p), sizeof(*p)+*p, \
 		     			     char))
 
+/*
+
+=head1 Warning and Dieing
+
+=for apidoc Am|bool|ckWARN|U32 w
+
+Returns a boolean as to whether or not warnings are enabled for the warning
+category C<w>.  If the category is by default enabled even if not within the
+scope of S<C<use warnings>>, instead use the L</ckWARN_d> macro.
+
+=for apidoc Am|bool|ckWARN_d|U32 w
+
+Like C<L</ckWARN>>, but for use if and only if the warning category is by
+default enabled even if not within the scope of S<C<use warnings>>.
+
+=for apidoc Am|bool|ckWARN2|U32 w1|U32 w2
+
+Like C<L</ckWARN>>, but takes two warnings categories as input, and returns
+TRUE if either is enabled.  If either category is by default enabled even if
+not within the scope of S<C<use warnings>>, instead use the L</ckWARN2_d>
+macro.  The categories must be completely independent, one may not be
+subclassed from the other.
+
+=for apidoc Am|bool|ckWARN2_d|U32 w1|U32 w2
+
+Like C<L</ckWARN2>>, but for use if and only if either warning category is by
+default enabled even if not within the scope of S<C<use warnings>>.
+
+=for apidoc Am|bool|ckWARN3|U32 w1|U32 w2|U32 w3
+
+Like C<L</ckWARN2>>, but takes three warnings categories as input, and returns
+TRUE if any is enabled.  If any of the categories is by default enabled even
+if not within the scope of S<C<use warnings>>, instead use the L</ckWARN3_d>
+macro.  The categories must be completely independent, one may not be
+subclassed from any other.
+
+=for apidoc Am|bool|ckWARN3_d|U32 w1|U32 w2|U32 w3
+
+Like C<L</ckWARN3>>, but for use if and only if any of the warning categories
+is by default enabled even if not within the scope of S<C<use warnings>>.
+
+=for apidoc Am|bool|ckWARN4|U32 w1|U32 w2|U32 w3|U32 w4
+
+Like C<L</ckWARN3>>, but takes four warnings categories as input, and returns
+TRUE if any is enabled.  If any of the categories is by default enabled even
+if not within the scope of S<C<use warnings>>, instead use the L</ckWARN4_d>
+macro.  The categories must be completely independent, one may not be
+subclassed from any other.
+
+=for apidoc Am|bool|ckWARN4_d|U32 w1|U32 w2|U32 w3|U32 w4
+
+Like C<L</ckWARN4>>, but for use if and only if any of the warning categories
+is by default enabled even if not within the scope of S<C<use warnings>>.
+
+=cut
+
+*/
+
 #define ckWARN(w)		Perl_ckwarn(aTHX_ packWARN(w))
 
 /* The w1, w2 ... should be independent warnings categories; one shouldn't be
@@ -157,7 +221,8 @@
 #define unpackWARN4(x)		(((x) >>24) & 0xFF)
 
 #define ckDEAD(x)							\
-	   ( ! specialWARN(PL_curcop->cop_warnings) &&			\
+	   (PL_curcop &&                                                \
+            !specialWARN(PL_curcop->cop_warnings) &&			\
 	    ( isWARNf_on(PL_curcop->cop_warnings, WARN_ALL) || 		\
 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN1(x)) ||	\
 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN2(x)) ||	\

Modified: trunk/Master/tlpkg/tlperl/lib/CORE/win32.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/win32.h	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/win32.h	2018-03-08 00:16:42 UTC (rev 46882)
@@ -262,13 +262,13 @@
 #define snprintf	_snprintf
 #define vsnprintf	_vsnprintf
 
-/* on VC2003, msvcrt.lib is missing these symbols */
+/* on VS2003, msvcrt.lib is missing these symbols */
 #if _MSC_VER >= 1300 && _MSC_VER < 1400
 #  pragma intrinsic(_rotl64,_rotr64)
 #endif
 
-#  pragma warning(push)
-#  pragma warning(disable:4756;disable:4056)
+#pragma warning(push)
+#pragma warning(disable:4756;disable:4056)
 PERL_STATIC_INLINE
 double S_Infinity() {
     /* this is a real C literal which can get further constant folded
@@ -277,8 +277,8 @@
        folding INF is creating -INF */
     return (DBL_MAX+DBL_MAX);
 }
-#  pragma warning(pop)
-#  define NV_INF S_Infinity()
+#pragma warning(pop)
+#define NV_INF S_Infinity()
 
 /* selectany allows duplicate and unused data symbols to be removed by
    VC linker, if this were static, each translation unit will have its own,
@@ -290,10 +290,64 @@
    that DLL actually uses __PL_nan_u */
 extern const __declspec(selectany) union { unsigned __int64 __q; double __d; }
 __PL_nan_u = { 0x7FF8000000000000UI64 };
-#  define NV_NAN ((NV)__PL_nan_u.__d)
+#define NV_NAN ((NV)__PL_nan_u.__d)
 
+/* The CRT was rewritten in VS2015. */
+#if _MSC_VER >= 1900
+
+/* No longer declared in stdio.h */
+char *gets(char* buffer);
+
+#define tzname _tzname
+
+/* From corecrt_internal_stdio.h: */
+typedef struct
+{
+    union
+    {
+        FILE  _public_file;
+        char* _ptr;
+    };
+
+    char*            _base;
+    int              _cnt;
+    long             _flags;
+    long             _file;
+    int              _charbuf;
+    int              _bufsiz;
+    char*            _tmpfname;
+    CRITICAL_SECTION _lock;
+} __crt_stdio_stream_data;
+
+#define PERLIO_FILE_flag_RD 0x0001 /* _IOREAD   */
+#define PERLIO_FILE_flag_WR 0x0002 /* _IOWRITE  */
+#define PERLIO_FILE_flag_RW 0x0004 /* _IOUPDATE */
+#define PERLIO_FILE_ptr(f)  (((__crt_stdio_stream_data*)(f))->_ptr)
+#define PERLIO_FILE_base(f) (((__crt_stdio_stream_data*)(f))->_base)
+#define PERLIO_FILE_cnt(f)  (((__crt_stdio_stream_data*)(f))->_cnt)
+#define PERLIO_FILE_flag(f) ((int)(((__crt_stdio_stream_data*)(f))->_flags))
+#define PERLIO_FILE_file(f) ((int)(((__crt_stdio_stream_data*)(f))->_file))
+
+#endif
+
 #endif /* _MSC_VER */
 
+#if (!defined(_MSC_VER)) || (defined(_MSC_VER) && _MSC_VER < 1900)
+
+/* Note: PERLIO_FILE_ptr/base/cnt are not actually used for GCC or <VS2015
+ * since FILE_ptr/base/cnt do the same thing anyway but it doesn't hurt to
+ * define them all here for completeness. */
+#define PERLIO_FILE_flag_RD _IOREAD /* 0x001 */
+#define PERLIO_FILE_flag_WR _IOWRT  /* 0x002 */
+#define PERLIO_FILE_flag_RW _IORW   /* 0x080 */
+#define PERLIO_FILE_ptr(f)  ((f)->_ptr)
+#define PERLIO_FILE_base(f) ((f)->_base)
+#define PERLIO_FILE_cnt(f)  ((f)->_cnt)
+#define PERLIO_FILE_flag(f) ((f)->_flag)
+#define PERLIO_FILE_file(f) ((f)->_file)
+
+#endif
+
 #ifdef __MINGW32__		/* Minimal Gnu-Win32 */
 
 typedef long		uid_t;
@@ -545,21 +599,31 @@
 #  define PERL_WAIT_FOR_CHILDREN win32_wait_for_children(aTHX)
 #endif
 
+/* The following ioinfo struct manipulations had been removed but were
+ * reinstated to fix RT#120091/118059. However, they do not work with
+ * the rewritten CRT in VS2015 so they are removed once again for VS2015
+ * onwards, which will therefore suffer from the reintroduction of the
+ * close socket bug. */
+#if (!defined(_MSC_VER)) || (defined(_MSC_VER) && _MSC_VER < 1900)
+
 #ifdef PERL_CORE
+
 /* C doesn't like repeat struct definitions */
 #if defined(__MINGW32__) && (__MINGW32_MAJOR_VERSION>=3)
-#undef _CRTIMP
+#  undef _CRTIMP
 #endif
 #ifndef _CRTIMP
-#define _CRTIMP __declspec(dllimport)
+#  define _CRTIMP __declspec(dllimport)
 #endif
 
 
-/* VV 2005 has multiple ioinfo struct definitions through VC 2005's release life
- * VC 2008-2012 have been stable but do not assume future VCs will have the
+/* VS2005 has multiple ioinfo struct definitions through VS2005's release life
+ * VS2008-2012 have been stable but do not assume future VSs will have the
  * same ioinfo struct, just because past struct stability. If research is done
- * on the CRTs of future VS, the version check can be bumped up so the newer
- * VC uses a fixed ioinfo size.
+ * on the CRTs of future VSs, the version check can be bumped up so the newer
+ * VS uses a fixed ioinfo size. (Actually, only VS2013 (_MSC_VER 1800) hasn't
+ * been looked at; after that we cannot use the ioinfo struct anyway (see the
+ * #if above).)
  */
 #if ! (_MSC_VER < 1400 || (_MSC_VER >= 1500 && _MSC_VER <= 1700) \
   || defined(__MINGW32__))
@@ -582,7 +646,7 @@
 #  if _MSC_VER >= 1400 && _MSC_VER < 1500
 #    error "This ioinfo struct is incomplete for Visual C 2005"
 #  endif
-/* VC 2005 CRT has at least 3 different definitions of this struct based on the
+/* VS2005 CRT has at least 3 different definitions of this struct based on the
  * CRT DLL's build number. */
 #  if _MSC_VER >= 1500
 #    ifndef _SAFECRT_IMPL
@@ -636,9 +700,12 @@
 #endif
 
 /* since we are not doing a dup2(), this works fine */
-#  define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh)
+#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh)
+
 #endif /* PERL_CORE */
 
+#endif /* !defined(_MSC_VER) || _MSC_VER<1900 */
+
 /* IO.xs and POSIX.xs define PERLIO_NOT_STDIO to 1 */
 #if defined(PERL_EXT_IO) || defined(PERL_EXT_POSIX)
 #undef  PERLIO_NOT_STDIO

Modified: trunk/Master/tlpkg/tlperl/lib/CORE.pod
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm	2018-03-08 00:08:19 UTC (rev 46881)
+++ trunk/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm	2018-03-08 00:16:42 UTC (rev 46882)
@@ -8,7 +8,7 @@
 use vars qw(
             $VERSION
 );
-$VERSION = "5.5001";
+$VERSION = "5.5003";
 
 sub look {
     my $self = shift;
@@ -21,6 +21,11 @@
     delete $self->{later};
     for my $c ( $self->contains ) {
         my $obj = CPAN::Shell->expandany($c) or next;
+        if ($obj->id eq $self->id){
+            my $id = $obj->id;
+            $CPAN::Frontend->mywarn("$id seems to contain itself, skipping\n");
+            next;
+        }
         $obj->undelay;
     }
 }
@@ -39,7 +44,12 @@
         && $color==1
         && $self->{incommandcolor}==$color;
     if ($depth>=$CPAN::MAX_RECURSION) {
-        die(CPAN::Exception::RecursiveDependency->new($ancestors));
+        my $e = CPAN::Exception::RecursiveDependency->new($ancestors);
+        if ($e->is_resolvable) {
+            return $self->{incommandcolor}=2;
+        } else {
+            die $e;
+        }
     }
     # warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1;
 

Modified: trunk/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm	2018-03-08 00:08:19 UTC (rev 46881)

@@ Diff output truncated at 1234567 characters. @@


More information about the tex-live-commits mailing list