diff --git a/Lib/distutils/openvmsccompiler.py b/Lib/distutils/openvmsccompiler.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL2Rpc3R1dGlscy9vcGVudm1zY2NvbXBpbGVyLnB5
--- /dev/null
+++ b/Lib/distutils/openvmsccompiler.py
@@ -0,0 +1,383 @@
+"""distutils.openvmsccompiler
+
+Contains the OpenVMSCCompiler class, a subclass of CCompiler that handles
+the OpenVMS-style command-line C compiler:
+  * macros defined with /DEFINE=(...) qualifier
+  * macros undefined with /UNDEFINE=(...) qualifier
+  * include search directories specified with /INCLUDE_DIRECTORY=(...)
+  * libraries
+  * library search directories
+  * compile handled by 'CC' (or similar) executable:
+    compiles .c to .obj
+  * link static library handled by 'LIBRARY' command
+  * link shared library handled by 'LINK /SHAREABLE'
+"""
+
+import os, sys, re
+import tempfile
+import stat
+
+from distutils import sysconfig
+from distutils.dep_util import newer
+from distutils.ccompiler import \
+     CCompiler, gen_lib_options
+from distutils.errors import \
+     DistutilsExecError, CompileError, LibError, LinkError
+from distutils import log
+
+import subprocess
+
+if sys.platform == 'OpenVMS':
+    import vms.decc
+
+
+class OpenVMSCCompiler(CCompiler):
+
+    compiler_type = 'openvms'
+
+    # These are used by CCompiler in two places: the constructor sets
+    # instance attributes 'preprocessor', 'compiler', etc. from them, and
+    # 'set_executable()' allows any of these to be set.  The defaults here
+    # are pretty generic; they will probably have to be set by an outsider
+    # (eg. using information discovered by the sysconfig about building
+    # Python extensions).
+    executables = {
+                   'archiver'     : ["LIBRARY"],
+                   'compiler'     : ["CC"],
+                   'compiler_c'   : ["CC"],
+                   'compiler_cxx' : ["CXX"],
+                   'compiler_so'  : ["CC"],
+                   'linker'       : ["LINK"],
+                   'linker_exe'   : ["LINK"],
+                   'linker_so'    : ["LINK"],
+                   'preprocessor' : None,
+                   'ranlib'       : None,
+                  }
+
+    # Needed for the filename generation methods provided by the base
+    # class, CCompiler.  NB. whoever instantiates/uses a particular
+    # UnixCCompiler instance should set 'shared_lib_ext' -- we set a
+    # reasonable common default here, but it's not necessarily used on all
+    # Unices!
+
+    src_extensions = [".c",".C",".cc",".cxx",".cpp"]
+    obj_extension = ".obj"
+    static_lib_extension = ".olb"
+    shared_lib_extension = ".exe"
+    dylib_lib_extension = ".exe"
+    xcode_stub_lib_extension = ".tbd"
+    static_lib_format = shared_lib_format = dylib_lib_format = "%s%s"
+    xcode_stub_lib_format = dylib_lib_format
+    exe_extension = ".exe"
+
+    def _setup_compile(self, outdir, macros, incdirs, sources, depends,
+                       extra):
+        """Process arguments and decide which source files to compile."""
+        if outdir is None:
+            outdir = self.output_dir
+        elif not isinstance(outdir, str):
+            raise TypeError("'output_dir' must be a string or None")
+
+        if macros is None:
+            macros = self.macros
+        elif isinstance(macros, list):
+            macros = macros + (self.macros or [])
+        else:
+            raise TypeError("'macros' (if supplied) must be a list of tuples")
+
+        if incdirs is None:
+            incdirs = self.include_dirs
+        elif isinstance(incdirs, (list, tuple)):
+            incdirs = list(incdirs) + (self.include_dirs or [])
+        else:
+            raise TypeError(
+                  "'include_dirs' (if supplied) must be a list of strings")
+
+        if extra is None:
+            extra = []
+
+        # Get the list of expected output (object) files
+        objects = self.object_filenames(sources, strip_dir=0,
+                                        output_dir=outdir)
+        assert len(objects) == len(sources)
+
+        pp_opts = self._gen_preprocess_options(macros, incdirs)
+
+        build = {}
+        for i in range(len(sources)):
+            src = sources[i]
+            obj = objects[i]
+            ext = os.path.splitext(src)[1]
+            self.mkpath(os.path.dirname(obj))
+            build[obj] = (src, ext)
+
+        return macros, objects, extra, pp_opts, build
+
+    def _gen_preprocess_options(self, macros, include_dirs):
+        """ Generate C pre-processor options
+        """
+        pp_define = []
+        pp_undefine = []
+        for macro in macros:
+            if not (isinstance(macro, tuple) and 1 <= len(macro) <= 2):
+                raise TypeError(
+                    "bad macro definition '%s': "
+                    "each element of 'macros' list must be a 1- or 2-tuple"
+                    % macro)
+
+            if len(macro) == 1:        # undefine this macro
+                pp_undefine.append(macro[0])
+            elif len(macro) == 2:
+                if macro[1] in (None, ''):    # define with no explicit value
+                    pp_define.append(macro[0])
+                else:
+                    if isinstance(macro[1], str) and macro[1].startswith('"'):
+                        macro_value = '"""' + macro[1][1:-1] + '"""'
+                        pp_define.append("%s=%s" % (macro[0], macro_value))
+                    else:
+                        pp_define.append("%s=%s" % macro)
+
+        pp_opts = [ \
+            '/NAMES=(AS_IS,SHORTENED)',
+            '/WARNINGS=WARNINGS=ALL',
+            # '/WARNINGS=ERRORS=IMPLICITFUNC',
+            # '/L_DOUBLE_SIZE=64',    # float128(nan) == inf
+            ]
+        if len(pp_undefine):
+            pp_opts.append("/UNDEFINE=(" + ",".join(pp_undefine) + ")")
+        if len(pp_define):
+            pp_opts.append("/DEFINE=(" + ",".join(pp_define) + ")")
+
+        if len(include_dirs):
+            def fix_dir(directory):
+                if not '[]' in directory:
+                    return '"' + directory + '"'
+                return directory
+            pp_opts.append(f"/INCLUDE_DIRECTORY=({','.join(map(fix_dir, include_dirs))})")
+
+        return pp_opts
+
+    def _get_cc_args(self, pp_opts, debug, before):
+        """ Generate C compiler qualifiers
+        """
+        cc_args = []
+        if debug:
+            cc_args.append("/DEBUG/NOOPTIMIZE")
+        else:
+            cc_args.append("/NODEBUG/OPTIMIZE")
+
+        if before:
+            cc_args[:0] = before
+
+        return cc_args
+
+    def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
+        lang = self.detect_language(src)
+        if lang == "c++":
+            compiler = self.compiler_cxx
+        else:
+            compiler = self.compiler_c
+
+        try:
+            src_vms = vms.decc.to_vms(src, 0, 0)[0]
+            obj_vms = vms.decc.to_vms(obj, 0, 0)[0]
+            cmd_list = compiler + cc_args + pp_opts + extra_postargs + [src_vms, '/OBJECT=' + obj_vms]
+            self.spawn(cmd_list)
+        except DistutilsExecError as msg:
+            raise CompileError(msg)
+
+    def create_static_lib(self, objects, output_libname,
+                          output_dir=None, debug=0, target_lang=None):
+        objects, output_dir = self._fix_object_args(objects, output_dir)
+
+        output_filename = \
+            self.library_filename(output_libname, output_dir=output_dir)
+
+        if self._need_link(objects, output_filename):
+            self.mkpath(os.path.dirname(output_filename))
+            output_filename_vms = vms.decc.to_vms(output_filename, 0, 0)[0]
+            self.spawn(self.archiver + ['/CREATE', output_filename_vms])
+            for input_name in objects + self.objects:
+                input_name_vms = vms.decc.to_vms(input_name, 0, 0)[0]
+                self.spawn(self.archiver + [output_filename_vms, input_name_vms])
+        else:
+            log.debug("skipping %s (up-to-date)", output_filename)
+
+    def link(self, target_desc, objects,
+             output_filename, output_dir=None, libraries=None,
+             library_dirs=None, runtime_library_dirs=None,
+             export_symbols=None, debug=0, extra_preargs=None,
+             extra_postargs=None, build_temp=None, target_lang=None):
+        objects, output_dir = self._fix_object_args(objects, output_dir)
+        fixed_args = self._fix_lib_args(libraries, library_dirs,
+                                        runtime_library_dirs)
+        libraries, library_dirs, runtime_library_dirs = fixed_args
+
+        # lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs,
+        #                            libraries)
+
+        if not isinstance(output_dir, (str, type(None))):
+            raise TypeError("'output_dir' must be a string or None")
+        if output_dir is not None:
+            output_filename = os.path.join(output_dir, output_filename)
+
+        if self._need_link(objects, output_filename):
+            # ld_args = (objects + self.objects +
+            #            lib_opts + [link_output_qualifier, output_filename])
+            opt_file = tempfile.NamedTemporaryFile(suffix='.OPT', delete=False)
+            opt_lines = []
+
+            for obj_file in objects:
+                obj_file_vms = vms.decc.to_vms(obj_file, 0, 0)[0]
+                opt_lines.append(obj_file_vms)
+
+            vms_libraries_set = set()
+
+            verbose = False # True # '_multiarray_umath' in output_filename
+
+            for lib_file in libraries:
+                lib_file_vms = None
+                _, lib_file_ext = os.path.splitext(lib_file)
+                if lib_file_ext:
+                    # looks like full path
+                    lib_file_ext = lib_file_ext.upper()
+                    if lib_file_ext in ('.OLB', '.EXE'):
+                        if re.search(r'[:\[\]]', lib_file):
+                            lib_file_vms = lib_file
+                        else:
+                            lib_file_vms = vms.decc.to_vms(lib_file, 0, 0)[0]
+                if not lib_file_vms:
+                    # find the library in the library_dirs
+                    for lib_dir in library_dirs:
+                        for lib_ext in ['','.OLB','.EXE']:
+                            try:
+                                lib_path = os.path.join(lib_dir, lib_file + lib_ext)
+                                st = os.stat(lib_path)
+                                if not stat.S_ISDIR(st.st_mode):
+                                    lib_file_ext = lib_ext
+                                    lib_file_vms = vms.decc.to_vms(lib_path, 0, 0)[0]
+                                    break
+                            except:
+                                pass
+                        else:
+                            continue
+                        break
+                if lib_file_vms and lib_file_vms.lower() not in vms_libraries_set:
+                    # write it to the OPT
+                    opt_line = lib_file_vms + ('/LIBRARY' if lib_file_ext == '.OLB' else '/SHAREABLE')
+                    opt_lines.append(opt_line)
+                    vms_libraries_set.add(lib_file_vms.lower())
+
+            opt_lines.append('GSMATCH=LEQUAL,1,0')
+            opt_lines.append('CASE_SENSITIVE=YES')
+
+            proc_names = dict()
+            try:
+                repository = open('CXX_REPOSITORY/CXX$DEMANGLER_DB')
+                for line in repository:
+                    full_name = line[31:-1]
+                    short_name = line[:31]
+                    proc_names[full_name] = short_name
+                repository.close()
+            except:
+                pass
+
+            def shorten_name(name):
+                if len(name) <= 31:
+                    return name
+                try:
+                    return proc_names[name]
+                except:
+                    return name[:31]
+
+            if export_symbols and len(export_symbols):
+                opt_lines.append('SYMBOL_VECTOR=( -')
+                for export_symbol in export_symbols[:-1]:
+                    opt_lines.append(shorten_name(export_symbol) + '=PROCEDURE, -')
+                for export_symbol in export_symbols[-1:]:
+                    opt_lines.append(shorten_name(export_symbol) + '=PROCEDURE )')
+
+            if verbose:
+                print("--- OPT START\n")
+                print('\n'.join(opt_lines))
+                print("--- OPT END\n")
+
+            opt_file.write(('\n'.join(opt_lines)).encode())
+            opt_file.close()
+            opt_name_vms = vms.decc.to_vms(opt_file.name, 0, 0)[0]
+
+            link_output_qualifier = '/EXECUTABLE=' if target_desc == CCompiler.EXECUTABLE else '/SHAREABLE='
+            output_filename_vms = vms.decc.to_vms(output_filename, 0, 0)[0]
+            ld_args = [link_output_qualifier + output_filename_vms, opt_name_vms + "/OPTIONS"]
+
+            if debug:
+                map_file, _ = os.path.splitext(output_filename)
+                map_file_vms = vms.decc.to_vms(map_file + '.MAP', 0, 0)[0]
+                ld_args[:0] = ['/DEBUG/MAP=' + map_file_vms]
+
+            if extra_preargs:
+                ld_args[:0] = extra_preargs
+
+            if extra_postargs:
+                ld_args.extend(extra_postargs)
+
+            self.mkpath(os.path.dirname(output_filename))
+
+            try:
+                linker = self.linker[:]
+                self.spawn(linker + ld_args)
+            except DistutilsExecError as msg:
+                raise LinkError(msg)
+            finally:
+                os.unlink(opt_file.name)
+        else:
+            log.debug("skipping %s (up-to-date)", output_filename)
+
+    # -- Miscellaneous methods -----------------------------------------
+    # These are all used by the 'gen_lib_options() function, in
+    # ccompiler.py.
+
+    def library_dir_option(self, dir):
+        # TODO: add them to .OPT file?
+        return dir
+
+    def _is_gcc(self, compiler_name):
+        return False
+
+    def runtime_library_dir_option(self, dir):
+        return dir
+
+    def library_option(self, lib):
+        return lib
+
+    def find_library_file(self, dirs, lib, debug=0):
+
+        if lib.lower() == 'python$shr.exe':
+            return os.path.join('/python$root/lib', lib)
+
+        # shared_f = self.library_filename(lib, lib_type='shared')
+        # dylib_f = self.library_filename(lib, lib_type='dylib')
+        # xcode_stub_f = self.library_filename(lib, lib_type='xcode_stub')
+        # static_f = self.library_filename(lib, lib_type='static')
+
+        # for dir in dirs:
+        #     shared = os.path.join(dir, shared_f)
+        #     dylib = os.path.join(dir, dylib_f)
+        #     static = os.path.join(dir, static_f)
+        #     xcode_stub = os.path.join(dir, xcode_stub_f)
+
+        #     # We're second-guessing the linker here, with not much hard
+        #     # data to go on: GCC seems to prefer the shared library, so I'm
+        #     # assuming that *all* Unix C compilers do.  And of course I'm
+        #     # ignoring even GCC's "-static" option.  So sue me.
+        #     if os.path.exists(dylib):
+        #         return dylib
+        #     elif os.path.exists(xcode_stub):
+        #         return xcode_stub
+        #     elif os.path.exists(shared):
+        #         return shared
+        #     elif os.path.exists(static):
+        #         return static
+
+        # Oops, didn't find it in *any* of 'dirs'
+        return None
diff --git a/Lib/test/test.fdl b/Lib/test/test.fdl
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdC5mZGw=
--- /dev/null
+++ b/Lib/test/test.fdl
@@ -0,0 +1,63 @@
+IDENT	"12-NOV-2002 09:59:33  OpenVMS FDL Editor"
+
+SYSTEM
+	SOURCE			"OpenVMS"
+
+FILE
+	NAME			"Test file"
+	ORGANIZATION		indexed
+
+RECORD
+	CARRIAGE_CONTROL	none
+	FORMAT			fixed
+	SIZE			20
+
+AREA 0
+	ALLOCATION		30
+	BEST_TRY_CONTIGUOUS	yes
+	BUCKET_SIZE		1
+	EXTENSION		6
+
+AREA 1
+	ALLOCATION		3
+	BEST_TRY_CONTIGUOUS	yes
+	BUCKET_SIZE		1
+	EXTENSION		3
+
+AREA 2
+	ALLOCATION		9
+	BEST_TRY_CONTIGUOUS	yes
+	BUCKET_SIZE		1
+	EXTENSION		6
+
+KEY 0
+	CHANGES			no
+	DATA_AREA		0
+	DATA_FILL		100
+	DATA_KEY_COMPRESSION	yes
+	DATA_RECORD_COMPRESSION	yes
+	DUPLICATES		no
+	INDEX_AREA		1
+	INDEX_COMPRESSION	no
+	INDEX_FILL		100
+	LEVEL1_INDEX_AREA	1
+	NAME			"KEY_0"
+	PROLOG			3
+	SEG0_LENGTH		5
+	SEG0_POSITION		0
+	TYPE			string
+
+KEY 1
+	CHANGES			yes
+	DATA_AREA		2
+	DATA_FILL		100
+	DATA_KEY_COMPRESSION	no
+	DUPLICATES		yes
+	INDEX_AREA		2
+	INDEX_COMPRESSION	no
+	INDEX_FILL		100
+	LEVEL1_INDEX_AREA	2
+	NAME			"KEY_1"
+	SEG0_LENGTH		4
+	SEG0_POSITION		5
+	TYPE			int4
diff --git a/Lib/test/test_vms_decc.py b/Lib/test/test_vms_decc.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfZGVjYy5weQ==
--- /dev/null
+++ b/Lib/test/test_vms_decc.py
@@ -0,0 +1,70 @@
+import sys
+import unittest
+import time
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import vms.decc as DECC
+import vms.lib as LIB
+import vms.syidef as SYIDEF
+
+class BaseTestCase(unittest.TestCase):
+
+    def setUp(self):
+        pass
+
+    def tearDown(self):
+        pass
+
+    def test_dlopen_test(self):
+        """ tests if shared image is accessible """
+        self.assertEqual(1, DECC.dlopen_test("python$shr"))
+
+    def test_fix_time(self):
+        """ converts vms time to unix time (GMT) """
+        self.assertEqual(1595490469, DECC.fix_time(51022072693664076))
+
+    def test_from_vms(self):
+        """ converts vms path to available unix paths """
+        self.assertEqual( \
+            list(map(lambda x: x.lower(), DECC.from_vms("python$root:[bin]python3.exe", 0))), \
+            list(map(lambda x: x.lower(), DECC.from_vms("python$root:[bin]python3.*", 1))))
+
+    def test_getenv(self):
+        """ try to get PYTHONHOME """
+        self.assertEqual('/python$root', DECC.getenv('PYTHONHOME', None))
+
+    def test_sleep(self):
+        """ sleep one second """
+        start = time.time()
+        DECC.sleep(1)
+        diff = time.time() - start
+        self.assertGreaterEqual(diff, 1)
+        self.assertLess(diff, 1.01)
+
+    def test_sysconf(self):
+        """ try to get PAGESIZE """
+        pagesize_decc = DECC.sysconf(DECC._SC_PAGESIZE)
+        status, pagesize_sys, _ = LIB.getsyi(SYIDEF.SYI__PAGE_SIZE, None)
+        self.assertEqual(1, status)
+        pagesize_sys = int(pagesize_sys)
+        self.assertEqual(pagesize_decc, pagesize_sys)
+
+    def test_to_vms(self):
+        """ converts unix path to vms path """
+        self.assertEqual( \
+            list(map(lambda x: x.lower(), DECC.to_vms('/python$root/bin/python3.exe', 0, 0))), \
+            list(map(lambda x: x.lower(), DECC.to_vms('/python$root/bin/python3.*', 1, 0))))
+
+    def test_unixtime(self):
+        """ converts vms time to unix time (using time zone) """
+        DECC.unixtime(51022072693664076)
+
+    def test_vmstime(self):
+        """ converts unix time to vms time (GMT) """
+        self.assertEqual(35067168000000000, DECC.vmstime(0))
+        self.assertEqual(0, DECC.fix_time(DECC.vmstime(0)))
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Lib/test/test_vms_dtr.py b/Lib/test/test_vms_dtr.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfZHRyLnB5
--- /dev/null
+++ b/Lib/test/test_vms_dtr.py
@@ -0,0 +1,119 @@
+import sys
+import unittest
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import vms.rec as rec
+import vms.dtr as dtr
+import vms.ssdef as SS
+
+class BaseTestCase(unittest.TestCase):
+
+    def setUp(self):
+        pass
+
+    def tearDown(self):
+        pass
+
+    def test_demo_01(self):
+        """ tests demo 01 """
+        r = rec.new()
+        rec.addstr(r, None, 10, 0)
+        rec.addstr(r, None, 10, 10)
+        rec.addstr(r, None, 6, 20)
+        rec.addstr(r, None, 3, 26)
+        rec.addstr(r, None, 5, 29)
+        rec.addstr(r, None, 2, 34)
+        rec.addstr(r, None, 5, 36)
+
+        sts, dab = dtr.init(100, 0)
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Initialization failed")
+
+        sts, cond, state = dtr.command(dab, "set dictionary cdd$top.dtr$lib.demo;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command 'set dictionary' failed")
+
+        if state == dtr._K_STL_MSG:
+            errorMsg = dtr.msg_buf(dab)
+            dtr.cont(dab)
+
+        sts, cond, state = dtr.command(dab, "declare port yport using yacht;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command 'declare port' failed")
+
+        while state == dtr._K_STL_MSG:
+            errorMsg = dtr.msg_buf(dab)
+            sts, cond, state = dtr.cont(dab)
+
+        sts, cond, state = dtr.command(dab, "ready yachts; ready yport write;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command 'ready' failed")
+
+        while state == dtr._K_STL_MSG:
+            errorMsg = dtr.msg_buf(dab)
+            sts, cond, state = dtr.cont(dab)
+
+        sts, cond, state = dtr.command(dab, "yport = yachts with loa > 30;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command '=' failed")
+
+        while state == dtr._K_STL_MSG:
+            errorMsg = dtr.msg_buf(dab)
+            sts, cond, state = dtr.cont(dab)
+
+        while state == dtr._K_STL_PGET:
+            sts = dtr.get_port(dab, r)
+
+            self.assertEqual(sts, SS.SS__NORMAL, "Unable to retrieve data")
+
+            dataStr = "%-10s\t%-10s\t%-6s\t%-3s\t%-5s\t%-2s\t%-5s" % (rec.getstr(r, 0), rec.getstr(r, 1), rec.getstr(r, 2), rec.getstr(r, 3), rec.getstr(r, 4), rec.getstr(r, 5), rec.getstr(r, 6))
+
+            state = dtr.state(dab)
+
+        sts = dtr.finish(dab)
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Problems tidying up")
+
+        rec.delete(r)
+
+    def test_demo_02(self):
+        """ tests demo 02 """
+        sts, dab = dtr.init(100, 0)
+
+        self.assertEqual(sts, SS.SS__NORMAL, "initialization failed")
+
+        sts, cond, state = dtr.command(dab, "set dictionary cdd$top.dtr$lib.demo.rdb;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command 'set dictionary' failed")
+
+        if state == dtr._K_STL_MSG:
+            errorMsg = dtr.msg_buf(dab)
+            dtr.cont(dab)
+
+        sts, cond, state = dtr.command(dab, "ready jobs shared read;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command 'ready' failed")
+
+        while state == dtr._K_STL_MSG:
+            errorMsg = dtr.msg_buf(dab)
+            sts, cond, state = dtr.cont(dab)
+
+        sts, cond, state = dtr.command(dab, "print jobs;")
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Command 'print' failed")
+
+        sts = dtr.skip(dab, 4)
+
+        fmt = "%4c   %1c   %20c %11c  %11c"
+
+        while dtr.state(dab) == dtr._K_STL_LINE:
+            row = dtr.row(dab, fmt)
+
+        sts = dtr.finish(dab)
+
+        self.assertEqual(sts, SS.SS__NORMAL, "Problems tidying up")
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Lib/test/test_vms_ile3.py b/Lib/test/test_vms_ile3.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfaWxlMy5weQ==
--- /dev/null
+++ b/Lib/test/test_vms_ile3.py
@@ -0,0 +1,79 @@
+import sys
+import unittest
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import vms.ile3 as ILE3
+import vms.sys as SYS
+import vms.syidef as SYI
+import vms.dscdef as DSC
+
+class BaseTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.il = None
+
+    def tearDown(self):
+        if self.il:
+            ILE3.delele(self.il)
+
+    def test_getstr(self):
+        """ tests getting str """
+        self.il = ILE3.new()
+        self.assertEqual(0, ILE3.size(self.il))
+        ILE3.addstr(self.il, SYI.SYI__HW_NAME, None, 64)
+        self.assertEqual(1, ILE3.size(self.il))
+        status, _ = SYS.getsyi(0, None, self.il)
+        self.assertEqual(1, status)
+        self.assertEqual(1, ILE3.size(self.il))
+        hw_name = ILE3.getstr(self.il, 0, 0)
+        self.assertEqual(1, ILE3.size(self.il))
+        ILE3.delete(self.il)
+        self.il = None
+        self.assertNotIn(hw_name, (None, ''))
+
+    def test_addbin_getbyte(self):
+        """ tests add binary data and get byte """
+        self.il = ILE3.new()
+        self.assertEqual(0, ILE3.size(self.il))
+        ILE3.addbin(self.il, SYI.SYI__ARCH_TYPE, 0x0102030405060708, 2, 5)
+        self.assertEqual(1, ILE3.size(self.il))
+        self.assertEqual(0x04, ILE3.getbyte(self.il, 0, 2))
+        ILE3.delete(self.il)
+        self.il = None
+
+    def test_addint_getint(self):
+        """ tests add int and get int """
+        self.il = ILE3.new()
+        self.assertEqual(0, ILE3.size(self.il))
+        ILE3.addint(self.il, SYI.SYI__ARCH_TYPE, DSC.DSC_K_DTYPE_QU, 0x0102030405060708)
+        self.assertEqual(1, ILE3.size(self.il))
+        self.assertEqual(0x0102030405060708, ILE3.getint(self.il, 0))
+        ILE3.delete(self.il)
+        self.il = None
+
+    def test_addstrd(self):
+        """ tests add strd """
+        self.il = ILE3.new()
+        self.assertEqual(0, ILE3.size(self.il))
+        ILE3.addstrd(self.il, SYI.SYI__HW_NAME, '1234567890', 5)    # one byte reserved for length
+        self.assertEqual(1, ILE3.size(self.il))
+        hw_name = ILE3.getstr(self.il, 0, 1)
+        self.assertEqual(hw_name, '1234')
+        ILE3.delete(self.il)
+        self.il = None
+
+    def test_addstrn(self):
+        """ tests add strn """
+        self.il = ILE3.new()
+        self.assertEqual(0, ILE3.size(self.il))
+        ILE3.addstrn(self.il, SYI.SYI__HW_NAME, '1234567890', 5)
+        self.assertEqual(1, ILE3.size(self.il))
+        hw_name = ILE3.getstr(self.il, 0, 0)
+        self.assertEqual(hw_name, '12345')
+        ILE3.delete(self.il)
+        self.il = None
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Lib/test/test_vms_lib.py b/Lib/test/test_vms_lib.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfbGliLnB5
--- /dev/null
+++ b/Lib/test/test_vms_lib.py
@@ -0,0 +1,95 @@
+import sys
+import unittest
+import os
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import vms.lib as LIB
+import vms.ssdef as SS
+import vms.jpidef as JPI
+import vms.syidef as SYI
+
+class BaseTestCase(unittest.TestCase):
+
+    def setUp(self):
+        pass
+
+    def tearDown(self):
+        pass
+
+    def test_create_dir(self):
+        """ tests creating directory """
+        dirname = 'kill_this_temporary_directory'
+        status = LIB.create_dir('[.' + dirname + ']', 0, 0xffff, 0)
+        self.assertIn(status, (SS.SS__CREATED, SS.SS__NORMAL))
+        if status == SS.SS__CREATED:
+            os.rmdir(dirname)
+        status = LIB.create_dir('[.' + dirname + ']', None, 0xffff, 0)
+        self.assertIn(status, (SS.SS__CREATED, SS.SS__NORMAL))
+        if status == SS.SS__CREATED:
+            os.rmdir(dirname)
+
+    def test_date_time(self):
+        """ tests date_time """
+        status, date_str = LIB.date_time()
+        self.assertEqual(1, status)
+        self.assertNotIn(date_str, ('', None))
+
+    def test_ef(self):
+        """ tests ef """
+        status, ef = LIB.get_ef()
+        self.assertEqual(1, status)
+        status = LIB.free_ef(ef)
+        self.assertEqual(1, status)
+
+    def test_common(self):
+        """ tests common """
+        common_value = "-=Python=-"
+        status = LIB.put_common(common_value)
+        self.assertEqual(1, status)
+        status, got_common_value = LIB.get_common()
+        self.assertEqual(1, status)
+        self.assertEqual(got_common_value, common_value)
+
+        common_value = "-=Python=-" * 32
+        status = LIB.put_common(common_value)
+        self.assertEqual(1409041, status)   # truncated
+        status, got_common_value = LIB.get_common()
+        self.assertEqual(1, status)
+        self.assertEqual(got_common_value, common_value[:252])
+
+    def test_get_hostname(self):
+        """ tests get_hostname """
+        status, host_name = LIB.get_hostname(0)
+        self.assertEqual(1, status)
+        self.assertNotIn(host_name, ('', None))
+        status, host_name = LIB.get_hostname(1)
+        self.assertEqual(1, status)
+        self.assertNotIn(host_name, ('', None))
+
+    def test_getjpi(self):
+        """ tests getjpi """
+        status, pagecount_str = LIB.getjpi(JPI.JPI__PPGCNT, 0, None)
+        self.assertEqual(1, status)
+        self.assertIsInstance(pagecount_str, str)
+        pagecount_int = int(pagecount_str)
+        self.assertEqual(str(pagecount_int), pagecount_str)
+        self.assertGreater(pagecount_int, 0)
+
+    def test_getsyi(self):
+        """ tests getsyi """
+        status, pagesize_str, _ = LIB.getsyi(SYI.SYI__PAGE_SIZE, None)
+        self.assertEqual(1, status)
+        self.assertIsInstance(pagesize_str, str)
+        pagesize_int = int(pagesize_str)
+        self.assertEqual(str(pagesize_int), pagesize_str)
+        self.assertGreater(pagesize_int, 0)
+
+    def test_spawn(self):
+        """ tests spawn """
+        status, pid = LIB.spawn('show time', None, None, 0, None)
+        self.assertEqual(1, status)
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Lib/test/test_vms_rdb.py b/Lib/test/test_vms_rdb.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfcmRiLnB5
--- /dev/null
+++ b/Lib/test/test_vms_rdb.py
@@ -0,0 +1,145 @@
+import sys
+import unittest
+import os
+import tempfile
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import rdb
+import vms.decc
+
+class BaseTestCase(unittest.TestCase):
+
+
+    def setUp(self):
+        self.dbname = ''
+        self.dbname_vms = ''
+        self.create_sql_database()
+
+    def tearDown(self):
+        if self.dbname:
+            os.chmod(self.dbname, 0o777)
+            os.unlink(self.dbname)
+            name, ext = os.path.splitext(self.dbname)
+            name = name + '.snp'
+            os.chmod(name, 0o777)
+            os.unlink(name)
+        self.dbname = ''
+
+    def create_sql_database(self):
+        """ tests creating SQL database """
+
+        sql_content = \
+'''$!============================================================
+$temp = f$search("{dbname}")
+$if temp .nes. ""
+$then
+$   goto go_out
+$endif
+$sql$
+create database filename {dbname}
+        number of users 500
+        number of cluster nodes 1;
+create domain   standard_address        char(25);
+create domain   standard_city           char(20);
+create domain   standard_name           char(30);
+create domain   standard_tel            char(10);
+commit;
+create table customer(
+        name    char(30),
+        address char(25),
+        city    char(20),
+        tel1    char(10),
+        tel2    char(10));
+commit;
+alter table customer add column postal char(6) after column city;
+alter table customer add column province char(15) after column city;
+commit;
+insert into customer values(
+        'Neil Rieck',
+        '20 Water St N',
+        'Kitchener',
+        'Ontario',
+        'N2H5A5',
+        '5195551212',
+        '');
+insert into customer values(
+        'Steve Kennel',
+        '20 Water St N',
+        'Kitchener',
+        'Ontario',
+        'N2H5A5',
+        '5195551212',
+        '');
+insert into customer values(
+        'Dave McNeil',
+        '140 Bayfield St',
+        'Barrie',
+        'Ontario',
+        'L4M3B1',
+        '7055551212',
+        '');
+insert into customer(
+        name,address,city,province,postal,tel1,tel2)
+        values(
+        'Karim Macklai',
+        '220 Simcoe St',
+        'Toronto',
+        'Ontario',
+        'M5T1T4',
+        '4165551212',
+        '');
+commit;
+exit
+$go_out:
+$exit
+'''
+        fd, self.dbname = tempfile.mkstemp(suffix='.RDB')
+        os.close(fd)
+        os.unlink(self.dbname)
+        self.dbname_vms = vms.decc.to_vms(self.dbname, 0, 0)[0]
+        sql_content = sql_content.format(dbname=self.dbname_vms)
+
+        with tempfile.NamedTemporaryFile(suffix=".COM", delete=False) as tmpfile:
+            tmpfile.write(sql_content.encode())
+            tmpfile.close()
+            tmpfile_vms_name = vms.decc.to_vms(tmpfile.name, 0, 0)[0]
+            p = os.popen('@' + tmpfile_vms_name)
+            data = p.read()
+            p.close()
+            os.unlink(tmpfile.name)
+
+    def test_sql_database(self):
+        """ tests SQL database """
+
+        self.assertIsNot(rdb.Attach(self.dbname_vms), -1, rdb.Error())
+
+        cursor = "C0001"
+        ch = rdb.DeclareCursor(cursor, "select name, address, city from customer")
+
+        self.assertIsNot(ch, None, rdb.Error())
+
+        rdb.SetReadonly()
+
+        self.assertIsNot(rdb.OpenCursor(ch), -1, rdb.Error())
+
+        results = []
+
+        while True:
+            row = rdb.FetchRow(ch)
+            if row is None:
+                break
+            results.append((row[0], row[1], row[2]))
+
+        self.assertIs(rdb.Sqlcode(), 100, rdb.Error())
+
+        self.assertIsNot(rdb.CloseCursor(ch), -1, rdb.Error())
+
+        rdb.Free(ch)                # Free cursor handle
+        rdb.Rollback()
+        rdb.Detach()
+
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Lib/test/test_vms_rms.py b/Lib/test/test_vms_rms.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfcm1zLnB5
--- /dev/null
+++ b/Lib/test/test_vms_rms.py
@@ -0,0 +1,328 @@
+import sys
+import os
+import unittest
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import struct
+import _rms as RMS
+import vms.fabdef as FABDEF
+import vms.rmsdef as RMSDEF
+import vms.ssdef as SSDEF
+
+class BaseTestCase(unittest.TestCase):
+
+    def setUp(self):
+        try:
+            os.unlink('test.dat')
+        except:
+            pass
+        if os.access('test.fdl', os.R_OK):
+            os.system('CREATE/FDL=test.fdl test.dat')
+        else:
+            os.system('CREATE/FDL=python$root:[lib.python3^.8.test]test.fdl test.dat')
+
+        self.records = [
+            (b'AA5AA', 5, b'1234567890A'),
+            (b'BB2BB', 2, b'1234567890B'),
+            (b'CC4CC', 4, b'1234567890C'),
+            (b'DD1DD', 1, b'1234567890D'),
+            (b'EE1EE', 2, b'1234567890E'),
+            (b'FF3FF', 3, b'1234567890F'),
+        ]
+
+        self.records_expected_key1_unmodified = [
+            (b'DD1DD', 1, b'1234567890D'),
+            (b'BB2BB', 2, b'1234567890B'),
+            (b'EE1EE', 2, b'1234567890E'),
+            (b'FF3FF', 3, b'1234567890F'),
+            (b'CC4CC', 4, b'1234567890C'),
+            (b'AA5AA', 5, b'1234567890A'),
+        ]
+
+        self.records_expected_key0_modified = [
+            (b'AA5AA', 15, b'X234567890A'),
+            (b'BB2BB', 12, b'X234567890B'),
+            (b'CC4CC', 14, b'X234567890C'),
+            (b'DD1DD', 11, b'X234567890D'),
+            (b'EE1EE', 12, b'X234567890E'),
+            (b'FF3FF', 13, b'X234567890F'),
+        ]
+
+        self.records_expected_key1_modified = [
+            (b'DD1DD', 11, b'X234567890D'),
+            (b'BB2BB', 12, b'X234567890B'),
+            (b'EE1EE', 12, b'X234567890E'),
+            (b'FF3FF', 13, b'X234567890F'),
+            (b'CC4CC', 14, b'X234567890C'),
+            (b'AA5AA', 15, b'X234567890A'),
+        ]
+
+        self.records_expected_key0_after_del_12 = [
+            (b'AA5AA', 15, b'X234567890A'),
+            (b'CC4CC', 14, b'X234567890C'),
+            (b'DD1DD', 11, b'X234567890D'),
+            (b'FF3FF', 13, b'X234567890F'),
+        ]
+
+        self.records_expected_key1_after_del_14_12 = [
+            (b'DD1DD', 11, b'X234567890D'),
+            (b'FF3FF', 13, b'X234567890F'),
+            (b'AA5AA', 15, b'X234567890A'),
+        ]
+
+
+    def tearDown(self):
+        try:
+            os.unlink('test.dat')
+        except:
+            pass
+
+
+    def test_demo_1(self):
+
+        acc = FABDEF.FAB_M_PUT + FABDEF.FAB_M_GET + FABDEF.FAB_M_DEL + FABDEF.FAB_M_UPD
+        shr = FABDEF.FAB_M_SHRPUT + FABDEF.FAB_M_SHRGET + FABDEF.FAB_M_SHRDEL + FABDEF.FAB_M_SHRUPD
+        f = RMS.file('test.dat', fac=acc, shr=shr)
+
+        # empty file
+        f.rewind()
+        s = f.find()
+        while(s != RMSDEF.RMS__EOF):
+            f.delete()
+            s = f.find()
+
+        # Insert a few records
+        for rec_ in self.records:
+            rec = struct.pack(b"=5si11s", rec_[0], rec_[1], rec_[2])
+            f.put(rec)
+
+        # Initial records
+        f.rewind()
+        for rec_ in self.records:
+            r_expected = struct.pack(b"=5si11s", rec_[0], rec_[1], rec_[2])
+            s, r_from_file = f.fetch()
+            self.assertEqual(s, RMSDEF.RMS__NORMAL)
+            self.assertEqual(r_from_file, r_expected)
+
+        # Update all records
+        f.rewind()
+        for rec_ in self.records:
+            s, r = f.fetch()
+            self.assertEqual(s, RMSDEF.RMS__NORMAL)
+            self.assertNotEqual(r, None)
+            k, n, v = struct.unpack("=5si11s", r)
+            rec = struct.pack(b"=5si11s", k, n + 10, b'X' + v[1:])
+            s = f.update(rec)
+            self.assertIn(s, (RMSDEF.RMS__NORMAL, RMSDEF.RMS__OK_DUP))
+
+        # use secondary key and an iterator
+        s = f.usekey(1)
+        s = f.rewind()
+        pos = 0
+        for r in f:
+            self.assertEqual(s, RMSDEF.RMS__NORMAL)
+            rec_ = self.records_expected_key1_modified[pos]
+            pos = pos + 1
+            r_expected = struct.pack(b"=5si11s", rec_[0], rec_[1], rec_[2])
+            self.assertEqual(r, r_expected)
+
+        # build a list of all records
+        f.usekey(0)
+        f.rewind()
+        all_recs = [struct.unpack("=5si11s", r) for r in f]
+        self.assertEqual(all_recs, self.records_expected_key0_modified)
+
+        f.usekey(1)
+        f.rewind()
+        all_recs = [struct.unpack("=5si11s", r) for r in f]
+        self.assertEqual(all_recs, self.records_expected_key1_modified)
+
+        # delete a record using delete(14)
+        f.usekey(1)
+
+        key = struct.pack("=i", 14)
+        s = f.delete(key)
+        self.assertEqual(s, RMSDEF.RMS__NORMAL)
+
+        #  delete all record key 12 using find(12) + delete()
+        key = struct.pack("=i", 12)
+        s = f.find(key)
+        self.assertEqual(s, RMSDEF.RMS__NORMAL)
+
+        while (1):
+            s, r = f.fetch()
+            if r:
+                k, n, v = struct.unpack("=5si11s", r)
+                if n == 12:
+                    s = f.delete()
+                else:
+                    break
+            else:
+                break
+
+        # build a list of all records after delete
+        f.rewind()
+        all_recs = [struct.unpack("=5si11s", r) for r in f]
+        self.assertEqual(all_recs, self.records_expected_key1_after_del_14_12)
+
+        # Close the file
+        f.close()
+
+
+
+    def test_demo_2(self):
+
+        from vms.indexedfile import IndexedFile, Record
+
+        class TestRec(Record):
+            _field = [
+                    ('f1', '5s'),
+                    ('f2', 'i'),
+                    ('f3', '11s'),
+                    ]
+            _fmt = '=' + ''.join([x[1] for x in _field])
+            _fixsize = struct.calcsize(_fmt)
+
+            def __eq__(self, other):
+                return self.pack() == other.pack()
+
+            def keyval(self, keynum):
+                if keynum == 0:
+                    return self.f1
+                elif keynum == 1:
+                    return self.f2
+                else:
+                    raise "Invalid keynum parameter"
+
+
+        class TestFile(IndexedFile):
+            Name = 'test.dat'
+            def __init__(self):
+                IndexedFile.__init__(self, TestFile.Name, TestRec)
+
+            def primary_keynum(self):
+                return 0
+
+            def pack_key(self, keynum, keyval):
+                if keynum == 0:
+                    return struct.pack("=5s", keyval)
+                elif keynum == 1:
+                    return struct.pack("=i", keyval)
+                else:
+                    raise KeyError
+
+        f = TestFile()
+        # Reset file
+        f.reset()
+
+        # Insert a few records
+        for rec_ in self.records:
+            rec = TestRec(rec_)
+            f.put(rec)
+
+        # Initial records using an iterator, primary key order
+        pos = 0
+        for rec in f:
+            self.assertEqual(rec, TestRec(self.records[pos]))
+            pos = pos + 1
+
+        # Initial records using an iterator, secondary key order
+        f.iterator_keynum(1)
+        pos = 0
+        for rec in f:
+            self.assertEqual(rec, TestRec(self.records_expected_key1_unmodified[pos]))
+            pos = pos + 1
+
+        # Update all records using an iterator
+        # iterator key is automatically reset to primary key
+        for rec in f:
+            rec.f2 = rec.f2 + 10
+            rec.f3 = b'X' + rec.f3[1:]
+            f.update_current(rec)
+
+        # Updated records using an iterator
+        pos = 0
+        for rec in f:
+            self.assertEqual(rec, TestRec(self.records_expected_key0_modified[pos]))
+            pos = pos + 1
+
+        # build a list of all records
+        lst = f.fetchall(0)
+        self.assertEqual(lst, list(TestRec(x) for x in self.records_expected_key0_modified))
+
+    ### Not implemented
+    ###    print
+    ###    print ('delete a record using secondary key value 14')
+    ###    f.delete(1, 14)
+
+        # Records using an iterator, secondary key order
+        f.iterator_keynum(1)
+        pos = 0
+        for rec in f:
+            self.assertEqual(rec, TestRec(self.records_expected_key1_modified[pos]))
+            pos = pos + 1
+
+        # delete all records using secondary key value 12
+        f.open(acc = FABDEF.FAB_M_GET + FABDEF.FAB_M_DEL)
+        f.usekey(1)
+        f.rewind()
+        f.find(None, f.pack_key(1, 12))
+        for rec in f:
+            if rec.f2 == 12:
+                f.delete_current()
+            else:
+                break
+        f.close()
+
+        # Records using an iterator, primary key order
+        pos = 0
+        for rec in f:
+            self.assertEqual(rec, TestRec(self.records_expected_key0_after_del_12[pos]))
+            pos = pos + 1
+
+
+    def test_demo_3(self):
+        acc = FABDEF.FAB_M_GET
+        shr = FABDEF.FAB_M_SHRPUT + FABDEF.FAB_M_SHRGET + FABDEF.FAB_M_SHRDEL + FABDEF.FAB_M_SHRUPD
+        try:
+            f = RMS.file('sysuaf',fac=acc, shr=shr)
+        except:
+            raise unittest.SkipTest('High privileges required')
+
+        # Alphabetic order
+
+        for i in range(10):
+            s,r = f.fetch()
+            lst = struct.unpack("=i32shhiQ32s32p", r[:116])
+            self.assertIsNotNone(lst)
+            # print('%s [%o,%o]' % (lst[1], lst[3], lst[2]))
+
+        # UIC order
+
+        f.usekey(1)
+        f.rewind()
+        i = 0
+        for r in f:
+            i += 1
+            if (i > 10): break
+            lst = struct.unpack("=i32shhiQ32s32p", r[:116])
+            self.assertIsNotNone(lst)
+            # print('%s [%o,%o]' % (lst[1], lst[3], lst[2]))
+
+
+        # Alphabetic order
+
+        f.usekey(0)
+        f.rewind()
+        for r in f:
+            lst = struct.unpack("=i32shhiQ32s32p", r[:116])
+            self.assertIsNotNone(lst)
+            # print('%s [%o,%o]' % (lst[1], lst[3], lst[2]))
+
+        f.close()
+
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Lib/test/test_vms_sys.py b/Lib/test/test_vms_sys.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfc3lzLnB5
--- /dev/null
+++ b/Lib/test/test_vms_sys.py
@@ -0,0 +1,332 @@
+import sys
+import unittest
+import time
+import os
+import threading
+
+if sys.platform != 'OpenVMS':
+    raise unittest.SkipTest('OpenVMS required')
+
+import vms.sys as SYS
+import vms.ile3 as ILE3
+import vms.ssdef as SS
+import vms.jpidef as JPI
+import vms.syidef as SYI
+import vms.iodef as IO
+import vms.lnmdef as LNM
+import vms.dscdef as DSC
+import vms.psldef as PSL
+import vms.dvsdef as DVS
+import vms.dcdef as DC
+import vms.dvidef as DVI
+import vms.lkidef as LKI
+import vms.quidef as QUI
+import vms.jbcmsgdef as JBC
+import vms.rmidef as RMI
+import vms.uaidef as UAI
+
+class BaseTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.context = 0
+
+    def tearDown(self):
+        if self.context:
+            SYS.finish_rdb(self.context)
+
+    def test_asctim(self):
+        """ tests asctim """
+        vms_time = 51022884689600846
+        status, result = SYS.asctim(vms_time, 0)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual('24-JUL-2020 06:21:08.96', result)
+        status, result = SYS.asctim(vms_time, 1)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual('06:21:08.96', result)
+
+    def test_bintim(self):
+        """ tests bintim """
+        time_str = '24-JUL-2020 06:21:08.96'
+        status, vms_time =  SYS.bintim(time_str)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual(51022884689600000, vms_time)
+
+    def test_id(self):
+        """ tests asctoid and idtoasc """
+        name = 'SYSTEM'
+        status, result_id, result_attrib = SYS.asctoid(name)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertGreater(result_id, 0)
+        self.assertNotEqual(result_attrib, None)
+        status, result_name, result_id, result_attrib, self.context = SYS.idtoasc(result_id, 0)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertNotEqual(self.context, 0)
+        self.assertEqual(result_name, name)
+        status = SYS.finish_rdb(self.context)
+        self.context = 0
+        self.assertEqual(status, SS.SS__NORMAL)
+
+    def test_mbx(self):
+        """ test mailbox """
+        test_bytes = b'test bytes\n'
+        mbx_name = "PythonTest"
+        status, mbx_channel = SYS.crembx( \
+            0,      # temporary/permanent
+            0,      # maxmsg
+            0,      # bufquo
+            0,      # promsk
+            0,      # acmode
+            mbx_name,   # logname
+            0)      # flags
+        self.assertEqual(status, SS.SS__NORMAL)
+        status, written, iostatus = SYS.writevblk(mbx_channel, test_bytes, 0, IO.IO_M_NOW | IO.IO_M_STREAM)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual(1, iostatus)
+        self.assertEqual(len(test_bytes), written)
+        status, read_channel = SYS.assign(mbx_name, 0, None, 0)
+        self.assertEqual(status, SS.SS__NORMAL)
+        status, read_bytes, iostatus = SYS.readvblk(read_channel, len(test_bytes), 0, IO.IO_M_NOW | IO.IO_M_STREAM)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual(1, iostatus)
+        self.assertEqual(read_bytes, test_bytes)
+        status = SYS.dassgn(read_channel)
+        self.assertEqual(status, SS.SS__NORMAL)
+        status = SYS.delmbx(mbx_channel)
+        self.assertEqual(status, SS.SS__NORMAL)
+
+    def test_cancel(self):
+        """ test cancel """
+        test_bytes = b'test bytes'
+        mbx_name = "PythonTest"
+        status, mbx_channel = SYS.crembx(0, 0, 0, 0, 0, mbx_name, 0)
+        self.assertEqual(status, SS.SS__NORMAL)
+
+        def cancel_thread_fn(retstat):
+            time.sleep(1.0)
+            retstat.append(SYS.cancel(mbx_channel))
+
+        cancel_thread_retstat = []
+        cancel_thread = threading.Thread(target=cancel_thread_fn, args=(cancel_thread_retstat,))
+        cancel_thread.start()
+
+        status, read_bytes, iostatus = SYS.readvblk(mbx_channel, len(test_bytes), 0, IO.IO_M_STREAM)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertIn(iostatus, (SS.SS__ABORT, SS.SS__CANCEL))
+        self.assertEqual(0, len(read_bytes))
+
+        cancel_thread.join()
+        self.assertEqual(1, len(cancel_thread_retstat))
+        self.assertEqual(1, cancel_thread_retstat[0])
+
+        status = SYS.delmbx(mbx_channel)
+        self.assertEqual(status, SS.SS__NORMAL)
+
+    def test_logical_name(self):
+        """ test create, translate and delete logical name """
+        log_name = 'PythonTestCRELNM'
+        log_value = 'Value of PythonTestCRELNM'
+        log_table = 'LNM$PROCESS_TABLE'
+        il = ILE3.new()
+        ILE3.addstrn(il, LNM.LNM__STRING, log_value, len(log_value))
+        status = SYS.crelnm(0, log_table, log_name, PSL.PSL_C_USER, il)
+        ILE3.delete(il)
+        self.assertIn(status, (SS.SS__NORMAL, SS.SS__SUPERSEDE))
+
+        il = ILE3.new()
+        ILE3.addint(il, LNM.LNM__INDEX, DSC.DSC_K_DTYPE_LU, 0)
+        ILE3.addint(il, LNM.LNM__ATTRIBUTES, DSC.DSC_K_DTYPE_LU, 0)
+        ILE3.addint(il, LNM.LNM__LENGTH, DSC.DSC_K_DTYPE_LU, 0)
+        ILE3.addstr(il, LNM.LNM__STRING, None, 255)
+        ILE3.addstr(il, LNM.LNM__TABLE, None, 32)
+        status = SYS.trnlnm(LNM.LNM_M_CASE_BLIND, None, log_name, PSL.PSL_C_USER, il)
+        attributes = ILE3.getint(il, 1)
+        value_length = ILE3.getint(il, 2)
+        value_str = ILE3.getstr(il, 3, 0)
+        table_str = ILE3.getstr(il, 4, 0)
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertTrue(attributes & LNM.LNM_M_EXISTS)
+        self.assertEqual(value_length, len(log_value))
+        self.assertEqual(value_str, log_value)
+        self.assertEqual(table_str, log_table)
+
+        status = SYS.dellnm(log_table, log_name, PSL.PSL_C_USER)
+        self.assertEqual(status, SS.SS__NORMAL)
+
+    def test_device_scan(self):
+        """ test device_scan """
+        il = ILE3.new()
+        ILE3.addint(il, DVS.DVS__DEVCLASS, DSC.DSC_K_DTYPE_LU, DC.DC__DISK)
+
+        devices = []
+        status, dev_name, context = SYS.device_scan('*', il, 0)
+        while status == SS.SS__NORMAL:
+            devices.append(dev_name)
+            status, dev_name, context = SYS.device_scan('*', il, context)
+
+        ILE3.delete(il)
+        self.assertGreater(len(devices), 0)
+        self.assertEqual(status, SS.SS__NOMOREDEV)
+
+    def test_uicstr(self):
+        """ test uicstr """
+        status, ret_str = SYS.uicstr(123, 0)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual(ret_str, '[0,173]')
+
+    def test_getdvi(self):
+        """ test getdvi """
+        il = ILE3.new()
+        ILE3.addint(il, DVS.DVS__DEVCLASS, DSC.DSC_K_DTYPE_LU, DC.DC__DISK)
+        status, dev_name, _ = SYS.device_scan('*', il, 0)
+        ILE3.delete(il)
+        self.assertIn(status, (SS.SS__NORMAL, SS.SS__NOMOREDEV))
+
+        il = ILE3.new()
+        ILE3.addint(il, DVI.DVI__DEVCHAR, DSC.DSC_K_DTYPE_LU, 0)
+
+        status = SYS.getdvi(dev_name, il)
+        characteristics = ILE3.getint(il, 0)
+
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        DEV_M_DIR = 0x8     # has directories
+        self.assertTrue(characteristics & DEV_M_DIR)
+        DEV_M_FOD = 0x4000  # is file oriented
+        self.assertTrue(characteristics & DEV_M_FOD)
+
+    def test_getjpi(self):
+        """ test getjpi """
+        il = ILE3.new()
+        ILE3.addint(il, JPI.JPI__PPGCNT, DSC.DSC_K_DTYPE_LU, 0)
+        status, pid = SYS.getjpi(0, None, il)
+        ppgcnt = ILE3.getint(il, 0)
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertGreater(pid, 0)
+        self.assertGreater(ppgcnt, 0)
+
+    def test_getlki(self):
+        """ test getlki """
+        locks = 0
+        lkiaddr = 0
+        il = ILE3.new()
+        ILE3.addint(il, LKI.LKI__LOCKID, DSC.DSC_K_DTYPE_LU, 0)
+        while True:
+            status, lkiaddr = SYS.getlki(lkiaddr, il)
+            if status != SS.SS__NORMAL:
+                break
+            lockid = ILE3.getint(il, 0)
+            self.assertEqual(lockid & 0xffff, lkiaddr & 0xffff)
+            locks = locks + 1
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NOMORELOCK)
+
+    def test_getmsg(self):
+        """ test getmsg """
+        msgid = SS.SS__HBMMCREPOSTMRG
+        flags = 0x0f
+        status, message, optional = SYS.getmsg(msgid, flags)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual(message, '%SYSTEM-I-HBMMCREPOSTMRG, HBMM master bitmaps will be created after shadow set merge completes')
+        self.assertEqual(optional, 0)
+
+    def test_getqui(self):
+        """ test getqui """
+        il = ILE3.new()
+        ILE3.addstr(il, QUI.QUI__SEARCH_NAME, '*', 32)
+        ILE3.addstr(il, QUI.QUI__QUEUE_NAME, None, 32)
+        context = -1
+        status, context = SYS.getqui(QUI.QUI__DISPLAY_QUEUE, context, il)
+        qui_name = ILE3.getstr(il, 1, 0)
+        ILE3.delete(il)
+        self.assertIn(status, (JBC.JBC__NOMOREQUE, SS.SS__NORMAL))
+        self.assertNotEqual(qui_name, '')
+        if status == SS.SS__NORMAL:
+            status, context = SYS.getqui(QUI.QUI__CANCEL_OPERATION, context, None)
+            self.assertEqual(status, SS.SS__NORMAL)
+
+    def test_getrmi(self):
+        """ test getrmi """
+        il = ILE3.new()
+        ILE3.addint(il, RMI.RMI__CPUIDLE, DSC.DSC_K_DTYPE_QU, 0)
+        status = SYS.getrmi(il)
+        cpu_idle = ILE3.getint(il, 0)
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertGreater(cpu_idle, 0)
+
+    def test_getsyi(self):
+        """ test getsyi """
+        il = ILE3.new()
+        ILE3.addstr(il, SYI.SYI__ARCH_NAME, None, 16)
+        ILE3.addint(il, SYI.SYI__ARCH_TYPE, DSC.DSC_K_DTYPE_LU, 0)
+        csid = -1
+        status, csid = SYS.getsyi(csid, None, il)
+        arch_name = ILE3.getstr(il, 0, 0)
+        arch_type = ILE3.getint(il, 1)
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertNotEqual(arch_name, '')
+        self.assertIn(arch_type, (1,2,3))
+
+    def test_gettim(self):
+        """ test gettim """
+        status, time1 = SYS.gettim()
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertGreater(time1, 0)
+        time.sleep(0.1)
+        status, time2 = SYS.gettim()
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertGreater(time2, time1)
+
+    def test_getuai(self):
+        """ test getuai """
+        # setuai requires BYPASS or SYSPRV
+        il = ILE3.new()
+        ILE3.addstr(il, JPI.JPI__ACCOUNT, None, 8)
+        ILE3.addstr(il, JPI.JPI__USERNAME, None, 12)
+        status, pid = SYS.getjpi(0, None, il)
+        jpi_account = ILE3.getstr(il, 0, 0)
+        jpi_username = ILE3.getstr(il, 1, 0)
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertNotEqual(jpi_account, '')
+        self.assertNotEqual(jpi_username, '')
+        self.assertNotEqual(pid, 0)
+
+        il = ILE3.new()
+        ILE3.addstr(il, UAI.UAI__ACCOUNT, None, 32)
+        ILE3.addstr(il, UAI.UAI__DEFDIR, None, 64)
+        ILE3.addint(il, UAI.UAI__UIC, DSC.DSC_K_DTYPE_LU, 0)
+        status = SYS.getuai(jpi_username, il)
+        uai_account = ILE3.getstr(il, 0, 0)
+        uai_defdir = ILE3.getstr(il, 1, 1)
+        uai_uic = ILE3.getint(il, 2)
+        ILE3.delete(il)
+        self.assertEqual(status, SS.SS__NORMAL)
+        self.assertEqual(jpi_account.strip(), uai_account.strip())
+        self.assertNotEqual(uai_defdir, '')
+        self.assertNotEqual(uai_uic, 0)
+
+    def test_hiber(self):
+        """ test hiber and schdwk """
+        hiber_time = 10000000   # in 100 nanoseconds
+        status, _ = SYS.schdwk(0, None, -hiber_time)
+        self.assertEqual(status, SS.SS__NORMAL)
+        # status, time1 = SYS.gettim()
+        status = SYS.hiber()
+        self.assertEqual(status, SS.SS__NORMAL)
+        # status, time2 = SYS.gettim()
+        # self.assertLessEqual(abs((time2 - time1)-hiber_time), 10000)
+
+    # # Write access to the rights database is required.
+    # def test_ident(self):
+    #     """ test add_ident, rem_ident """
+    #     status, res_id = SYS.add_ident('PythonTestID', 0, 0)
+    #     self.assertEqual(status, SS.SS__NORMAL)
+    #     status, res_id = SYS.rem_ident(res_id)
+    #     self.assertEqual(status, SS.SS__NORMAL)
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TWFrZWZpbGU=
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,1930 @@
+# Generated automatically from Makefile.pre by makesetup.
+# Top-level Makefile for Python
+#
+# As distributed, this file is called Makefile.pre.in; it is processed
+# into the real Makefile by running the script ./configure, which
+# replaces things like @spam@ with values appropriate for your system.
+# This means that if you edit Makefile, your changes get lost the next
+# time you run the configure script.  Ideally, you can do:
+#
+#	./configure
+#	make
+#	make test
+#	make install
+#
+# If you have a previous version of Python installed that you don't
+# want to overwrite, you can use "make altinstall" instead of "make
+# install".  Refer to the "Installing" section in the README file for
+# additional details.
+#
+# See also the section "Build instructions" in the README file.
+
+# === Variables set by makesetup ===
+
+MODBUILT_NAMES=      posix  errno  pwd  _sre  _codecs  _weakref  _functools  _operator  _collections  _abc  itertools  atexit  _signal  _stat  time  _thread  _locale  _io  faulthandler  _tracemalloc  _symtable  xxsubtype
+MODDISABLED_NAMES= 
+MODOBJS=             Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/_abc.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_threadmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/faulthandler.o  Modules/_tracemalloc.o Modules/hashtable.o  Modules/symtablemodule.o  Modules/xxsubtype.o
+MODLIBS=           $(LOCALMODLIBS) $(BASEMODLIBS)
+
+# === Variables set by configure
+VERSION=	3.8
+srcdir=		.
+
+abs_srcdir=	/home/vorfolomeev/Python-3.8.2
+abs_builddir=	/home/vorfolomeev/Python-3.8.2
+
+
+CC=		gcc -pthread
+CXX=		g++ -pthread
+MAINCC=		$(CC)
+LINKCC=		$(PURIFY) $(MAINCC)
+AR=		ar
+READELF=	readelf
+SOABI=		cpython-38-x86_64-linux-gnu
+LDVERSION=	$(VERSION)$(ABIFLAGS)
+LIBPYTHON=	
+GITVERSION=	
+GITTAG=		
+GITBRANCH=	
+PGO_PROF_GEN_FLAG=-fprofile-generate
+PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
+LLVM_PROF_MERGER=true
+LLVM_PROF_FILE=
+LLVM_PROF_ERR=no
+DTRACE=         
+DFLAGS=         
+DTRACE_HEADERS= 
+DTRACE_OBJS=    
+
+GNULD=		yes
+
+# Shell used by make (some versions default to the login shell, which is bad)
+SHELL=		/bin/sh
+
+# Use this to make a link between python$(VERSION) and python in $(BINDIR)
+LN=		ln
+
+# Portable install script (configure doesn't always guess right)
+INSTALL=	/usr/bin/install -c
+INSTALL_PROGRAM=${INSTALL}
+INSTALL_SCRIPT= ${INSTALL}
+INSTALL_DATA=	${INSTALL} -m 644
+# Shared libraries must be installed with executable mode on some systems;
+# rather than figuring out exactly which, we always give them executable mode.
+INSTALL_SHARED= ${INSTALL} -m 755
+
+MKDIR_P=	/usr/bin/mkdir -p
+
+MAKESETUP=      $(srcdir)/Modules/makesetup
+
+# Compiler options
+OPT=		-DNDEBUG -g -fwrapv -O3 -Wall
+BASECFLAGS=	 -Wno-unused-result -Wsign-compare
+BASECPPFLAGS=	
+CONFIGURE_CFLAGS=	
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST= -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration
+# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
+# Use it when a linker flag should _not_ be part of the distutils LDFLAGS
+# once Python is installed (bpo-35257)
+CONFIGURE_LDFLAGS_NODIST=
+CONFIGURE_CPPFLAGS=	
+CONFIGURE_LDFLAGS=	
+# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
+# command line to append to these values without stomping the pre-set
+# values.
+PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal
+# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
+# be able to build extension modules using the directories specified in the
+# environment variables
+PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
+PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
+NO_AS_NEEDED=	-Wl,--no-as-needed
+SGI_ABI=	@SGI_ABI@
+CCSHARED=	-fPIC
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable -- this is only needed for a few systems
+LINKFORSHARED=	-Xlinker -export-dynamic
+ARFLAGS=	rcs
+# Extra C flags added for building the interpreter object files.
+CFLAGSFORSHARED=
+# C flags used for building the interpreter object files
+PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
+PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
+PY_CORE_CFLAGS=	$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+# Linker flags used for building the interpreter object files
+PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+# Strict or non-strict aliasing flags used to compile dtoa.c, see above
+CFLAGS_ALIASING=
+
+
+# Machine-dependent subdirectories
+MACHDEP=	linux
+
+# Multiarch directory (may be empty)
+MULTIARCH=	x86_64-linux-gnu
+MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\"
+
+# Install prefix for architecture-independent files
+prefix=		/usr/local
+
+# Install prefix for architecture-dependent files
+exec_prefix=	${prefix}
+
+# Install prefix for data files
+datarootdir=    ${prefix}/share
+
+# Expanded directories
+BINDIR=		${exec_prefix}/bin
+LIBDIR=		${exec_prefix}/lib
+MANDIR=		${datarootdir}/man
+INCLUDEDIR=	${prefix}/include
+CONFINCLUDEDIR=	$(exec_prefix)/include
+SCRIPTDIR=	$(prefix)/lib
+ABIFLAGS=	
+
+# Detailed destination directories
+BINLIBDEST=	$(LIBDIR)/python$(VERSION)
+LIBDEST=	$(SCRIPTDIR)/python$(VERSION)
+INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
+CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
+
+# Symbols used for using shared libraries
+SHLIB_SUFFIX=	.so
+EXT_SUFFIX=	.cpython-38-x86_64-linux-gnu.so
+LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
+BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
+LDCXXSHARED=	$(CXX) -shared
+DESTSHARED=	$(BINLIBDEST)/lib-dynload
+
+# Executable suffix (.exe on Windows and Mac OS X)
+EXE=		
+BUILDEXE=	
+
+# Short name and location for Mac OS X Python framework
+UNIVERSALSDK=
+PYTHONFRAMEWORK=	
+PYTHONFRAMEWORKDIR=	no-framework
+PYTHONFRAMEWORKPREFIX=	
+PYTHONFRAMEWORKINSTALLDIR= 
+# Deployment target selected during configure, to be checked
+# by distutils. The export statement is needed to ensure that the
+# deployment target is active during build.
+MACOSX_DEPLOYMENT_TARGET=
+#export MACOSX_DEPLOYMENT_TARGET
+
+# Option to install to strip binaries
+STRIPFLAG=-s
+
+# Flags to lipo to produce a 32-bit-only universal executable
+LIPO_32BIT_FLAGS=
+
+# Options to enable prebinding (for fast startup prior to Mac OS X 10.3)
+OTHER_LIBTOOL_OPT=
+
+# Environment to run shared python without installed libraries
+RUNSHARED=       
+
+# ensurepip options
+ENSUREPIP=      install
+
+# OpenSSL options for setup.py so sysconfig can pick up AC_SUBST() vars.
+OPENSSL_INCLUDES=
+OPENSSL_LIBS=-lssl -lcrypto
+OPENSSL_LDFLAGS=
+
+# Modes for directories, executables and data files created by the
+# install process.  Default to user-only-writable for all file types.
+DIRMODE=	755
+EXEMODE=	755
+FILEMODE=	644
+
+# configure script arguments
+CONFIG_ARGS=	 '--enable-optimizations' '--with-ensurepip=install'
+
+
+# Subdirectories with code
+SRCDIRS= 	Parser Objects Python Modules Modules/_io Programs
+
+# Other subdirectories
+SUBDIRSTOO=	Include Lib Misc
+
+# Files and directories to be distributed
+CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
+DISTFILES=	README.rst ChangeLog $(CONFIGFILES)
+DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
+DIST=		$(DISTFILES) $(DISTDIRS)
+
+
+LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
+LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
+BLDLIBRARY=     $(LDLIBRARY)
+PY3LIBRARY=     
+DLLLIBRARY=	
+LDLIBRARYDIR=   
+INSTSONAME=	$(LDLIBRARY)
+
+
+LIBS=		-lcrypt -lpthread -ldl  -lutil -lm
+LIBM=		-lm
+LIBC=		
+SYSLIBS=	$(LIBM) $(LIBC)
+SHLIBS=		$(LIBS)
+
+DLINCLDIR=	.
+DYNLOADFILE=	dynload_shlib.o
+MACHDEP_OBJS=	
+LIBOBJDIR=	Python/
+LIBOBJS=	
+
+PYTHON=		python$(EXE)
+BUILDPYTHON=	python$(BUILDEXE)
+
+PYTHON_FOR_REGEN=python3
+UPDATE_FILE=python3 $(srcdir)/Tools/scripts/update_file.py
+PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
+_PYTHON_HOST_PLATFORM=
+BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
+HOST_GNU_TYPE=	x86_64-pc-linux-gnu
+
+# Tcl and Tk config info from --with-tcltk-includes and -libs options
+TCLTK_INCLUDES=	
+TCLTK_LIBS=	
+
+# The task to run while instrumented when building the profile-opt target.
+# To speed up profile generation, we don't run the full unit test suite
+# by default. The default is "-m test --pgo". To run more tests, use
+# PROFILE_TASK="-m test --pgo-extended"
+PROFILE_TASK=	-m test --pgo
+
+# report files for gcov / lcov coverage report
+COVERAGE_INFO=	$(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_REPORT_OPTIONS=--no-branch-coverage --title "CPython lcov report"
+
+
+# === Definitions added by makesetup ===
+
+LOCALMODLIBS=                      
+BASEMODLIBS=
+PYTHONPATH=$(COREPYTHONPATH)
+COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)
+TESTPATH=
+SITEPATH=
+DESTPATH=
+MACHDESTLIB=$(BINLIBDEST)
+DESTLIB=$(LIBDEST)
+
+
+
+##########################################################################
+# Modules
+MODULE_OBJS=	\
+		Modules/config.o \
+		Modules/getpath.o \
+		Modules/main.o \
+		Modules/gcmodule.o
+
+IO_H=		Modules/_io/_iomodule.h
+
+IO_OBJS=	\
+		Modules/_io/_iomodule.o \
+		Modules/_io/iobase.o \
+		Modules/_io/fileio.o \
+		Modules/_io/bufferedio.o \
+		Modules/_io/textio.o \
+		Modules/_io/bytesio.o \
+		Modules/_io/stringio.o
+
+##########################################################################
+
+LIBFFI_INCLUDEDIR=	
+
+##########################################################################
+# Parser
+POBJS=		\
+		Parser/acceler.o \
+		Parser/grammar1.o \
+		Parser/listnode.o \
+		Parser/node.o \
+		Parser/parser.o \
+		Parser/token.o \
+
+PARSER_OBJS=	$(POBJS) Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o
+
+PARSER_HEADERS= \
+		$(srcdir)/Include/grammar.h \
+		$(srcdir)/Include/parsetok.h \
+		$(srcdir)/Parser/parser.h \
+		$(srcdir)/Parser/tokenizer.h
+
+##########################################################################
+# Python
+
+PYTHON_OBJS=	\
+		Python/_warnings.o \
+		Python/Python-ast.o \
+		Python/asdl.o \
+		Python/ast.o \
+		Python/ast_opt.o \
+		Python/ast_unparse.o \
+		Python/bltinmodule.o \
+		Python/ceval.o \
+		Python/codecs.o \
+		Python/compile.o \
+		Python/context.o \
+		Python/dynamic_annotations.o \
+		Python/errors.o \
+		Python/frozenmain.o \
+		Python/future.o \
+		Python/getargs.o \
+		Python/getcompiler.o \
+		Python/getcopyright.o \
+		Python/getplatform.o \
+		Python/getversion.o \
+		Python/graminit.o \
+		Python/hamt.o \
+		Python/import.o \
+		Python/importdl.o \
+		Python/initconfig.o \
+		Python/marshal.o \
+		Python/modsupport.o \
+		Python/mysnprintf.o \
+		Python/mystrtoul.o \
+		Python/pathconfig.o \
+		Python/peephole.o \
+		Python/preconfig.o \
+		Python/pyarena.o \
+		Python/pyctype.o \
+		Python/pyfpe.o \
+		Python/pyhash.o \
+		Python/pylifecycle.o \
+		Python/pymath.o \
+		Python/pystate.o \
+		Python/pythonrun.o \
+		Python/pytime.o \
+		Python/bootstrap_hash.o \
+		Python/structmember.o \
+		Python/symtable.o \
+		Python/sysmodule.o \
+		Python/thread.o \
+		Python/traceback.o \
+		Python/getopt.o \
+		Python/pystrcmp.o \
+		Python/pystrtod.o \
+		Python/pystrhex.o \
+		Python/dtoa.o \
+		Python/formatter_unicode.o \
+		Python/fileutils.o \
+		Python/$(DYNLOADFILE) \
+		$(LIBOBJS) \
+		$(MACHDEP_OBJS) \
+		$(DTRACE_OBJS)
+
+
+##########################################################################
+# Objects
+OBJECT_OBJS=	\
+		Objects/abstract.o \
+		Objects/accu.o \
+		Objects/boolobject.o \
+		Objects/bytes_methods.o \
+		Objects/bytearrayobject.o \
+		Objects/bytesobject.o \
+		Objects/call.o \
+		Objects/capsule.o \
+		Objects/cellobject.o \
+		Objects/classobject.o \
+		Objects/codeobject.o \
+		Objects/complexobject.o \
+		Objects/descrobject.o \
+		Objects/enumobject.o \
+		Objects/exceptions.o \
+		Objects/genobject.o \
+		Objects/fileobject.o \
+		Objects/floatobject.o \
+		Objects/frameobject.o \
+		Objects/funcobject.o \
+		Objects/interpreteridobject.o \
+		Objects/iterobject.o \
+		Objects/listobject.o \
+		Objects/longobject.o \
+		Objects/dictobject.o \
+		Objects/odictobject.o \
+		Objects/memoryobject.o \
+		Objects/methodobject.o \
+		Objects/moduleobject.o \
+		Objects/namespaceobject.o \
+		Objects/object.o \
+		Objects/obmalloc.o \
+		Objects/picklebufobject.o \
+		Objects/rangeobject.o \
+		Objects/setobject.o \
+		Objects/sliceobject.o \
+		Objects/structseq.o \
+		Objects/tupleobject.o \
+		Objects/typeobject.o \
+		Objects/unicodeobject.o \
+		Objects/unicodectype.o \
+		Objects/weakrefobject.o
+
+##########################################################################
+# objects that get linked into the Python library
+LIBRARY_OBJS_OMIT_FROZEN=	\
+		Modules/getbuildinfo.o \
+		$(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS)
+
+LIBRARY_OBJS=	\
+		$(LIBRARY_OBJS_OMIT_FROZEN) \
+		Python/frozen.o
+
+##########################################################################
+# DTrace
+
+# On some systems, object files that reference DTrace probes need to be modified
+# in-place by dtrace(1).
+DTRACE_DEPS = \
+	Python/ceval.o Python/import.o Python/sysmodule.o Modules/gcmodule.o
+
+#########################################################################
+# Rules
+
+# Default target
+all:		profile-opt
+build_all:	check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \
+		Programs/_testembed python-config
+
+# Check that the source is clean when building out of source.
+check-clean-src:
+	@if test -n "$(VPATH)" -a -f "$(srcdir)/Programs/python.o"; then \
+		echo "Error: The source directory ($(srcdir)) is not clean" ; \
+		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+		echo "Try to run: make -C \"$(srcdir)\" clean" ; \
+		exit 1; \
+	fi
+
+# Profile generation build must start from a clean tree.
+profile-clean-stamp:
+	$(MAKE) clean profile-removal
+	touch $@
+
+# Compile with profile generation enabled.
+profile-gen-stamp: profile-clean-stamp
+	@if [ $(LLVM_PROF_ERR) = yes ]; then \
+		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\
+		echo "Please add it to PATH and run ./configure again" ;\
+		exit 1;\
+	fi
+	@echo "Building with support for profile generation:"
+	$(MAKE) build_all_generate_profile
+	touch $@
+
+# Run task with profile generation build to create profile information.
+profile-run-stamp:
+	@echo "Running code to generate profile data (this can take a while):"
+	# First, we need to create a clean build with profile generation
+	# enabled.
+	$(MAKE) profile-gen-stamp
+	# Next, run the profile task to generate the profile information.
+	$(MAKE) run_profile_task
+	$(MAKE) build_all_merge_profile
+	# Remove profile generation binary since we are done with it.
+	$(MAKE) clean
+	# This is an expensive target to build and it does not have proper
+	# makefile dependency information.  So, we create a "stamp" file
+	# to record its completion and avoid re-running it.
+	touch $@
+
+build_all_generate_profile:
+	$(MAKE) build_all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
+
+run_profile_task:
+	@ # FIXME: can't run for a cross build
+	$(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true
+
+build_all_merge_profile:
+	$(LLVM_PROF_MERGER)
+
+# Compile Python binary with profile guided optimization.
+# To force re-running of the profile task, remove the profile-run-stamp file.
+profile-opt: profile-run-stamp
+	@echo "Rebuilding with profile guided optimizations:"
+	-rm -f profile-clean-stamp
+	$(MAKE) build_all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
+
+# Compile and run with gcov
+.PHONY=coverage coverage-lcov coverage-report
+coverage:
+	@echo "Building with support for coverage checking:"
+	$(MAKE) clean profile-removal
+	$(MAKE) build_all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
+
+coverage-lcov:
+	@echo "Creating Coverage HTML report with LCOV:"
+	@rm -f $(COVERAGE_INFO)
+	@rm -rf $(COVERAGE_REPORT)
+	@lcov --capture --directory $(abs_builddir) \
+	    --base-directory $(realpath $(abs_builddir)) \
+	    --path $(realpath $(abs_srcdir)) \
+	    --output-file $(COVERAGE_INFO)
+	@ # remove 3rd party modules, system headers and internal files with
+	@ # debug, test or dummy functions.
+	@lcov --remove $(COVERAGE_INFO) \
+	    '*/Modules/_blake2/impl/*' \
+	    '*/Modules/_ctypes/libffi*/*' \
+	    '*/Modules/_decimal/libmpdec/*' \
+	    '*/Modules/_sha3/kcp/*' \
+	    '*/Modules/expat/*' \
+	    '*/Modules/zlib/*' \
+	    '*/Include/*' \
+	    '*/Modules/xx*.c' \
+	    '*/Parser/listnode.c' \
+	    '*/Python/pyfpe.c' \
+	    '*/Python/pystrcmp.c' \
+	    '/usr/include/*' \
+	    '/usr/local/include/*' \
+	    '/usr/lib/gcc/*' \
+	    --output-file $(COVERAGE_INFO)
+	@genhtml $(COVERAGE_INFO) --output-directory $(COVERAGE_REPORT) \
+	    $(COVERAGE_REPORT_OPTIONS)
+	@echo
+	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
+	@echo
+
+# Force regeneration of parser and importlib
+coverage-report: regen-grammar regen-token regen-importlib
+	@ # build with coverage info
+	$(MAKE) coverage
+	@ # run tests, ignore failures
+	$(TESTRUNNER) $(TESTOPTS) || true
+	@ # build lcov report
+	$(MAKE) coverage-lcov
+
+# Run "Argument Clinic" over all source files
+.PHONY=clinic
+clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
+
+# Build the interpreter
+$(BUILDPYTHON):	Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+platform: $(BUILDPYTHON) pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+# Since this step runs before shared modules are built, try to avoid bootstrap
+# problems by creating a dummy pybuilddir.txt just to allow interpreter
+# initialization to succeed.  It will be overwritten by generate-posix-vars
+# or removed in case of failure.
+pybuilddir.txt: $(BUILDPYTHON)
+	@echo "none" > ./pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
+	if test $$? -ne 0 ; then \
+		echo "generate-posix-vars failed" ; \
+		rm -f ./pybuilddir.txt ; \
+		exit 1 ; \
+	fi
+
+# This is shared by the math and cmath modules
+Modules/_math.o: Modules/_math.c Modules/_math.h
+	$(CC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $<
+
+# blake2s is auto-generated from blake2b
+$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+
+# Build the shared modules
+# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
+# -s, --silent or --quiet is always the first char.
+# Under BSD make, MAKEFLAGS might be " -s -v x=y".
+# Ignore macros passed by GNU make, passed after --
+sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
+	@case "`echo X $$MAKEFLAGS | sed 's/^X //;s/ -- .*//'`" in \
+	    *\ -s*|s*) quiet="-q";; \
+	    *) quiet="";; \
+	esac; \
+	echo "$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
+		_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
+		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build"; \
+	$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
+		_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
+		$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
+
+
+# Build static library
+$(LIBRARY): $(LIBRARY_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
+
+libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
+	if test $(INSTSONAME) != $(LDLIBRARY); then \
+		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+		$(LN) -f $(INSTSONAME) $@; \
+	else \
+		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	fi
+
+libpython3.so:	libpython$(LDVERSION).so
+	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
+
+libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
+	 $(CC) -dynamiclib -Wl,-single_module $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
+
+
+libpython$(VERSION).sl: $(LIBRARY_OBJS)
+	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
+
+# Copy up the gdb python hooks into a position where they can be automatically
+# loaded by gdb during Lib/test/test_gdb.py
+#
+# Distributors are likely to want to install this somewhere else e.g. relative
+# to the stripped DWARF data for the shared library.
+gdbhooks: $(BUILDPYTHON)-gdb.py
+
+SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
+$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
+	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
+
+# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
+# minimal framework (not including the Lib directory and such) in the current
+# directory.
+RESSRCDIR=Mac/Resources/framework
+$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) -Wl,-single_module \
+		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL) -d -m $(DIRMODE)  \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
+
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
+	if test -n "$(DLLLIBRARY)"; then \
+		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+			$(LIBS) $(MODLIBS) $(SYSLIBS); \
+	else true; \
+	fi
+
+
+oldsharedmods: $(SHAREDMODS)
+
+
+Makefile Modules/config.c: Makefile.pre \
+				$(srcdir)/Modules/config.c.in \
+				$(MAKESETUP) \
+				$(srcdir)/Modules/Setup \
+				Modules/Setup.local
+	$(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
+				-s Modules \
+				Modules/Setup.local \
+				$(srcdir)/Modules/Setup
+	@mv config.c Modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+
+Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+############################################################################
+# Importlib
+
+Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile
+
+Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN)
+	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+.PHONY: regen-importlib
+regen-importlib: Programs/_freeze_importlib
+	# Regenerate Python/importlib_external.h
+	# from Lib/importlib/_bootstrap_external.py using _freeze_importlib
+	./Programs/_freeze_importlib importlib._bootstrap_external \
+	    $(srcdir)/Lib/importlib/_bootstrap_external.py \
+	    $(srcdir)/Python/importlib_external.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/importlib_external.h $(srcdir)/Python/importlib_external.h.new
+	# Regenerate Python/importlib.h from Lib/importlib/_bootstrap.py
+	# using _freeze_importlib
+	./Programs/_freeze_importlib importlib._bootstrap \
+	    $(srcdir)/Lib/importlib/_bootstrap.py \
+	    $(srcdir)/Python/importlib.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib.h.new
+	# Regenerate Python/importlib_zipimport.h from Lib/zipimport.py
+	# using _freeze_importlib
+	./Programs/_freeze_importlib zipimport \
+	    $(srcdir)/Lib/zipimport.py \
+	    $(srcdir)/Python/importlib_zipimport.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/importlib_zipimport.h $(srcdir)/Python/importlib_zipimport.h.new
+
+
+############################################################################
+# Regenerate all generated files
+
+regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar \
+	regen-token regen-keyword regen-symbol regen-ast regen-importlib clinic
+
+############################################################################
+# Special rules for object files
+
+Modules/getbuildinfo.o: $(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS) \
+		$(DTRACE_OBJS) \
+		$(srcdir)/Modules/getbuildinfo.c
+	$(CC) -c $(PY_CORE_CFLAGS) \
+	      -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+	      -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+	      -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+	      -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+		-DPREFIX='"$(prefix)"' \
+		-DEXEC_PREFIX='"$(exec_prefix)"' \
+		-DVERSION='"$(VERSION)"' \
+		-DVPATH='"$(VPATH)"' \
+		-o $@ $(srcdir)/Modules/getpath.c
+
+Programs/python.o: $(srcdir)/Programs/python.c
+	$(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
+
+Programs/_testembed.o: $(srcdir)/Programs/_testembed.c
+	$(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
+
+Modules/_sre.o: $(srcdir)/Modules/_sre.c $(srcdir)/Modules/sre.h $(srcdir)/Modules/sre_constants.h $(srcdir)/Modules/sre_lib.h
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
+
+Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSOABI='"$(SOABI)"' \
+		-o $@ $(srcdir)/Python/dynload_shlib.c
+
+Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSHLIB_EXT='"$(EXT_SUFFIX)"' \
+		-o $@ $(srcdir)/Python/dynload_hpux.c
+
+Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DABIFLAGS='"$(ABIFLAGS)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/sysmodule.c
+
+$(IO_OBJS): $(IO_H)
+
+.PHONY: regen-grammar
+regen-grammar: regen-token
+	# Regenerate Include/graminit.h and Python/graminit.c
+	# from Grammar/Grammar using pgen
+	@$(MKDIR_P) Include
+	PYTHONPATH=$(srcdir) $(PYTHON_FOR_REGEN) -m Parser.pgen $(srcdir)/Grammar/Grammar \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/graminit.h.new \
+		$(srcdir)/Python/graminit.c.new
+	$(UPDATE_FILE) $(srcdir)/Include/graminit.h $(srcdir)/Include/graminit.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/graminit.c $(srcdir)/Python/graminit.c.new
+
+.PHONY=regen-ast
+regen-ast:
+	# Regenerate Include/Python-ast.h using Parser/asdl_c.py -h
+	$(MKDIR_P) $(srcdir)/Include
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		-h $(srcdir)/Include/Python-ast.h.new \
+		$(srcdir)/Parser/Python.asdl
+	$(UPDATE_FILE) $(srcdir)/Include/Python-ast.h $(srcdir)/Include/Python-ast.h.new
+	# Regenerate Python/Python-ast.c using Parser/asdl_c.py -c
+	$(MKDIR_P) $(srcdir)/Python
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		-c $(srcdir)/Python/Python-ast.c.new \
+		$(srcdir)/Parser/Python.asdl
+	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
+
+.PHONY: regen-opcode
+regen-opcode:
+	# Regenerate Include/opcode.h from Lib/opcode.py
+	# using Tools/scripts/generate_opcode_h.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_opcode_h.py \
+		$(srcdir)/Lib/opcode.py \
+		$(srcdir)/Include/opcode.h.new
+	$(UPDATE_FILE) $(srcdir)/Include/opcode.h $(srcdir)/Include/opcode.h.new
+
+.PHONY: regen-token
+regen-token:
+	# Regenerate Doc/library/token-list.inc from Grammar/Tokens
+	# using Tools/scripts/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py rst \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Doc/library/token-list.inc
+	# Regenerate Include/token.h from Grammar/Tokens
+	# using Tools/scripts/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py h \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/token.h
+	# Regenerate Parser/token.c from Grammar/Tokens
+	# using Tools/scripts/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py c \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Parser/token.c
+	# Regenerate Lib/token.py from Grammar/Tokens
+	# using Tools/scripts/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py py \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/token.py
+
+.PHONY: regen-keyword
+regen-keyword:
+	# Regenerate Lib/keyword.py from Grammar/Grammar and Grammar/Tokens
+	# using Parser/pgen
+	PYTHONPATH=$(srcdir) $(PYTHON_FOR_REGEN) -m Parser.pgen.keywordgen $(srcdir)/Grammar/Grammar \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/keyword.py.new
+	$(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
+
+.PHONY: regen-symbol
+regen-symbol: $(srcdir)/Include/graminit.h
+	# Regenerate Lib/symbol.py from Include/graminit.h
+	# using Tools/scripts/generate_symbol_py.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_symbol_py.py \
+		$(srcdir)/Include/graminit.h \
+		$(srcdir)/Lib/symbol.py
+
+Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
+
+Python/getplatform.o: $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+
+Python/importdl.o: $(srcdir)/Python/importdl.c
+		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+
+Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
+				$(srcdir)/Objects/unicodetype_db.h
+
+BYTESTR_DEPS = \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/ctype.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/join.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/stringdefs.h \
+		$(srcdir)/Objects/stringlib/transmogrify.h
+
+UNICODE_DEPS = \
+		$(srcdir)/Objects/stringlib/asciilib.h \
+		$(srcdir)/Objects/stringlib/codecs.h \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/find_max_char.h \
+		$(srcdir)/Objects/stringlib/localeutil.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/replace.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/ucs1lib.h \
+		$(srcdir)/Objects/stringlib/ucs2lib.h \
+		$(srcdir)/Objects/stringlib/ucs4lib.h \
+		$(srcdir)/Objects/stringlib/undef.h \
+		$(srcdir)/Objects/stringlib/unicode_format.h \
+		$(srcdir)/Objects/stringlib/unicodedefs.h
+
+Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
+Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
+Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
+
+Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
+
+Objects/odictobject.o: $(srcdir)/Objects/dict-common.h
+Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h $(srcdir)/Objects/dict-common.h
+Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+	# Regenerate Python/opcode_targets.h from Lib/opcode.py
+	# using Python/makeopcodetargets.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py \
+		$(srcdir)/Python/opcode_targets.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
+
+Python/ceval.o: $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/ceval_gil.h \
+		$(srcdir)/Python/condvar.h
+
+Python/frozen.o: $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib_external.h \
+		$(srcdir)/Python/importlib_zipimport.h
+
+# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
+# follow our naming conventions. dtrace(1) uses the output filename to generate
+# an include guard, so we can't use a pipeline to transform its output.
+Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
+	$(MKDIR_P) Include
+	$(DTRACE) $(DFLAGS) -o $@ -h -s $<
+	: sed in-place edit with POSIX-only tools
+	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
+	mv $@.tmp $@
+
+Python/ceval.o: $(srcdir)/Include/pydtrace.h
+Python/import.o: $(srcdir)/Include/pydtrace.h
+Modules/gcmodule.o: $(srcdir)/Include/pydtrace.h
+
+Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+	$(DTRACE) $(DFLAGS) -o $@ -G -s $< $(DTRACE_DEPS)
+
+Objects/typeobject.o: Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+	# Regenerate Objects/typeslots.inc from Include/typeslotsh
+	# using Objects/typeslots.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+		< $(srcdir)/Include/typeslots.h \
+		$(srcdir)/Objects/typeslots.inc.new
+	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
+
+############################################################################
+# Header files
+
+PYTHON_HEADERS= \
+		$(srcdir)/Include/Python.h \
+		$(srcdir)/Include/abstract.h \
+		$(srcdir)/Include/asdl.h \
+		$(srcdir)/Include/ast.h \
+		$(srcdir)/Include/bitset.h \
+		$(srcdir)/Include/bltinmodule.h \
+		$(srcdir)/Include/boolobject.h \
+		$(srcdir)/Include/bytearrayobject.h \
+		$(srcdir)/Include/bytes_methods.h \
+		$(srcdir)/Include/bytesobject.h \
+		$(srcdir)/Include/cellobject.h \
+		$(srcdir)/Include/ceval.h \
+		$(srcdir)/Include/classobject.h \
+		$(srcdir)/Include/code.h \
+		$(srcdir)/Include/codecs.h \
+		$(srcdir)/Include/compile.h \
+		$(srcdir)/Include/complexobject.h \
+		$(srcdir)/Include/context.h \
+		$(srcdir)/Include/descrobject.h \
+		$(srcdir)/Include/dictobject.h \
+		$(srcdir)/Include/dtoa.h \
+		$(srcdir)/Include/dynamic_annotations.h \
+		$(srcdir)/Include/enumobject.h \
+		$(srcdir)/Include/errcode.h \
+		$(srcdir)/Include/eval.h \
+		$(srcdir)/Include/fileobject.h \
+		$(srcdir)/Include/fileutils.h \
+		$(srcdir)/Include/floatobject.h \
+		$(srcdir)/Include/frameobject.h \
+		$(srcdir)/Include/funcobject.h \
+		$(srcdir)/Include/genobject.h \
+		$(srcdir)/Include/import.h \
+		$(srcdir)/Include/interpreteridobject.h \
+		$(srcdir)/Include/intrcheck.h \
+		$(srcdir)/Include/iterobject.h \
+		$(srcdir)/Include/listobject.h \
+		$(srcdir)/Include/longintrepr.h \
+		$(srcdir)/Include/longobject.h \
+		$(srcdir)/Include/marshal.h \
+		$(srcdir)/Include/memoryobject.h \
+		$(srcdir)/Include/methodobject.h \
+		$(srcdir)/Include/modsupport.h \
+		$(srcdir)/Include/moduleobject.h \
+		$(srcdir)/Include/namespaceobject.h \
+		$(srcdir)/Include/node.h \
+		$(srcdir)/Include/object.h \
+		$(srcdir)/Include/objimpl.h \
+		$(srcdir)/Include/odictobject.h \
+		$(srcdir)/Include/opcode.h \
+		$(srcdir)/Include/osdefs.h \
+		$(srcdir)/Include/osmodule.h \
+		$(srcdir)/Include/patchlevel.h \
+		$(srcdir)/Include/picklebufobject.h \
+		$(srcdir)/Include/pyarena.h \
+		$(srcdir)/Include/pycapsule.h \
+		$(srcdir)/Include/pyctype.h \
+		$(srcdir)/Include/pydebug.h \
+		$(srcdir)/Include/pydtrace.h \
+		$(srcdir)/Include/pyerrors.h \
+		$(srcdir)/Include/pyfpe.h \
+		$(srcdir)/Include/pyhash.h \
+		$(srcdir)/Include/pylifecycle.h \
+		$(srcdir)/Include/pymacconfig.h \
+		$(srcdir)/Include/pymacro.h \
+		$(srcdir)/Include/pymath.h \
+		$(srcdir)/Include/pymem.h \
+		$(srcdir)/Include/pyport.h \
+		$(srcdir)/Include/pystate.h \
+		$(srcdir)/Include/pystrcmp.h \
+		$(srcdir)/Include/pystrhex.h \
+		$(srcdir)/Include/pystrtod.h \
+		$(srcdir)/Include/pythonrun.h \
+		$(srcdir)/Include/pythread.h \
+		$(srcdir)/Include/pytime.h \
+		$(srcdir)/Include/rangeobject.h \
+		$(srcdir)/Include/setobject.h \
+		$(srcdir)/Include/sliceobject.h \
+		$(srcdir)/Include/structmember.h \
+		$(srcdir)/Include/structseq.h \
+		$(srcdir)/Include/symtable.h \
+		$(srcdir)/Include/sysmodule.h \
+		$(srcdir)/Include/token.h \
+		$(srcdir)/Include/traceback.h \
+		$(srcdir)/Include/tracemalloc.h \
+		$(srcdir)/Include/tupleobject.h \
+		$(srcdir)/Include/ucnhash.h \
+		$(srcdir)/Include/unicodeobject.h \
+		$(srcdir)/Include/warnings.h \
+		$(srcdir)/Include/weakrefobject.h \
+		\
+		pyconfig.h \
+		$(PARSER_HEADERS) \
+		$(srcdir)/Include/Python-ast.h \
+		\
+		$(srcdir)/Include/cpython/abstract.h \
+		$(srcdir)/Include/cpython/dictobject.h \
+		$(srcdir)/Include/cpython/fileobject.h \
+		$(srcdir)/Include/cpython/initconfig.h \
+		$(srcdir)/Include/cpython/interpreteridobject.h \
+		$(srcdir)/Include/cpython/object.h \
+		$(srcdir)/Include/cpython/objimpl.h \
+		$(srcdir)/Include/cpython/pyerrors.h \
+		$(srcdir)/Include/cpython/pylifecycle.h \
+		$(srcdir)/Include/cpython/pymem.h \
+		$(srcdir)/Include/cpython/pystate.h \
+		$(srcdir)/Include/cpython/sysmodule.h \
+		$(srcdir)/Include/cpython/traceback.h \
+		$(srcdir)/Include/cpython/tupleobject.h \
+		$(srcdir)/Include/cpython/unicodeobject.h \
+		\
+		$(srcdir)/Include/internal/pycore_accu.h \
+		$(srcdir)/Include/internal/pycore_atomic.h \
+		$(srcdir)/Include/internal/pycore_ceval.h \
+		$(srcdir)/Include/internal/pycore_code.h \
+		$(srcdir)/Include/internal/pycore_condvar.h \
+		$(srcdir)/Include/internal/pycore_context.h \
+		$(srcdir)/Include/internal/pycore_fileutils.h \
+		$(srcdir)/Include/internal/pycore_getopt.h \
+		$(srcdir)/Include/internal/pycore_gil.h \
+		$(srcdir)/Include/internal/pycore_hamt.h \
+		$(srcdir)/Include/internal/pycore_initconfig.h \
+		$(srcdir)/Include/internal/pycore_object.h \
+		$(srcdir)/Include/internal/pycore_pathconfig.h \
+		$(srcdir)/Include/internal/pycore_pyerrors.h \
+		$(srcdir)/Include/internal/pycore_pyhash.h \
+		$(srcdir)/Include/internal/pycore_pylifecycle.h \
+		$(srcdir)/Include/internal/pycore_pymem.h \
+		$(srcdir)/Include/internal/pycore_pystate.h \
+		$(srcdir)/Include/internal/pycore_traceback.h \
+		$(srcdir)/Include/internal/pycore_tupleobject.h \
+		$(srcdir)/Include/internal/pycore_warnings.h \
+		$(DTRACE_HEADERS)
+
+$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
+
+
+######################################################################
+
+TESTOPTS=	$(EXTRATESTOPTS)
+TESTPYTHON=	$(RUNSHARED) ./$(BUILDPYTHON) $(TESTPYTHONOPTS)
+TESTRUNNER=	$(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py
+TESTTIMEOUT=	1200
+
+.PHONY: test testall testuniversal buildbottest pythoninfo
+
+# Remove "test_python_*" directories of previous failed test jobs.
+# Pass TESTOPTS options because it can contain --tempdir option.
+cleantest: build_all
+	$(TESTRUNNER) $(TESTOPTS) --cleanup
+
+# Run a basic set of regression tests.
+# This excludes some tests that are particularly resource-intensive.
+test:		build_all platform
+		$(TESTRUNNER) $(TESTOPTS)
+
+# Run the full test suite twice - once without .pyc files, and once with.
+# In the past, we've had problems where bugs in the marshalling or
+# elsewhere caused bytecode read from .pyc files to behave differently
+# than bytecode generated directly from a .py source file.  Sometimes
+# the bytecode read from a .pyc file had the bug, sometimes the directly
+# generated bytecode.  This is sometimes a very shy bug needing a lot of
+# sample data.
+testall:	build_all platform
+		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
+		$(TESTPYTHON) -E $(srcdir)/Lib/compileall.py
+		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
+		-$(TESTRUNNER) -u all $(TESTOPTS)
+		$(TESTRUNNER) -u all $(TESTOPTS)
+
+# Run the test suite for both architectures in a Universal build on OSX.
+# Must be run on an Intel box.
+testuniversal:	build_all platform
+		@if [ `arch` != 'i386' ]; then \
+			echo "This can only be used on OSX/i386" ;\
+			exit 1 ;\
+		fi
+		$(TESTRUNNER) -u all $(TESTOPTS)
+		$(RUNSHARED) /usr/libexec/oah/translate \
+			./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
+
+# Like testall, but with only one pass and without multiple processes.
+# Run an optional script to include information about the build environment.
+buildbottest:	build_all platform
+		-@if which pybuildbot.identify >/dev/null 2>&1; then \
+			pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
+		fi
+		$(TESTRUNNER) -j 1 -u all -W --slowest --fail-env-changed --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+pythoninfo: build_all
+		$(RUNSHARED) ./$(BUILDPYTHON) -m test.pythoninfo
+
+QUICKTESTOPTS=	$(TESTOPTS) -x test_subprocess test_io test_lib2to3 \
+		test_multibytecodec test_urllib2_localnet test_itertools \
+		test_multiprocessing_fork test_multiprocessing_spawn \
+		test_multiprocessing_forkserver \
+		test_mailbox test_socket test_poll \
+		test_select test_zipfile test_concurrent_futures
+quicktest:	build_all platform
+		$(TESTRUNNER) $(QUICKTESTOPTS)
+
+# SSL tests
+.PHONY: multisslcompile multissltest
+multisslcompile: build_all
+	$(RUNSHARED) ./$(BUILDPYTHON) Tools/ssl/multissltests.py --steps=modules
+
+multissltest: build_all
+	$(RUNSHARED) ./$(BUILDPYTHON) Tools/ssl/multissltests.py
+
+install:  commoninstall bininstall maninstall 
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--upgrade" ;; \
+			install|*) ensurepip="" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+altinstall: commoninstall
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--altinstall --upgrade" ;; \
+			install|*) ensurepip="--altinstall" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+commoninstall:  check-clean-src  \
+		altbininstall libinstall inclinstall libainstall \
+		sharedinstall oldsharedinstall altmaninstall \
+		
+
+# Install shared libraries enabled by Setup
+DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
+
+oldsharedinstall: $(DESTSHARED) $(SHAREDMODS)
+		@for i in X $(SHAREDMODS); do \
+		  if test $$i != X; then \
+		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
+		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+		  fi; \
+		done
+
+$(DESTSHARED):
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
+
+# Install the interpreter with $(VERSION) affixed
+# This goes into $(exec_prefix)
+altbininstall: $(BUILDPYTHON) 
+	@for i in $(BINDIR) $(LIBDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	else \
+		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		fi; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+	fi
+	if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		if test -n "$(DLLLIBRARY)" ; then \
+			$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
+		else \
+			$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+			if test $(LDLIBRARY) != $(INSTSONAME); then \
+				(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+			fi \
+		fi; \
+		if test -n "$(PY3LIBRARY)"; then \
+			$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \
+		fi; \
+	else	true; \
+	fi
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)python$(VERSION)-32$(EXE); \
+		lipo $(LIPO_32BIT_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+
+bininstall: altbininstall
+	if test ! -d $(DESTDIR)$(LIBPC); then \
+		echo "Creating directory $(LIBPC)"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \
+	fi
+	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	else true; \
+	fi
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python-$(LDVERSION).pc); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python-$(LDVERSION)-embed.pc); \
+	fi
+	-rm -f $(DESTDIR)$(BINDIR)/python3-config
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
+	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
+	-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)
+	-rm -f $(DESTDIR)$(BINDIR)/idle3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
+	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+	-rm -f $(DESTDIR)$(BINDIR)/2to3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3)
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \
+	fi
+
+# Install the versioned manual page
+altmaninstall:
+	@for i in $(MANDIR) $(MANDIR)/man1; \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
+		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
+
+# Install the unversioned manual page
+maninstall:	altmaninstall
+	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
+	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
+
+# Install the library
+XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
+LIBSUBDIRS=	tkinter tkinter/test tkinter/test/test_tkinter \
+		tkinter/test/test_ttk site-packages test \
+		test/audiodata \
+		test/capath test/data \
+		test/cjkencodings test/decimaltestdata \
+		test/xmltestdata test/xmltestdata/c14n-20 \
+		test/dtracedata \
+		test/eintrdata \
+		test/imghdrdata \
+		test/libregrtest \
+		test/subprocessdata test/sndhdrdata test/support \
+		test/tracedmodules test/encoded_modules \
+		test/test_import \
+		test/test_import/data \
+		test/test_import/data/circular_imports \
+		test/test_import/data/circular_imports/subpkg \
+		test/test_import/data/package \
+		test/test_import/data/package2 \
+		importlib \
+		importlib/metadata \
+		test/test_importlib \
+		test/test_importlib/builtin \
+		test/test_importlib/data \
+		test/test_importlib/data01 \
+		test/test_importlib/data01/subdirectory \
+		test/test_importlib/data02 \
+		test/test_importlib/data02/one \
+		test/test_importlib/data02/two \
+		test/test_importlib/data03 \
+		test/test_importlib/data03/namespace \
+		test/test_importlib/data03/namespace/portion1 \
+		test/test_importlib/data03/namespace/portion2 \
+		test/test_importlib/extension \
+		test/test_importlib/frozen \
+		test/test_importlib/import_ \
+		test/test_importlib/namespace_pkgs \
+		test/test_importlib/namespace_pkgs/both_portions \
+		test/test_importlib/namespace_pkgs/both_portions/foo \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \
+		test/test_importlib/namespace_pkgs/portion1 \
+		test/test_importlib/namespace_pkgs/portion1/foo \
+		test/test_importlib/namespace_pkgs/portion2 \
+		test/test_importlib/namespace_pkgs/portion2/foo \
+		test/test_importlib/namespace_pkgs/project1 \
+		test/test_importlib/namespace_pkgs/project1/parent \
+		test/test_importlib/namespace_pkgs/project1/parent/child \
+		test/test_importlib/namespace_pkgs/project2 \
+		test/test_importlib/namespace_pkgs/project2/parent \
+		test/test_importlib/namespace_pkgs/project2/parent/child \
+		test/test_importlib/namespace_pkgs/project3 \
+		test/test_importlib/namespace_pkgs/project3/parent \
+		test/test_importlib/namespace_pkgs/project3/parent/child \
+		test/test_importlib/source \
+		test/test_importlib/zipdata01 \
+		test/test_importlib/zipdata02 \
+		test/ziptestdata \
+		asyncio \
+		test/test_asyncio \
+		collections concurrent concurrent/futures encodings \
+		email email/mime test/test_email test/test_email/data \
+		ensurepip ensurepip/_bundled \
+		html json test/test_json http dbm xmlrpc \
+		sqlite3 sqlite3/test \
+		logging csv wsgiref urllib \
+		lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \
+		lib2to3/tests/data lib2to3/tests/data/fixers \
+		lib2to3/tests/data/fixers/myfixes \
+		ctypes ctypes/test ctypes/macholib \
+		idlelib idlelib/Icons idlelib/idle_test \
+		distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \
+		test/test_tools test/test_warnings test/test_warnings/data \
+		turtledemo \
+		multiprocessing multiprocessing/dummy \
+		unittest unittest/test unittest/test/testmock \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		curses pydoc_data
+libinstall:	build_all $(srcdir)/Modules/xxmodule.c
+	@for i in $(SCRIPTDIR) $(LIBDEST); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@for d in $(LIBSUBDIRS); \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		b=$(LIBDEST)/$$d; \
+		if test ! -d $(DESTDIR)$$b; then \
+			echo "Creating directory $$b"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
+		else	true; \
+		fi; \
+	done
+	@for i in $(srcdir)/Lib/*.py; \
+	do \
+		if test -x $$i; then \
+			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
+		else \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_DATA) $$i $(LIBDEST); \
+		fi; \
+	done
+	@for d in $(LIBSUBDIRS); \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
+		b=$(LIBDEST)/$$d; \
+		for i in $$a/*; \
+		do \
+			case $$i in \
+			*CVS) ;; \
+			*.py[co]) ;; \
+			*.orig) ;; \
+			*~) ;; \
+			*) \
+				if test -d $$i; then continue; fi; \
+				if test -x $$i; then \
+				    echo $(INSTALL_SCRIPT) $$i $$b; \
+				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
+				else \
+				    echo $(INSTALL_DATA) $$i $$b; \
+				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
+				fi;; \
+			esac; \
+		done; \
+	done
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
+	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+	if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
+		$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
+			$(DESTDIR)$(LIBDEST)/distutils/tests ; \
+	fi
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-j0 -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+		-j0 -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
+		-j0 -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-j0 -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+		-j0 -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
+		-j0 -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
+
+# bpo-21536: Misc/python-config.sh is generated in the build directory
+# from $(srcdir)Misc/python-config.sh.in.
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+	@ # Substitution happens here, as the completely-expanded BINDIR
+	@ # is not available in configure
+	sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
+	@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+	LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+	@ # On Darwin, always use the python version of the script, the shell
+	@ # version doesn't use the compiler customizations that are provided
+	@ # in python (_osx_support.py).
+	@if test `uname -s` = Darwin; then \
+		cp python-config.py python-config; \
+	fi
+
+
+# Install the include files
+INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
+inclinstall:
+	@for i in $(INCLDIRSTOMAKE); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \
+	else	true; \
+	fi
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \
+	else	true; \
+	fi
+	@for i in $(srcdir)/Include/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
+	done
+	@for i in $(srcdir)/Include/cpython/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \
+	done
+	@for i in $(srcdir)/Include/internal/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \
+	done
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+# Install the library and miscellaneous stuff needed for extending/embedding
+# This goes into $(exec_prefix)
+LIBPL=		$(prefix)/lib/python3.8/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
+
+# pkgconfig directory
+LIBPC=		$(LIBDIR)/pkgconfig
+
+libainstall:	build_all python-config
+	@for i in $(LIBDIR) $(LIBPL) $(LIBPC); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test -d $(LIBRARY); then :; else \
+		if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+			if test "$(SHLIB_SUFFIX)" = .dll; then \
+				$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
+			else \
+				$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
+			fi; \
+		else \
+			echo Skip install of $(LIBRARY) - use make frameworkinstall; \
+		fi; \
+	fi
+	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
+	$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o
+	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
+	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup
+	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
+	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc
+	$(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc
+	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
+	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
+	@if [ -s Modules/python.exp -a \
+		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
+		echo; echo "Installing support files for building shared extension modules on AIX:"; \
+		$(INSTALL_DATA) Modules/python.exp		\
+				$(DESTDIR)$(LIBPL)/python.exp;		\
+		echo; echo "$(LIBPL)/python.exp";		\
+		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
+				$(DESTDIR)$(LIBPL)/makexp_aix;		\
+		echo "$(LIBPL)/makexp_aix";			\
+		$(INSTALL_SCRIPT) Modules/ld_so_aix	\
+				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
+		echo "$(LIBPL)/ld_so_aix";			\
+		echo; echo "See Misc/AIX-NOTES for details.";	\
+	else true; \
+	fi
+
+# Install the dynamically loadable modules
+# This goes into $(exec_prefix)
+sharedinstall: sharedmods
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
+	   	--prefix=$(prefix) \
+		--install-scripts=$(BINDIR) \
+		--install-platlib=$(DESTSHARED) \
+		--root=$(DESTDIR)/
+	-rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py
+	-rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
+
+# Here are a couple of targets for MacOSX again, to install a full
+# framework-based Python. frameworkinstall installs everything, the
+# subtargets install specific parts. Much of the actual work is offloaded to
+# the Makefile in Mac
+#
+#
+# This target is here for backward compatibility, previous versions of Python
+# hadn't integrated framework installation in the normal install process.
+frameworkinstall: install
+
+# On install, we re-make the framework
+# structure in the install location, /Library/Frameworks/ or the argument to
+# --enable-framework. If --enable-framework has been specified then we have
+# automatically set prefix to the location deep down in the framework, so we
+# only have to cater for the structural bits of the framework.
+
+frameworkinstallframework: frameworkinstallstructure install frameworkinstallmaclib
+
+frameworkinstallstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $(DESTDIR)$$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
+	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+
+# This installs Mac/Lib into the framework
+# Install a number of symlinks to keep software that expects a normal unix
+# install (which includes python-config) happy.
+frameworkinstallmaclib:
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
+
+# This installs the IDE, the Launcher and other apps into /Applications
+frameworkinstallapps:
+	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+
+# Build the bootstrap executable that will spawn the interpreter inside
+# an app bundle within the framework.  This allows the interpreter to
+# run OS X GUI APIs.
+frameworkpythonw:
+	cd Mac && $(MAKE) pythonw
+
+# This installs the python* and other bin symlinks in $prefix/bin or in
+# a bin directory relative to the framework root
+frameworkinstallunixtools:
+	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+
+frameworkaltinstallunixtools:
+	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+
+# This installs the Tools into the applications directory.
+# It is not part of a normal frameworkinstall
+frameworkinstallextras:
+	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
+
+# Build the toplevel Makefile
+Makefile.pre: $(srcdir)/Makefile.pre.in config.status
+	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status
+	$(MAKE) -f Makefile.pre Makefile
+
+# Run the configure script.
+config.status:	$(srcdir)/configure
+	$(SHELL) $(srcdir)/configure $(CONFIG_ARGS)
+
+.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
+
+# Some make's put the object file in the current directory
+.c.o:
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
+# with -O2 or higher and strict aliasing miscompiles the ratio() function
+# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
+# https://bugs.llvm.org//show_bug.cgi?id=31928
+Python/dtoa.o: Python/dtoa.c
+	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
+
+# Run reindent on the library
+reindent:
+	./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
+
+# Rerun configure with the same options as it was run last time,
+# provided the config.status script exists
+recheck:
+	$(SHELL) config.status --recheck
+	$(SHELL) config.status
+
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
+autoconf:
+	# Regenerate the configure script from configure.ac using autoconf
+	(cd $(srcdir); autoconf -Wall)
+	# Regenerate pyconfig.h.in from configure.ac using autoheader
+	(cd $(srcdir); autoheader -Wall)
+
+# Create a tags file for vi
+tags::
+	ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h
+	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
+	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L -
+	LC_ALL=C sort -o tags tags
+
+# Create a tags file for GNU Emacs
+TAGS::
+	cd $(srcdir); \
+	etags Include/*.h Include/cpython/*.h Include/internal/*.h; \
+	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
+	etags -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a
+
+# Sanitation targets -- clean leaves libraries, executables and tags
+# files, which clobber removes as well
+pycremoval:
+	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
+	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
+
+rmtestturds:
+	-rm -f *BAD *GOOD *SKIPPED
+	-rm -rf OUT
+	-rm -f *.TXT
+	-rm -f *.txt
+	-rm -f gb-18030-2000.xml
+
+docclean:
+	-rm -rf Doc/build
+	-rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils
+
+clean: pycremoval
+	find . -name '*.[oa]' -exec rm -f {} ';'
+	find . -name '*.s[ol]' -exec rm -f {} ';'
+	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+	find build -name '*.py' -exec rm -f {} ';' || true
+	find build -name '*.py[co]' -exec rm -f {} ';' || true
+	-rm -f pybuilddir.txt
+	-rm -f Lib/lib2to3/*Grammar*.pickle
+	-rm -f Programs/_testembed Programs/_freeze_importlib
+	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
+	-rm -f Include/pydtrace_probes.h
+	-rm -f profile-gen-stamp
+
+profile-removal:
+	find . -name '*.gc??' -exec rm -f {} ';'
+	find . -name '*.profclang?' -exec rm -f {} ';'
+	find . -name '*.dyn' -exec rm -f {} ';'
+	rm -f $(COVERAGE_INFO)
+	rm -rf $(COVERAGE_REPORT)
+	rm -f profile-run-stamp
+
+clobber: clean profile-removal
+	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+		tags TAGS \
+		config.cache config.log pyconfig.h Modules/config.c
+	-rm -rf build platform
+	-rm -rf $(PYTHONFRAMEWORKDIR)
+	-rm -f python-config.py python-config
+	-rm -f profile-gen-stamp profile-clean-stamp
+
+# Make things extra clean, before making a distribution:
+# remove all generated files, even Makefile[.pre]
+# Keep configure and Python-ast.[ch], it's possible they can't be generated
+distclean: clobber
+	for file in $(srcdir)/Lib/test/data/* ; do \
+	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \
+	done
+	-rm -f core Makefile Makefile.pre config.status Modules/Setup.local \
+		Modules/ld_so_aix Modules/python.exp Misc/python.pc \
+		Misc/python-embed.pc Misc/python-config.sh
+	-rm -f python*-gdb.py
+	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
+	# Expansion is performed here by shell (spawned by make) itself before
+	# arguments are passed to find. So LC_ALL=C must be set as a separate
+	# command.
+	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \
+				     -o -name '[@,#]*' -o -name '*.old' \
+				     -o -name '*.orig' -o -name '*.rej' \
+				     -o -name '*.bak' ')' \
+				     -exec rm -f {} ';'
+
+# Check that all symbols exported by libpython start with "Py" or "_Py"
+smelly: build_all
+	$(RUNSHARED) ./$(BUILDPYTHON) Tools/scripts/smelly.py
+
+# Find files with funny names
+funny:
+	find $(SUBDIRS) $(SUBDIRSTOO) \
+		-type d \
+		-o -name '*.[chs]' \
+		-o -name '*.py' \
+		-o -name '*.pyw' \
+		-o -name '*.dat' \
+		-o -name '*.el' \
+		-o -name '*.fd' \
+		-o -name '*.in' \
+		-o -name '*.gif' \
+		-o -name '*.txt' \
+		-o -name '*.xml' \
+		-o -name '*.xbm' \
+		-o -name '*.xpm' \
+		-o -name '*.uue' \
+		-o -name '*.decTest' \
+		-o -name '*.tmCommand' \
+		-o -name '*.tmSnippet' \
+		-o -name 'Setup' \
+		-o -name 'Setup.*' \
+		-o -name README \
+		-o -name NEWS \
+		-o -name HISTORY \
+		-o -name Makefile \
+		-o -name ChangeLog \
+		-o -name .hgignore \
+		-o -name MANIFEST \
+		-o -print
+
+# Perform some verification checks on any modified files.
+patchcheck: build_all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
+
+# Dependencies
+
+Python/thread.o:  $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/condvar.h
+
+# Declare targets that aren't real files
+.PHONY: all build_all sharedmods check-clean-src oldsharedmods test quicktest
+.PHONY: install altinstall oldsharedinstall bininstall altbininstall
+.PHONY: maninstall libinstall inclinstall libainstall sharedinstall
+.PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
+.PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
+.PHONY: frameworkaltinstallunixtools recheck clean clobber distclean
+.PHONY: smelly funny patchcheck touch altmaninstall commoninstall
+.PHONY: gdbhooks
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+# Local Variables:
+# mode: makefile
+# End:
+
+# Rules appended by makesetup
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/posixmodule.c -o Modules/posixmodule.o
+Modules/posix$(EXT_SUFFIX):  Modules/posixmodule.o; $(BLDSHARED)  Modules/posixmodule.o   -o Modules/posix$(EXT_SUFFIX)
+Modules/errnomodule.o: $(srcdir)/Modules/errnomodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/errnomodule.c -o Modules/errnomodule.o
+Modules/errno$(EXT_SUFFIX):  Modules/errnomodule.o; $(BLDSHARED)  Modules/errnomodule.o   -o Modules/errno$(EXT_SUFFIX)
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/pwdmodule.c -o Modules/pwdmodule.o
+Modules/pwd$(EXT_SUFFIX):  Modules/pwdmodule.o; $(BLDSHARED)  Modules/pwdmodule.o   -o Modules/pwd$(EXT_SUFFIX)
+Modules/_sre.o: $(srcdir)/Modules/_sre.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_sre.c -o Modules/_sre.o
+Modules/_sre$(EXT_SUFFIX):  Modules/_sre.o; $(BLDSHARED)  Modules/_sre.o   -o Modules/_sre$(EXT_SUFFIX)
+Modules/_codecsmodule.o: $(srcdir)/Modules/_codecsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_codecsmodule.c -o Modules/_codecsmodule.o
+Modules/_codecs$(EXT_SUFFIX):  Modules/_codecsmodule.o; $(BLDSHARED)  Modules/_codecsmodule.o   -o Modules/_codecs$(EXT_SUFFIX)
+Modules/_weakref.o: $(srcdir)/Modules/_weakref.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_weakref.c -o Modules/_weakref.o
+Modules/_weakref$(EXT_SUFFIX):  Modules/_weakref.o; $(BLDSHARED)  Modules/_weakref.o   -o Modules/_weakref$(EXT_SUFFIX)
+Modules/_functoolsmodule.o: $(srcdir)/Modules/_functoolsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/_functoolsmodule.c -o Modules/_functoolsmodule.o
+Modules/_functools$(EXT_SUFFIX):  Modules/_functoolsmodule.o; $(BLDSHARED)  Modules/_functoolsmodule.o   -o Modules/_functools$(EXT_SUFFIX)
+Modules/_operator.o: $(srcdir)/Modules/_operator.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_operator.c -o Modules/_operator.o
+Modules/_operator$(EXT_SUFFIX):  Modules/_operator.o; $(BLDSHARED)  Modules/_operator.o   -o Modules/_operator$(EXT_SUFFIX)
+Modules/_collectionsmodule.o: $(srcdir)/Modules/_collectionsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_collectionsmodule.c -o Modules/_collectionsmodule.o
+Modules/_collections$(EXT_SUFFIX):  Modules/_collectionsmodule.o; $(BLDSHARED)  Modules/_collectionsmodule.o   -o Modules/_collections$(EXT_SUFFIX)
+Modules/_abc.o: $(srcdir)/Modules/_abc.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_abc.c -o Modules/_abc.o
+Modules/_abc$(EXT_SUFFIX):  Modules/_abc.o; $(BLDSHARED)  Modules/_abc.o   -o Modules/_abc$(EXT_SUFFIX)
+Modules/itertoolsmodule.o: $(srcdir)/Modules/itertoolsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/itertoolsmodule.c -o Modules/itertoolsmodule.o
+Modules/itertools$(EXT_SUFFIX):  Modules/itertoolsmodule.o; $(BLDSHARED)  Modules/itertoolsmodule.o   -o Modules/itertools$(EXT_SUFFIX)
+Modules/atexitmodule.o: $(srcdir)/Modules/atexitmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/atexitmodule.c -o Modules/atexitmodule.o
+Modules/atexit$(EXT_SUFFIX):  Modules/atexitmodule.o; $(BLDSHARED)  Modules/atexitmodule.o   -o Modules/atexit$(EXT_SUFFIX)
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/signalmodule.c -o Modules/signalmodule.o
+Modules/_signal$(EXT_SUFFIX):  Modules/signalmodule.o; $(BLDSHARED)  Modules/signalmodule.o   -o Modules/_signal$(EXT_SUFFIX)
+Modules/_stat.o: $(srcdir)/Modules/_stat.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_stat.c -o Modules/_stat.o
+Modules/_stat$(EXT_SUFFIX):  Modules/_stat.o; $(BLDSHARED)  Modules/_stat.o   -o Modules/_stat$(EXT_SUFFIX)
+Modules/timemodule.o: $(srcdir)/Modules/timemodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/timemodule.c -o Modules/timemodule.o
+Modules/time$(EXT_SUFFIX):  Modules/timemodule.o; $(BLDSHARED)  Modules/timemodule.o   -o Modules/time$(EXT_SUFFIX)
+Modules/_threadmodule.o: $(srcdir)/Modules/_threadmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/_threadmodule.c -o Modules/_threadmodule.o
+Modules/_thread$(EXT_SUFFIX):  Modules/_threadmodule.o; $(BLDSHARED)  Modules/_threadmodule.o   -o Modules/_thread$(EXT_SUFFIX)
+Modules/_localemodule.o: $(srcdir)/Modules/_localemodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -c $(srcdir)/Modules/_localemodule.c -o Modules/_localemodule.o
+Modules/_locale$(EXT_SUFFIX):  Modules/_localemodule.o; $(BLDSHARED)  Modules/_localemodule.o   -o Modules/_locale$(EXT_SUFFIX)
+Modules/_iomodule.o: $(srcdir)/Modules/_io/_iomodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/_iomodule.c -o Modules/_iomodule.o
+Modules/iobase.o: $(srcdir)/Modules/_io/iobase.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/iobase.c -o Modules/iobase.o
+Modules/fileio.o: $(srcdir)/Modules/_io/fileio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/fileio.c -o Modules/fileio.o
+Modules/bytesio.o: $(srcdir)/Modules/_io/bytesio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/bytesio.c -o Modules/bytesio.o
+Modules/bufferedio.o: $(srcdir)/Modules/_io/bufferedio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/bufferedio.c -o Modules/bufferedio.o
+Modules/textio.o: $(srcdir)/Modules/_io/textio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/textio.c -o Modules/textio.o
+Modules/stringio.o: $(srcdir)/Modules/_io/stringio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/stringio.c -o Modules/stringio.o
+Modules/_io$(EXT_SUFFIX):  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o; $(BLDSHARED)  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o   -o Modules/_io$(EXT_SUFFIX)
+Modules/faulthandler.o: $(srcdir)/Modules/faulthandler.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/faulthandler.c -o Modules/faulthandler.o
+Modules/faulthandler$(EXT_SUFFIX):  Modules/faulthandler.o; $(BLDSHARED)  Modules/faulthandler.o   -o Modules/faulthandler$(EXT_SUFFIX)
+Modules/_tracemalloc.o: $(srcdir)/Modules/_tracemalloc.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/_tracemalloc.c -o Modules/_tracemalloc.o
+Modules/hashtable.o: $(srcdir)/Modules/hashtable.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/hashtable.c -o Modules/hashtable.o
+Modules/_tracemalloc$(EXT_SUFFIX):  Modules/_tracemalloc.o Modules/hashtable.o; $(BLDSHARED)  Modules/_tracemalloc.o Modules/hashtable.o   -o Modules/_tracemalloc$(EXT_SUFFIX)
+Modules/symtablemodule.o: $(srcdir)/Modules/symtablemodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/symtablemodule.c -o Modules/symtablemodule.o
+Modules/_symtable$(EXT_SUFFIX):  Modules/symtablemodule.o; $(BLDSHARED)  Modules/symtablemodule.o   -o Modules/_symtable$(EXT_SUFFIX)
+Modules/xxsubtype.o: $(srcdir)/Modules/xxsubtype.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS)  -c $(srcdir)/Modules/xxsubtype.c -o Modules/xxsubtype.o
+Modules/xxsubtype$(EXT_SUFFIX):  Modules/xxsubtype.o; $(BLDSHARED)  Modules/xxsubtype.o   -o Modules/xxsubtype$(EXT_SUFFIX)
diff --git a/Misc/NEWS b/Misc/NEWS
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TWlzYy9ORVdT
--- /dev/null
+++ b/Misc/NEWS
@@ -0,0 +1,22511 @@
++++++++++++
+Python News
++++++++++++
+
+What's New in Python 3.8.2 final?
+=================================
+
+*Release date: 2020-02-24*
+
+Core and Builtins
+-----------------
+
+- bpo-39382: Fix a use-after-free in the single inheritance path of
+  ``issubclass()``, when the ``__bases__`` of an object has a single
+  reference, and so does its first item. Patch by Yonatan Goldschmidt.
+
+- bpo-39427: Document all possibilities for the ``-X`` options in the
+  command line help section. Patch by Pablo Galindo.
+
+Library
+-------
+
+- bpo-39649: Remove obsolete check for `__args__` in
+  bdb.Bdb.format_stack_entry.
+
+- bpo-39681: Fix a regression where the C pickle module wouldn't allow
+  unpickling from a file-like object that doesn't expose a readinto()
+  method.
+
+- bpo-39546: Fix a regression in :class:`~argparse.ArgumentParser` where
+  ``allow_abbrev=False`` was ignored for long options that used a prefix
+  character other than "-".
+
+- bpo-39432: Implement PEP-489 algorithm for non-ascii "PyInit\_..." symbol
+  names in distutils to make it export the correct init symbol also on
+  Windows.
+
+Documentation
+-------------
+
+- bpo-17422: The language reference now specifies restrictions on class
+  namespaces. Adapted from a patch by Ethan Furman.
+
+- bpo-39572: Updated documentation of ``total`` flag of TypeDict.
+
+- bpo-39654: In pyclbr doc, update 'class' to 'module' where appropriate and
+  add readmodule comment. Patch by Hakan Çelik.
+
+IDLE
+----
+
+- bpo-39663: Add tests for pyparse find_good_parse_start().
+
+
+What's New in Python 3.8.2 release candidate 2?
+===============================================
+
+*Release date: 2020-02-17*
+
+Security
+--------
+
+- bpo-39184: Add audit events to functions in `fcntl`, `msvcrt`, `os`,
+  `resource`, `shutil`, `signal` and `syslog`.
+
+Core and Builtins
+-----------------
+
+- bpo-39619: Enable use of :func:`os.chroot` on HP-UX systems.
+
+- bpo-39606: Fix regression caused by fix for bpo-39386, that prevented
+  calling ``aclose`` on an async generator that had already been closed or
+  exhausted.
+
+- bpo-39453: Fixed a possible crash in :meth:`list.__contains__` when a list
+  is changed during comparing items. Patch by Dong-hee Na.
+
+- bpo-39219: Syntax errors raised in the tokenizer now always set correct
+  "text" and "offset" attributes.
+
+Library
+-------
+
+- bpo-27657: The original fix for bpo-27657, "Fix urlparse() with numeric
+  paths" (GH-16839) included in 3.8.1, inadvertently introduced a behavior
+  change that broke several third-party packages relying on the original
+  undefined parsing behavior. The change is reverted in 3.8.2, restoring the
+  behavior of 3.8.0 and earlier releases.
+
+- bpo-39474: Fixed starting position of AST for expressions like ``(a)(b)``,
+  ``(a)[b]`` and ``(a).b``.
+
+- bpo-21016: The :mod:`pydoc` and :mod:`trace` modules now use the
+  :mod:`sysconfig` module to get the path to the Python standard library, to
+  support uncommon installation path like ``/usr/lib64/python3.9/`` on
+  Fedora. Patch by Jan Matějek.
+
+- bpo-39595: Improved performance of zipfile.Path for files with a large
+  number of entries. Also improved performance and fixed minor issue as
+  published with `importlib_metadata 1.5
+  <https://importlib-metadata.readthedocs.io/en/latest/changelog%20(links).html#v1-5-0>`_.
+
+IDLE
+----
+
+- bpo-39600: In the font configuration window, remove duplicated font names.
+
+
+What's New in Python 3.8.2 release candidate 1?
+===============================================
+
+*Release date: 2020-02-10*
+
+Security
+--------
+
+- bpo-39401: Avoid unsafe load of ``api-ms-win-core-path-l1-1-0.dll`` at
+  startup on Windows 7.
+
+- bpo-39184: Add audit events to command execution functions in os and pty
+  modules.
+
+Core and Builtins
+-----------------
+
+- bpo-39579: Change the ending column offset of `Attribute` nodes
+  constructed in `ast_for_dotted_name` to point at the end of the current
+  node and not at the end of the last `NAME` node.
+
+- bpo-39510: Fix segfault in ``readinto()`` method on closed BufferedReader.
+
+- bpo-39492: Fix a reference cycle in the C Pickler that was preventing the
+  garbage collection of deleted, pickled objects.
+
+- bpo-39421: Fix possible crashes when operating with the functions in the
+  :mod:`heapq` module and custom comparison operators.
+
+- bpo-39386: Prevent double awaiting of async iterator.
+
+- bpo-39235: Fix AST end location for lone generator expression in function
+  call, e.g. f(i for i in a).
+
+- bpo-39209: Correctly handle multi-line tokens in interactive mode. Patch
+  by Pablo Galindo.
+
+- bpo-39216: Fix constant folding optimization for positional only arguments
+  - by Anthony Sottile.
+
+- bpo-39215: Fix ``SystemError`` when nested function has annotation on
+  positional-only argument - by Anthony Sottile.
+
+- bpo-38588: Fix possible crashes in dict and list when calling
+  :c:func:`PyObject_RichCompareBool`.
+
+- bpo-38610: Fix possible crashes in several list methods by holding strong
+  references to list elements when calling
+  :c:func:`PyObject_RichCompareBool`.
+
+Library
+-------
+
+- bpo-39590: Collections.deque now holds strong references during
+  deque.__contains__ and deque.count, fixing crashes.
+
+- bpo-38149: :func:`sys.audit` is now called only once per call of
+  :func:`glob.glob` and :func:`glob.iglob`.
+
+- bpo-39450: Striped whitespace from docstring before returning it from
+  :func:`unittest.case.shortDescription`.
+
+- bpo-39493: Mark ``typing.IO.closed`` as a property
+
+- bpo-39485: Fix a bug in :func:`unittest.mock.create_autospec` that would
+  complain about the wrong number of arguments for custom descriptors
+  defined in an extension module returning functions.
+
+- bpo-39082: Allow AsyncMock to correctly patch static/class methods
+
+- bpo-39430: Fixed race condition in lazy imports in :mod:`tarfile`.
+
+- bpo-39390: Fixed a regression with the `ignore` callback of
+  :func:`shutil.copytree`. The argument types are now str and List[str]
+  again.
+
+- bpo-39389: Write accurate compression level metadata in :mod:`gzip`
+  archives, rather than always signaling maximum compression.
+
+- bpo-39274: ``bool(fraction.Fraction)`` now returns a boolean even if
+  (numerator != 0) does not return a boolean (ex: numpy number).
+
+- bpo-39297: Improved performance of importlib.metadata distribution
+  discovery and resilients to inaccessible sys.path entries
+  (importlib_metadata v1.4.0).
+
+- bpo-39242: Updated the Gmane domain from news.gmane.org to news.gmane.io
+  which is used for examples of :class:`~nntplib.NNTP` news reader server
+  and nntplib tests.
+
+- bpo-38907: In http.server script, restore binding to IPv4 on Windows.
+
+- bpo-39152: Fix ttk.Scale.configure([name]) to return configuration tuple
+  for name or all options.  Giovanni Lombardo contributed part of the patch.
+
+- bpo-39198: If an exception were to be thrown in `Logger.isEnabledFor`
+  (say, by asyncio timeouts or stopit) , the `logging` global lock may not
+  be released appropriately, resulting in deadlock.  This change wraps that
+  block of code with `try...finally` to ensure the lock is released.
+
+- bpo-39191: Perform a check for running loop before starting a new task in
+  ``loop.run_until_complete()`` to fail fast; it prevents the side effect of
+  new task spawning before exception raising.
+
+- bpo-38871: Correctly parenthesize filter-based statements that contain
+  lambda expressions in mod:`lib2to3`. Patch by Dong-hee Na.
+
+- bpo-39142: A change was made to logging.config.dictConfig to avoid
+  converting instances of named tuples to ConvertingTuple. It's assumed that
+  named tuples are too specialised to be treated like ordinary tuples; if a
+  user of named tuples requires ConvertingTuple functionality, they will
+  have to implement that themselves in their named tuple class.
+
+- bpo-39129: Fix import path for ``asyncio.TimeoutError``
+
+- bpo-39057: :func:`urllib.request.proxy_bypass_environment` now ignores
+  leading dots and no longer ignores a trailing newline.
+
+- bpo-39056: Fixed handling invalid warning category in the -W option.  No
+  longer import the re module if it is not needed.
+
+- bpo-39055: :func:`base64.b64decode` with ``validate=True`` raises now a
+  binascii.Error if the input ends with a single ``\n``.
+
+- bpo-39033: Fix :exc:`NameError` in :mod:`zipimport`. Patch by Karthikeyan
+  Singaravelan.
+
+- bpo-38878: Fixed __subclasshook__ of :class:`os.PathLike` to return a
+  correct result upon inheritence. Patch by Bar Harel.
+
+- bpo-35182: Fixed :func:`Popen.communicate` subsequent call crash when the
+  child process has already closed any piped standard stream, but still
+  continues to be running. Patch by Andriy Maletsky.
+
+- bpo-38473: Use signature from inner mock for autospecced methods attached
+  with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan.
+
+- bpo-38293: Add :func:`copy.copy` and :func:`copy.deepcopy` support to
+  :func:`property` objects.
+
+Documentation
+-------------
+
+- bpo-39153: Clarify refcounting semantics for the following functions: -
+  PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem -
+  PyDict_SetItemString
+
+- bpo-39392: Explain that when filling with turtle, overlap regions may be
+  left unfilled.
+
+- bpo-39381: Mention in docs that :func:`asyncio.get_event_loop` implicitly
+  creates new event loop only if called from the main thread.
+
+- bpo-38918: Add an entry for ``__module__`` in the "function" & "method"
+  sections of the `inspect docs types and members table
+  <https://docs.python.org/3/library/inspect.html#types-and-members>`_
+
+- bpo-3530: In the :mod:`ast` module documentation, fix a misleading
+  ``NodeTransformer`` example and add advice on when to use the
+  ``fix_missing_locations`` function.
+
+Tests
+-----
+
+- bpo-39502: Skip test_zipfile.test_add_file_after_2107() if
+  :func:`time.localtime` fails with :exc:`OverflowError`. It is the case on
+  AIX 6.1 for example.
+
+- bpo-38546: Fix test_ressources_gced_in_workers() of
+  test_concurrent_futures: explicitly stop the manager to prevent leaking a
+  child process running in the background after the test completes.
+
+Build
+-----
+
+- bpo-39144: The ctags and etags build targets both include Modules/_ctypes
+  and Python standard library source files.
+
+Windows
+-------
+
+- bpo-39439: Honor the Python path when a virtualenv is active on Windows.
+
+- bpo-39393: Improve the error message when attempting to load a DLL with
+  unresolved dependencies.
+
+- bpo-38883: :meth:`~pathlib.Path.home()` and
+  :meth:`~pathlib.Path.expanduser()` on Windows now prefer
+  :envvar:`USERPROFILE` and no longer use :envvar:`HOME`, which is not
+  normally set for regular user accounts. This makes them again behave like
+  :func:`os.path.expanduser`, which was changed to ignore :envvar:`HOME` in
+  3.8, see :issue:`36264`.
+
+- bpo-39185: The build.bat script has additional options for very-quiet
+  output (-q) and very-verbose output (-vv)
+
+IDLE
+----
+
+- bpo-30780: Add remaining configdialog tests for buttons and highlights and
+  keys tabs.
+
+- bpo-39388: IDLE Settings Cancel button now cancels pending changes
+
+- bpo-39050: Make IDLE Settings dialog Help button work again.
+
+- bpo-34118: Tag memoryview, range, and tuple as classes, the same as list,
+  etcetera, in the library manual built-in functions list.
+
+- bpo-38792: Close an IDLE shell calltip if a :exc:`KeyboardInterrupt` or
+  shell restart occurs.  Patch by Zackery Spytz.
+
+- bpo-32989: Add tests for editor newline_and_indent_event method. Remove
+  dead code from pyparse find_good_parse_start method.
+
+
+What's New in Python 3.8.1 final?
+=================================
+
+*Release date: 2019-12-18*
+
+Core and Builtins
+-----------------
+
+- bpo-39080: Fix the value of *end_col_offset* for Starred Expression AST
+  nodes when they are among the elements in the *args* attribute of Call AST
+  nodes.
+
+- bpo-39031: When parsing an "elif" node, lineno and col_offset of the node
+  now point to the "elif" keyword and not to its condition, making it
+  consistent with the "if" node. Patch by Lysandros Nikolaou.
+
+- bpo-39008: :c:func:`PySys_Audit` now requires ``Py_ssize_t`` to be used
+  for size arguments in the format string, regardless of whether
+  ``PY_SSIZE_T_CLEAN`` was defined at include time.
+
+Library
+-------
+
+- bpo-39022: Update importlib.metadata to include improvements from
+  importlib_metadata 1.3 including better serialization of EntryPoints and
+  improved documentation for custom finders.
+
+- bpo-38811: Fix an unhandled exception in :mod:`pathlib` when
+  :meth:`os.link` is missing. Patch by Toke Høiland-Jørgensen.
+
+- bpo-36406: Handle namespace packages in :mod:`doctest`. Patch by
+  Karthikeyan Singaravelan.
+
+Tests
+-----
+
+- bpo-38546: Multiprocessing and concurrent.futures tests now stop the
+  resource tracker process when tests complete.
+
+Windows
+-------
+
+- bpo-39007: Add auditing events to functions in :mod:`winreg`.
+
+macOS
+-----
+
+- bpo-38295: Prevent failure of test_relative_path in test_py_compile on
+  macOS Catalina.
+
+IDLE
+----
+
+- bpo-38944: Escape key now closes IDLE completion windows.  Patch by Johnny
+  Najera.
+
+- bpo-38943: Fix IDLE autocomplete windows not always appearing on some
+  systems. Patch by Johnny Najera.
+
+
+What's New in Python 3.8.1 release candidate 1?
+===============================================
+
+*Release date: 2019-12-09*
+
+Security
+--------
+
+- bpo-38945: Newline characters have been escaped when performing uu
+  encoding to prevent them from overflowing into to content section of the
+  encoded file. This prevents malicious or accidental modification of data
+  during the decoding process.
+
+- bpo-37228: Due to significant security concerns, the *reuse_address*
+  parameter of :meth:`asyncio.loop.create_datagram_endpoint` is no longer
+  supported. This is because of the behavior of ``SO_REUSEADDR`` in UDP. For
+  more details, see the documentation for
+  ``loop.create_datagram_endpoint()``. (Contributed by Kyle Stanley, Antoine
+  Pitrou, and Yury Selivanov in :issue:`37228`.)
+
+- bpo-38722: :mod:`runpy` now uses :meth:`io.open_code` to open code files.
+  Patch by Jason Killen.
+
+- bpo-38804: Fixes a ReDoS vulnerability in :mod:`http.cookiejar`. Patch by
+  Ben Caller.
+
+- bpo-38622: Add additional audit events for the :mod:`ctypes` module.
+
+- bpo-38418: Fixes audit event for :func:`os.system` to be named
+  ``os.system``.
+
+Core and Builtins
+-----------------
+
+- bpo-38673: In REPL mode, don't switch to PS2 if the line starts with
+  comment or whitespace. Based on work by Batuhan Taşkaya.
+
+- bpo-38922: Calling ``replace`` on a code object now raises the
+  ``code.__new__`` audit event.
+
+- bpo-38920: Add audit hooks for when :func:`sys.excepthook` and
+  :func:`sys.unraisablehook` are invoked
+
+- bpo-38892: Improve documentation for audit events table and functions.
+
+- bpo-38707: ``MainThread.native_id`` is now correctly reset in child
+  processes spawned using :class:`multiprocessing.Process`, instead of
+  retaining the parent's value.
+
+- bpo-38640: Fixed a bug in the compiler that was causing to raise in the
+  presence of break statements and continue statements inside always false
+  while loops. Patch by Pablo Galindo.
+
+- bpo-38535: Fixed line numbers and column offsets for AST nodes for calls
+  without arguments in decorators.
+
+- bpo-38525: Fix a segmentation fault when using reverse iterators of empty
+  ``dict`` objects. Patch by Dong-hee Na and Inada Naoki.
+
+- bpo-35409: Ignore GeneratorExit exceptions when throwing an exception into
+  the aclose coroutine of an asynchronous generator.
+
+Library
+-------
+
+- bpo-39006: Fix asyncio when the ssl module is missing: only check for
+  ssl.SSLSocket instance if the ssl module is available.
+
+- bpo-38708: Fix a potential IndexError in email parser when parsing an
+  empty msg-id.
+
+- bpo-38698: Add a new ``InvalidMessageID`` token to email parser to
+  represent invalid Message-ID headers.  Also, add defects when there is
+  remaining value after parsing the header.
+
+- bpo-38979: Return class from ``ContextVar.__class_getitem__`` to simplify
+  subclassing.
+
+- bpo-38986: Make repr of C accelerated TaskWakeupMethWrapper the same as of
+  pure Python version.
+
+- bpo-38529: Drop too noisy asyncio warning about deletion of a stream
+  without explicit ``.close()`` call.
+
+- bpo-38634: The :mod:`readline` module now detects if Python is linked to
+  libedit at runtime on all platforms.  Previously, the check was only done
+  on macOS.
+
+- bpo-33684: Fix ``json.tool`` failed to read a JSON file with non-ASCII
+  characters when locale encoding is not UTF-8.
+
+- bpo-38698: Prevent UnboundLocalError to pop up in parse_message_id
+
+  parse_message_id() was improperly using a token defined inside an
+  exception handler, which was raising `UnboundLocalError` on parsing an
+  invalid value. Patch by Claudiu Popa.
+
+- bpo-26730: Fix ``SpooledTemporaryFile.rollover()`` might corrupt the file
+  when it is in text mode. Patch by Serhiy Storchaka.
+
+- bpo-38668: Calling func:`shutil.copytree` to copy a directory tree from
+  one directory to another subdirectory resulted in an endless loop and a
+  RecursionError. A fix was added to consume an iterator and create the list
+  of the entries to be copied, avoiding the recursion for newly created
+  directories. Patch by Bruno P. Kinoshita.
+
+- bpo-37838: :meth:`typing.get_type_hints` properly handles functions
+  decorated with :meth:`functools.wraps`.
+
+- bpo-38859: AsyncMock now returns StopAsyncIteration on the exaustion of a
+  side_effects iterable. Since PEP-479 its Impossible to raise a
+  StopIteration exception from a coroutine.
+
+- bpo-38857: AsyncMock fix for return values that are awaitable types.  This
+  also covers side_effect iterable values that happend to be awaitable, and
+  wraps callables that return an awaitable type. Before these awaitables
+  were being awaited instead of being returned as is.
+
+- bpo-38821: Fix unhandled exceptions in :mod:`argparse` when
+  internationalizing error messages for arguments with ``nargs`` set to
+  special (non-integer) values. Patch by Federico Bond.
+
+- bpo-38820: Make Python compatible with OpenSSL 3.0.0.
+  :func:`ssl.SSLSocket.getpeercert` no longer returns IPv6 addresses with a
+  trailing new line.
+
+- bpo-38807: Update :exc:`TypeError` messages for :meth:`os.path.join` to
+  include :class:`os.PathLike` objects as acceptable input types.
+
+- bpo-38785: Prevent asyncio from crashing if parent ``__init__`` is not
+  called from a constructor of object derived from ``asyncio.Future``.
+
+- bpo-38723: :mod:`pdb` now uses :meth:`io.open_code` to trigger auditing
+  events.
+
+- bpo-27805: Allow opening pipes and other non-seekable files in append mode
+  with :func:`open`.
+
+- bpo-38686: Added support for multiple ``qop`` values in
+  :class:`urllib.request.AbstractDigestAuthHandler`.
+
+- bpo-38334: Fixed seeking backward on an encrypted
+  :class:`zipfile.ZipExtFile`.
+
+- bpo-34679: asynci.ProactorEventLoop.close() now only calls
+  signal.set_wakeup_fd() in the main thread.
+
+- bpo-31202: The case the result of :func:`pathlib.WindowsPath.glob` matches
+  now the case of the pattern for literal parts.
+
+- bpo-38521: Fixed erroneous equality comparison in statistics.NormalDist().
+
+- bpo-38478: Fixed a bug in :meth:`inspect.signature.bind` that was causing
+  it to fail when handling a keyword argument with same name as
+  positional-only parameter. Patch by Pablo Galindo.
+
+- bpo-33604: Fixed `hmac.new` and `hmac.HMAC` to raise TypeError instead of
+  ValueError when the digestmod parameter, now required in 3.8, is omitted.
+  Also clarified the hmac module documentation and docstrings.
+
+- bpo-38422: Clarify docstrings of pathlib suffix(es)
+
+- bpo-36993: Improve error reporting for corrupt zip files with bad zip64
+  extra data. Patch by Daniel Hillier.
+
+- bpo-36820: Break cycle generated when saving an exception in socket.py,
+  codeop.py and dyld.py as they keep alive not only the exception but user
+  objects through the ``__traceback__`` attribute. Patch by Mario Corchero.
+
+- bpo-34776: Fix dataclasses to support forward references in type
+  annotations
+
+- bpo-33348: lib2to3 now recognizes expressions after ``*`` and `**` like in
+  ``f(*[] or [])``.
+
+- bpo-27657: Fix urllib.parse.urlparse() with numeric paths. A string like
+  "path:80" is no longer parsed as a path but as a scheme ("path") and a
+  path ("80").
+
+Documentation
+-------------
+
+- bpo-38816: Provides more details about the interaction between
+  :c:func:`fork` and CPython's runtime, focusing just on the C-API.  This
+  includes cautions about where :c:func:`fork` should and shouldn't be
+  called.
+
+- bpo-38351: Modernize :mod:`email` examples from %-formatting to f-strings.
+
+- bpo-38778: Document the fact that :exc:`RuntimeError` is raised if
+  :meth:`os.fork` is called in a subinterpreter.
+
+- bpo-38592: Add Brazilian Portuguese to the language switcher at Python
+  Documentation website.
+
+Tests
+-----
+
+- bpo-38547: Fix test_pty: if the process is the session leader, closing the
+  master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when
+  running the tests.
+
+- bpo-38992: Fix a test for :func:`math.fsum` that was failing due to
+  constant folding.
+
+- bpo-38965: Fix test_faulthandler on GCC 10. Use the "volatile" keyword in
+  ``faulthandler._stack_overflow()`` to prevent tail call optimization on
+  any compiler, rather than relying on compiler specific pragma.
+
+- bpo-38875: test_capi: trashcan tests now require the test "cpu" resource.
+
+- bpo-38841: Skip asyncio test_create_datagram_endpoint_existing_sock_unix
+  on platforms lacking a functional bind() for named unix domain sockets.
+
+- bpo-38669: Raise :exc:`TypeError` when passing target as a string with
+  :meth:`unittest.mock.patch.object`.
+
+- bpo-35998: Fix a race condition in test_asyncio.test_start_tls_server_1().
+  Previously, there was a race condition between the test main() function
+  which replaces the protocol and the test ServerProto protocol which sends
+  ANSWER once it gets HELLO. Now, only the test main() function is
+  responsible to send data, ServerProto no longer sends data.
+
+Build
+-----
+
+- bpo-37404: :mod:`asyncio` now raises :exc:`TyperError` when calling
+  incompatible methods with an :class:`ssl.SSLSocket` socket.  Patch by Ido
+  Michael.
+
+- bpo-38809: On Windows, build scripts will now recognize and use python.exe
+  from an active virtual env.
+
+- bpo-38684: Fix _hashlib build when Blake2 is disabled, but OpenSSL
+  supports it.
+
+- bpo-37415: Fix stdatomic.h header check for ICC compiler: the ICC
+  implementation lacks atomic_uintptr_t type which is needed by Python.
+
+Windows
+-------
+
+- bpo-33125: Add support for building and releasing Windows ARM64 packages.
+
+- bpo-38589: Fixes HTML Help shortcut when Windows is not installed to C
+  drive
+
+- bpo-38453: Ensure ntpath.realpath() correctly resolves relative paths.
+
+- bpo-38519: Restores the internal C headers that were missing from the
+  nuget.org and Microsoft Store packages.
+
+- bpo-38492: Remove ``pythonw.exe`` dependency on the Microsoft C++ runtime.
+
+macOS
+-----
+
+- bpo-37931: Fixed a crash on OSX dynamic builds that occurred when
+  re-initializing the posix module after a Py_Finalize if the environment
+  had changed since the previous `import posix`. Patch by Benoît Hudson.
+
+IDLE
+----
+
+- bpo-38862: 'Strip Trailing Whitespace' on the Format menu removes extra
+  newlines at the end of non-shell files.
+
+- bpo-26353: Stop adding newline when saving an IDLE shell window.
+
+- bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These
+  functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in
+  3.7.5 and 3.8.0.
+
+- bpo-4630: Add an option to toggle IDLE's cursor blink for shell, editor,
+  and output windows.  See Settings, General, Window Preferences, Cursor
+  Blink. Patch by Zachary Spytz.
+
+- bpo-38598: Do not try to compile IDLE shell or output windows
+
+C API
+-----
+
+- bpo-37633: Re-export some function compatibility wrappers for macros in
+  ``pythonrun.h``.
+
+- bpo-38540: Fixed possible leak in :c:func:`PyArg_Parse` and similar
+  functions for format units ``"es#"`` and ``"et#"`` when the macro
+  :c:macro:`PY_SSIZE_T_CLEAN` is not defined.
+
+- bpo-36389: The ``_PyObject_CheckConsistency()`` function is now also
+  available in release mode. For example, it can be used to debug a crash in
+  the ``visit_decref()`` function of the GC.
+
+
+What's New in Python 3.8.0 final?
+=================================
+
+*Release date: 2019-10-14*
+
+Core and Builtins
+-----------------
+
+- bpo-38469: Fixed a bug where the scope of named expressions was not being
+  resolved correctly in the presence of the *global* keyword. Patch by Pablo
+  Galindo.
+
+- bpo-38379: When cyclic garbage collection (gc) runs finalizers that
+  resurrect unreachable objects, the current gc run ends, without collecting
+  any cyclic trash.  However, the statistics reported by ``collect()`` and
+  ``get_stats()`` claimed that all cyclic trash found was collected, and
+  that the resurrected objects were collected.   Changed the stats to report
+  that none were collected.
+
+Library
+-------
+
+- bpo-38449: Revert GH-15522, which introduces a regression in
+  :meth:`mimetypes.guess_type` due to improper handling of filenames as
+  urls.
+
+- bpo-38431: Fix ``__repr__`` method for :class:`dataclasses.InitVar` to
+  support typing objects, patch by Samuel Colvin.
+
+- bpo-38109: Add missing :data:`stat.S_IFDOOR`, :data:`stat.S_IFPORT`,
+  :data:`stat.S_IFWHT`, :func:`stat.S_ISDOOR`, :func:`stat.S_ISPORT`, and
+  :func:`stat.S_ISWHT` values to the Python implementation of :mod:`stat`.
+
+- bpo-38405: Nested subclasses of :class:`typing.NamedTuple` are now
+  pickleable.
+
+- bpo-38332: Prevent :exc:`KeyError` thrown by :func:`_encoded_words.decode`
+  when given an encoded-word with invalid content-type encoding from
+  propagating all the way to :func:`email.message.get`.
+
+- bpo-38341: Add :exc:`smtplib.SMTPNotSupportedError` to the :mod:`smtplib`
+  exported names.
+
+- bpo-13153: OS native encoding is now used for converting between Python
+  strings and Tcl objects.  This allows to display, copy and paste to
+  clipboard emoji and other non-BMP characters.  Converting strings from Tcl
+  to Python and back now never fails (except MemoryError).
+
+Documentation
+-------------
+
+- bpo-38294: Add list of no-longer-escaped chars to re.escape documentation.
+
+Tests
+-----
+
+- bpo-37531: On timeout, regrtest no longer attempts to call
+  ``popen.communicate()`` again: it can hang until all child processes using
+  stdout and stderr pipes completes. Kill the worker process and ignores its
+  output. Change also the faulthandler timeout of the main process from 1
+  minute to 5 minutes, for Python slowest buildbots.
+
+Windows
+-------
+
+- bpo-38344: Fix error message in activate.bat.
+
+- bpo-38359: Ensures ``pyw.exe`` launcher reads correct registry key.
+
+- bpo-38355: Fixes ``ntpath.realpath`` failing on ``sys.executable``.
+
+IDLE
+----
+
+- bpo-36698: IDLE no longer fails when write non-encodable characters to
+  stderr.  It now escapes them with a backslash, as the regular Python
+  interpreter. Added the ``errors`` field to the standard streams.
+
+Tools/Demos
+-----------
+
+- bpo-38118: Update Valgrind suppression file to ignore a false alarm in
+  :c:func:`PyUnicode_Decode` when using GCC builtin strcmp().
+
+- bpo-38347: pathfix.py: Assume all files that end on '.py' are Python
+  scripts when working recursively.
+
+C API
+-----
+
+- bpo-38395: Fix a crash in :class:`weakref.proxy` objects due to incorrect
+  lifetime management when calling some associated methods that may delete
+  the last reference to object being referenced by the proxy. Patch by Pablo
+  Galindo.
+
+
+What's New in Python 3.8.0 release candidate 1?
+===============================================
+
+*Release date: 2019-10-01*
+
+Security
+--------
+
+- bpo-38243: Escape the server title of
+  :class:`xmlrpc.server.DocXMLRPCServer` when rendering the document page as
+  HTML. (Contributed by Dong-hee Na in :issue:`38243`.)
+
+- bpo-38174: Update vendorized expat library version to 2.2.8, which
+  resolves CVE-2019-15903.
+
+- bpo-37764: Fixes email._header_value_parser.get_unstructured going into an
+  infinite loop for a specific case in which the email header does not have
+  trailing whitespace, and the case in which it contains an invalid encoded
+  word. Patch by Ashwin Ramaswami.
+
+Core and Builtins
+-----------------
+
+- bpo-38006: Fix a bug due to the interaction of weakrefs and the cyclic
+  garbage collector. We must clear any weakrefs in garbage in order to
+  prevent their callbacks from executing and causing a crash.
+
+- bpo-38317: Fix warnings options priority: ``PyConfig.warnoptions`` has the
+  highest priority, as stated in the :pep:`587`.
+
+- bpo-36871: Improve error handling for the assert_has_calls and
+  assert_has_awaits methods of mocks. Fixed a bug where any errors
+  encountered while binding the expected calls to the mock's spec were
+  silently swallowed, leading to misleading error output.
+
+- bpo-38236: Python now dumps path configuration if it fails to import the
+  Python codecs of the filesystem and stdio encodings.
+
+- bpo-38013: Allow to call ``async_generator_athrow().throw(...)`` even for
+  non-started async generator helper. It fixes annoying warning at the end
+  of :func:`asyncio.run` call.
+
+- bpo-38124: Fix an off-by-one error in PyState_AddModule that could cause
+  out-of-bounds memory access.
+
+- bpo-38005: Fixed comparing and creating of InterpreterID and ChannelID.
+
+- bpo-37994: Fixed silencing arbitrary errors if an attribute lookup fails
+  in several sites. Only AttributeError should be silenced.
+
+- bpo-37990: Fix elapsed time in gc stats was not printed correctly.  This
+  bug was a regression in 3.8b4.
+
+- bpo-37966: The implementation of :func:`~unicodedata.is_normalized` has
+  been greatly sped up on strings that aren't normalized, by implementing
+  the full normalization-quick-check algorithm from the Unicode standard.
+
+- bpo-20490: Improve import error message for partially initialized module
+  on circular ``from`` imports - by Anthony Sottile.
+
+- bpo-37409: Ensure explicit relative imports from interactive sessions and
+  scripts (having no parent package) always raise ImportError, rather than
+  treating the current module as the package. Patch by Ben Lewis.
+
+- bpo-37619: When adding a wrapper descriptor from one class to a different
+  class (for example, setting ``__add__ = str.__add__`` on an ``int``
+  subclass), an exception is correctly raised when the operator is called.
+
+- bpo-30773: Prohibit parallel running of aclose() / asend() / athrow(). Fix
+  ag_running to reflect the actual running status of the AG.
+
+Library
+-------
+
+- bpo-38319: sendfile() used in socket and shutil modules was raising
+  OverflowError for files >= 2GiB on 32-bit architectures.  (patch by
+  Giampaolo Rodola)
+
+- bpo-38242: Revert the new asyncio Streams API
+
+- bpo-38019: Correctly handle pause/resume reading of closed asyncio unix
+  pipe.
+
+- bpo-38163: Child mocks will now detect their type as either synchronous or
+  asynchronous, asynchronous child mocks will be AsyncMocks and synchronous
+  child mocks will be either MagicMock or Mock (depending on their parent
+  type).
+
+- bpo-38161: Removes _AwaitEvent from AsyncMock.
+
+- bpo-38216: Allow the rare code that wants to send invalid http requests
+  from the `http.client` library a way to do so.  The fixes for bpo-30458
+  led to breakage for some projects that were relying on this ability to
+  test their own behavior in the face of bad requests.
+
+- bpo-38108: Any synchronous magic methods on an AsyncMock now return a
+  MagicMock. Any asynchronous magic methods on a MagicMock now return an
+  AsyncMock.
+
+- bpo-38248: asyncio: Fix inconsistent immediate Task cancellation
+
+- bpo-38237: The arguments for the builtin pow function are more
+  descriptive. They can now also be passed in as keywords.
+
+- bpo-38191: Constructors of :class:`~typing.NamedTuple` and
+  :class:`~typing.TypedDict` types now accept arbitrary keyword argument
+  names, including "cls", "self", "typename", "_typename", "fields" and
+  "_fields".  Passing positional arguments by keyword is deprecated.
+
+- bpo-38185: Fixed case-insensitive string comparison in
+  :class:`sqlite3.Row` indexing.
+
+- bpo-38136: Changes AsyncMock call count and await count to be two
+  different counters. Now await count only counts when a coroutine has been
+  awaited, not when it has been called, and vice-versa. Update the
+  documentation around this.
+
+- bpo-37828: Fix default mock name in
+  :meth:`unittest.mock.Mock.assert_called` exceptions. Patch by Abraham
+  Toriz Cruz.
+
+- bpo-38175: Fix a memory leak in comparison of :class:`sqlite3.Row`
+  objects.
+
+- bpo-33936: _hashlib no longer calls obsolete OpenSSL initialization
+  function with OpenSSL 1.1.0+.
+
+- bpo-34706: Preserve subclassing in inspect.Signature.from_callable.
+
+- bpo-38153: Names of hashing algorithms frome OpenSSL are now normalized to
+  follow Python's naming conventions. For example OpenSSL uses sha3-512
+  instead of sha3_512 or blake2b512 instead of blake2b.
+
+- bpo-38115: Fix a bug in dis.findlinestarts() where it would return invalid
+  bytecode offsets. Document that a code object's co_lnotab can contain
+  invalid bytecode offsets.
+
+- bpo-38148: Add slots to :mod:`asyncio` transport classes, which can reduce
+  memory usage.
+
+- bpo-36991: Fixes a potential incorrect AttributeError exception escaping
+  ZipFile.extract() in some unsupported input error situations.
+
+- bpo-38134: Remove obsolete copy of PBKDF2_HMAC_fast. All supported OpenSSL
+  versions contain a fast implementation.
+
+- bpo-38132: The OpenSSL hashlib wrapper uses a simpler implementation.
+  Several Macros and pointless caches are gone. The hash name now comes from
+  OpenSSL's EVP. The algorithm name stays the same, except it is now always
+  lower case.
+
+- bpo-38008: Fix parent class check in protocols to correctly identify the
+  module that provides a builtin protocol, instead of assuming they all come
+  from the :mod:`collections.abc` module
+
+- bpo-37405: Fixed regression bug for socket.getsockname() for non-CAN_ISOTP
+  AF_CAN address family sockets by returning a 1-tuple instead of string.
+
+- bpo-38121: Update parameter names on functions in importlib.metadata
+  matching the changes in the 0.22 release of importlib_metadata.
+
+- bpo-38110: The os.closewalk() implementation now uses the libc fdwalk()
+  API on platforms where it is available.
+
+- bpo-38093: Fixes AsyncMock so it doesn't crash when used with
+  AsyncContextManagers or AsyncIterators.
+
+- bpo-37488: Add warning to :meth:`datetime.utctimetuple`,
+  :meth:`datetime.utcnow` and :meth:`datetime.utcfromtimestamp` .
+
+- bpo-38086: Update importlib.metadata with changes from `importlib_metadata
+  0.21
+  <https://gitlab.com/python-devs/importlib_metadata/blob/0.21/importlib_metadata/docs/changelog.rst>`_.
+
+- bpo-37251: Remove `__code__` check in AsyncMock that incorrectly evaluated
+  function specs as async objects but failed to evaluate classes with
+  `__await__` but no `__code__` attribute defined as async objects.
+
+- bpo-38037: Fix reference counters in the :mod:`signal` module.
+
+- bpo-38066: Hide internal asyncio.Stream methods: feed_eof(), feed_data(),
+  set_exception() and set_transport().
+
+- bpo-38059: inspect.py now uses sys.exit() instead of exit()
+
+- bpo-37953: In :mod:`typing`, improved the ``__hash__`` and ``__eq__``
+  methods for :class:`ForwardReferences`.
+
+- bpo-38026: Fixed :func:`inspect.getattr_static` used ``isinstance`` while
+  it should avoid dynamic lookup.
+
+- bpo-38010: In ``importlib.metadata`` sync with ``importlib_metadata``
+  0.20, clarifying behavior of ``files()`` and fixing issue where only one
+  requirement was returned for ``requires()`` on ``dist-info`` packages.
+
+- bpo-38006: weakref.WeakValueDictionary defines a local remove() function
+  used as callback for weak references. This function was created with a
+  closure. Modify the implementation to avoid the closure.
+
+- bpo-34410: Fixed a crash in the :func:`tee` iterator when re-enter it.
+  RuntimeError is now raised in this case.
+
+- bpo-37140: Fix a ctypes regression of Python 3.8. When a ctypes.Structure
+  is passed by copy to a function, ctypes internals created a temporary
+  object which had the side effect of calling the structure finalizer
+  (__del__) twice. The Python semantics requires a finalizer to be called
+  exactly once. Fix ctypes internals to no longer call the finalizer twice.
+
+- bpo-37972: Subscripts to the `unittest.mock.call` objects now receive the
+  same chaining mechanism as any other custom attributes, so that the
+  following usage no longer raises a `TypeError`:
+
+  call().foo().__getitem__('bar')
+
+  Patch by blhsing
+
+- bpo-22347: Update mimetypes.guess_type to allow proper parsing of URLs
+  with only a host name. Patch by Dong-hee Na.
+
+- bpo-37885: venv: Don't generate unset variable warning on deactivate.
+
+- bpo-37785: Fix xgettext warnings in :mod:`argparse`.
+
+- bpo-11953: Completing WSA* error codes in :mod:`socket`.
+
+- bpo-37424: Fixes a possible hang when using a timeout on
+  `subprocess.run()` while capturing output.  If the child process spawned
+  its own children or otherwise connected its stdout or stderr handles with
+  another process, we could hang after the timeout was reached and our child
+  was killed when attempting to read final output from the pipes.
+
+- bpo-37212: :func:`unittest.mock.call` now preserves the order of keyword
+  arguments in repr output. Patch by Karthikeyan Singaravelan.
+
+- bpo-37305: Add .webmanifest -> application/manifest+json to list of
+  recognized file types and content type headers
+
+- bpo-21872: Fix :mod:`lzma`: module decompresses data incompletely. When
+  decompressing a FORMAT_ALONE format file, and it doesn't have the end
+  marker, sometimes the last one to dozens bytes can't be output. Patch by
+  Ma Lin.
+
+- bpo-37206: Default values which cannot be represented as Python objects no
+  longer improperly represented as ``None`` in function signatures.
+
+- bpo-12144: Ensure cookies with ``expires`` attribute are handled in
+  :meth:`CookieJar.make_cookies`.
+
+- bpo-31163: pathlib.Path instance's rename and replace methods now return
+  the new Path instance.
+
+- bpo-25068: :class:`urllib.request.ProxyHandler` now lowercases the keys of
+  the passed dictionary.
+
+- bpo-21315: Email headers containing RFC2047 encoded words are parsed
+  despite the missing whitespace, and a defect registered. Also missing
+  trailing whitespace after encoded words is now registered as a defect.
+
+- bpo-36250: Ignore ``ValueError`` from ``signal`` with ``interaction`` in
+  non-main thread.
+
+- bpo-35168: :attr:`shlex.shlex.punctuation_chars` is now a read-only
+  property.
+
+- bpo-20504: Fixes a bug in :mod:`cgi` module when a multipart/form-data
+  request has no `Content-Length` header.
+
+- bpo-34519: Add additional aliases for HP Roman 8. Patch by Michael Osipov.
+
+Documentation
+-------------
+
+- bpo-26868: Fix example usage of :c:func:`PyModule_AddObject` to properly
+  handle errors.
+
+- bpo-36797: Fix a dead link in the distutils API Reference.
+
+- bpo-37977: Warn more strongly and clearly about pickle insecurity
+
+- bpo-37937: Mention ``frame.f_trace`` in :func:`sys.settrace` docs.
+
+- bpo-36260: Add decompression pitfalls to zipfile module documentation.
+
+- bpo-36960: Restructured the :mod:`datetime` docs in the interest of making
+  them more user-friendly and improving readability. Patch by Brad Solomon.
+
+- bpo-23460: The documentation for decimal string formatting using the `:g`
+  specifier has been updated to reflect the correct exponential notation
+  cutoff point. Original patch contributed by Tuomas Suutari.
+
+- bpo-35803: Document and test that ``tempfile`` functions may accept a
+  :term:`path-like object` for the ``dir`` argument.  Patch by Anthony
+  Sottile.
+
+- bpo-33944: Added a note about the intended use of code in .pth files.
+
+- bpo-34293: Fix the Doc/Makefile regarding PAPER environment variable and
+  PDF builds
+
+Tests
+-----
+
+- bpo-38239: Fix test_gdb for Link Time Optimization (LTO) builds.
+
+- bpo-38275: test_ssl now handles disabled TLS/SSL versions better.
+  OpenSSL's crypto policy and run-time settings are recognized and tests for
+  disabled versions are skipped. Tests also accept more TLS minimum_versions
+  for platforms that override OpenSSL's default with strict settings.
+
+- bpo-38271: The private keys for test_ssl were encrypted with 3DES in
+  traditional PKCS#5 format. 3DES and the digest algorithm of PKCS#5 are
+  blocked by some strict crypto policies. Use PKCS#8 format with AES256
+  encryption instead.
+
+- bpo-38270: test.support now has a helper function to check for
+  availibility of a hash digest function. Several tests are refactored avoid
+  MD5 and use SHA256 instead. Other tests are marked to use MD5 and skipped
+  when MD5 is disabled.
+
+- bpo-37123: Multiprocessing test test_mymanager() now also expects
+  -SIGTERM, not only exitcode 0. BaseManager._finalize_manager() sends
+  SIGTERM to the manager process if it takes longer than 1 second to stop,
+  which happens on slow buildbots.
+
+- bpo-38212: Multiprocessing tests: increase
+  test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds.
+
+- bpo-38117: Test with OpenSSL 1.1.1d
+
+- bpo-37531: Enhance regrtest multiprocess timeout: write a message when
+  killing a worker process, catch popen.kill() and popen.wait() exceptions,
+  put a timeout on the second call to popen.communicate().
+
+- bpo-37876: Add tests for ROT-13 codec.
+
+- bpo-37252: Fix assertions in ``test_close`` and
+  ``test_events_mask_overflow`` devpoll tests.
+
+- bpo-34001: Make test_ssl pass with LibreSSL. LibreSSL handles minimum and
+  maximum TLS version differently than OpenSSL.
+
+- bpo-36919: Make ``test_source_encoding.test_issue2301`` implementation
+  independent. The test will work now for both CPython and IronPython.
+
+- bpo-34596: Fallback to a default reason when :func:`unittest.skip` is
+  uncalled. Patch by Naitree Zhu.
+
+Build
+-----
+
+- bpo-38301: In Solaris family, we must be sure to use ``-D_REENTRANT``.
+  Patch by Jesús Cea Avión.
+
+- bpo-36210: Update optional extension module detection for AIX. ossaudiodev
+  and spwd are not applicable for AIX, and are no longer reported as
+  missing. 3rd-party packaging of ncurses (with ASIS support) conflicts with
+  officially supported AIX curses library, so configure AIX to use
+  libcurses.a. However, skip trying to build _curses_panel.
+
+  patch by M Felt
+
+- bpo-36002: Locate ``llvm-profdata`` and ``llvm-ar`` binaries using
+  ``AC_PATH_TOOL`` rather than ``AC_PATH_TARGET_TOOL``.
+
+- bpo-37936: The :file:`.gitignore` file systematically keeps "rooted", with
+  a non-trailing slash, all the rules that are meant to apply to files in a
+  specific place in the repo.  Previously, when the intended file to ignore
+  happened to be at the root of the repo, we'd most often accidentally also
+  ignore files and directories with the same name anywhere in the tree.
+
+- bpo-37936: The :file:`.gitignore` file no longer applies to any files that
+  are in fact tracked in the Git repository.  Patch by Greg Price.
+
+Windows
+-------
+
+- bpo-38117: Update bundled OpenSSL to 1.1.1d
+
+- bpo-38092: Reduce overhead when using multiprocessing in a Windows virtual
+  environment.
+
+- bpo-38133: Allow py.exe launcher to locate installations from the
+  Microsoft Store and improve display of active virtual environments.
+
+- bpo-38114: The ``pip.ini`` is no longer included in the Nuget package.
+
+- bpo-36634: :func:`os.cpu_count` now returns active processors rather than
+  maximum processors.
+
+- bpo-36634: venv activate.bat now works when the existing variables contain
+  double quote characters.
+
+- bpo-38081: Prevent error calling :func:`os.path.realpath` on ``'NUL'``.
+
+- bpo-38087: Fix case sensitivity in test_pathlib and test_ntpath.
+
+- bpo-38088: Fixes distutils not finding vcruntime140.dll with only the v142
+  toolset installed.
+
+- bpo-37283: Ensure command-line and unattend.xml setting override
+  previously detected states in Windows installer.
+
+- bpo-38030: Fixes :func:`os.stat` failing for block devices on Windows
+
+- bpo-38020: Fixes potential crash when calling :func:`os.readlink` (or
+  indirectly through :func:`~os.path.realpath`) on a file that is not a
+  supported link.
+
+- bpo-37705: Improve the implementation of ``winerror_to_errno()``.
+
+- bpo-37702: Fix memory leak on Windows in creating an SSLContext object or
+  running urllib.request.urlopen('https://...').
+
+- bpo-37445: Include the ``FORMAT_MESSAGE_IGNORE_INSERTS`` flag in
+  ``FormatMessageW()`` calls.
+
+- bpo-37380: Don't collect unfinished processes with ``subprocess._active``
+  on Windows to cleanup later. Patch by Ruslan Kuprieiev.
+
+- bpo-32587: Make :data:`winreg.REG_MULTI_SZ` support zero-length strings.
+
+macOS
+-----
+
+- bpo-38117: Updated OpenSSL to 1.1.1d in macOS installer.
+
+- bpo-38089: Move Azure Pipelines to latest VM versions and make macOS tests
+  optional
+
+IDLE
+----
+
+- bpo-35379: When exiting IDLE, catch any AttributeError.  One happens when
+  EditorWindow.close is called twice.  Printing a traceback, when IDLE is
+  run from a terminal, is useless and annoying.
+
+- bpo-38183: To avoid problems, test_idle ignores the user config directory.
+  It no longer tries to create or access .idlerc or any files within. Users
+  must run IDLE to discover problems with saving settings.
+
+- bpo-38077: IDLE no longer adds 'argv' to the user namespace when
+  initializing it.  This bug only affected 3.7.4 and 3.8.0b2 to 3.8.0b4.
+
+- bpo-38041: Shell restart lines now fill the window width, always start
+  with '=', and avoid wrapping unnecessarily. The line will still wrap if
+  the included file name is long relative to the width.
+
+- bpo-35771: To avoid occasional spurious test_idle failures on slower
+  machines, increase the ``hover_delay`` in test_tooltip.
+
+- bpo-37902: Add mousewheel scrolling for IDLE module, path, and stack
+  browsers. Patch by George Zhang.
+
+Tools/Demos
+-----------
+
+- bpo-37803: pdb's ``--help`` and ``--version`` long options now work.
+
+- bpo-37064: Add option -k to pathscript.py script: preserve shebang flags.
+  Add option -a to pathscript.py script: add flags.
+
+C API
+-----
+
+- bpo-38234: :c:func:`Py_SetPath` now sets :data:`sys.executable` to the
+  program full path (:c:func:`Py_GetProgramFullPath`) rather than to the
+  program name (:c:func:`Py_GetProgramName`).
+
+- bpo-38234: Python ignored arguments passed to :c:func:`Py_SetPath`,
+  :c:func:`Py_SetPythonHome` and :c:func:`Py_SetProgramName`: fix Python
+  initialization to use specified arguments.
+
+- bpo-38205: The :c:func:`Py_UNREACHABLE` macro now calls
+  :c:func:`Py_FatalError`.
+
+- bpo-37879: Fix subtype_dealloc to suppress the type decref when the base
+  type is a C heap type
+
+
+What's New in Python 3.8.0 beta 4?
+==================================
+
+*Release date: 2019-08-29*
+
+Security
+--------
+
+- bpo-34155: Fix parsing of invalid email addresses with more than one ``@``
+  (e.g. a@b@c.com.) to not return the part before 2nd ``@`` as valid email
+  address. Patch by maxking & jpic.
+
+Core and Builtins
+-----------------
+
+- bpo-37947: Adjust correctly the recursion level in the symtable generation
+  for named expressions. Patch by Pablo Galindo.
+
+- bpo-37830: Fixed compilation of :keyword:`break` and :keyword:`continue`
+  in the :keyword:`finally` block when the corresponding :keyword:`try`
+  block contains :keyword:`return` with a non-constant value.
+
+- bpo-32912: Reverted :issue:`32912`: emitting :exc:`SyntaxWarning` instead
+  of :exc:`DeprecationWarning` for invalid escape sequences in string and
+  bytes literals.
+
+- bpo-37757: :pep:`572`: As described in the PEP, assignment expressions now
+  raise :exc:`SyntaxError` when their interaction with comprehension scoping
+  results in an ambiguous target scope.
+
+  The ``TargetScopeError`` subclass originally proposed by the PEP has been
+  removed in favour of just raising regular syntax errors for the disallowed
+  cases.
+
+- bpo-36311: Decoding bytes objects larger than 2GiB is faster and no longer
+  fails when a multibyte characters spans a chunk boundary.
+
+- bpo-37433: Fix ``SyntaxError`` indicator printing too many spaces for
+  multi-line strings - by Anthony Sottile.
+
+- bpo-20523: ``pdb.Pdb`` supports ~/.pdbrc in Windows 7. Patch by Tim Hopper
+  and Dan Lidral-Porter.
+
+Library
+-------
+
+- bpo-37834: Prevent shutil.rmtree exception when built on non-Windows
+  system without fd system call support, like older versions of macOS.
+
+- bpo-37965: Fix C compiler warning caused by
+  distutils.ccompiler.CCompiler.has_function.
+
+- bpo-37960: ``repr()`` of buffered and text streams now silences only
+  expected exceptions when get the value of "name" and "mode" attributes.
+
+- bpo-37951: Most features of the subprocess module now work again in
+  subinterpreters. Only *preexec_fn* is restricted in subinterpreters.
+
+- bpo-36205: Fix the rusage implementation of time.process_time() to
+  correctly report the sum of the system and user CPU time.
+
+- bpo-37950: Fix :func:`ast.dump` when call with incompletely initialized
+  node.
+
+- bpo-34679: Restores instantiation of Windows IOCP event loops from the
+  non-main thread.
+
+- bpo-36917: Add default implementation of the
+  :meth:`ast.NodeVisitor.visit_Constant` method which emits a deprecation
+  warning and calls corresponding methody ``visit_Num()``, ``visit_Str()``,
+  etc.
+
+- bpo-37798: Update test_statistics.py to verify that the statistics module
+  works well for both C and Python implementations. Patch by Dong-hee Na
+
+- bpo-26589: Added a new status code to the http module: 451
+  UNAVAILABLE_FOR_LEGAL_REASONS
+
+- bpo-37915: Fix a segmentation fault that appeared when comparing instances
+  of ``datetime.timezone`` and ``datetime.tzinfo`` objects. Patch by Pablo
+  Galindo.
+
+- bpo-37868: Fix dataclasses.is_dataclass when given an instance that never
+  raises AttributeError in __getattr__.  That is, an object that returns
+  something for __dataclass_fields__ even if it's not a dataclass.
+
+- bpo-37811: Fix ``socket`` module's ``socket.connect(address)`` function
+  being unable to establish connection in case of interrupted system call.
+  The problem was observed on all OSes which ``poll(2)`` system call can
+  take only non-negative integers and -1 as a timeout value.
+
+- bpo-21131: Fix ``faulthandler.register(chain=True)`` stack. faulthandler
+  now allocates a dedicated stack of ``SIGSTKSZ*2`` bytes, instead of just
+  ``SIGSTKSZ`` bytes. Calling the previous signal handler in faulthandler
+  signal handler uses more than ``SIGSTKSZ`` bytes of stack memory on some
+  platforms.
+
+- bpo-37798: Add C fastpath for statistics.NormalDist.inv_cdf() Patch by
+  Dong-hee Na
+
+- bpo-37819: Add Fraction.as_integer_ratio() to match the corresponding
+  methods in bool, int, float, and decimal.
+
+- bpo-37810: Fix :mod:`difflib` ``?`` hint in diff output when dealing with
+  tabs.  Patch by Anthony Sottile.
+
+- bpo-37772: In ``zipfile.Path``, when adding implicit dirs, ensure that
+  ancestral directories are added and that duplicates are excluded.
+
+- bpo-28292: Mark calendar.py helper functions as being private.  The
+  follows PEP 8 guidance to maintain the style conventions in the module and
+  it addresses a known case of user confusion.
+
+- bpo-18049: Add definition of THREAD_STACK_SIZE for AIX in
+  Python/thread_pthread.h The default thread stacksize caused crashes with
+  the default recursion limit Patch by M Felt
+
+- bpo-37738: Fix the implementation of curses ``addch(str, color_pair)``:
+  pass the color pair to ``setcchar()``, instead of always passing 0 as the
+  color pair.
+
+- bpo-37723: Fix performance regression on regular expression parsing with
+  huge character sets. Patch by Yann Vaginay.
+
+- bpo-32178: Fix IndexError in :mod:`email` package when trying to parse
+  invalid address fields starting with ``:``.
+
+- bpo-37685: Fixed comparisons of :class:`datetime.timedelta` and
+  :class:`datetime.timezone`.
+
+- bpo-37695: Correct :func:`curses.unget_wch` error message.  Patch by
+  Anthony Sottile.
+
+- bpo-37354: Make Activate.ps1 Powershell script static to allow for signing
+  it.
+
+- bpo-37664: Update wheels bundled with ensurepip (pip 19.2.3 and setuptools
+  41.2.0)
+
+- bpo-37642: Allowed the pure Python implementation of
+  :class:`datetime.timezone` to represent sub-minute offsets close to
+  minimum and maximum boundaries, specifically in the ranges (23:59, 24:00)
+  and (-23:59, 24:00). Patch by Ngalim Siregar
+
+- bpo-16970: Adding a value error when an invalid value in passed to nargs
+  Patch by Robert Leenders
+
+- bpo-37587: Make json.loads faster for long strings. (Patch by Marco
+  Paolini)
+
+- bpo-18378: Recognize "UTF-8" as a valid value for LC_CTYPE in
+  locale._parse_localename.
+
+- bpo-37531: "python3 -m test -jN --timeout=TIMEOUT" now kills a worker
+  process if it runs longer than *TIMEOUT* seconds.
+
+- bpo-37482: Fix serialization of display name in originator or destination
+  address fields with both encoded words and special chars.
+
+- bpo-37372: Fix error unpickling datetime.time objects from Python 2 with
+  seconds>=24. Patch by Justin Blanchard.
+
+- bpo-37085: Add the optional Linux SocketCAN Broadcast Manager constants,
+  used as flags to configure the BCM behaviour, in the socket module.  Patch
+  by Karl Ding.
+
+- bpo-36871: Ensure method signature is used instead of constructor
+  signature of a class while asserting mock object against method calls.
+  Patch by Karthikeyan Singaravelan.
+
+- bpo-36582: Fix ``UserString.encode()`` to correctly return ``bytes``
+  rather than a ``UserString`` instance.
+
+- bpo-34775: Division handling of PurePath now returns NotImplemented
+  instead of raising a TypeError when passed something other than an
+  instance of str or PurePath. Patch by Roger Aiudi.
+
+Documentation
+-------------
+
+- bpo-37979: Added a link to dateutil.parser.isoparse in the
+  datetime.fromisoformat documentation. Patch by Paul Ganssle
+
+- bpo-37759: Beginning edits to Whatsnew 3.8
+
+- bpo-37726: Stop recommending getopt in the tutorial for command line
+  argument parsing and promote argparse.
+
+- bpo-37256: Fix wording of arguments for :class:`Request` in
+  :mod:`urllib.request`
+
+- bpo-37004: In the documentation for difflib, a note was added explicitly
+  warning that the results of SequenceMatcher's ratio method may depend on
+  the order of the input strings.
+
+- bpo-36487: Make C-API docs clear about what the "main" interpreter is.
+
+Tests
+-----
+
+- bpo-37805: Add tests for json.dump(..., skipkeys=True). Patch by Dong-hee
+  Na.
+
+Build
+-----
+
+- bpo-37707: Mark some individual tests to skip when --pgo is used.  The
+  tests marked increase the PGO task time significantly and likely don't
+  help improve optimization of the final executable.
+
+Windows
+-------
+
+- bpo-37549: :func:`os.dup` no longer fails for standard streams on Windows
+  7.
+
+- bpo-1311: The ``nul`` file on Windows now returns True from
+  :func:`~os.path.exists` and a valid result from :func:`os.stat` with
+  ``S_IFCHR`` set.
+
+- bpo-9949: Enable support for following symlinks in :func:`os.realpath`.
+
+- bpo-37834: Treat all name surrogate reparse points on Windows in
+  :func:`os.lstat` and other reparse points as regular files in
+  :func:`os.stat`.
+
+- bpo-36266: Add the module name in the formatted error message when DLL
+  load fail happens during module import in
+  ``_PyImport_FindSharedFuncptrWindows()``. Patch by Srinivas Nyayapati.
+
+- bpo-25172: Trying to import the :mod:`crypt` module on Windows will result
+  in an :exc:`ImportError` with a message explaining that the module isn't
+  supported on Windows. On other platforms, if the underlying ``_crypt``
+  module is not available, the ImportError will include a message explaining
+  the problem.
+
+- bpo-37778: Fixes the icons used for file associations to the Microsoft
+  Store package.
+
+- bpo-37734: Fix use of registry values to launch Python from Microsoft
+  Store app.
+
+- bpo-28269: Replace use of :c:func:`strcasecmp` for the system function
+  :c:func:`_stricmp`. Patch by Minmin Gong.
+
+macOS
+-----
+
+- bpo-18049: Increase the default stack size of threads from 5MB to 16MB on
+  macOS, to match the stack size of the main thread. This avoids crashes on
+  deep recursion in threads.
+
+IDLE
+----
+
+- bpo-37824: Properly handle user input warnings in IDLE shell. Cease
+  turning SyntaxWarnings into SyntaxErrors.
+
+- bpo-37929: IDLE Settings dialog now closes properly when there is no shell
+  window.
+
+- bpo-37849: Fixed completions list appearing too high or low when shown
+  above the current line.
+
+- bpo-36419: Refactor IDLE autocomplete and improve testing.
+
+- bpo-37748: Reorder the Run menu.  Put the most common choice, Run Module,
+  at the top.
+
+Tools/Demos
+-----------
+
+- bpo-37942: Improve ArgumentClinic converter for floats.
+
+- bpo-37034: Argument Clinic now uses the argument name on errors with
+  keyword-only argument instead of their position. Patch contributed by Rémi
+  Lapeyre.
+
+C API
+-----
+
+- bpo-36763: Options added by ``PySys_AddXOption()`` are now handled the
+  same way than ``PyConfig.xoptions`` and command line ``-X`` options.
+
+- bpo-37926: Fix a crash in ``PySys_SetArgvEx(0, NULL, 0)``.
+
+
+What's New in Python 3.8.0 beta 3?
+==================================
+
+*Release date: 2019-07-29*
+
+Security
+--------
+
+- bpo-37461: Fix an infinite loop when parsing specially crafted email
+  headers. Patch by Abhilash Raj.
+
+Core and Builtins
+-----------------
+
+- bpo-37593: Swap the positions of the *posonlyargs* and *args* parameters
+  in the constructor of :class:`ast.parameters` nodes.
+
+- bpo-36974: Implemented separate vectorcall functions for every calling
+  convention of builtin functions and methods. This improves performance for
+  calls.
+
+Library
+-------
+
+- bpo-37697: Syncronize ``importlib.metadata`` with `importlib_metadata 0.19
+  <https://gitlab.com/python-devs/importlib_metadata/-/milestones/20>`_,
+  improving handling of EGG-INFO files and fixing a crash when entry point
+  names contained colons.
+
+- bpo-37691: Let math.dist() accept coordinates as sequences (or iterables)
+  rather than just tuples.
+
+- bpo-37664: Update wheels bundled with ensurepip (pip 19.2.1 and setuptools
+  41.0.1)
+
+- bpo-36324: Make internal attributes for statistics.NormalDist() private.
+
+- bpo-37491: Fix ``IndexError`` when parsing email headers with unexpectedly
+  ending bare-quoted string value. Patch by Abhilash Raj.
+
+- bpo-37579: Return :exc:`NotImplemented` in Python implementation of
+  ``__eq__`` for :class:`~datetime.timedelta` and :class:`~datetime.time`
+  when the other object being compared is not of the same type to match C
+  implementation. Patch by Karthikeyan Singaravelan.
+
+- bpo-21478: Record calls to parent when autospecced object is attached to a
+  mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan
+  Singaravelan.
+
+- bpo-37502: pickle.loads() no longer raises TypeError when the buffers
+  argument is set to None
+
+- bpo-37520: Correct behavior for zipfile.Path.parent when the path object
+  identifies a subdirectory.
+
+- bpo-18374: Fix the ``.col_offset`` attribute of nested :class:`ast.BinOp`
+  instances which had a too large value in some situations.
+
+- bpo-37421: Fix :func:`multiprocessing.util.get_temp_dir` finalizer: clear
+  also the 'tempdir' configuration of the current process, so next call to
+  ``get_temp_dir()`` will create a new temporary directory, rather than
+  reusing the removed temporary directory.
+
+- bpo-37481: The distutils ``bdist_wininst`` command is deprecated in Python
+  3.8, use ``bdist_wheel`` (wheel packages) instead.
+
+- bpo-26967: An :class:`~argparse.ArgumentParser` with
+  ``allow_abbrev=False`` no longer disables grouping of short flags, such as
+  ``-vv``, but only disables abbreviation of long flags as documented. Patch
+  by Zac Hatfield-Dodds.
+
+- bpo-37347: :meth:`sqlite3.Connection.create_aggregate`,
+  :meth:`sqlite3.Connection.create_function`,
+  :meth:`sqlite3.Connection.set_authorizer`,
+  :meth:`sqlite3.Connection.set_progress_handler`
+  :meth:`sqlite3.Connection.set_trace_callback` methods lead to segfaults if
+  some of these methods are called twice with an equal object but not the
+  same. Now callbacks are stored more carefully. Patch by Aleksandr Balezin.
+
+- bpo-36564: Fix infinite loop in email header folding logic that would be
+  triggered when an email policy's max_line_length is not long enough to
+  include the required markup and any values in the message. Patch by Paul
+  Ganssle
+
+Documentation
+-------------
+
+- bpo-32910: Remove implementation-specific behaviour of how venv's
+  Deactivate works.
+
+- bpo-37284: Add a brief note to indicate that any new
+  ``sys.implementation`` required attributes must go through the PEP
+  process.
+
+- bpo-30088: Documented that :class:`mailbox.Maildir` constructor doesn't
+  attempt to verify the maildir folder layout correctness. Patch by
+  Sviatoslav Sydorenko.
+
+- bpo-37521: Fix `importlib` examples to insert any newly created modules
+  via importlib.util.module_from_spec() immediately into sys.modules instead
+  of after calling loader.exec_module().
+
+  Thanks to Benjamin Mintz for finding the bug.
+
+- bpo-37456: Slash ('/') is now part of syntax.
+
+- bpo-37487: Fix PyList_GetItem index description to include 0.
+
+- bpo-37149: Replace the dead link to the Tkinter 8.5 reference by John
+  Shipman, New Mexico Tech, with a link to the archive.org copy.
+
+- bpo-37478: Added possible exceptions to the description of os.chdir().
+
+Tests
+-----
+
+- bpo-37558: Fix test_shared_memory_cleaned_after_process_termination name
+  handling
+
+- bpo-37526: Add :func:`test.support.catch_threading_exception`: context
+  manager catching :class:`threading.Thread` exception using
+  :func:`threading.excepthook`.
+
+- bpo-37421: test_concurrent_futures now explicitly stops the ForkServer
+  instance if it's running.
+
+- bpo-37421: multiprocessing tests now stop the ForkServer instance if it's
+  running: close the "alive" file descriptor to ask the server to stop and
+  then remove its UNIX address.
+
+Build
+-----
+
+- bpo-36044: Reduce the number of unit tests run for the PGO generation
+  task.  This speeds up the task by a factor of about 15x.  Running the full
+  unit test suite is slow.  This change may result in a slightly less
+  optimized build since not as many code branches will be executed.  If you
+  are willing to wait for the much slower build, the old behavior can be
+  restored using './configure [..] PROFILE_TASK="-m test --pgo-extended"'.
+  We make no guarantees as to which PGO task set produces a faster build.
+  Users who care should run their own relevant benchmarks as results can
+  depend on the environment, workload, and compiler tool chain.
+
+Windows
+-------
+
+- bpo-37672: Switch Windows Store package's pip to use bundled
+  :file:`pip.ini` instead of :envvar:`PIP_USER` variable.
+
+IDLE
+----
+
+- bpo-37692: Improve highlight config sample with example shell interaction
+  and better labels for shell elements.
+
+- bpo-37628: Settings dialog no longer expands with font size.
+
+- bpo-37627: Initialize the Customize Run dialog with the command line
+  arguments most recently entered before.  The user can optionally edit
+  before submitting them.
+
+- bpo-33610: Fix code context not showing the correct context when first
+  toggled on.
+
+- bpo-37530: Optimize code context to reduce unneeded background activity.
+  Font and highlight changes now occur along with text changes instead of
+  after a random delay.
+
+- bpo-27452: Cleanup ``config.py`` by inlining ``RemoveFile`` and
+  simplifying the handling of ``file`` in ``CreateConfigHandlers``.
+
+- bpo-17535: Add optional line numbers for IDLE editor windows.  Windows
+  open without line numbers unless set otherwise in the General tab of the
+  configuration dialog.
+
+- bpo-26806: To compensate for stack frames added by IDLE and avoid possible
+  problems with low recursion limits, add 30 to limits in the user code
+  execution process.  Subtract 30 when reporting recursion limits to make
+  this addition mostly transparent.
+
+- bpo-36390: Gather Format menu functions into format.py.  Combine
+  paragraph.py, rstrip.py, and format methods from editor.py.
+
+Tools/Demos
+-----------
+
+- bpo-37675: 2to3 now works when run from a zipped standard library.
+
+
+What's New in Python 3.8.0 beta 2?
+==================================
+
+*Release date: 2019-07-04*
+
+Security
+--------
+
+- bpo-37363: Adds audit events for the range of supported run commands (see
+  :ref:`using-on-general`).
+
+- bpo-37463: ssl.match_hostname() no longer accepts IPv4 addresses with
+  additional text after the address and only quad-dotted notation without
+  trailing whitespaces. Some inet_aton() implementations ignore whitespace
+  and all data after whitespace, e.g. '127.0.0.1 whatever'.
+
+- bpo-37363: Adds audit events for :mod:`ensurepip`, :mod:`ftplib`,
+  :mod:`glob`, :mod:`imaplib`, :mod:`nntplib`, :mod:`pdb`, :mod:`poplib`,
+  :mod:`shutil`, :mod:`smtplib`, :mod:`sqlite3`, :mod:`subprocess`,
+  :mod:`telnetlib`, :mod:`tempfile` and :mod:`webbrowser`, as well as
+  :func:`os.listdir`, :func:`os.scandir` and :func:`breakpoint`.
+
+- bpo-37364: :func:`io.open_code` is now used when reading :file:`.pth`
+  files.
+
+- bpo-34631: Updated OpenSSL to 1.1.1c in Windows installer
+
+Core and Builtins
+-----------------
+
+- bpo-37467: Fix :func:`sys.excepthook` and :c:func:`PyErr_Display` if a
+  filename is a bytes string. For example, for a SyntaxError exception where
+  the filename attribute is a bytes string.
+
+- bpo-37417: :meth:`bytearray.extend` now correctly handles errors that
+  arise during iteration. Patch by Brandt Bucher.
+
+- bpo-24214: Improved support of the surrogatepass error handler in the
+  UTF-8 and UTF-16 incremental decoders.
+
+- bpo-35224: Reverse evaluation order of key: value in dict comprehensions
+  as proposed in PEP 572. I.e. in ``{k: v for ...}``, ``k`` will be
+  evaluated before ``v``.
+
+- bpo-37316: Fix the :c:func:`PySys_Audit` call in :class:`mmap.mmap`.
+
+- bpo-37269: Fix a bug in the peephole optimizer that was not treating
+  correctly constant conditions with binary operators. Patch by Pablo
+  Galindo.
+
+- bpo-37213: Handle correctly negative line offsets in the peephole
+  optimizer. Patch by Pablo Galindo.
+
+- bpo-37219: Remove errorneous optimization for empty set differences.
+
+- bpo-36922: Slot functions optimize any callable with
+  ``Py_TPFLAGS_METHOD_DESCRIPTOR`` instead of only instances of
+  ``function``.
+
+- bpo-36974: The slot ``tp_vectorcall_offset`` is inherited unconditionally
+  to support ``super().__call__()`` when the base class uses vectorcall.
+
+- bpo-37160: :func:`threading.get_native_id` now also supports NetBSD.
+
+- bpo-37077: Add :func:`threading.get_native_id` support for AIX. Patch by
+  M. Felt
+
+Library
+-------
+
+- bpo-37440: http.client now enables TLS 1.3 post-handshake authentication
+  for default context or if a cert_file is passed to HTTPSConnection.
+
+- bpo-37437: Update vendorized expat version to 2.2.7.
+
+- bpo-37428: SSLContext.post_handshake_auth = True no longer sets
+  SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. Although the
+  option is documented as ignored for clients, OpenSSL implicitly enables
+  cert chain validation when the flag is set.
+
+- bpo-37420: :func:`os.sched_setaffinity` now correctly handles errors that
+  arise during iteration over its ``mask`` argument. Patch by Brandt Bucher.
+
+- bpo-37412: The :func:`os.getcwdb` function now uses the UTF-8 encoding on
+  Windows, rather than the ANSI code page: see :pep:`529` for the rationale.
+  The function is no longer deprecated on Windows.
+
+- bpo-29412: Fix IndexError in parsing a header value ending unexpectedly.
+  Patch by Abhilash Raj.
+
+- bpo-36546: The *dist* argument for statistics.quantiles() is now
+  positional only. The current name doesn't reflect that the argument can be
+  either a dataset or a distribution.  Marking the parameter as positional
+  avoids confusion and makes it possible to change the name later.
+
+- bpo-37394: Fix a bug that was causing the :mod:`queue` module to fail if
+  the accelerator module was not available. Patch by Pablo Galindo.
+
+- bpo-33972: Email with single part but content-type set to ``multipart/*``
+  doesn't raise AttributeError anymore.
+
+- bpo-37280: Use threadpool for reading from file for sendfile fallback
+  mode.
+
+- bpo-37279: Fix asyncio sendfile support when sendfile sends extra data in
+  fallback mode.
+
+- bpo-19865: :func:`ctypes.create_unicode_buffer()` now also supports
+  non-BMP characters on platforms with 16-bit :c:type:`wchar_t` (for
+  example, Windows and AIX).
+
+- bpo-37210: Allow pure Python implementation of :mod:`pickle` to work even
+  when the C :mod:`_pickle` module is unavailable.
+
+- bpo-35922: Fix :meth:`RobotFileParser.crawl_delay` and
+  :meth:`RobotFileParser.request_rate` to return ``None`` rather than raise
+  :exc:`AttributeError` when no relevant rule is defined in the robots.txt
+  file.  Patch by Rémi Lapeyre.
+
+- bpo-35766: Change the format of feature_version to be a (major, minor)
+  tuple.
+
+- bpo-36607: Eliminate :exc:`RuntimeError` raised by
+  :func:`asyncio.all_tasks()` if internal tasks weak set is changed by
+  another thread during iteration.
+
+- bpo-18748: :class:`_pyio.IOBase` destructor now does nothing if getting
+  the ``closed`` attribute fails to better mimick :class:`_io.IOBase`
+  finalizer.
+
+- bpo-36402: Fix a race condition at Python shutdown when waiting for
+  threads. Wait until the Python thread state of all non-daemon threads get
+  deleted (join all non-daemon threads), rather than just wait until
+  non-daemon Python threads complete.
+
+- bpo-34886: Fix an unintended ValueError from :func:`subprocess.run` when
+  checking for conflicting `input` and `stdin` or `capture_output` and
+  `stdout` or `stderr` args when they were explicitly provided but with
+  `None` values within a passed in `**kwargs` dict rather than as passed
+  directly by name. Patch contributed by Rémi Lapeyre.
+
+- bpo-37173: The exception message for ``inspect.getfile()`` now correctly
+  reports the passed class rather than the builtins module.
+
+- bpo-37178: Give math.perm() a one argument form that means the same as
+  math.factorial().
+
+- bpo-37178: For math.perm(n, k), let k default to n, giving the same result
+  as factorial.
+
+- bpo-37163: Deprecated passing ``obj`` argument of
+  :func:`dataclasses.replace` as keyword argument.
+
+- bpo-37165: Converted _collections._count_elements to use the Argument
+  Clinic.
+
+- bpo-34767: Do not always create a :class:`collections.deque` in
+  :class:`asyncio.Lock`.
+
+- bpo-37158: Speed-up statistics.fmean() by switching from a function to a
+  generator.
+
+- bpo-37150: `argparse._ActionsContainer.add_argument` now throws error, if
+  someone accidentally pass FileType class object instead of instance of
+  FileType as `type` argument
+
+- bpo-35621: Support running asyncio subprocesses when execution event loop
+  in a thread on UNIX.
+
+- bpo-36520: Lengthy email headers with UTF-8 characters are now properly
+  encoded when they are folded. Patch by Jeffrey Kintscher.
+
+- bpo-30835: Fixed a bug in email parsing where a message with invalid bytes
+  in content-transfer-encoding of a multipart message can cause an
+  AttributeError. Patch by Andrew Donnellan.
+
+- bpo-35805: Add parser for Message-ID header and add it to default
+  HeaderRegistry. This should prevent folding of Message-ID using RFC 2048
+  encoded words.
+
+- bpo-35070: posix.getgrouplist() now works correctly when the user belongs
+  to NGROUPS_MAX supplemental groups. Patch by Jeffrey Kintscher.
+
+- bpo-32627: Fix compile error when ``_uuid`` headers conflicting included.
+
+- bpo-11122: Distutils won't check for rpmbuild in specified paths only.
+
+- bpo-4963: Fixed non-deterministic behavior related to mimetypes extension
+  mapping and module reinitialization.
+
+Documentation
+-------------
+
+- bpo-34903: Documented that in :meth:`datetime.datetime.strptime()`, the
+  leading zero in some two-digit formats is optional. Patch by Mike Gleen.
+
+Tests
+-----
+
+- bpo-37421: test_distutils.test_build_ext() is now able to remove the
+  temporary directory on Windows: don't import the newly built C extension
+  ("xx") in the current process, but test it in a separated process.
+
+- bpo-37421: test_concurrent_futures now cleans up multiprocessing to remove
+  immediately temporary directories created by
+  multiprocessing.util.get_temp_dir().
+
+- bpo-37421: test_winconsoleio doesn't leak a temporary file anymore: use
+  tempfile.TemporaryFile() to remove it when the test completes.
+
+- bpo-37421: multiprocessing tests now explicitly call ``_run_finalizers()``
+  to immediately remove temporary directories created by tests.
+
+- bpo-37199: Fix test failures when IPv6 is unavailable or disabled.
+
+- bpo-37335: Remove no longer necessary code from c locale coercion tests
+
+- bpo-37421: Fix test_shutil to no longer leak temporary files.
+
+- bpo-37411: Fix test_wsgiref.testEnviron() to no longer depend on the
+  environment variables (don't fail if "X" variable is set).
+
+- bpo-37400: Fix test_os.test_chown(): use os.getgroups() rather than
+  grp.getgrall() to get groups. Rename also the test to test_chown_gid().
+
+- bpo-37359: Add --cleanup option to python3 -m test to remove
+  ``test_python_*`` directories of previous failed jobs. Add "make
+  cleantest" to run ``python3 -m test --cleanup``.
+
+- bpo-37362: test_gdb no longer fails if it gets an "unexpected" message on
+  stderr: it now ignores stderr. The purpose of test_gdb is to test that
+  python-gdb.py commands work as expected, not to test gdb.
+
+- bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1()
+
+- bpo-37278: Fix test_asyncio ProactorLoopCtrlC: join the thread to prevent
+  leaking a running thread and leaking a reference.
+
+- bpo-37261: Fix :func:`test.support.catch_unraisable_exception`: its
+  __exit__() method now ignores unraisable exception raised when clearing
+  its ``unraisable`` attribute.
+
+- bpo-37169: Rewrite ``_PyObject_IsFreed()`` unit tests.
+
+- bpo-37153: ``test_venv.test_mutiprocessing()`` now explicitly calls
+  ``pool.terminate()`` to wait until the pool completes.
+
+- bpo-28009: Modify the test_uuid logic to test when a program is available
+  AND can be used to obtain a MACADDR as basis for an UUID. Patch by M. Felt
+
+Build
+-----
+
+- bpo-37189: Many ``PyRun_XXX()`` functions like :c:func:`PyRun_String` were
+  no longer exported in ``libpython38.dll`` by mistake. Export them again to
+  fix the ABI compatibiliy.
+
+Windows
+-------
+
+- bpo-10945: Officially drop support for creating bdist_wininst installers
+  on non-Windows systems.
+
+- bpo-37369: Fixes path for :data:`sys.executable` when running from the
+  Microsoft Store.
+
+- bpo-37351: Removes libpython38.a from standard Windows distribution.
+
+- bpo-35360: Update Windows builds to use SQLite 3.28.0.
+
+- bpo-37267: On Windows, :func:`os.dup` no longer creates an inheritable fd
+  when handling a character file.
+
+- bpo-36779: Ensure ``time.tzname`` is correct on Windows when the active
+  code page is set to CP_UTF7 or CP_UTF8.
+
+macOS
+-----
+
+- bpo-34602: Avoid test suite failures on macOS by no longer calling
+  resource.setrlimit to increase the process stack size limit at runtime.
+  The runtime change is no longer needed since the interpreter is being
+  built with a larger default stack size.
+
+- bpo-35360: Update macOS installer to use SQLite 3.28.0.
+
+- bpo-34631: Updated OpenSSL to 1.1.1c in macOS installer.
+
+IDLE
+----
+
+- bpo-37325: Fix tab focus traversal order for help source and custom run
+  dialogs.
+
+- bpo-37321: Both subprocess connection error messages now refer to the
+  'Startup failure' section of the IDLE doc.
+
+- bpo-37177: Properly 'attach' search dialogs to their main window so that
+  they behave like other dialogs and do not get hidden behind their main
+  window.
+
+- bpo-37039: Adjust "Zoom Height" to individual screens by momemtarily
+  maximizing the window on first use with a particular screen.  Changing
+  screen settings may invalidate the saved height.  While a window is
+  maximized, "Zoom Height" has no effect.
+
+- bpo-35763: Make calltip reminder about '/' meaning positional-only less
+  obtrusive by only adding it when there is room on the first line.
+
+- bpo-5680: Add 'Run... Customized' to the Run menu to run a module with
+  customized settings.  Any 'command line arguments' entered are added to
+  sys.argv. One can suppress the normal Shell main module restart.
+
+C API
+-----
+
+- bpo-36763: Add :func:`PyConfig_SetWideStringList` function.
+
+- bpo-28805: The :const:`METH_FASTCALL` calling convention has been
+  documented.
+
+- bpo-37221: ``tp_print`` is put back at the end of the ``PyTypeObject``
+  structure to restore support for old code (in particular generated by
+  Cython) setting ``tp_print = 0``. Note that ``tp_print`` will be removed
+  entirely in Python 3.9.
+
+- bpo-37221: The new function :c:func:`PyCode_NewWithPosOnlyArgs` allows to
+  create code objects like :c:func:`PyCode_New`, but with an extra
+  *posonlyargcount* parameter for indicating the number of positonal-only
+  arguments.
+
+- bpo-37215: Fix dtrace issue introduce by bpo-36842
+
+- bpo-37191: Python.h does not need compiler support for intermingled
+  declarations (GCC's ``-Wdeclaration-after-statement``), which were added
+  in 3.8.0 Beta 1. Note that in Python 3.9, intermingled declarations will
+  be needed again.
+
+- bpo-37170: Fix the cast on error in
+  :c:func:`PyLong_AsUnsignedLongLongMask()`.
+
+
+What's New in Python 3.8.0 beta 1?
+==================================
+
+*Release date: 2019-06-04*
+
+Security
+--------
+
+- bpo-35907: CVE-2019-9948: Avoid file reading by disallowing
+  ``local-file://`` and ``local_file://`` URL schemes in
+  ``URLopener().open()`` and ``URLopener().retrieve()`` of
+  :mod:`urllib.request`.
+
+- bpo-33529: Prevent fold function used in email header encoding from
+  entering infinite loop when there are too many non-ASCII characters in a
+  header.
+
+- bpo-33164: Updated blake2 implementation which uses secure memset
+  implementation provided by platform.
+
+Core and Builtins
+-----------------
+
+- bpo-35814: Allow unpacking in the right hand side of annotated
+  assignments. In particular, ``t: Tuple[int, ...] = x, y, *z`` is now
+  allowed.
+
+- bpo-37126: All structseq objects are now tracked by the garbage collector.
+  Patch by Pablo Galindo.
+
+- bpo-37122: Make the *co_argcount* attribute of code objects represent the
+  total number of positional arguments (including positional-only
+  arguments). The value of *co_posonlyargcount* can be used to distinguish
+  which arguments are positional only, and the difference (*co_argcount* -
+  *co_posonlyargcount*) is the number of positional-or-keyword arguments.
+  Patch by Pablo Galindo.
+
+- bpo-20092: Constructors of :class:`int`, :class:`float` and
+  :class:`complex` will now use the :meth:`~object.__index__` special
+  method, if available and the corresponding method :meth:`~object.__int__`,
+  :meth:`~object.__float__` or :meth:`~object.__complex__` is not available.
+
+- bpo-37087: Add native thread ID (TID) support to OpenBSD.
+
+- bpo-26219: Implemented per opcode cache mechanism and ``LOAD_GLOBAL``
+  instruction use it. ``LOAD_GLOBAL`` is now about 40% faster. Contributed
+  by Yury Selivanov, and Inada Naoki.
+
+- bpo-37072: Fix crash in PyAST_FromNodeObject() when flags is NULL.
+
+- bpo-37029: Freeing a great many small objects could take time quadratic in
+  the number of arenas, due to using linear search to keep ``obmalloc.c``'s
+  list of usable arenas sorted by order of number of free memory pools.
+  This is accomplished without search now, leaving the worst-case time
+  linear in the number of arenas.  For programs where this quite visibly
+  matters (typically with more than 100 thousand small objects alive
+  simultaneously), this can greatly reduce the time needed to release their
+  memory.
+
+- bpo-26423: Fix possible overflow in ``wrap_lenfunc()`` when ``sizeof(long)
+  < sizeof(Py_ssize_t)`` (e.g., 64-bit Windows).
+
+- bpo-37050: Improve the AST for "debug" f-strings, which use '=' to print
+  out the source of the expression being evaluated.  Delete expr_text from
+  the FormattedValue node, and instead use a Constant string node (possibly
+  merged with adjacent constant expressions inside the f-string).
+
+- bpo-22385: The `bytes.hex`, `bytearray.hex`, and `memoryview.hex` methods
+  as well as the `binascii.hexlify` and `b2a_hex` functions now have the
+  ability to include an optional separator between hex bytes.  This
+  functionality was inspired by MicroPython's hexlify implementation.
+
+- bpo-26836: Add :func:`os.memfd_create`.
+
+- bpo-37032: Added new ``replace()`` method to the code type
+  (:class:`types.CodeType`).
+
+- bpo-37007: Implement :func:`socket.if_nameindex()`,
+  :func:`socket.if_nametoindex()`, and :func:`socket.if_indextoname()` on
+  Windows.
+
+- bpo-36829: :c:func:`PyErr_WriteUnraisable` now creates a traceback object
+  if there is no current traceback. Moreover, call
+  :c:func:`PyErr_NormalizeException` and :c:func:`PyException_SetTraceback`
+  to normalize the exception value. Ignore any error.
+
+- bpo-36878: Only accept text after `# type: ignore` if the first character
+  is ASCII. This is to disallow things like `# type: ignoreé`.
+
+- bpo-36878: Store text appearing after a `# type: ignore` comment in the
+  AST. For example a type ignore like `# type: ignore[E1000]` will have the
+  string `"[E1000]"` stored in its AST node.
+
+- bpo-2180: Treat line continuation at EOF as a ``SyntaxError`` by Anthony
+  Sottile.
+
+- bpo-36907: Fix a crash when calling a C function with a keyword dict
+  (``f(**kwargs)``) and changing the dict ``kwargs`` while that function is
+  running.
+
+- bpo-36946: Fix possible signed integer overflow when handling slices.
+
+- bpo-36826: Add NamedExpression kind support to ast_unparse.c
+
+- bpo-1875: A :exc:`SyntaxError` is now raised if a code blocks that will be
+  optimized away (e.g. if conditions that are always false) contains syntax
+  errors. Patch by Pablo Galindo.
+
+- bpo-36027: Allow computation of modular inverses via three-argument
+  ``pow``: the second argument is now permitted to be negative in the case
+  where the first and third arguments are relatively prime.
+
+- bpo-36861: Update the Unicode database to version 12.1.0.
+
+- bpo-28866: Avoid caching attributes of classes which type defines mro() to
+  avoid a hard cache invalidation problem.
+
+- bpo-36851: The ``FrameType`` stack is now correctly cleaned up if the
+  execution ends with a return and the stack is not empty.
+
+- bpo-34616: The ``compile()`` builtin functions now support the
+  ``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag,  which allow to compile sources
+  that  contains top-level ``await``, ``async with`` or ``async for``. This
+  is useful to evaluate async-code from with an already async functions; for
+  example in a custom REPL.
+
+- bpo-36842: Implement PEP 578, adding sys.audit, io.open_code and related
+  APIs.
+
+- bpo-27639: Correct return type for UserList slicing operations. Patch by
+  Michael Blahay, Erick Cervantes, and vaultah
+
+- bpo-36737: Move PyRuntimeState.warnings into per-interpreter state (via
+  "module state").
+
+- bpo-36793: Removed ``__str__`` implementations from builtin types
+  :class:`bool`, :class:`int`, :class:`float`, :class:`complex` and few
+  classes from the standard library. They now inherit ``__str__()`` from
+  :class:`object`.
+
+- bpo-36817: Add a ``=`` feature f-strings for debugging. This can precede
+  ``!s``, ``!r``, or ``!a``. It produces the text of the expression,
+  followed by an equal sign, followed by the repr of the value of the
+  expression. So ``f'{3*9+15=}'`` would be equal to the string
+  ``'3*9+15=42'``.  If ``=`` is specified, the default conversion is set to
+  ``!r``, unless a format spec is given, in which case the formatting
+  behavior is unchanged, and __format__ will be used.
+
+- bpo-24048: Save the live exception during import.c's ``remove_module()``.
+
+- bpo-27987: pymalloc returns memory blocks aligned by 16 bytes, instead of
+  8 bytes, on 64-bit platforms to conform x86-64 ABI. Recent compilers
+  assume this alignment more often. Patch by Inada Naoki.
+
+- bpo-36601: A long-since-meaningless check for ``getpid() == main_pid`` was
+  removed from Python's internal C signal handler.
+
+- bpo-36594: Fix incorrect use of ``%p`` in format strings. Patch by Zackery
+  Spytz.
+
+- bpo-36045: builtins.help() now prefixes `async` for async functions
+
+- bpo-36084: Add native thread ID (TID) to threading.Thread objects
+  (supported platforms: Windows, FreeBSD, Linux, macOS)
+
+- bpo-36035: Added fix for broken symlinks in combination with pathlib
+
+- bpo-35983: Added new trashcan macros to deal with a double deallocation
+  that could occur when the `tp_dealloc` of a subclass calls the
+  `tp_dealloc` of a base class and that base class uses the trashcan
+  mechanism. Patch by Jeroen Demeyer.
+
+- bpo-20602: Do not clear :data:`sys.flags` and :data:`sys.float_info`
+  during shutdown. Patch by Zackery Spytz.
+
+- bpo-26826: Expose :func:`copy_file_range` as a low level API in the
+  :mod:`os` module.
+
+- bpo-32388: Remove cross-version binary compatibility requirement in
+  tp_flags.
+
+- bpo-31862: Port binascii to PEP 489 multiphase initialization. Patch by
+  Marcel Plch.
+
+Library
+-------
+
+- bpo-37128: Added :func:`math.perm`.
+
+- bpo-37120: Add SSLContext.num_tickets to control the number of TLSv1.3
+  session tickets.
+
+- bpo-12202: Fix the error handling in
+  :meth:`msilib.SummaryInformation.GetProperty`. Patch by Zackery Spytz.
+
+- bpo-26835: The fcntl module now contains file sealing constants for
+  sealing of memfds.
+
+- bpo-29262: Add ``get_origin()`` and ``get_args()`` introspection helpers
+  to ``typing`` module.
+
+- bpo-12639: :meth:`msilib.Directory.start_component()` no longer fails if
+  *keyfile* is not ``None``.
+
+- bpo-36999: Add the ``asyncio.Task.get_coro()`` method to publicly expose
+  the tasks's coroutine object.
+
+- bpo-35246: Make :func:`asyncio.create_subprocess_exec` accept path-like
+  arguments.
+
+- bpo-35279: Change default *max_workers* of ``ThreadPoolExecutor`` from
+  ``cpu_count() * 5`` to ``min(32, cpu_count() + 4))``.  Previous value was
+  unreasonably large on many cores machines.
+
+- bpo-37076: :func:`_thread.start_new_thread` now logs uncaught exception
+  raised by the function using :func:`sys.unraisablehook`, rather than
+  :func:`sys.excepthook`, so the hook gets access to the function which
+  raised the exception.
+
+- bpo-33725: On macOS, the :mod:`multiprocessing` module now uses *spawn*
+  start method by default.
+
+- bpo-37054: Fix destructor :class:`_pyio.BytesIO` and
+  :class:`_pyio.TextIOWrapper`: initialize their ``_buffer`` attribute as
+  soon as possible (in the class body), because it's used by ``__del__()``
+  which calls ``close()``.
+
+- bpo-37058: PEP 544: Add ``Protocol`` and ``@runtime_checkable`` to the
+  ``typing`` module.
+
+- bpo-36933: The functions ``sys.set_coroutine_wrapper`` and
+  ``sys.get_coroutine_wrapper`` that were deprecated and marked for removal
+  in 3.8 have been removed.
+
+- bpo-37047: Handle late binding and attribute access in
+  :class:`unittest.mock.AsyncMock` setup for autospeccing. Document newly
+  implemented async methods in :class:`unittest.mock.MagicMock`.
+
+- bpo-37049: PEP 589: Add ``TypedDict`` to the ``typing`` module.
+
+- bpo-37046: PEP 586: Add ``Literal`` to the ``typing`` module.
+
+- bpo-37045: PEP 591: Add ``Final`` qualifier and ``@final`` decorator to
+  the ``typing`` module.
+
+- bpo-37035: Don't log OSError based exceptions if a fatal error has
+  occurred in asyncio transport. Peer can generate almost any OSError, user
+  cannot avoid these exceptions by fixing own code. Errors are still
+  propagated to user code, it's just logging them is pointless and pollute
+  asyncio logs.
+
+- bpo-37001: :func:`symtable.symtable` now accepts the same input types for
+  source code as the built-in :func:`compile` function. Patch by Dino
+  Viehland.
+
+- bpo-37028: Implement asyncio REPL
+
+- bpo-37027: Return safe to use proxy socket object from
+  transport.get_extra_info('socket')
+
+- bpo-32528: Make asyncio.CancelledError a BaseException.
+
+  This will address the common mistake many asyncio users make: an "except
+  Exception" clause breaking Tasks cancellation.
+
+  In addition to this change, we stop inheriting asyncio.TimeoutError and
+  asyncio.InvalidStateError from their concurrent.futures.* counterparts.
+  There's no point for these exceptions to share the inheritance chain.
+
+- bpo-1230540: Add a new :func:`threading.excepthook` function which handles
+  uncaught :meth:`threading.Thread.run` exception. It can be overridden to
+  control how uncaught :meth:`threading.Thread.run` exceptions are handled.
+
+- bpo-36996: Handle :func:`unittest.mock.patch` used as a decorator on async
+  functions.
+
+- bpo-37008: Add support for calling :func:`next` with the mock resulting
+  from :func:`unittest.mock.mock_open`
+
+- bpo-27737: Allow whitespace only header encoding in ``email.header`` - by
+  Batuhan Taskaya
+
+- bpo-36969: PDB command `args` now  display positional only arguments.
+  Patch contributed by Rémi Lapeyre.
+
+- bpo-36969: PDB command `args` now  display keyword only arguments. Patch
+  contributed by Rémi Lapeyre.
+
+- bpo-36983: Add missing names to ``typing.__all__``: ``ChainMap``,
+  ``ForwardRef``, ``OrderedDict`` - by Anthony Sottile.
+
+- bpo-36972: Add SupportsIndex protocol to the typing module to allow type
+  checking to detect classes that can be passed to `hex()`, `oct()` and
+  `bin()`.
+
+- bpo-32972: Implement ``unittest.IsolatedAsyncioTestCase`` to help testing
+  asyncio-based code.
+
+- bpo-36952: :func:`fileinput.input` and :class:`fileinput.FileInput`
+  **bufsize** argument has been removed (was deprecated and ignored since
+  Python 3.6), and as a result the **mode** and **openhook** arguments have
+  been made keyword-only.
+
+- bpo-36952: Starting with Python 3.3, importing ABCs from
+  :mod:`collections` is deprecated, and import should be done from
+  :mod:`collections.abc`. Still being able to import from :mod:`collections`
+  was marked for removal in 3.8, but has been delayed to 3.9; documentation
+  and ``DeprecationWarning`` clarified.
+
+- bpo-36949: Implement __repr__ for WeakSet objects.
+
+- bpo-36948: Fix :exc:`NameError` in
+  :meth:`urllib.request.URLopener.retrieve`. Patch by Karthikeyan
+  Singaravelan.
+
+- bpo-33524: Fix the folding of email header when the max_line_length is 0
+  or None and the header contains non-ascii characters.  Contributed by
+  Licht Takeuchi (@Licht-T).
+
+- bpo-24564: :func:`shutil.copystat` now ignores :const:`errno.EINVAL` on
+  :func:`os.setxattr` which may occur when copying files on filesystems
+  without extended attributes support.
+
+  Original patch by Giampaolo Rodola, updated by Ying Wang.
+
+- bpo-36888: Python child processes can now access the status of their
+  parent process using multiprocessing.process.parent_process
+
+- bpo-36921: Deprecate ``@coroutine`` for sake of ``async def``.
+
+- bpo-25652: Fix bug in ``__rmod__`` of ``UserString`` - by Batuhan Taskaya.
+
+- bpo-36916: Remove a message about an unhandled exception in a task when
+  writer.write() is used without await and writer.drain() fails with an
+  exception.
+
+- bpo-36889: Introduce :class:`asyncio.Stream` class that merges
+  :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter`
+  functionality. :class:`asyncio.Stream` can work in readonly, writeonly and
+  readwrite modes. Provide :func:`asyncio.connect`,
+  :func:`asyncio.connect_unix`, :func:`asyncio.connect_read_pipe` and
+  :func:`asyncio.connect_write_pipe` factories to open
+  :class:`asyncio.Stream` connections. Provide :class:`asyncio.StreamServer`
+  and :class:`UnixStreamServer` to serve servers with asyncio.Stream API.
+  Modify :func:`asyncio.create_subprocess_shell` and
+  :func:`asyncio.create_subprocess_exec` to use :class:`asyncio.Stream`
+  instead of deprecated :class:`StreamReader` and :class:`StreamWriter`.
+  Deprecate :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter`.
+  Deprecate usage of private classes, e.g.
+  :class:`asyncio.FlowControlMixing` and
+  :class:`asyncio.StreamReaderProtocol` outside of asyncio package.
+
+- bpo-36845: Added validation of integer prefixes to the construction of IP
+  networks and interfaces in the ipaddress module.
+
+- bpo-23378: Add an extend action to argparser.
+
+- bpo-36867: Fix a bug making a SharedMemoryManager instance and its parent
+  process use two separate resource_tracker processes.
+
+- bpo-23896: Adds a grammar to lib2to3.pygram that contains exec as a
+  function not as statement.
+
+- bpo-36895: The function ``time.clock()`` was deprecated in 3.3 in favor of
+  ``time.perf_counter()`` and marked for removal in 3.8, it has removed.
+
+- bpo-35545: Fix asyncio discarding IPv6 scopes when ensuring hostname
+  resolutions internally
+
+- bpo-36887: Add new function :func:`math.isqrt` to compute integer square
+  roots.
+
+- bpo-34632: Introduce the ``importlib.metadata`` module with (provisional)
+  support for reading metadata from third-party packages.
+
+- bpo-36878: When using `type_comments=True` in `ast.parse`, treat `# type:
+  ignore` followed by a non-alphanumeric character and then arbitrary text
+  as a type ignore, instead of requiring nothing but whitespace or another
+  comment. This is to permit formations such as `# type: ignore[E1000]`.
+
+- bpo-36778: ``cp65001`` encoding (Windows code page 65001) becomes an alias
+  to ``utf_8`` encoding.
+
+- bpo-36867: The multiprocessing.resource_tracker replaces the
+  multiprocessing.semaphore_tracker module. Other than semaphores,
+  resource_tracker also tracks shared_memory segments.
+
+- bpo-30262: The ``Cache`` and ``Statement`` objects of the :mod:`sqlite3`
+  module are not exposed to the user.  Patch by Aviv Palivoda.
+
+- bpo-24538: In `shutil.copystat()`, first copy extended file attributes and
+  then file permissions, since extended attributes can only be set on the
+  destination while it is still writeable.
+
+- bpo-36829: Add new :func:`sys.unraisablehook` function which can be
+  overridden to control how "unraisable exceptions" are handled. It is
+  called when an exception has occurred but there is no way for Python to
+  handle it. For example, when a destructor raises an exception or during
+  garbage collection (:func:`gc.collect`).
+
+- bpo-36832: Introducing ``zipfile.Path``, a pathlib-compatible wrapper for
+  traversing zip files.
+
+- bpo-36814: Fix an issue where os.posix_spawnp() would incorrectly raise a
+  TypeError when file_actions is None.
+
+- bpo-33110: Handle exceptions raised by functions added by
+  concurrent.futures add_done_callback correctly when the Future has already
+  completed.
+
+- bpo-26903: Limit `max_workers` in `ProcessPoolExecutor` to 61 to work
+  around a WaitForMultipleObjects limitation.
+
+- bpo-36813: Fix :class:`~logging.handlers.QueueListener` to call
+  ``queue.task_done()`` upon stopping. Patch by Bar Harel.
+
+- bpo-36806: Forbid creation of asyncio stream objects like StreamReader,
+  StreamWriter, Process, and their protocols outside of asyncio package.
+
+- bpo-36802: Provide both sync and async calls for StreamWriter.write() and
+  StreamWriter.close()
+
+- bpo-36801: Properly handle SSL connection closing in asyncio
+  StreamWriter.drain() call.
+
+- bpo-36785: Implement PEP 574 (pickle protocol 5 with out-of-band buffers).
+
+- bpo-36772: functools.lru_cache() can now be used as a straight decorator
+  in addition to its existing usage as a function that returns a decorator.
+
+- bpo-6584: Add a :exc:`~gzip.BadGzipFile` exception to the :mod:`gzip`
+  module.
+
+- bpo-36748: Optimized write buffering in C implementation of
+  ``TextIOWrapper``. Writing ASCII string to ``TextIOWrapper`` with ascii,
+  latin1, or utf-8 encoding is about 20% faster.  Patch by Inada Naoki.
+
+- bpo-8138: Don't mark ``wsgiref.simple_server.SimpleServer`` as
+  multi-threaded since ``wsgiref.simple_server.WSGIServer`` is
+  single-threaded.
+
+- bpo-22640: :func:`py_compile.compile` now supports silent mode. Patch by
+  Joannah Nanjekye
+
+- bpo-29183: Fix double exceptions in :class:`wsgiref.handlers.BaseHandler`
+  by calling its :meth:`~wsgiref.handlers.BaseHandler.close` method only
+  when no exception is raised.
+
+- bpo-36548: Improved the repr of regular expression flags.
+
+- bpo-36542: The signature of Python functions can now be overridden by
+  specifying the ``__text_signature__`` attribute.
+
+- bpo-36533: Reinitialize logging.Handler locks in forked child processes
+  instead of attempting to acquire them all in the parent before forking
+  only to be released in the child process.  The acquire/release pattern was
+  leading to deadlocks in code that has implemented any form of chained
+  logging handlers that depend upon one another as the lock acquisition
+  order cannot be guaranteed.
+
+- bpo-35252: Throw a TypeError instead of an AssertionError when using an
+  invalid type annotation with singledispatch.
+
+- bpo-35900: Allow reduction methods to return a 6-item tuple where the 6th
+  item specifies a custom state-setting method that's called instead of the
+  regular ``__setstate__`` method.
+
+- bpo-35900: enable custom reduction callback registration for functions and
+  classes in _pickle.c, using the new Pickler's attribute
+  ``reducer_override``
+
+- bpo-36368: Fix a bug crashing SharedMemoryManager instances in interactive
+  sessions after a ctrl-c (KeyboardInterrupt) was sent
+
+- bpo-31904: Fix mmap fail for VxWorks
+
+- bpo-27497: :meth:`csv.DictWriter.writeheader` now returns the return value
+  of the underlying :meth:`csv.Writer.writerow` method. Patch contributed by
+  Ashish Nitin Patil.
+
+- bpo-36239: Parsing .mo files now ignores comments starting and ending with
+  #-#-#-#-#.
+
+- bpo-26707: Enable plistlib to read and write binary plist files that were
+  created as a KeyedArchive file. Specifically, this allows the plistlib to
+  process 0x80 tokens as UID objects.
+
+- bpo-31904: Add posix module support for VxWorks.
+
+- bpo-35125: Asyncio: Remove inner callback on outer cancellation in shield
+
+- bpo-35721: Fix :meth:`asyncio.SelectorEventLoop.subprocess_exec()` leaks
+  file descriptors if ``Popen`` fails and called with
+  ``stdin=subprocess.PIPE``. Patch by Niklas Fiekas.
+
+- bpo-31855: :func:`unittest.mock.mock_open` results now respects the
+  argument of read([size]). Patch contributed by Rémi Lapeyre.
+
+- bpo-35431: Implement :func:`math.comb` that returns binomial coefficient,
+  that computes the number of ways to choose k items from n items without
+  repetition and without order. Patch by Yash Aggarwal and Keller Fuchs.
+
+- bpo-26660: Fixed permission errors in
+  :class:`~tempfile.TemporaryDirectory` clean up. Previously
+  ``TemporaryDirectory.cleanup()`` failed when non-writeable or
+  non-searchable files or directories were created inside a temporary
+  directory.
+
+- bpo-34271: Add debugging helpers to ssl module. It's now possible to dump
+  key material and to trace TLS protocol. The default and stdlib contexts
+  also support SSLKEYLOGFILE env var.
+
+- bpo-26467: Added AsyncMock to support using unittest to mock asyncio
+  coroutines. Patch by Lisa Roach.
+
+- bpo-33569: dataclasses.InitVar: Exposes the type used to create the init
+  var.
+
+- bpo-34424: Fix serialization of messages containing encoded strings when
+  the policy.linesep is set to a multi-character string. Patch by Jens
+  Troeger.
+
+- bpo-34303: Performance of :func:`functools.reduce` is slightly improved.
+  Patch by Sergey Fedoseev.
+
+- bpo-33361: Fix a bug in :class:`codecs.StreamRecoder` where seeking might
+  leave old data in a buffer and break subsequent read calls. Patch by Ammar
+  Askar.
+
+- bpo-22454: The :mod:`shlex` module now exposes :func:`shlex.join`, the
+  inverse of :func:`shlex.split`. Patch by Bo Bayles.
+
+- bpo-31922: :meth:`asyncio.AbstractEventLoop.create_datagram_endpoint`: Do
+  not connect UDP socket when broadcast is allowed. This allows to receive
+  replies after a UDP broadcast.
+
+- bpo-24882: Change ThreadPoolExecutor to use existing idle threads before
+  spinning up new ones.
+
+- bpo-31961: Added support for bytes and path-like objects in
+  :func:`subprocess.Popen` on Windows.  The *args* parameter now accepts a
+  :term:`path-like object` if *shell* is ``False`` and a sequence containing
+  bytes and path-like objects. The *executable* parameter now accepts a
+  bytes and :term:`path-like object`. The *cwd* parameter now accepts a
+  bytes object. Based on patch by Anders Lorentsen.
+
+- bpo-33123: :class:`pathlib.Path.unlink` now accepts a *missing_ok*
+  parameter to avoid a :exc:`FileNotFoundError` from being raised. Patch by
+  Robert Buchholz.
+
+- bpo-32941: Allow :class:`mmap.mmap` objects to access the madvise() system
+  call (through :meth:`mmap.mmap.madvise`).
+
+- bpo-22102: Added support for ZIP files with disks set to 0. Such files are
+  commonly created by builtin tools on Windows when use ZIP64 extension.
+  Patch by Francisco Facioni.
+
+- bpo-32515: trace.py can now run modules via python3 -m trace -t --module
+  module_name
+
+- bpo-32299: Changed :func:`unittest.mock.patch.dict` to return the patched
+  dictionary when used as context manager. Patch by Vadim Tsander.
+
+- bpo-27141: Added a ``__copy__()`` to ``collections.UserList`` and
+  ``collections.UserDict`` in order to correctly implement shallow copying
+  of the objects. Patch by Bar Harel.
+
+- bpo-31829: ``\r``, ``\0`` and ``\x1a`` (end-of-file on Windows) are now
+  escaped in protocol 0 pickles of Unicode strings. This allows to load them
+  without loss from files open in text mode in Python 2.
+
+- bpo-23395: ``_thread.interrupt_main()`` now avoids setting the Python
+  error status if the ``SIGINT`` signal is ignored or not handled by Python.
+
+Documentation
+-------------
+
+- bpo-36896: Clarify that some types have unstable constructor signature
+  between Python versions.
+
+- bpo-36686: Improve documentation of the stdin, stdout, and stderr
+  arguments of of the ``asyncio.subprocess_exec`` function to specify which
+  values are supported. Also mention that decoding as text is not supported.
+
+  Add a few tests to verify that the various values passed to the std*
+  arguments actually work.
+
+- bpo-36984: Improve version added references in ``typing`` module - by
+  Anthony Sottile.
+
+- bpo-36868: What's new now mentions SSLContext.hostname_checks_common_name
+  instead of SSLContext.host_flags.
+
+- bpo-35924: Add a note to the ``curses.addstr()`` documentation to warn
+  that multiline strings can cause segfaults because of an ncurses bug.
+
+- bpo-36783: Added C API Documentation for Time_FromTimeAndFold and
+  PyDateTime_FromDateAndTimeAndFold as per PEP 495. Patch by Edison
+  Abahurire.
+
+- bpo-36797: More of the legacy distutils documentation has been either
+  pruned, or else more clearly marked as being retained solely until the
+  setuptools documentation covers it independently.
+
+- bpo-22865: Add detail to the documentation on the `pty.spawn` function.
+
+- bpo-35397: Remove deprecation and document urllib.parse.unwrap(). Patch
+  contributed by Rémi Lapeyre.
+
+- bpo-32995: Added the context variable in glossary.
+
+- bpo-33519: Clarify that `copy()` is not part of the `MutableSequence` ABC.
+
+- bpo-33482: Make `codecs.StreamRecoder.writelines` take a list of bytes.
+
+- bpo-25735: Added documentation for func factorial to indicate that returns
+  integer values
+
+- bpo-20285: Expand object.__doc__ (docstring) to make it clearer. Modify
+  pydoc.py so that help(object) lists object methods (for other classes,
+  help omits methods of the object base class.)
+
+Tests
+-----
+
+- bpo-37069: Modify test_coroutines, test_cprofile, test_generators,
+  test_raise, test_ssl and test_yield_from to use
+  :func:`test.support.catch_unraisable_exception` rather than
+  :func:`test.support.captured_stderr`.
+
+- bpo-37098: Fix test_memfd_create on older Linux Kernels.
+
+- bpo-37081: Test with OpenSSL 1.1.1c
+
+- bpo-36829: Add :func:`test.support.catch_unraisable_exception`: context
+  manager catching unraisable exception using :func:`sys.unraisablehook`.
+
+- bpo-36915: The main regrtest process now always removes all temporary
+  directories of worker processes even if they crash or if they are killed
+  on KeyboardInterrupt (CTRL+c).
+
+- bpo-36719: "python3 -m test -jN ..." now continues the execution of next
+  tests when a worker process crash (CHILD_ERROR state). Previously, the
+  test suite stopped immediately. Use --failfast to stop at the first error.
+
+- bpo-36816: Update Lib/test/selfsigned_pythontestdotnet.pem to match
+  self-signed.pythontest.net's new TLS certificate.
+
+- bpo-35925: Skip httplib and nntplib networking tests when they would
+  otherwise fail due to a modern OS or distro with a default OpenSSL policy
+  of rejecting connections to servers with weak certificates.
+
+- bpo-36782: Add tests for several C API functions in the :mod:`datetime`
+  module. Patch by Edison Abahurire.
+
+- bpo-36342: Fix test_multiprocessing in test_venv if platform lacks
+  functioning sem_open.
+
+Build
+-----
+
+- bpo-36721: To embed Python into an application, a new ``--embed`` option
+  must be passed to ``python3-config --libs --embed`` to get ``-lpython3.8``
+  (link the application to libpython). To support both 3.8 and older, try
+  ``python3-config --libs --embed`` first and fallback to ``python3-config
+  --libs`` (without ``--embed``) if the previous command fails.
+
+  Add a pkg-config ``python-3.8-embed`` module to embed Python into an
+  application: ``pkg-config python-3.8-embed --libs`` includes
+  ``-lpython3.8``. To support both 3.8 and older, try ``pkg-config
+  python-X.Y-embed --libs`` first and fallback to ``pkg-config python-X.Y
+  --libs`` (without ``--embed``) if the previous command fails (replace
+  ``X.Y`` with the Python version).
+
+  On the other hand, ``pkg-config python3.8 --libs`` no longer contains
+  ``-lpython3.8``. C extensions must not be linked to libpython (except on
+  Android, case handled by the script); this change is backward incompatible
+  on purpose.
+
+- bpo-36786: "make install" now runs compileall in parallel.
+
+Windows
+-------
+
+- bpo-36965: include of STATUS_CONTROL_C_EXIT without depending on MSC
+  compiler
+
+- bpo-35926: Update to OpenSSL 1.1.1b for Windows.
+
+- bpo-29883: Add Windows support for UDP transports for the Proactor Event
+  Loop. Patch by Adam Meily.
+
+- bpo-33407: The :c:macro:`Py_DEPRECATED()` macro has been implemented for
+  MSVC.
+
+macOS
+-----
+
+- bpo-36231: Support building Python on macOS without /usr/include
+  installed. As of macOS 10.14, system header files are only available
+  within an SDK provided by either the Command Line Tools or the Xcode app.
+
+IDLE
+----
+
+- bpo-35610: Replace now redundant .context_use_ps1 with .prompt_last_line.
+  This finishes change started in bpo-31858.
+
+- bpo-37038: Make idlelib.run runnable; add test clause.
+
+- bpo-36958: Print any argument other than None or int passed to SystemExit
+  or sys.exit().
+
+- bpo-36807: When saving a file, call os.fsync() so bits are flushed to e.g.
+  USB drive.
+
+- bpo-32411: In browser.py, remove extraneous sorting by line number since
+  dictionary was created in line number order.
+
+Tools/Demos
+-----------
+
+- bpo-37053: Handle strings like u"bar" correctly in
+  Tools/parser/unparse.py. Patch by Chih-Hsuan Yen.
+
+C API
+-----
+
+- bpo-36763: Implement the :pep:`587` "Python Initialization Configuration".
+
+- bpo-36379: Fix crashes when attempting to use the *modulo* parameter when
+  ``__ipow__`` is implemented in C.
+
+- bpo-37107: Update :c:func:`PyObject_CallMethodObjArgs` and
+  ``_PyObject_CallMethodIdObjArgs`` to use ``_PyObject_GetMethod`` to avoid
+  creating a bound method object in many cases. Patch by Michael J.
+  Sullivan.
+
+- bpo-36974: Implement :pep:`590`: Vectorcall: a fast calling protocol for
+  CPython. This is a new protocol to optimize calls of custom callable
+  objects.
+
+- bpo-36763: ``Py_Main()`` now returns the exitcode rather than calling
+  ``Py_Exit(exitcode)`` when calling ``PyErr_Print()`` if the current
+  exception type is ``SystemExit``.
+
+- bpo-36922: Add new type flag ``Py_TPFLAGS_METHOD_DESCRIPTOR`` for objects
+  behaving like unbound methods. These are objects supporting the
+  optimization given by the ``LOAD_METHOD``/``CALL_METHOD`` opcodes. See PEP
+  590.
+
+- bpo-36728: The :c:func:`PyEval_ReInitThreads` function has been removed
+  from the C API. It should not be called explicitly: use
+  :c:func:`PyOS_AfterFork_Child` instead.
+
+
+What's New in Python 3.8.0 alpha 4?
+===================================
+
+*Release date: 2019-05-06*
+
+Security
+--------
+
+- bpo-36742: Fixes mishandling of pre-normalization characters in
+  urlsplit().
+
+- bpo-30458: Address CVE-2019-9740 by disallowing URL paths with embedded
+  whitespace or control characters through into the underlying http client
+  request.  Such potentially malicious header injection URLs now cause an
+  http.client.InvalidURL exception to be raised.
+
+- bpo-35755: :func:`shutil.which` now uses ``os.confstr("CS_PATH")`` if
+  available and if the :envvar:`PATH` environment variable is not set.
+  Remove also the current directory from :data:`posixpath.defpath`. On Unix,
+  :func:`shutil.which` and the :mod:`subprocess` module no longer search the
+  executable in the current directory if the :envvar:`PATH` environment
+  variable is not set.
+
+Core and Builtins
+-----------------
+
+- bpo-36722: In debug build, import now also looks for C extensions compiled
+  in release mode and for C extensions compiled in the stable ABI.
+
+- bpo-32849: Fix Python Initialization code on FreeBSD to detect properly
+  when stdin file descriptor (fd 0) is invalid.
+
+- bpo-36623: Remove parser headers and related function declarations that
+  lack implementations after the removal of pgen.
+
+- bpo-20180: ``dict.pop()`` is now up to 33% faster thanks to Argument
+  Clinic. Patch by Inada Naoki.
+
+- bpo-36611: Debug memory allocators: disable serialno field by default from
+  debug hooks on Python memory allocators to reduce the memory footprint by
+  5%. Enable :mod:`tracemalloc` to get the traceback where a memory block
+  has been allocated when a fatal memory error is logged to decide where to
+  put a breakpoint. Compile Python with ``PYMEM_DEBUG_SERIALNO`` defined to
+  get back the field.
+
+- bpo-36588: On AIX, :attr:`sys.platform` doesn't contain the major version
+  anymore. Always return ``'aix'``, instead of ``'aix3'`` .. ``'aix7'``.
+  Since older Python versions include the version number, it is recommended
+  to always use ``sys.platform.startswith('aix')``. Contributed by M. Felt.
+
+- bpo-36549: Change str.capitalize to use titlecase for the first character
+  instead of uppercase.
+
+- bpo-36540: Implement :pep:`570` (Python positional-only parameters). Patch
+  by Pablo Galindo.
+
+- bpo-36475: :c:func:`PyEval_AcquireLock` and :c:func:`PyEval_AcquireThread`
+  now terminate the current thread if called while the interpreter is
+  finalizing, making them consistent with :c:func:`PyEval_RestoreThread`,
+  :c:func:`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`.
+
+- bpo-36504: Fix signed integer overflow in _ctypes.c's
+  ``PyCArrayType_new()``.
+
+- bpo-20844: Fix running script with encoding cookie and LF line ending may
+  fail on Windows.
+
+- bpo-24214: Fixed support of the surrogatepass error handler in the UTF-8
+  incremental decoder.
+
+- bpo-36452: Changing ``dict`` keys during iteration of the dict itself,
+  ``keys()``, ``values()``, or ``items()`` will now be detected in certain
+  corner cases where keys are deleted/added so that the number of keys isn't
+  changed. A `RuntimeError` will be raised after ``len(dict)`` iterations.
+  Contributed by Thomas Perl.
+
+- bpo-36459: Fix a possible double ``PyMem_FREE()`` due to tokenizer.c's
+  ``tok_nextc()``.
+
+- bpo-36433: Fixed TypeError message in classmethoddescr_call.
+
+- bpo-36430: Fix a possible reference leak in :func:`itertools.count`.
+
+- bpo-36440: Include node names in ``ParserError`` messages, instead of
+  numeric IDs. Patch by A. Skrobov.
+
+- bpo-36143: Regenerate :mod:`keyword` from the Grammar and Tokens file
+  using pgen. Patch by Pablo Galindo.
+
+- bpo-18372: Add missing :c:func:`PyObject_GC_Track` calls in the
+  :mod:`pickle` module. Patch by Zackery Spytz.
+
+Library
+-------
+
+- bpo-35952: Fix pythoninfo when the compiler is missing.
+
+- bpo-28238: The ``.find*()`` methods of xml.etree.ElementTree can now
+  search for wildcards like ``{*}tag`` and ``{ns}*`` that match a tag in any
+  namespace or all tags in a namespace.  Patch by Stefan Behnel.
+
+- bpo-26978: `pathlib.path.link_to()` is now implemented. It creates a hard
+  link pointing to a path.
+
+- bpo-1613500: :class:`fileinput.FileInput` now uses the input file mode to
+  correctly set the output file mode (previously it was hardcoded to
+  ``'w'``)  when ``inplace=True`` is passed to its constructor.
+
+- bpo-36734: Fix compilation of ``faulthandler.c`` on HP-UX. Initialize
+  ``stack_t current_stack`` to zero using ``memset()``.
+
+- bpo-13611: The xml.etree.ElementTree packages gained support for C14N 2.0
+  serialisation. Patch by Stefan Behnel.
+
+- bpo-36669: Add missing matrix multiplication operator support to
+  weakref.proxy.
+
+- bpo-36676: The XMLParser() in xml.etree.ElementTree provides namespace
+  prefix context to the parser target if it defines the callback methods
+  "start_ns()" and/or "end_ns()". Patch by Stefan Behnel.
+
+- bpo-36673: The TreeBuilder and XMLPullParser in xml.etree.ElementTree
+  gained support for parsing comments and processing instructions. Patch by
+  Stefan Behnel.
+
+- bpo-36650: The C version of functools.lru_cache() was treating calls with
+  an empty ``**kwargs`` dictionary as being distinct from calls with no
+  keywords at all. This did not result in an incorrect answer, but it did
+  trigger an unexpected cache miss.
+
+- bpo-28552: Fix :mod:`distutils.sysconfig` if :data:`sys.executable` is
+  ``None`` or an empty string: use :func:`os.getcwd` to initialize
+  ``project_base``.  Fix also the distutils build command: don't use
+  :data:`sys.executable` if it is ``None`` or an empty string.
+
+- bpo-35755: :func:`shutil.which` and
+  :func:`distutils.spawn.find_executable` now use ``os.confstr("CS_PATH")``
+  if available instead of :data:`os.defpath`, if the ``PATH`` environment
+  variable is not set. Moreover, don't use ``os.confstr("CS_PATH")`` nor
+  :data:`os.defpath` if the ``PATH`` environment variable is set to an empty
+  string.
+
+- bpo-25430: improve performance of ``IPNetwork.__contains__()``
+
+- bpo-30485: Path expressions in xml.etree.ElementTree can now avoid
+  explicit namespace prefixes for tags (or the "{namespace}tag" notation) by
+  passing a default namespace with an empty string prefix.
+
+- bpo-36613: Fix :mod:`asyncio` wait() not removing callback if exception
+
+- bpo-36598: Fix ``isinstance`` check for Mock objects with spec when the
+  code is executed under tracing. Patch by Karthikeyan Singaravelan.
+
+- bpo-18748: In development mode (:option:`-X` ``dev``) and in debug build,
+  the :class:`io.IOBase` destructor now logs ``close()`` exceptions. These
+  exceptions are silent by default in release mode.
+
+- bpo-36575: The ``_lsprof`` module now uses internal timer same to
+  ``time.perf_counter()`` by default. ``gettimeofday(2)`` was used on Unix.
+  New timer has better resolution on most Unix platforms and timings are no
+  longer impacted by system clock updates since ``perf_counter()`` is
+  monotonic. Patch by Inada Naoki.
+
+- bpo-33461: ``json.loads`` now emits ``DeprecationWarning`` when
+  ``encoding`` option is specified.  Patch by Matthias Bussonnier.
+
+- bpo-36559: The random module now prefers the lean internal _sha512 module
+  over hashlib for seed(version=2) to optimize import time.
+
+- bpo-17561: Set backlog=None as the default for socket.create_server.
+
+- bpo-34373: Fix :func:`time.mktime` error handling on AIX for year before
+  1970.
+
+- bpo-36232: Improve error message when trying to open existing DBM database
+  that actually doesn't exist. Patch by Marco Rougeth.
+
+- bpo-36546: Add statistics.quantiles()
+
+- bpo-36050: Optimized ``http.client.HTTPResponse.read()`` for large
+  response. Patch by Inada Naoki.
+
+- bpo-36522: If *debuglevel* is set to >0 in :mod:`http.client`, print all
+  values for headers with multiple values for the same header name. Patch by
+  Matt Houglum.
+
+- bpo-36492: Deprecated passing required arguments like *func* as keyword
+  arguments in functions which should accept arbitrary keyword arguments and
+  pass them to other function. Arbitrary keyword arguments (even with names
+  "self" and "func") can now be passed to these functions if the required
+  arguments are passed as positional arguments.
+
+- bpo-27181: Add statistics.geometric_mean().
+
+- bpo-30427: ``os.path.normcase()`` relies on ``os.fspath()`` to check the
+  type of its argument. Redundant checks have been removed from its
+  ``posixpath.normcase()`` and ``ntpath.normcase()`` implementations. Patch
+  by Wolfgang Maier.
+
+- bpo-36385: Stop rejecting IPv4 octets for being ambiguously octal. Leading
+  zeros are ignored, and no longer are assumed to specify octal octets.
+  Octets are always decimal numbers. Octets must still be no more than three
+  digits, including leading zeroes.
+
+- bpo-36434: Errors during writing to a ZIP file no longer prevent to
+  properly close it.
+
+- bpo-36407: Fixed wrong indentation writing for CDATA section in
+  xml.dom.minidom. Patch by Vladimir Surjaninov.
+
+- bpo-36326: inspect.getdoc() can now find docstrings for member objects
+  when __slots__ is a dictionary.
+
+- bpo-36366: Calling ``stop()`` on an unstarted or stopped
+  :func:`unittest.mock.patch` object will now return `None` instead of
+  raising :exc:`RuntimeError`, making the method idempotent. Patch by
+  Karthikeyan Singaravelan.
+
+- bpo-36348: The :meth:`imap.IMAP4.logout` method no longer ignores silently
+  arbitrary exceptions.
+
+- bpo-31904: Add time module support and fix test_time faiures for VxWorks.
+
+- bpo-36227: Added support for keyword arguments `default_namespace` and
+  `xml_declaration` in functions ElementTree.tostring() and
+  ElementTree.tostringlist().
+
+- bpo-36004: Added new alternate constructors
+  :meth:`datetime.date.fromisocalendar` and
+  :meth:`datetime.datetime.fromisocalendar`, which construct date objects
+  from ISO year, week number and weekday; these are the inverse of each
+  class's ``isocalendar`` method. Patch by Paul Ganssle.
+
+- bpo-35936: :mod:`modulefinder` no longer depends on the deprecated
+  :mod:`imp` module, and the initializer for
+  :class:`modulefinder.ModuleFinder` now has immutable default arguments.
+  Patch by Brandt Bucher.
+
+- bpo-35376: :mod:`modulefinder` correctly handles modules that have the
+  same name as a bad package. Patch by Brandt Bucher.
+
+- bpo-17396: :mod:`modulefinder` no longer crashes when encountering syntax
+  errors in followed imports. Patch by Brandt Bucher.
+
+- bpo-35934: Added :meth:`~socket.create_server()` and
+  :meth:`~socket.has_dualstack_ipv6()` convenience functions to automate the
+  necessary tasks usually involved when creating a server socket, including
+  accepting both IPv4 and IPv6 connections on the same socket.  (Contributed
+  by Giampaolo Rodola in :issue:`17561`.)
+
+- bpo-23078: Add support for :func:`classmethod` and :func:`staticmethod` to
+  :func:`unittest.mock.create_autospec`.  Initial patch by Felipe Ochoa.
+
+- bpo-35416: Fix potential resource warnings in distutils. Patch by Mickaël
+  Schoentgen.
+
+- bpo-25451: Add transparency methods to :class:`tkinter.PhotoImage`.  Patch
+  by Zackery Spytz.
+
+- bpo-35082: Don't return deleted attributes when calling dir on a
+  :class:`unittest.mock.Mock`.
+
+- bpo-34547: :class:`wsgiref.handlers.BaseHandler` now handles abrupt client
+  connection terminations gracefully. Patch by Petter Strandmark.
+
+- bpo-31658: :func:`xml.sax.parse` now supports :term:`path-like <path-like
+  object>`. Patch by Mickaël Schoentgen.
+
+- bpo-34139: Remove stale unix datagram socket before binding
+
+- bpo-33530: Implemented Happy Eyeballs in `asyncio.create_connection()`.
+  Added two new arguments, *happy_eyeballs_delay* and *interleave*, to
+  specify Happy Eyeballs behavior.
+
+- bpo-33291: Do not raise AttributeError when calling the inspect functions
+  isgeneratorfunction, iscoroutinefunction, isasyncgenfunction on a method
+  created from an arbitrary callable. Instead, return False.
+
+- bpo-31310: Fix the multiprocessing.semaphore_tracker so it is reused by
+  child processes
+
+- bpo-31292: Fix ``setup.py check --restructuredtext`` for files containing
+  ``include`` directives.
+
+Documentation
+-------------
+
+- bpo-36625: Remove obsolete comments from docstrings in fractions.Fraction
+
+- bpo-30840: Document relative imports
+
+- bpo-36523: Add docstring for io.IOBase.writelines().
+
+- bpo-36425: New documentation translation: `Simplified Chinese
+  <https://docs.python.org/zh-cn/>`_.
+
+- bpo-36345: Avoid the duplication of code from ``Tools/scripts/serve.py``
+  in using the :rst:dir:`literalinclude` directive for the basic
+  wsgiref-based web server in the documentation of :mod:`wsgiref`.
+  Contributed by Stéphane Wirtel.
+
+- bpo-36345: Using the code of the ``Tools/scripts/serve.py`` script as an
+  example in the :mod:`wsgiref` documentation.  Contributed by Stéphane
+  Wirtel.
+
+- bpo-36157: Added Documention for  PyInterpreterState_Main().
+
+- bpo-33043: Updates the docs.python.org page with the addition of a
+  'Contributing to Docs' link at the end of the page (between 'Reporting
+  Bugs' and 'About Documentation'). Updates the 'Found a Bug' page with
+  additional links and information in the Documentation Bugs section.
+
+- bpo-35581: @typing.type_check_only now allows type stubs to mark functions
+  and classes not available during runtime.
+
+- bpo-33832: Add glossary entry for 'magic method'.
+
+- bpo-32913: Added re.Match.groupdict example to regex HOWTO.
+
+Tests
+-----
+
+- bpo-36719: regrtest now always detects uncollectable objects. Previously,
+  the check was only enabled by ``--findleaks``. The check now also works
+  with ``-jN/--multiprocess N``. ``--findleaks`` becomes a deprecated alias
+  to ``--fail-env-changed``.
+
+- bpo-36725: When using mulitprocessing mode (-jN), regrtest now better
+  reports errors if a worker process fails, and it exits immediately on a
+  worker thread failure or when interrupted.
+
+- bpo-36454: Change test_time.test_monotonic() to test only the lower bound
+  of elapsed time after a sleep command rather than the upper bound. This
+  prevents unnecessary test failures on slow buildbots. Patch by Victor
+  Stinner.
+
+- bpo-32424: Improve test coverage for xml.etree.ElementTree. Patch by
+  Gordon P. Hemsley.
+
+- bpo-32424: Fix typo in test_cyclic_gc() test for xml.etree.ElementTree.
+  Patch by Gordon P. Hemsley.
+
+- bpo-36635: Add a new :mod:`_testinternalcapi` module to test the internal
+  C API.
+
+- bpo-36629: Fix ``test_imap4_host_default_value()`` of ``test_imaplib``:
+  catch also :data:`errno.ENETUNREACH` error.
+
+- bpo-36611: Fix ``test_sys.test_getallocatedblocks()`` when
+  :mod:`tracemalloc` is enabled.
+
+- bpo-36560: Fix reference leak hunting in regrtest: compute also deltas (of
+  reference count, allocated memory blocks, file descriptor count) during
+  warmup, to ensure that everything is initialized before starting to hunt
+  reference leaks.
+
+- bpo-36565: Fix reference hunting (``python3 -m test -R 3:3``) when Python
+  has no built-in abc module.
+
+- bpo-31904: Port test_resource to VxWorks: skip tests cases setting
+  RLIMIT_FSIZE and RLIMIT_CPU.
+
+- bpo-31904: Fix test_tabnanny on VxWorks: adjust ENOENT error message.
+
+- bpo-36436: Fix ``_testcapi.pymem_buffer_overflow()``: handle memory
+  allocation failure.
+
+- bpo-31904: Fix test_utf8_mode on VxWorks: Python always use UTF-8 on
+  VxWorks.
+
+- bpo-36341: Fix tests that may fail with PermissionError upon calling
+  bind() on AF_UNIX sockets.
+
+Build
+-----
+
+- bpo-36747: Remove the stale scriptsinstall Makefile target.
+
+- bpo-21536: On Unix, C extensions are no longer linked to libpython except
+  on Android and Cygwin.
+
+  It is now possible for a statically linked Python to load a C extension
+  built using a shared library Python.
+
+  When Python is embedded, ``libpython`` must not be loaded with
+  ``RTLD_LOCAL``, but ``RTLD_GLOBAL`` instead. Previously, using
+  ``RTLD_LOCAL``, it was already not possible to load C extensions which
+  were not linked to ``libpython``, such as C extensions of the standard
+  library built by the ``*shared*`` section of ``Modules/Setup``.
+
+  distutils, python-config and python-config.py have been modified.
+
+- bpo-36707: ``./configure --with-pymalloc`` no longer adds the ``m`` flag
+  to SOABI (sys.implementation.cache_tag). Enabling or disabling pymalloc
+  has no impact on the ABI.
+
+- bpo-36635: Change ``PyAPI_FUNC(type)``, ``PyAPI_DATA(type)`` and
+  ``PyMODINIT_FUNC`` macros of ``pyport.h`` when ``Py_BUILD_CORE_MODULE`` is
+  defined. The ``Py_BUILD_CORE_MODULE`` define must be now be used to build
+  a C extension as a dynamic library accessing Python internals: export the
+  PyInit_xxx() function in DLL exports on Windows.
+
+- bpo-31904: Don't build the ``_crypt`` extension on VxWorks.
+
+- bpo-36618: Add ``-fmax-type-align=8`` to CFLAGS when clang compiler is
+  detected. The pymalloc memory allocator aligns memory on 8 bytes. On
+  x86-64, clang expects alignment on 16 bytes by default and so uses MOVAPS
+  instruction which can lead to segmentation fault. Instruct clang that
+  Python is limited to alignment on 8 bytes to use MOVUPS instruction
+  instead: slower but don't trigger a SIGSEGV if the memory is not aligned
+  on 16 bytes. Sadly, the flag must be added to ``CFLAGS`` and not just
+  ``CFLAGS_NODIST``, since third party C extensions can have the same issue.
+
+- bpo-36605: ``make tags`` and ``make TAGS`` now also parse
+  ``Modules/_io/*.c`` and ``Modules/_io/*.h``.
+
+- bpo-36465: Release builds and debug builds are now ABI compatible:
+  defining the ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS``
+  macro, which introduces the only ABI incompatibility. The
+  ``Py_TRACE_REFS`` macro, which adds the :func:`sys.getobjects` function
+  and the :envvar:`PYTHONDUMPREFS` environment variable, can be set using
+  the new ``./configure --with-trace-refs`` build option.
+
+- bpo-36577: setup.py now correctly reports missing OpenSSL headers and
+  libraries again.
+
+- bpo-36544: Fix regression introduced in bpo-36146 refactoring setup.py
+
+- bpo-36508: ``python-config --ldflags`` no longer includes flags of the
+  ``LINKFORSHARED`` variable. The ``LINKFORSHARED`` variable must only be
+  used to build executables.
+
+- bpo-36503: Remove references to "aix3" and "aix4". Patch by M. Felt.
+
+Windows
+-------
+
+- bpo-35920: Added platform.win32_edition() and platform.win32_is_iot().
+  Added support for cross-compiling packages for Windows ARM32. Skip tests
+  that are not expected to work on Windows IoT Core ARM32.
+
+- bpo-36649: Remove trailing spaces for registry keys when installed via the
+  Store.
+
+- bpo-34144: Fixed activate.bat to correctly update codepage when chcp.com
+  returns dots in output. Patch by Lorenz Mende.
+
+- bpo-36509: Added preset-iot layout for Windows IoT ARM containers. This
+  layout doesn't contain UI components like tkinter or IDLE. It also doesn't
+  contain files to support on-target builds since Windows ARM32 builds must
+  be cross-compiled when using MSVC.
+
+- bpo-35941: enum_certificates function of the ssl module now returns
+  certificates from all available certificate stores inside windows in a
+  query instead of returning only certificates from the system wide
+  certificate store. This includes certificates from these certificate
+  stores: local machine, local machine enterprise, local machine group
+  policy, current user, current user group policy, services, users.
+  ssl.enum_crls() function is changed in the same way to return all
+  certificate revocation lists inside the windows certificate revocation
+  list stores.
+
+- bpo-36441: Fixes creating a venv when debug binaries are installed.
+
+- bpo-36085: Enable better DLL resolution on Windows by using safe DLL
+  search paths and adding :func:`os.add_dll_directory`.
+
+- bpo-36010: Add the venv standard library module to the nuget distribution
+  for Windows.
+
+- bpo-29515: Add the following socket module constants on Windows:
+  IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP
+  IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM
+  IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4
+  IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM
+  IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP
+  IPPROTO_ST
+
+- bpo-35947: Added current version of libffi to cpython-source-deps. Change
+  _ctypes to use current version of libffi on Windows.
+
+- bpo-34060: Report system load when running test suite on Windows. Patch by
+  Ammar Askar. Based on prior work by Jeremy Kloth.
+
+- bpo-31512: With the Windows 10 Creators Update, non-elevated users can now
+  create symlinks as long as the computer has Developer Mode enabled.
+
+macOS
+-----
+
+- bpo-34602: Avoid failures setting macOS stack resource limit with
+  resource.setrlimit. This reverts an earlier fix for bpo-18075 which forced
+  a non-default stack size when building the interpreter executable on
+  macOS.
+
+IDLE
+----
+
+- bpo-36429: Fix starting IDLE with pyshell. Add idlelib.pyshell alias at
+  top; remove pyshell alias at bottom. Remove obsolete __name__=='__main__'
+  command.
+
+Tools/Demos
+-----------
+
+- bpo-14546: Fix the argument handling in Tools/scripts/lll.py.
+
+C API
+-----
+
+- bpo-36763: Fix memory leak in :c:func:`Py_SetStandardStreamEncoding`:
+  release memory if the function is called twice.
+
+- bpo-36641: :c:macro:`PyDoc_VAR(name)` and
+  :c:macro:`PyDoc_STRVAR(name,str)` now create ``static const char name[]``
+  instead of ``static char name[]``.  Patch by Inada Naoki.
+
+- bpo-36389: Change the value of ``CLEANBYTE``, ``DEADDYTE`` and
+  ``FORBIDDENBYTE`` internal constants used by debug hooks on Python memory
+  allocators (:c:func:`PyMem_SetupDebugHooks` function). Byte patterns
+  ``0xCB``, ``0xDB`` and ``0xFB`` have been replaced with ``0xCD``, ``0xDD``
+  and ``0xFD`` to use the same values than Windows CRT debug ``malloc()``
+  and ``free()``.
+
+- bpo-36443: Since Python 3.7.0, calling :c:func:`Py_DecodeLocale` before
+  :c:func:`Py_Initialize` produces mojibake if the ``LC_CTYPE`` locale is
+  coerced and/or if the UTF-8 Mode is enabled by the user configuration. The
+  LC_CTYPE coercion and UTF-8 Mode are now disabled by default to fix the
+  mojibake issue. They must now be enabled explicitly (opt-in) using the new
+  :c:func:`_Py_PreInitialize` API with ``_PyPreConfig``.
+
+- bpo-36025: Fixed an accidental change to the datetime C API where the
+  arguments to the :c:func:`PyDate_FromTimestamp` function were incorrectly
+  interpreted as a single timestamp rather than an arguments tuple, which
+  causes existing code to start raising :exc:`TypeError`. The
+  backwards-incompatible change was only present in alpha releases of Python
+  3.8. Patch by Paul Ganssle.
+
+- bpo-35810: Modify ``PyObject_Init`` to correctly increase the refcount of
+  heap- allocated Type objects. Also fix the refcounts of the heap-allocated
+  types that were either doing this manually or not decreasing the type's
+  refcount in tp_dealloc
+
+
+What's New in Python 3.8.0 alpha 3?
+===================================
+
+*Release date: 2019-03-25*
+
+Security
+--------
+
+- bpo-36216: Changes urlsplit() to raise ValueError when the URL contains
+  characters that decompose under IDNA encoding (NFKC-normalization) into
+  characters that affect how the URL is parsed.
+
+- bpo-35121: Don't send cookies of domain A without Domain attribute to
+  domain B when domain A is a suffix match of domain B while using a
+  cookiejar with :class:`http.cookiejar.DefaultCookiePolicy` policy. Patch
+  by Karthikeyan Singaravelan.
+
+Core and Builtins
+-----------------
+
+- bpo-36421: Fix a possible double decref in _ctypes.c's
+  ``PyCArrayType_new()``.
+
+- bpo-36412: Fix a possible crash when creating a new dictionary.
+
+- bpo-36398: Fix a possible crash in ``structseq_repr()``.
+
+- bpo-36256: Fix bug in parsermodule when parsing a state in a DFA that has
+  two or more arcs with labels of the same type. Patch by Pablo Galindo.
+
+- bpo-36365: repr(structseq) is no longer limited to 512 bytes.
+
+- bpo-36374: Fix a possible null pointer dereference in
+  ``merge_consts_recursive()``. Patch by Zackery Spytz.
+
+- bpo-36236: At Python initialization, the current directory is no longer
+  prepended to :data:`sys.path` if it has been removed.
+
+- bpo-36352: Python initialization now fails with an error, rather than
+  silently truncating paths, if a path is too long.
+
+- bpo-36301: Python initialization now fails if decoding ``pybuilddir.txt``
+  configuration file fails at startup.
+
+- bpo-36333: Fix leak in _PyRuntimeState_Fini. Contributed by Stéphane
+  Wirtel.
+
+- bpo-36332: The builtin :func:`compile` can now handle AST objects that
+  contain assignment expressions. Patch by Pablo Galindo.
+
+- bpo-36282: Improved error message for too much positional arguments in
+  some builtin functions.
+
+- bpo-30040: New empty dict uses fewer memory for now.  It used more memory
+  than empty dict created by ``dict.clear()``.  And empty dict creation and
+  deletion is about 2x faster.  Patch by Inada Naoki.
+
+- bpo-36262: Fix an unlikely memory leak on conversion from string to float
+  in the function ``_Py_dg_strtod()`` used by ``float(str)``,
+  ``complex(str)``, :func:`pickle.load`, :func:`marshal.load`, etc.
+
+- bpo-36252: Update Unicode databases to version 12.0.0.
+
+- bpo-36218: Fix a segfault occurring when sorting a list of heterogeneous
+  values. Patch contributed by Rémi Lapeyre and Elliot Gorokhovsky.
+
+- bpo-36188: Cleaned up left-over vestiges of Python 2 unbound method
+  handling in method objects and documentation. Patch by Martijn Pieters
+
+- bpo-36124: Add a new interpreter-specific dict and expose it in the C-API
+  via PyInterpreterState_GetDict().  This parallels PyThreadState_GetDict().
+  However, extension modules should continue using PyModule_GetState() for
+  their own internal per-interpreter state.
+
+- bpo-35975: Add a ``feature_version`` flag to ``ast.parse()`` (documented)
+  and ``compile()`` (hidden) that allows tweaking the parser to support
+  older versions of the grammar. In particular, if ``feature_version`` is 5
+  or 6, the hacks for the ``async`` and ``await`` keyword from PEP 492 are
+  reinstated. (For 7 or higher, these are unconditionally treated as
+  keywords, but they are still special tokens rather than ``NAME`` tokens
+  that the parser driver recognizes.)
+
+- bpo-31904: Use UTF-8 as the system encoding on VxWorks.
+
+- bpo-36048: The :meth:`~object.__index__` special method will be used
+  instead of :meth:`~object.__int__` for implicit conversion of Python
+  numbers to C integers.  Using the ``__int__()`` method in implicit
+  conversions has been deprecated.
+
+- bpo-35808: Retire pgen and use a modified version of pgen2 to generate the
+  parser. Patch by Pablo Galindo.
+
+Library
+-------
+
+- bpo-36401: The class documentation created by pydoc now has a separate
+  section for readonly properties.
+
+- bpo-36320: The typing.NamedTuple() class has deprecated the _field_types
+  attribute in favor of the __annotations__ attribute which carried the same
+  information. Also, both attributes were converted from OrderedDict to a
+  regular dict.
+
+- bpo-34745: Fix :mod:`asyncio` ssl memory issues caused by circular
+  references
+
+- bpo-36324: Add method to statistics.NormalDist for computing the inverse
+  cumulative normal distribution.
+
+- bpo-36321: collections.namedtuple() misspelled the name of an attribute.
+  To be consistent with typing.NamedTuple, the attribute name should have
+  been "_field_defaults" instead of "_fields_defaults".  For backwards
+  compatibility, both spellings are now created.  The misspelled version may
+  be removed in the future.
+
+- bpo-36297: "unicode_internal" codec is removed.  It was deprecated since
+  Python 3.3. Patch by Inada Naoki.
+
+- bpo-36298: Raise ModuleNotFoundError in pyclbr when a module can't be
+  found. Thanks to 'mental' for the bug report.
+
+- bpo-36268: Switch the default format used for writing tars with
+  mod:`tarfile` to the modern POSIX.1-2001 pax standard, from the
+  vendor-specific GNU. Contributed by C.A.M. Gerlach.
+
+- bpo-36285: Fix integer overflows in the array module. Patch by Stephan
+  Hohe.
+
+- bpo-31904: Add _signal module support for VxWorks.
+
+- bpo-36272: :mod:`logging` does not silently ignore RecursionError anymore.
+  Patch contributed by Rémi Lapeyre.
+
+- bpo-36280: Add a kind field to ast.Constant. It is 'u' if the literal has
+  a 'u' prefix (i.e. a Python 2 style unicode literal), else None.
+
+- bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles all
+  exceptions.
+
+- bpo-36251: Fix format strings used for stderrprinter and re.Match reprs.
+  Patch by Stephan Hohe.
+
+- bpo-36235: Fix ``CFLAGS`` in ``customize_compiler()`` of
+  ``distutils.sysconfig``: when the ``CFLAGS`` environment variable is
+  defined, don't override ``CFLAGS`` variable with the ``OPT`` variable
+  anymore. Initial patch written by David Malcolm.
+
+- bpo-35807: Update ensurepip to install pip 19.0.3 and setuptools 40.8.0.
+
+- bpo-36139: Release GIL when closing :class:`~mmap.mmap` objects.
+
+- bpo-36179: Fix two unlikely reference leaks in _hashopenssl. The leaks
+  only occur in out-of-memory cases.
+
+- bpo-36169: Add overlap() method to statistics.NormalDist.  Computes the
+  overlapping coefficient for two normal distributions.
+
+- bpo-36103: Default buffer size used by ``shutil.copyfileobj()`` is changed
+  from 16 KiB to 64 KiB on non-Windows platform to reduce system call
+  overhead. Contributed by Inada Naoki.
+
+- bpo-36130: Fix ``pdb`` with ``skip=...`` when stepping into a frame
+  without a ``__name__`` global.  Patch by Anthony Sottile.
+
+- bpo-35652: shutil.copytree(copy_function=...) erroneously pass DirEntry
+  instead of a path string.
+
+- bpo-35178: Ensure custom :func:`warnings.formatwarning` function can
+  receive `line` as positional argument. Based on patch by Tashrif Billah.
+
+- bpo-36106: Resolve potential name clash with libm's sinpi(). Patch by
+  Dmitrii Pasechnik.
+
+- bpo-36091: Clean up reference to async generator in Lib/types. Patch by
+  Henry Chen.
+
+- bpo-36043: :class:`FileCookieJar` supports :term:`path-like object`.
+  Contributed by Stéphane Wirtel
+
+- bpo-35899: Enum has been fixed to correctly handle empty strings and
+  strings with non-Latin characters (ie. 'α', 'א') without crashing.
+  Original patch contributed by Maxwell. Assisted by Stéphane Wirtel.
+
+- bpo-21269: Add ``args`` and ``kwargs`` properties to mock call objects.
+  Contributed by Kumar Akshay.
+
+- bpo-30670: `pprint.pp` has been added to pretty-print objects with
+  dictionary keys being sorted with their insertion order by default.
+  Parameter *sort_dicts* has been added to `pprint.pprint`, `pprint.pformat`
+  and `pprint.PrettyPrinter`. Contributed by Rémi Lapeyre.
+
+- bpo-35843: Implement ``__getitem__`` for ``_NamespacePath``.  Patch by
+  Anthony Sottile.
+
+- bpo-35802: Clean up code which checked presence of ``os.stat`` /
+  ``os.lstat`` / ``os.chmod`` which are always present.  Patch by Anthony
+  Sottile.
+
+- bpo-35715: Librates the return value of a ProcessPoolExecutor
+  _process_worker after it's no longer needed to free memory
+
+- bpo-35493: Use :func:`multiprocessing.connection.wait` instead of polling
+  each 0.2 seconds for worker updates in :class:`multiprocessing.Pool`.
+  Patch by Pablo Galindo.
+
+- bpo-35661: Store the venv prompt in pyvenv.cfg.
+
+- bpo-35121: Don't set cookie for a request when the request path is a
+  prefix match of the cookie's path attribute but doesn't end with "/".
+  Patch by Karthikeyan Singaravelan.
+
+- bpo-21478: Calls to a child function created with
+  :func:`unittest.mock.create_autospec` should propagate to the parent.
+  Patch by Karthikeyan Singaravelan.
+
+- bpo-35198: Fix C++ extension compilation on AIX
+
+Documentation
+-------------
+
+- bpo-36329: Declare the path of the Python binary for the usage of
+  ``Tools/scripts/serve.py`` when executing ``make -C Doc/ serve``.
+  Contributed by Stéphane Wirtel
+
+- bpo-36138: Improve documentation about converting datetime.timedelta to
+  scalars.
+
+- bpo-21314: A new entry was added to the Core Language Section of the
+  Programming FAQ, which explaines the usage of slash(/) in the signature of
+  a function. Patch by Lysandros Nikolaou
+
+Tests
+-----
+
+- bpo-36234: test_posix.PosixUidGidTests: add tests for invalid uid/gid type
+  (str). Initial patch written by David Malcolm.
+
+- bpo-29571: Fix ``test_re.test_locale_flag()``:  use
+  ``locale.getpreferredencoding()`` rather than ``locale.getlocale()`` to
+  get the locale encoding. With some locales, ``locale.getlocale()`` returns
+  the wrong encoding.
+
+- bpo-36123: Fix race condition in test_socket.
+
+Build
+-----
+
+- bpo-36356: Fix leaks that led to build failure when configured with
+  address sanitizer.
+
+- bpo-36146: Add ``TEST_EXTENSIONS`` constant to ``setup.py`` to allow to
+  not build test extensions like ``_testcapi``.
+
+- bpo-36146: Fix setup.py on macOS: only add ``/usr/include/ffi`` to include
+  directories of _ctypes, not for all extensions.
+
+- bpo-31904: Enable build system to cross-build for VxWorks RTOS.
+
+Windows
+-------
+
+- bpo-36312: Fixed decoders for the following code pages: 50220, 50221,
+  50222, 50225, 50227, 50229, 57002 through 57011, 65000 and 42.
+
+- bpo-36264: Don't honor POSIX ``HOME`` in ``os.path.expanduser`` on
+  windows.  Patch by Anthony Sottile.
+
+- bpo-24643: Fix name collisions due to ``#define timezone _timezone`` in
+  PC/pyconfig.h.
+
+IDLE
+----
+
+- bpo-36405: Use dict unpacking in idlelib.
+
+- bpo-36396: Remove fgBg param of idlelib.config.GetHighlight(). This param
+  was only used twice and changed the return type.
+
+- bpo-36176: Fix IDLE autocomplete & calltip popup colors. Prevent conflicts
+  with Linux dark themes (and slightly darken calltip background).
+
+- bpo-23205: For the grep module, add tests for findfiles, refactor
+  findfiles to be a module-level function, and refactor findfiles to use
+  os.walk.
+
+- bpo-23216: Add docstrings to IDLE search modules.
+
+- bpo-36152: Remove colorizer.ColorDelegator.close_when_done and the
+  corresponding argument of .close().  In IDLE, both have always been None
+  or False since 2007.
+
+- bpo-32129: Avoid blurry IDLE application icon on macOS with Tk 8.6. Patch
+  by Kevin Walzer.
+
+- bpo-36096: Refactor class variables to instance variables in colorizer.
+
+- bpo-30348: Increase test coverage of idlelib.autocomplete by 30%. Patch by
+  Louie Lu
+
+Tools/Demos
+-----------
+
+- bpo-35132: Fix py-list and py-bt commands of python-gdb.py on gdb7.
+
+- bpo-32217: Fix freeze script on Windows.
+
+C API
+-----
+
+- bpo-36381: Raise ``DeprecationWarning`` when '#' formats are used for
+  building or parsing values without ``PY_SSIZE_T_CLEAN``.
+
+- bpo-36142: The whole coreconfig.h header is now excluded from
+  Py_LIMITED_API. Move functions definitions into a new internal
+  pycore_coreconfig.h header.
+
+
+What's New in Python 3.8.0 alpha 2?
+===================================
+
+*Release date: 2019-02-25*
+
+Core and Builtins
+-----------------
+
+- bpo-36052: Raise a :exc:`SyntaxError` when assigning a value to
+  `__debug__` with the Assignment Operator. Contributed by Stéphane Wirtel
+  and Pablo Galindo.
+
+- bpo-36012: Doubled the speed of class variable writes.  When a non-dunder
+  attribute was updated, there was an unnecessary call to update slots.
+
+- bpo-35942: The error message emitted when returning invalid types from
+  ``__fspath__`` in interfaces that allow passing :class:`~os.PathLike`
+  objects has been improved and now it does explain the origin of the error.
+
+- bpo-36016: ``gc.get_objects`` can now receive an optional parameter
+  indicating a generation to get objects from. Patch by Pablo Galindo.
+
+- bpo-1054041: When the main interpreter exits due to an uncaught
+  KeyboardInterrupt, the process now exits in the appropriate manner for its
+  parent process to detect that a SIGINT or ^C terminated the process.  This
+  allows shells and batch scripts to understand that the user has asked them
+  to stop.
+
+- bpo-35992: Fix ``__class_getitem__()`` not being called on a class with a
+  custom non-subscriptable metaclass.
+
+- bpo-35993: Fix a crash on fork when using subinterpreters. Contributed by
+  Stéphane Wirtel
+
+- bpo-35991: Fix a potential double free in Modules/_randommodule.c.
+
+- bpo-35961: Fix a crash in slice_richcompare(): use strong references
+  rather than stolen references for the two temporary internal tuples.
+
+- bpo-35911: Enable the creation of cell objects by adding a
+  ``cell.__new__`` method, and expose the type ``cell`` in ``Lib/types.py``
+  under the name CellType. Patch by Pierre Glaser.
+
+- bpo-12822: Use monotonic clock for ``pthread_cond_timedwait`` when
+  ``pthread_condattr_setclock`` and ``CLOCK_MONOTONIC`` are available.
+
+- bpo-15248: The compiler emits now syntax warnings in the case when a comma
+  is likely missed before tuple or list.
+
+- bpo-35886: The implementation of PyInterpreterState has been moved into
+  the internal header files (guarded by Py_BUILD_CORE).
+
+- bpo-31506: Clarify the errors reported when ``object.__new__`` and
+  ``object.__init__`` receive more than one argument. Contributed by Sanyam
+  Khurana.
+
+- bpo-35724: Signal-handling is now guaranteed to happen relative to the
+  main interpreter.
+
+- bpo-33608: We added a new internal _Py_AddPendingCall() that operates
+  relative to the provided interpreter.  This allows us to use the existing
+  implementation to ask another interpreter to do work that cannot be done
+  in the current interpreter, like decref an object the other interpreter
+  owns.  The existing Py_AddPendingCall() only operates relative to the main
+  interpreter.
+
+- bpo-33989: Fix a possible crash in :meth:`list.sort` when sorting objects
+  with ``ob_type->tp_richcompare == NULL``.  Patch by Zackery Spytz.
+
+Library
+-------
+
+- bpo-35512: :func:`unittest.mock.patch.dict` used as a decorator with
+  string target resolves the target during function call instead of during
+  decorator construction. Patch by Karthikeyan Singaravelan.
+
+- bpo-36018: Add statistics.NormalDist, a tool for creating and manipulating
+  normal distributions of random variable.  Features a composite class that
+  treats the mean and standard deviation of measurement data as single
+  entity.
+
+- bpo-35904: Added statistics.fmean() as a faster, floating point variant of
+  the existing mean() function.
+
+- bpo-35918: Removed broken ``has_key`` method from
+  multiprocessing.managers.SyncManager.dict. Contributed by Rémi Lapeyre.
+
+- bpo-18283: Add support for bytes to :func:`shutil.which`.
+
+- bpo-35960: Fix :func:`dataclasses.field` throwing away empty mapping
+  objects passed as metadata.
+
+- bpo-35500: Write expected and actual call parameters on separate lines in
+  :meth:`unittest.mock.Mock.assert_called_with` assertion errors.
+  Contributed by Susan Su.
+
+- bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles syntax
+  errors.
+
+- bpo-24209: In http.server script, rely on getaddrinfo to bind to preferred
+  address based on the bind parameter. Now default bind or binding to a name
+  may bind to IPv6 or dual-stack, depending on the environment.
+
+- bpo-35321: Set ``__spec__.origin`` of  ``_frozen_importlib`` to frozen so
+  that it matches the behavior of ``_frozen_importlib_external``.  Patch by
+  Nina Zakharenko.
+
+- bpo-35378: Fix a reference issue inside :class:`multiprocessing.Pool` that
+  caused the pool to remain alive if it was deleted without being closed or
+  terminated explicitly. A new strong reference is added to the pool
+  iterators to link the lifetime of the pool to the lifetime of its
+  iterators so the pool does not get destroyed if a pool iterator is still
+  alive.
+
+- bpo-34294: re module, fix wrong capturing groups in rare cases.
+  :func:`re.search`, :func:`re.findall`, :func:`re.sub` and other functions
+  that scan through string looking for a match, should reset capturing
+  groups between two match attempts. Patch by Ma Lin.
+
+- bpo-35615: :mod:`weakref`: Fix a RuntimeError when copying a
+  WeakKeyDictionary or a WeakValueDictionary, due to some keys or values
+  disappearing while iterating.
+
+- bpo-35606: Implement :func:`math.prod` as analogous function to
+  :func:`sum` that returns the product of a 'start' value (default: 1) times
+  an iterable of numbers. Patch by Pablo Galindo.
+
+- bpo-32417: Performing arithmetic between :class:`datetime.datetime`
+  subclasses and :class:`datetime.timedelta` now returns an object of the
+  same type as the :class:`datetime.datetime` subclass. As a result,
+  :meth:`datetime.datetime.astimezone` and alternate constructors like
+  :meth:`datetime.datetime.now` and :meth:`datetime.fromtimestamp` called
+  with a ``tz`` argument now *also* retain their subclass.
+
+- bpo-35153: Add *headers* optional keyword-only parameter to
+  :class:`xmlrpc.client.ServerProxy`, :class:`xmlrpc.client.Transport` and
+  :class:`xmlrpc.client.SafeTransport`.  Patch by Cédric Krier.
+
+- bpo-34572: Fix C implementation of pickle.loads to use importlib's locking
+  mechanisms, and thereby avoid using partially-loaded modules. Patch by Tim
+  Burgess.
+
+Documentation
+-------------
+
+- bpo-36083: Fix formatting of --check-hash-based-pycs options in the
+  manpage Synopsis.
+
+- bpo-36007: Bump minimum sphinx version to 1.8.  Patch by Anthony Sottile.
+
+- bpo-22062: Update documentation and docstrings for pathlib. Original patch
+  by Mike Short.
+
+Tests
+-----
+
+- bpo-27313: Avoid test_ttk_guionly ComboboxTest failure with macOS Cocoa
+  Tk.
+
+- bpo-36019: Add test.support.TEST_HTTP_URL and replace references of
+  http://www.example.com by this new constant. Contributed by Stéphane
+  Wirtel.
+
+- bpo-36037: Fix test_ssl for strict OpenSSL configuration like RHEL8 strict
+  crypto policy. Use older TLS version for minimum TLS version of the server
+  SSL context if needed, to test TLS version older than default minimum TLS
+  version.
+
+- bpo-35798: Added :func:`test.support.check_syntax_warning`.
+
+- bpo-35505: Make test_imap4_host_default_value independent on whether the
+  local IMAP server is running.
+
+- bpo-35917: multiprocessing: provide unit tests for SyncManager and
+  SharedMemoryManager classes + all the shareable types which are supposed
+  to be supported by them.  (patch by Giampaolo Rodola)
+
+- bpo-35704: Skip ``test_shutil.test_unpack_archive_xztar`` to prevent a
+  MemoryError on 32-bit AIX when MAXDATA setting is less than 0x20000000.
+
+  Patch by Michael Felt (aixtools)
+
+- bpo-34720: Assert m_state != NULL to mimic GC traversal functions that do
+  not correctly handle module creation when the module state has not been
+  created.
+
+Windows
+-------
+
+- bpo-35976: Added ARM build support to Windows build files in PCBuild.
+
+- bpo-35692: ``pathlib`` no longer raises when checking file and directory
+  existence on drives that are not ready
+
+- bpo-35872: Uses the base Python executable when invoking venv in a virtual
+  environment
+
+- bpo-35873: Prevents venv paths being inherited by child processes
+
+- bpo-35299: Fix sysconfig detection of the source directory and distutils
+  handling of pyconfig.h during PGO profiling
+
+IDLE
+----
+
+- bpo-24310: IDLE -- Document settings dialog font tab sample.
+
+- bpo-35833: Revise IDLE doc for control codes sent to Shell. Add a code
+  example block.
+
+- bpo-35689: Add docstrings and unittests for colorizer.py.
+
+
+What's New in Python 3.8.0 alpha 1?
+===================================
+
+*Release date: 2019-02-03*
+
+Security
+--------
+
+- bpo-35746: [CVE-2019-5010] Fix a NULL pointer deref in ssl module. The
+  cert parser did not handle CRL distribution points with empty DP or URI
+  correctly. A malicious or buggy certificate can result into segfault.
+  Vulnerability (TALOS-2018-0758) reported by Colin Read and Nicolas Edet of
+  Cisco.
+
+- bpo-34812: The :option:`-I` command line option (run Python in isolated
+  mode) is now also copied by the :mod:`multiprocessing` and
+  :mod:`distutils` modules when spawning child processes. Previously, only
+  :option:`-E` and :option:`-s` options (enabled by :option:`-I`) were
+  copied.
+
+- bpo-34791: The xml.sax and xml.dom.domreg no longer use environment
+  variables to override parser implementations when
+  sys.flags.ignore_environment is set by -E or -I arguments.
+
+- bpo-17239: The xml.sax and xml.dom.minidom parsers no longer processes
+  external entities by default. External DTD and ENTITY declarations no
+  longer load files or create network connections.
+
+- bpo-34623: CVE-2018-14647: The C accelerated _elementtree module now
+  initializes hash randomization salt from _Py_HashSecret instead of
+  libexpat's default CSPRNG.
+
+- bpo-34405: Updated to OpenSSL 1.1.0i for Windows builds.
+
+- bpo-33871: Fixed sending the part of the file in :func:`os.sendfile` on
+  macOS.  Using the *trailers* argument could cause sending more bytes from
+  the input file than was specified.
+
+- bpo-32533: Fixed thread-safety of error handling in _ssl.
+
+- bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970.
+  X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new
+  test ensures that NULL bytes are not allowed.
+
+- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
+
+- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
+  backtracking. These regexes formed potential DOS vectors (REDOS). They
+  have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
+  by Jamie Davis.
+
+- bpo-28414: The ssl module now allows users to perform their own IDN
+  en/decoding when using SNI.
+
+Core and Builtins
+-----------------
+
+- bpo-35877: Make parenthesis optional for named expressions in while
+  statement. Patch by Karthikeyan Singaravelan.
+
+- bpo-35814: Allow same right hand side expressions in annotated assignments
+  as in normal ones. In particular, ``x: Tuple[int, int] = 1, 2`` (without
+  parentheses on the right) is now allowed.
+
+- bpo-35766: Add the option to parse PEP 484 type comments in the ast
+  module. (Off by default.) This is merging the key functionality of the
+  third party fork thereof,
+  [typed_ast](https://github.com/python/typed_ast).
+
+- bpo-35713: Reorganize Python initialization to get working exceptions and
+  sys.stderr earlier.
+
+- bpo-33416: Add end line and end column position information to the Python
+  AST nodes. This is a C-level backwards incompatible change.
+
+- bpo-35720: Fixed a minor memory leak in pymain_parse_cmdline_impl function
+  in Modules/main.c
+
+- bpo-35634: ``func(**kwargs)`` will now raise an error when ``kwargs`` is a
+  mapping containing multiple entries with the same key. An error was
+  already raised when other keyword arguments are passed before ``**kwargs``
+  since Python 3.6.
+
+- bpo-35623: Fix a crash when sorting very long lists. Patch by Stephan
+  Hohe.
+
+- bpo-35214: clang Memory Sanitizer build instrumentation was added to work
+  around false positives from posix, socket, time, test_io, and
+  test_faulthandler.
+
+- bpo-35560: Fix an assertion error in :func:`format` in debug build for
+  floating point formatting with "n" format, zero padding and small width.
+  Release build is not impacted. Patch by Karthikeyan Singaravelan.
+
+- bpo-35552: Format characters ``%s`` and ``%V`` in
+  :c:func:`PyUnicode_FromFormat` and ``%s`` in :c:func:`PyBytes_FromFormat`
+  no longer read memory past the limit if *precision* is specified.
+
+- bpo-35504: Fix segfaults and :exc:`SystemError`\ s when deleting certain
+  attributes. Patch by Zackery Spytz.
+
+- bpo-35504: Fixed a SystemError when delete the characters_written
+  attribute of an OSError.
+
+- bpo-35494: Improved syntax error messages for unbalanced parentheses in
+  f-string.
+
+- bpo-35444: Fixed error handling in pickling methods when fail to look up
+  builtin "getattr". Sped up pickling iterators.
+
+- bpo-35436: Fix various issues with memory allocation error handling.
+  Patch by Zackery Spytz.
+
+- bpo-35423: Separate the signal handling trigger in the eval loop from the
+  "pending calls" machinery. There is no semantic change and the difference
+  in performance is insignificant.
+
+- bpo-35357: Internal attributes' names of unittest.mock._Call and
+  unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with
+  _mock_ in order to prevent clashes with widely used object attributes.
+  Fixed minor typo in test function name.
+
+- bpo-35372: Fixed the code page decoder for input longer than 2 GiB
+  containing undecodable bytes.
+
+- bpo-35336: Fix PYTHONCOERCECLOCALE=1 environment variable: only coerce the
+  C locale if the LC_CTYPE locale is "C".
+
+- bpo-31241: The *lineno* and *col_offset* attributes of AST nodes for list
+  comprehensions, generator expressions and tuples are now point to the
+  opening parenthesis or square brace. For tuples without parenthesis they
+  point to the position of the first item.
+
+- bpo-33954: For :meth:`str.format`, :meth:`float.__format__` and
+  :meth:`complex.__format__` methods for non-ASCII decimal point when using
+  the "n" formatter.
+
+- bpo-35269: Fix a possible segfault involving a newly-created coroutine.
+  Patch by Zackery Spytz.
+
+- bpo-35224: Implement :pep:`572` (assignment expressions). Patch by Emily
+  Morehouse.
+
+- bpo-32492: Speed up :class:`namedtuple` attribute access by 1.6x using a C
+  fast-path for the name descriptors. Patch by Pablo Galindo.
+
+- bpo-35214: Fixed an out of bounds memory access when parsing a truncated
+  unicode escape sequence at the end of a string such as ``'\N'``.  It would
+  read one byte beyond the end of the memory allocation.
+
+- bpo-35214: The interpreter and extension modules have had annotations
+  added so that they work properly under clang's Memory Sanitizer.  A new
+  configure flag --with-memory-sanitizer has been added to make test builds
+  of this nature easier to perform.
+
+- bpo-35193: Fix an off by one error in the bytecode peephole optimizer
+  where it could read bytes beyond the end of bounds of an array when
+  removing unreachable code. This bug was present in every release of Python
+  3.6 and 3.7 until now.
+
+- bpo-35169: Improved error messages for forbidden assignments.
+
+- bpo-34022: Fix handling of hash-based bytecode files in :mod:`zipimport`.
+  Patch by Elvis Pranskevichus.
+
+- bpo-28401: Debug builds will no longer to attempt to import extension
+  modules built for the ABI as they were never compatible to begin with.
+  Patch by Stefano Rivera.
+
+- bpo-29341: Clarify in the docstrings of :mod:`os` methods that path-like
+  objects are also accepted as input parameters.
+
+- bpo-35050: :mod:`socket`: Fix off-by-one bug in length check for
+  ``AF_ALG`` name and type.
+
+- bpo-29743: Raise :exc:`ValueError` instead of :exc:`OverflowError` in case
+  of a negative ``_length_`` in a :class:`ctypes.Array` subclass.  Also
+  raise :exc:`TypeError` instead of :exc:`AttributeError` for non-integer
+  ``_length_``. Original patch by Oren Milman.
+
+- bpo-16806: Fix ``lineno`` and ``col_offset`` for multi-line string tokens.
+
+- bpo-35029: :exc:`SyntaxWarning` raised as an exception at code generation
+  time will be now replaced with a :exc:`SyntaxError` for better error
+  reporting.
+
+- bpo-34983: Expose :meth:`symtable.Symbol.is_nonlocal` in the symtable
+  module. Patch by Pablo Galindo.
+
+- bpo-34974: :class:`bytes` and :class:`bytearray` constructors no longer
+  convert unexpected exceptions (e.g. :exc:`MemoryError` and
+  :exc:`KeyboardInterrupt`) to :exc:`TypeError`.
+
+- bpo-34939: Allow annotated names in module namespace that are declared
+  global before the annotation happens. Patch by Pablo Galindo.
+
+- bpo-34973: Fixed crash in :func:`bytes` when the :class:`list` argument is
+  mutated while it is iterated.
+
+- bpo-34876: The *lineno* and *col_offset* attributes of the AST for
+  decorated function and class refer now to the position of the
+  corresponding ``def``, ``async def`` and ``class`` instead of the position
+  of the first decorator. This leads to more correct line reporting in
+  tracing. This is the only case when the position of child AST nodes can
+  precede the position of the parent AST node.
+
+- bpo-34879: Fix a possible null pointer dereference in bytesobject.c.
+  Patch by Zackery Spytz.
+
+- bpo-34784: Fix the implementation of PyStructSequence_NewType in order to
+  create heap allocated StructSequences.
+
+- bpo-32912: A :exc:`SyntaxWarning` is now emitted instead of a
+  :exc:`DeprecationWarning` for invalid escape sequences in string and bytes
+  literals.
+
+- bpo-34854: Fixed a crash in compiling string annotations containing a
+  lambda with a keyword-only argument that doesn't have a default value.
+
+- bpo-34850: The compiler now produces a :exc:`SyntaxWarning` when identity
+  checks (``is`` and ``is not``) are used with certain types of literals
+  (e.g. strings, ints).  These can often work by accident in CPython, but
+  are not guaranteed by the language spec.  The warning advises users to use
+  equality tests (``==`` and ``!=``) instead.
+
+- bpo-34824: Fix a possible null pointer dereference in Modules/_ssl.c.
+  Patch by Zackery Spytz.
+
+- bpo-30156: The C function ``property_descr_get()`` uses a "cached" tuple
+  to optimize function calls. But this tuple can be discovered in debug mode
+  with :func:`sys.getobjects()`. Remove the optimization, it's not really
+  worth it and it causes 3 different crashes last years.
+
+- bpo-34762: Fix contextvars C API to use PyObject* pointer types.
+
+- bpo-34751: The hash function for tuples is now based on xxHash which gives
+  better collision results on (formerly) pathological cases. Additionally,
+  on 64-bit systems it improves tuple hashes in general. Patch by Jeroen
+  Demeyer with substantial contributions by Tim Peters.
+
+- bpo-34735: Fix a memory leak in Modules/timemodule.c.  Patch by Zackery
+  Spytz.
+
+- bpo-34683: Fixed a bug where some SyntaxError error pointed to locations
+  that were off-by-one.
+
+- bpo-34651: Only allow the main interpreter to fork.  The avoids the
+  possibility of affecting the main interpreter, which is critical to
+  operation of the runtime.
+
+- bpo-34653: Remove unused function PyParser_SimpleParseStringFilename.
+
+- bpo-32236: Warn that line buffering is not supported if :func:`open` is
+  called with binary mode and ``buffering=1``.
+
+- bpo-34641: Further restrict the syntax of the left-hand side of keyword
+  arguments in function calls. In particular, ``f((keyword)=arg)`` is now
+  disallowed.
+
+- bpo-34637: Make the *start* argument to *sum()* visible as a keyword
+  argument.
+
+- bpo-1621: Do not assume signed integer overflow behavior (C undefined
+  behavior) when performing set hash table resizing.
+
+- bpo-34588: Fix an off-by-one in the recursive call pruning feature of
+  traceback formatting.
+
+- bpo-34485: On Windows, the LC_CTYPE is now set to the user preferred
+  locale at startup. Previously, the LC_CTYPE locale was "C" at startup, but
+  changed when calling setlocale(LC_CTYPE, "") or setlocale(LC_ALL, "").
+
+- bpo-34485: Standard streams like sys.stdout now use the "surrogateescape"
+  error handler, instead of "strict", on the POSIX locale (when the C locale
+  is not coerced and the UTF-8 Mode is disabled).
+
+- bpo-34485: Fix the error handler of standard streams like sys.stdout:
+  PYTHONIOENCODING=":" is now ignored instead of setting the error handler
+  to "strict".
+
+- bpo-34485: Python now gets the locale encoding with C code to initialize
+  the encoding of standard streams like sys.stdout. Moreover, the encoding
+  is now initialized to the Python codec name to get a normalized encoding
+  name and to ensure that the codec is loaded. The change avoids importing
+  _bootlocale and _locale modules at startup by default.
+
+- bpo-34527: On FreeBSD, Py_DecodeLocale() and Py_EncodeLocale() now also
+  forces the ASCII encoding if the LC_CTYPE locale is "POSIX", not only if
+  the LC_CTYPE locale is "C".
+
+- bpo-34527: The UTF-8 Mode is now also enabled by the "POSIX" locale, not
+  only by the "C" locale.
+
+- bpo-34403: On HP-UX with C or POSIX locale, sys.getfilesystemencoding()
+  now returns "ascii" instead of "roman8" (when the UTF-8 Mode is disabled
+  and the C locale is not coerced).
+
+- bpo-34523: The Python filesystem encoding is now read earlier during the
+  Python initialization.
+
+- bpo-12458: Tracebacks show now correct line number for subexpressions in
+  multiline expressions. Tracebacks show now the line number of the first
+  line for multiline expressions instead of the line number of the last
+  subexpression.
+
+- bpo-34408: Prevent a null pointer dereference and resource leakage in
+  ``PyInterpreterState_New()``.
+
+- bpo-34400: Fix undefined behavior in parsetok.c.  Patch by Zackery Spytz.
+
+- bpo-33073: Added as_integer_ratio to ints to make them more interoperable
+  with floats.
+
+- bpo-34377: Update valgrind suppression list to use
+  ``_PyObject_Free``/``_PyObject_Realloc`` instead of
+  ``PyObject_Free``/``PyObject_Realloc``.
+
+- bpo-34353: Added the "socket" option in the `stat.filemode()` Python
+  implementation to match the C implementation.
+
+- bpo-34320: Fix ``dict(od)`` didn't copy iteration order of OrderedDict.
+
+- bpo-34113: Fixed crash on debug builds when opcode stack was adjusted with
+  negative numbers. Patch by Constantin Petrisor.
+
+- bpo-34100: Compiler now merges constants in tuples and frozensets
+  recursively. Code attributes like ``co_names`` are merged too.
+
+- bpo-34151: Performance of list concatenation, repetition and slicing
+  operations is slightly improved. Patch by Sergey Fedoseev.
+
+- bpo-34170: -X dev: it is now possible to override the memory allocator
+  using PYTHONMALLOC even if the developer mode is enabled.
+
+- bpo-33237: Improved :exc:`AttributeError` message for partially
+  initialized module.
+
+- bpo-34149: Fix min and max functions to get default behavior when key is
+  None.
+
+- bpo-34125: Profiling of unbound built-in methods now works when
+  ``**kwargs`` is given.
+
+- bpo-34141: Optimized pickling atomic types (None, bool, int, float, bytes,
+  str).
+
+- bpo-34126: Fix crashes when profiling certain invalid calls of unbound
+  methods. Patch by Jeroen Demeyer.
+
+- bpo-24618: Fixed reading invalid memory when create the code object with
+  too small varnames tuple or too large argument counts.
+
+- bpo-34068: In :meth:`io.IOBase.close`, ensure that the
+  :attr:`~io.IOBase.closed` attribute is not set with a live exception.
+  Patch by Zackery Spytz and Serhiy Storchaka.
+
+- bpo-34087: Fix buffer overflow while converting unicode to numeric values.
+
+- bpo-34080: Fixed a memory leak in the compiler when it raised some
+  uncommon errors during tokenizing.
+
+- bpo-34066: Disabled interruption by Ctrl-C between calling ``open()`` and
+  entering a **with** block in ``with open()``.
+
+- bpo-34042: Fix dict.copy() to maintain correct total refcount (as reported
+  by sys.gettotalrefcount()).
+
+- bpo-33418: Fix potential memory leak in function object when it creates
+  reference cycle.
+
+- bpo-33985: Implement contextvars.ContextVar.name attribute.
+
+- bpo-33956: Update vendored Expat library copy to version 2.2.5.
+
+- bpo-24596: Decref the module object in :c:func:`PyRun_SimpleFileExFlags`
+  before calling :c:func:`PyErr_Print()`.  Patch by Zackery Spytz.
+
+- bpo-33451: Close directly executed pyc files before calling
+  ``PyEval_EvalCode()``.
+
+- bpo-1617161: The hash of :class:`BuiltinMethodType` instances (methods of
+  built-in classes) now depends on the hash of the identity of *__self__*
+  instead of its value. The hash and equality of :class:`ModuleType` and
+  :class:`MethodWrapperType` instances (methods of user-defined classes and
+  some methods of built-in classes like ``str.__add__``) now depend on the
+  hash and equality of the identity of *__self__* instead of its value.
+  :class:`MethodWrapperType` instances no longer support ordering.
+
+- bpo-33824: Fix "LC_ALL=C python3.7 -V": reset properly the command line
+  parser when the encoding changes after reading the Python configuration.
+
+- bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an
+  object that hadn't all of its fields set to NULL.
+
+- bpo-33738: Seven macro incompatibilities with the Limited API were fixed,
+  and the macros :c:func:`PyIter_Check`, :c:func:`PyIndex_Check` and
+  :c:func:`PyExceptionClass_Name` were added as functions. A script for
+  automatic macro checks was added.
+
+- bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow()
+  correctly
+
+- bpo-30167: ``PyRun_SimpleFileExFlags`` removes ``__cached__`` from module
+  in addition to ``__file__``.
+
+- bpo-33706: Fix a crash in Python initialization when parsing the command
+  line options. Thanks Christoph Gohlke for the bug report and the fix!
+
+- bpo-33597: Reduce ``PyGC_Head`` size from 3 words to 2 words.
+
+- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
+  shutdown even when there was a custom handler set previously. Patch by
+  Philipp Kerling.
+
+- bpo-33622: Fixed a leak when the garbage collector fails to add an object
+  with the ``__del__`` method or referenced by it into the
+  :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
+  exception is set and preserves it.
+
+- bpo-33462: Make dict and dict views reversible. Patch by Rémi Lapeyre.
+
+- bpo-23722: A :exc:`RuntimeError` is now raised when the custom metaclass
+  doesn't provide the ``__classcell__`` entry in the namespace passed to
+  ``type.__new__``.  A :exc:`DeprecationWarning` was emitted in Python
+  3.6--3.7.
+
+- bpo-33499: Add :envvar:`PYTHONPYCACHEPREFIX` environment variable and
+  :option:`-X` ``pycache_prefix`` command-line option to set an alternate
+  root directory for writing module bytecode cache files.
+
+- bpo-25711: The :mod:`zipimport` module has been rewritten in pure Python.
+
+- bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't
+  crash if module_globals is not a dict.
+
+- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
+
+- bpo-33475: Fixed miscellaneous bugs in converting annotations to strings
+  and optimized parentheses in the string representation.
+
+- bpo-20104: Added support for the `setpgroup`, `resetids`, `setsigmask`,
+  `setsigdef` and `scheduler` parameters of `posix_spawn`. Patch by Pablo
+  Galindo.
+
+- bpo-33391: Fix a leak in set_symmetric_difference().
+
+- bpo-33363: Raise a SyntaxError for ``async with`` and ``async for``
+  statements outside of async functions.
+
+- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
+
+- bpo-33128: Fix a bug that causes PathFinder to appear twice on
+  sys.meta_path. Patch by Pablo Galindo Salgado.
+
+- bpo-33331: Modules imported last are now cleared first at interpreter
+  shutdown.
+
+- bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in
+  dictobject.c by adjusting how the internal struct _dictkeysobject shared
+  keys structure is declared.
+
+- bpo-33305: Improved syntax error messages for invalid numerical literals.
+
+- bpo-33306: Improved syntax error messages for unbalanced parentheses.
+
+- bpo-33234: The list constructor will pre-size and not over-allocate when
+  the input length is known.
+
+- bpo-33270: Intern the names for all anonymous code objects.  Patch by
+  Zackery Spytz.
+
+- bpo-30455: The C and Python code and the documentation related to tokens
+  are now generated from a single source file :file:`Grammar/Tokens`.
+
+- bpo-33176: Add a ``toreadonly()`` method to memoryviews.
+
+- bpo-33231: Fix potential memory leak in ``normalizestring()``.
+
+- bpo-33205: Change dict growth function from
+  ``round_up_to_power_2(used*2+hashtable_size/2)`` to
+  ``round_up_to_power_2(used*3)``.  Previously, dict is shrinked only when
+  ``used == 0``. Now dict has more chance to be shrinked.
+
+- bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
+  or ``__aexit__()`` return non-awaitable object.
+
+- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
+  when copying from key-sharing dict.
+
+- bpo-33053: When using the -m switch, sys.path[0] is now explicitly
+  expanded as the *starting* working directory, rather than being left as
+  the empty path (which allows imports from the current working directory at
+  the time of the import)
+
+- bpo-33138: Changed standard error message for non-pickleable and
+  non-copyable types. It now says "cannot pickle" instead of "can't pickle"
+  or "cannot serialize".
+
+- bpo-33018: Improve consistency of errors raised by ``issubclass()`` when
+  called with a non-class and an abstract base class as the first and second
+  arguments, respectively. Patch by Josh Bronson.
+
+- bpo-33083: ``math.factorial`` no longer accepts arguments that are not
+  int-like. Patch by Pablo Galindo.
+
+- bpo-33041: Added new opcode :opcode:`END_ASYNC_FOR` and fixes the
+  following issues:
+
+  * Setting global :exc:`StopAsyncIteration` no longer breaks ``async for``
+    loops.
+  * Jumping into an ``async for`` loop is now disabled.
+  * Jumping out of an ``async for`` loop no longer corrupts the stack.
+
+- bpo-25750: Fix rare Python crash due to bad refcounting in
+  ``type_getattro()`` if a descriptor deletes itself from the class. Patch
+  by Jeroen Demeyer.
+
+- bpo-33041: Fixed bytecode generation for "async for" with a complex
+  target. A StopAsyncIteration raised on assigning or unpacking will be now
+  propagated instead of stopping the iteration.
+
+- bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
+
+- bpo-33005: Fix a crash on fork when using a custom memory allocator (ex:
+  using PYTHONMALLOC env var). _PyGILState_Reinit() and
+  _PyInterpreterState_Enable() now use the default RAW memory allocator to
+  allocate a new interpreters mutex on fork.
+
+- bpo-32911: Due to unexpected compatibility issues discovered during
+  downstream beta testing, reverted :issue:`29463`. ``docstring`` field is
+  removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes
+  which was added in 3.7a1.  Docstring expression is restored as a first
+  statement in their body. Based on patch by Inada Naoki.
+
+- bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
+
+- bpo-32946: Importing names from already imported module with "from ...
+  import ..." is now 30% faster if the module is not a package.
+
+- bpo-32932: Make error message more revealing when there are non-str
+  objects in ``__all__``.
+
+- bpo-32925: Optimized iterating and containing test for literal lists
+  consisting of non-constants: ``x in [a, b]`` and ``for x in [a, b]``. The
+  case of all constant elements already was optimized.
+
+- bpo-32889: Update Valgrind suppression list to account for the rename of
+  ``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
+
+- bpo-32836: Don't use temporary variables in cases of list/dict/set
+  comprehensions
+
+- bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled()
+  context manager).
+
+- bpo-32305: For namespace packages, ensure that both ``__file__`` and
+  ``__spec__.origin`` are set to None.
+
+- bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for
+  namespace packages.
+
+- bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by
+  Stéphane Wirtel
+
+- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
+  write out-of-bound errors when using customized decode error handlers.
+
+- bpo-32489: A :keyword:`continue` statement is now allowed in the
+  :keyword:`finally` clause.
+
+- bpo-17611: Simplified the interpreter loop by moving the logic of
+  unrolling the stack of blocks into the compiler. The compiler emits now
+  explicit instructions for adjusting the stack of values and calling the
+  cleaning up code for :keyword:`break`, :keyword:`continue` and
+  :keyword:`return`.
+
+  Removed opcodes :opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`,
+  :opcode:`SETUP_LOOP` and :opcode:`SETUP_EXCEPT`. Added new opcodes
+  :opcode:`ROT_FOUR`, :opcode:`BEGIN_FINALLY` and :opcode:`CALL_FINALLY` and
+  :opcode:`POP_FINALLY`. Changed the behavior of :opcode:`END_FINALLY` and
+  :opcode:`WITH_CLEANUP_START`.
+
+- bpo-32285: New function unicodedata.is_normalized, which can check whether
+  a string is in a specific normal form.
+
+- bpo-10544: Yield expressions are now disallowed in comprehensions and
+  generator expressions except the expression for the outermost iterable.
+
+- bpo-32117: Iterable unpacking is now allowed without parentheses in yield
+  and return statements, e.g. ``yield 1, 2, 3, *rest``. Thanks to David
+  Cuthbert for the change and Jordan Chapman for added tests.
+
+- bpo-31902: Fix the ``col_offset`` attribute for ast nodes
+  ``ast.AsyncFor``, ``ast.AsyncFunctionDef``, and ``ast.AsyncWith``.
+  Previously, ``col_offset`` pointed to the keyword after ``async``.
+
+- bpo-25862: Fix assertion failures in the ``tell()`` method of
+  ``io.TextIOWrapper``. Patch by Zackery Spytz.
+
+- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
+  ctypes structured data type. Patch by Eryk Sun and Oren Milman.
+
+- bpo-31577: Fix a crash in `os.utime()` in case of a bad ns argument. Patch
+  by Oren Milman.
+
+- bpo-29832: Remove references to 'getsockaddrarg' from various socket error
+  messages. Patch by Oren Milman.
+
+Library
+-------
+
+- bpo-35845: Add 'order' parameter to memoryview.tobytes().
+
+- bpo-35864: The _asdict() method for collections.namedtuple now returns a
+  regular dict instead of an OrderedDict.
+
+- bpo-35537: An ExitStack is now used internally within subprocess.POpen to
+  clean up pipe file handles. No behavior change in normal operation. But if
+  closing one handle were ever to cause an exception, the others will now be
+  closed instead of leaked.  (patch by Giampaolo Rodola)
+
+- bpo-35847: RISC-V needed the CTYPES_PASS_BY_REF_HACK.  Fixes ctypes
+  Structure test_pass_by_value.
+
+- bpo-35813: Shared memory submodule added to multiprocessing to avoid need
+  for serialization between processes
+
+- bpo-35780: Fix lru_cache() errors arising in recursive, reentrant, or
+  multi-threaded code. These errors could result in orphan links and in the
+  cache being trapped in a state with fewer than the specified maximum
+  number of links. Fix handling of negative maxsize which should have been
+  treated as zero. Fix errors in toggling the "full" status flag. Fix
+  misordering of links when errors are encountered.  Sync-up the C code and
+  pure Python code for the space saving path in functions with a single
+  positional argument. In this common case, the space overhead of an lru
+  cache entry is reduced by almost half.  Fix counting of cache misses. In
+  error cases, the miss count was out of sync with the actual number of
+  times the underlying user function was called.
+
+- bpo-35537: :func:`os.posix_spawn` and :func:`os.posix_spawnp` now have a
+  *setsid* parameter.
+
+- bpo-23846: :class:`asyncio.ProactorEventLoop` now catches and logs send
+  errors when the self-pipe is full.
+
+- bpo-34323: :mod:`asyncio`: Enhance ``IocpProactor.close()`` log: wait 1
+  second before the first log, then log every second. Log also the number of
+  seconds since ``close()`` was called.
+
+- bpo-35674: Add a new :func:`os.posix_spawnp` function. Patch by Joannah
+  Nanjekye.
+
+- bpo-35733: ``ast.Constant(boolean)`` no longer an instance of
+  :class:`ast.Num`.  Patch by Anthony Sottile.
+
+- bpo-35726: QueueHandler.prepare() now makes a copy of the record before
+  modifying and enqueueing it, to avoid affecting other handlers in the
+  chain.
+
+- bpo-35719: Sped up multi-argument :mod:`math` functions atan2(),
+  copysign(), remainder() and hypot() by 1.3--2.5 times.
+
+- bpo-35717: Fix KeyError exception raised when using enums and compile.
+  Patch contributed by Rémi Lapeyre.
+
+- bpo-35699: Fixed detection of Visual Studio Build Tools 2017 in distutils
+
+- bpo-32710: Fix memory leaks in asyncio ProactorEventLoop on overlapped
+  operation failure.
+
+- bpo-35702: The :data:`time.CLOCK_UPTIME_RAW` constant is now available for
+  macOS 10.12.
+
+- bpo-32710: Fix a memory leak in asyncio in the ProactorEventLoop when
+  ``ReadFile()`` or ``WSASend()`` overlapped operation fail immediately:
+  release the internal buffer.
+
+- bpo-35682: Fix ``asyncio.ProactorEventLoop.sendfile()``: don't attempt to
+  set the result of an internal future if it's already done.
+
+- bpo-35283: Add a deprecated warning for the
+  :meth:`threading.Thread.isAlive` method. Patch by Dong-hee Na.
+
+- bpo-35664: Improve operator.itemgetter() performance by 33% with optimized
+  argument handling and with adding a fast path for the common case of a
+  single non-negative integer index into a tuple (which is the typical use
+  case in the standard library).
+
+- bpo-35643: Fixed a SyntaxWarning: invalid escape sequence in
+  Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen.
+
+- bpo-35619: Improved support of custom data descriptors in :func:`help` and
+  :mod:`pydoc`.
+
+- bpo-28503: The `crypt` module now internally uses the `crypt_r()` library
+  function instead of `crypt()` when available.
+
+- bpo-35614: Fixed help() on metaclasses. Patch by Sanyam Khurana.
+
+- bpo-35568: Expose ``raise(signum)`` as `raise_signal`
+
+- bpo-35588: The floor division and modulo operations and the :func:`divmod`
+  function on :class:`fractions.Fraction` types are 2--4x faster. Patch by
+  Stefan Behnel.
+
+- bpo-35585: Speed-up building enums by value, e.g. http.HTTPStatus(200).
+
+- bpo-30561: random.gammavariate(1.0, beta) now computes the same result as
+  random.expovariate(1.0 / beta).  This synchonizes the two algorithms and
+  eliminates some idiosyncrasies in the old implementation.  It does however
+  produce a difference stream of random variables than it used to.
+
+- bpo-35537: The :mod:`subprocess` module can now use the
+  :func:`os.posix_spawn` function in some cases for better performance.
+
+- bpo-35526: Delaying the 'joke' of barry_as_FLUFL.mandatory to Python
+  version 4.0
+
+- bpo-35523: Remove :mod:`ctypes` callback workaround: no longer create a
+  callback at startup. Avoid SELinux alert on ``import ctypes`` and ``import
+  uuid``.
+
+- bpo-31784: :func:`uuid.uuid1` now calls :func:`time.time_ns` rather than
+  ``int(time.time() * 1e9)``.
+
+- bpo-35513: :class:`~unittest.runner.TextTestRunner` of
+  :mod:`unittest.runner` now uses :func:`time.perf_counter` rather than
+  :func:`time.time` to measure the execution time of a test:
+  :func:`time.time` can go backwards, whereas :func:`time.perf_counter` is
+  monotonic.
+
+- bpo-35502: Fixed reference leaks in
+  :class:`xml.etree.ElementTree.TreeBuilder` in case of unfinished building
+  of the tree (in particular when an error was raised during parsing XML).
+
+- bpo-35348: Make :func:`platform.architecture` parsing of ``file`` command
+  output more reliable: add the ``-b`` option to the ``file`` command to
+  omit the filename, force the usage of the C locale, and search also the
+  "shared object" pattern.
+
+- bpo-35491: :mod:`multiprocessing`: Add ``Pool.__repr__()`` and enhance
+  ``BaseProcess.__repr__()`` (add pid and parent pid) to ease debugging.
+  Pool state constant values are now strings instead of integers, for
+  example ``RUN`` value becomes ``'RUN'`` instead of ``0``.
+
+- bpo-35477: :meth:`multiprocessing.Pool.__enter__` now fails if the pool is
+  not running: ``with pool:`` fails if used more than once.
+
+- bpo-31446: Copy command line that was passed to CreateProcessW since this
+  function can change the content of the input buffer.
+
+- bpo-35471: Python 2.4 dropped MacOS 9 support. The macpath module was
+  deprecated in Python 3.7. The module is now removed.
+
+- bpo-23057: Unblock Proactor event loop when keyboard interrupt is received
+  on Windows
+
+- bpo-35052: Fix xml.dom.minidom cloneNode() on a document with an entity:
+  pass the correct arguments to the user data handler of an entity.
+
+- bpo-20239: Allow repeated assignment deletion of
+  :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo.
+
+- bpo-17185: Set ``__signature__`` on mock for :mod:`inspect` to get
+  signature. Patch by Karthikeyan Singaravelan.
+
+- bpo-35445: Memory errors during creating posix.environ no longer ignored.
+
+- bpo-35415: Validate fileno= argument to socket.socket().
+
+- bpo-35424: :class:`multiprocessing.Pool` destructor now emits
+  :exc:`ResourceWarning` if the pool is still running.
+
+- bpo-35330: When a :class:`Mock` instance was used to wrap an object, if
+  `side_effect` is used in one of the mocks of it methods, don't call the
+  original implementation and return the result of using the side effect the
+  same way that it is done with return_value.
+
+- bpo-35346: Drop Mac OS 9 and Rhapsody support from the :mod:`platform`
+  module. Rhapsody last release was in 2000. Mac OS 9 last release was in
+  2001.
+
+- bpo-10496: :func:`~distutils.utils.check_environ` of
+  :mod:`distutils.utils` now catches :exc:`KeyError` on calling
+  :func:`pwd.getpwuid`: don't create the ``HOME`` environment variable in
+  this case.
+
+- bpo-10496: :func:`posixpath.expanduser` now returns the input *path*
+  unchanged if the ``HOME`` environment variable is not set and the current
+  user has no home directory (if the current user identifier doesn't exist
+  in the password database). This change fix the :mod:`site` module if the
+  current user doesn't exist in the password database (if the user has no
+  home directory).
+
+- bpo-35389: :func:`platform.libc_ver` now uses
+  ``os.confstr('CS_GNU_LIBC_VERSION')`` if available and the *executable*
+  parameter is not set.
+
+- bpo-35394: Add empty slots to asyncio abstract protocols.
+
+- bpo-35310: Fix a bug in :func:`select.select` where, in some cases, the
+  file descriptor sequences were returned unmodified after a signal
+  interruption, even though the file descriptors might not be ready yet.
+  :func:`select.select` will now always return empty lists if a timeout has
+  occurred.  Patch by Oran Avraham.
+
+- bpo-35380: Enable TCP_NODELAY on Windows for proactor asyncio event loop.
+
+- bpo-35341: Add generic version of ``collections.OrderedDict`` to the
+  ``typing`` module. Patch by Ismo Toijala.
+
+- bpo-35371: Fixed possible crash in ``os.utime()`` on Windows when pass
+  incorrect arguments.
+
+- bpo-35346: :func:`platform.uname` now redirects ``stderr`` to
+  :data:`os.devnull` when running external programs like ``cmd /c ver``.
+
+- bpo-35066: Previously, calling the strftime() method on a datetime object
+  with a trailing '%' in the format string would result in an exception.
+  However, this only occurred when the datetime C module was being used; the
+  python implementation did not match this behavior. Datetime is now PEP-399
+  compliant, and will not throw an exception on a trailing '%'.
+
+- bpo-35345: The function `platform.popen` has been removed, it was
+  deprecated since Python 3.3: use :func:`os.popen` instead.
+
+- bpo-35344: On macOS, :func:`platform.platform` now uses
+  :func:`platform.mac_ver`, if it returns a non-empty release string, to get
+  the macOS version rather than the darwin version.
+
+- bpo-35312: Make ``lib2to3.pgen2.parse.ParseError`` round-trip pickle-able.
+  Patch by Anthony Sottile.
+
+- bpo-35308: Fix regression in ``webbrowser`` where default browsers may be
+  preferred over browsers in the ``BROWSER`` environment variable.
+
+- bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff.
+  Original patch by R. David Murray & Jairo Trad. Enhanced by Sanyam
+  Khurana.
+
+- bpo-28604: :func:`locale.localeconv` now sets temporarily the ``LC_CTYPE``
+  locale to the ``LC_MONETARY`` locale if the two locales are different and
+  monetary strings are non-ASCII. This temporary change affects other
+  threads.
+
+- bpo-35277: Update ensurepip to install pip 18.1 and setuptools 40.6.2.
+
+- bpo-24209: Adds IPv6 support when invoking http.server directly.
+
+- bpo-35226: Recursively check arguments when testing for equality of
+  :class:`unittest.mock.call` objects and add note that tracking of
+  parameters used to create ancestors of mocks in ``mock_calls`` is not
+  possible.
+
+- bpo-29564: The warnings module now suggests to enable tracemalloc if the
+  source is specified, the tracemalloc module is available, but tracemalloc
+  is not tracing memory allocations.
+
+- bpo-35189: Modify the following fnctl function to retry if interrupted by
+  a signal (EINTR): flock, lockf, fnctl
+
+- bpo-30064: Use add_done_callback() in sock_* asyncio API to unsubscribe
+  reader/writer early on calcellation.
+
+- bpo-35186: Removed the "built with" comment added when ``setup.py upload``
+  is used with either ``bdist_rpm`` or ``bdist_dumb``.
+
+- bpo-35152: Allow sending more than 2 GB at once on a multiprocessing
+  connection on non-Windows systems.
+
+- bpo-35062: Fix incorrect parsing of
+  :class:`_io.IncrementalNewlineDecoder`'s *translate* argument.
+
+- bpo-35065: Remove `StreamReaderProtocol._untrack_reader`. The call to
+  `_untrack_reader` is currently performed too soon, causing the protocol to
+  forget about the reader before `connection_lost` can run and feed the EOF
+  to the reader.
+
+- bpo-34160: ElementTree and minidom now preserve the attribute order
+  specified by the user.
+
+- bpo-35079: Improve difflib.SequenceManager.get_matching_blocks doc by
+  adding 'non-overlapping' and changing '!=' to '<'.
+
+- bpo-33710: Deprecated ``l*gettext()`` functions and methods in the
+  :mod:`gettext` module. They return encoded bytes instead of Unicode
+  strings and are artifacts from Python 2 times. Also deprecated functions
+  and methods related to setting the charset for ``l*gettext()`` functions
+  and methods.
+
+- bpo-35017: :meth:`socketserver.BaseServer.serve_forever` now exits
+  immediately if it's :meth:`~socketserver.BaseServer.shutdown` method is
+  called while it is polling for new events.
+
+- bpo-35024: `importlib` no longer logs `wrote <bytecode path>` redundantly
+  after `(created|could not create) <bytecode path>` is already logged.
+  Patch by Quentin Agren.
+
+- bpo-35047: ``unittest.mock`` now includes mock calls in exception messages
+  if ``assert_not_called``, ``assert_called_once``, or
+  ``assert_called_once_with`` fails. Patch by Petter Strandmark.
+
+- bpo-31047: Fix ``ntpath.abspath`` regression where it didn't remove a
+  trailing separator on Windows. Patch by Tim Graham.
+
+- bpo-35053: tracemalloc now tries to update the traceback when an object is
+  reused from a "free list" (optimization for faster object creation, used
+  by the builtin list type for example).
+
+- bpo-31553: Add the --json-lines option to json.tool. Patch by hongweipeng.
+
+- bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around
+  Tcl_Obj back to Tcl/Tk.
+
+- bpo-34909: Enum: fix grandchildren subclassing when parent mixed with
+  concrete data types.
+
+- bpo-35022: :class:`unittest.mock.MagicMock` now supports the
+  ``__fspath__`` method (from :class:`os.PathLike`).
+
+- bpo-35008: Fixed references leaks when call the ``__setstate__()`` method
+  of :class:`xml.etree.ElementTree.Element` in the C implementation for
+  already initialized element.
+
+- bpo-23420: Verify the value for the parameter '-s' of the cProfile CLI.
+  Patch by Robert Kuska
+
+- bpo-33947: dataclasses now handle recursive reprs without raising
+  RecursionError.
+
+- bpo-34890: Make :func:`inspect.iscoroutinefunction`,
+  :func:`inspect.isgeneratorfunction` and :func:`inspect.isasyncgenfunction`
+  work with :func:`functools.partial`. Patch by Pablo Galindo.
+
+- bpo-34521: Use :func:`socket.CMSG_SPACE` to calculate ancillary data size
+  instead of :func:`socket.CMSG_LEN` in
+  :func:`multiprocessing.reduction.recvfds` as :rfc:`3542` requires the use
+  of the former for portable applications.
+
+- bpo-31522: The `mailbox.mbox.get_string` function *from_* parameter can
+  now successfully be set to a non-default value.
+
+- bpo-34970: Protect tasks weak set manipulation in ``asyncio.all_tasks()``
+
+- bpo-34969: gzip: Add --fast, --best on the gzip CLI, these parameters will
+  be used for the fast compression method (quick) or the best method
+  compress (slower, but smaller file). Also, change the default compression
+  level to 6 (tradeoff).
+
+- bpo-16965: The :term:`2to3` :2to3fixer:`execfile` fixer now opens the file
+  with mode ``'rb'``.  Patch by Zackery Spytz.
+
+- bpo-34966: :mod:`pydoc` now supports aliases not only to methods defined
+  in the end class, but also to inherited methods.  The docstring is not
+  duplicated for aliases.
+
+- bpo-34926: :meth:`mimetypes.MimeTypes.guess_type` now accepts
+  :term:`path-like object` in addition to url strings. Patch by Mayank
+  Asthana.
+
+- bpo-23831: Add ``moveto()`` method to the ``tkinter.Canvas`` widget. Patch
+  by Juliette Monsel.
+
+- bpo-34941: Methods ``find()``, ``findtext()`` and ``findall()`` of the
+  ``Element`` class in the :mod:`xml.etree.ElementTree` module are now able
+  to find children which are instances of ``Element`` subclasses.
+
+- bpo-32680: :class:`smtplib.SMTP` objects now always have a `sock`
+  attribute present
+
+- bpo-34769: Fix for async generators not finalizing when event loop is in
+  debug mode and garbage collector runs in another thread.
+
+- bpo-34936: Fix ``TclError`` in ``tkinter.Spinbox.selection_element()``.
+  Patch by Juliette Monsel.
+
+- bpo-34829: Add methods ``selection_from``, ``selection_range``,
+  ``selection_present`` and ``selection_to`` to the ``tkinter.Spinbox`` for
+  consistency with the ``tkinter.Entry`` widget. Patch by Juliette Monsel.
+
+- bpo-34911: Added *secure_protocols* argument to
+  *http.cookiejar.DefaultCookiePolicy* to allow for tweaking of protocols
+  and also to add support by default for *wss*, the secure websocket
+  protocol.
+
+- bpo-34922: Fixed integer overflow in the :meth:`~hashlib.shake.digest()`
+  and :meth:`~hashlib.shake.hexdigest()` methods for the SHAKE algorithm in
+  the :mod:`hashlib` module.
+
+- bpo-34925: 25% speedup in argument parsing for the functions in the bisect
+  module.
+
+- bpo-34900: Fixed :meth:`unittest.TestCase.debug` when used to call test
+  methods with subtests.  Patch by Bruno Oliveira.
+
+- bpo-34844: logging.Formatter enhancement - Ensure styles and fmt matches
+  in logging.Formatter - Added validate method in each format style class:
+  StrFormatStyle, PercentStyle, StringTemplateStyle. - This method is called
+  in the constructor of logging.Formatter class - Also re-raise the KeyError
+  in the format method of each style class, so it would a bit clear that
+  it's an error with the invalid format fields.
+
+- bpo-34897: Adjust test.support.missing_compiler_executable check so that a
+  nominal command name of "" is ignored. Patch by Michael Felt.
+
+- bpo-34871: Fix inspect module polluted ``sys.modules`` when parsing
+  ``__text_signature__`` of callable.
+
+- bpo-34898: Add `mtime` argument to `gzip.compress` for reproducible
+  output. Patch by Guo Ci Teo.
+
+- bpo-28441: On Cygwin and MinGW, ensure that ``sys.executable`` always
+  includes the full filename in the path, including the ``.exe`` suffix
+  (unless it is a symbolic link).
+
+- bpo-34866: Adding ``max_num_fields`` to ``cgi.FieldStorage`` to make DOS
+  attacks harder by limiting the number of ``MiniFieldStorage`` objects
+  created by ``FieldStorage``.
+
+- bpo-34711: http.server ensures it reports HTTPStatus.NOT_FOUND when the
+  local path ends with "/" and is not a directory, even if the underlying OS
+  (e.g. AIX) accepts such paths as a valid file reference. Patch by Michael
+  Felt.
+
+- bpo-34872: Fix self-cancellation in C implementation of asyncio.Task
+
+- bpo-34849: Don't log waiting for ``selector.select`` in asyncio loop
+  iteration. The waiting is pretty normal for any asyncio program, logging
+  its time just adds a noise to logs without any useful information
+  provided.
+
+- bpo-34022: The :envvar:`SOURCE_DATE_EPOCH` environment variable no longer
+  overrides the value of the *invalidation_mode* argument to
+  :func:`py_compile.compile`, and determines its default value instead.
+
+- bpo-34819: Use a monotonic clock to compute timeouts in
+  :meth:`Executor.map` and :func:`as_completed`, in order to prevent
+  timeouts from deviating when the system clock is adjusted.
+
+- bpo-34758: Add .wasm -> application/wasm to list of recognized file types
+  and content type headers
+
+- bpo-34789: :func:`xml.sax.make_parser` now accepts any iterable as its
+  *parser_list* argument.  Patch by Andrés Delfino.
+
+- bpo-34334: In :class:`QueueHandler`, clear `exc_text` from
+  :class:`LogRecord` to prevent traceback from being written twice.
+
+- bpo-34687: On Windows, asyncio now uses ProactorEventLoop, instead of
+  SelectorEventLoop, by default.
+
+- bpo-5950: Support reading zip files with archive comments in
+  :mod:`zipimport`.
+
+- bpo-32892: The parser now represents all constants as
+  :class:`ast.Constant` instead of using specific constant AST types
+  (``Num``, ``Str``, ``Bytes``, ``NameConstant`` and ``Ellipsis``). These
+  classes are considered deprecated and will be removed in future Python
+  versions.
+
+- bpo-34728: Add deprecation warning when `loop` is used in methods:
+  `asyncio.sleep`, `asyncio.wait` and `asyncio.wait_for`.
+
+- bpo-34738: ZIP files created by :mod:`distutils` will now include entries
+  for directories.
+
+- bpo-34659: Add an optional *initial* argument to itertools.accumulate().
+
+- bpo-29577: Support multiple mixin classes when creating Enums.
+
+- bpo-34670: Add SSLContext.post_handshake_auth and
+  SSLSocket.verify_client_post_handshake for TLS 1.3's post handshake
+  authentication feature.
+
+- bpo-32718: The Activate.ps1 script from venv works with PowerShell Core
+  6.1 and is now available under all operating systems.
+
+- bpo-31177: Fix bug that prevented using :meth:`reset_mock
+  <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes
+
+- bpo-34672: Add a workaround, so the ``'Z'`` :func:`time.strftime`
+  specifier on the musl C library can work in some cases.
+
+- bpo-34666: Implement ``asyncio.StreamWriter.awrite`` and
+  ``asyncio.StreamWriter.aclose()`` coroutines.  Methods are needed for
+  providing a consistent stream API with control flow switched on by
+  default.
+
+- bpo-6721: Acquire the logging module's commonly used internal locks while
+  fork()ing to avoid deadlocks in the child process.
+
+- bpo-34658: Fix a rare interpreter unhandled exception state SystemError
+  only seen when using subprocess with a preexec_fn while an after_parent
+  handler has been registered with os.register_at_fork and the fork system
+  call fails.
+
+- bpo-34652: Ensure :func:`os.lchmod` is never defined on Linux.
+
+- bpo-34638: Store a weak reference to stream reader to break strong
+  references loop between reader and protocol.  It allows to detect and
+  close the socket if the stream is deleted (garbage collected) without
+  ``close()`` call.
+
+- bpo-34536: `Enum._missing_`:  raise `ValueError` if None returned and
+  `TypeError` if non-member is returned.
+
+- bpo-34636: Speed up re scanning of many non-matching characters for \s \w
+  and \d within bytes objects. (microoptimization)
+
+- bpo-24412: Add :func:`~unittest.addModuleCleanup()` and
+  :meth:`~unittest.TestCase.addClassCleanup()` to unittest to support
+  cleanups for :func:`~unittest.setUpModule()` and
+  :meth:`~unittest.TestCase.setUpClass()`. Patch by Lisa Roach.
+
+- bpo-34630: Don't log SSL certificate errors in asyncio code (connection
+  error logging is skipped already).
+
+- bpo-32490: Prevent filename duplication in :mod:`subprocess` exception
+  messages.  Patch by Zackery Spytz.
+
+- bpo-34363: dataclasses.asdict() and .astuple() now handle namedtuples
+  correctly.
+
+- bpo-34625: Update vendorized expat library version to 2.2.6.
+
+- bpo-32270: The subprocess module no longer mistakenly closes redirected
+  fds even when they were in pass_fds when outside of the default {0, 1, 2}
+  set.
+
+- bpo-34622: Create a dedicated ``asyncio.CancelledError``,
+  ``asyncio.InvalidStateError`` and ``asyncio.TimeoutError`` exception
+  classes.  Inherit them from corresponding exceptions from
+  ``concurrent.futures`` package. Extract ``asyncio`` exceptions into a
+  separate file.
+
+- bpo-34610: Fixed iterator of :class:`multiprocessing.managers.DictProxy`.
+
+- bpo-34421: Fix distutils logging for non-ASCII strings.  This caused
+  installation issues on Windows.
+
+- bpo-34604: Fix possible mojibake in the error message of `pwd.getpwnam`
+  and `grp.getgrnam` using string representation because of invisible
+  characters or trailing whitespaces. Patch by William Grzybowski.
+
+- bpo-30977: Make uuid.UUID use ``__slots__`` to reduce its memory
+  footprint. Based on original patch by Wouter Bolsterlee.
+
+- bpo-34574: OrderedDict iterators are not exhausted during pickling
+  anymore. Patch by Sergey Fedoseev.
+
+- bpo-8110: Refactored :mod:`subprocess` to check for Windows-specific
+  modules rather than ``sys.platform == 'win32'``.
+
+- bpo-34530: ``distutils.spawn.find_executable()`` now falls back on
+  :data:`os.defpath` if the ``PATH`` environment variable is not set.
+
+- bpo-34563: On Windows, fix multiprocessing.Connection for very large read:
+  fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for read larger than
+  INT_MAX (usually 2^31-1).
+
+- bpo-34558: Correct typo in Lib/ctypes/_aix.py
+
+- bpo-34282: Move ``Enum._convert`` to ``EnumMeta._convert_`` and fix enum
+  members getting shadowed by parent attributes.
+
+- bpo-22872: When the queue is closed, :exc:`ValueError` is now raised by
+  :meth:`multiprocessing.Queue.put` and :meth:`multiprocessing.Queue.get`
+  instead of :exc:`AssertionError` and :exc:`OSError`, respectively. Patch
+  by Zackery Spytz.
+
+- bpo-34515: Fix parsing non-ASCII identifiers in
+  :mod:`lib2to3.pgen2.tokenize` (PEP 3131).
+
+- bpo-13312: Avoids a possible integer underflow (undefined behavior) in the
+  time module's year handling code when passed a very low negative year
+  value.
+
+- bpo-34472: Improved compatibility for streamed files in :mod:`zipfile`.
+  Previously an optional signature was not being written and certain ZIP
+  applications were not supported. Patch by Silas Sewell.
+
+- bpo-34454: Fix the .fromisoformat() methods of datetime types crashing
+  when given unicode with non-UTF-8-encodable code points.  Specifically,
+  datetime.fromisoformat() now accepts surrogate unicode code points used as
+  the separator. Report and tests by Alexey Izbyshev, patch by Paul Ganssle.
+
+- bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks.
+  Patch by Vladimir Matveev.
+
+- bpo-34171: Running the :mod:`trace` module no longer creates the
+  ``trace.cover`` file.
+
+- bpo-34441: Fix crash when an ``ABC``-derived class with invalid
+  ``__subclasses__`` is passed as the second argument to
+  :func:`issubclass()`. Patch by Alexey Izbyshev.
+
+- bpo-34427: Fix infinite loop in ``a.extend(a)`` for ``MutableSequence``
+  subclasses.
+
+- bpo-34412: Make :func:`signal.strsignal` work on HP-UX. Patch by Michael
+  Osipov.
+
+- bpo-20849: shutil.copytree now accepts a new ``dirs_exist_ok`` keyword
+  argument. Patch by Josh Bronson.
+
+- bpo-31715: Associate ``.mjs`` file extension with
+  ``application/javascript`` MIME Type.
+
+- bpo-34384: :func:`os.readlink` now accepts :term:`path-like <path-like
+  object>` and :class:`bytes` objects on Windows.
+
+- bpo-22602: The UTF-7 decoder now raises :exc:`UnicodeDecodeError` for
+  ill-formed sequences starting with "+" (as specified in RFC 2152).  Patch
+  by Zackery Spytz.
+
+- bpo-2122: The :meth:`mmap.flush() <mmap.mmap.flush>` method now returns
+  ``None`` on success, raises an exception on error under all platforms.
+
+- bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer
+  grows the size of extra fields of existing entries.
+
+- bpo-34333: Fix %-formatting in :meth:`pathlib.PurePath.with_suffix` when
+  formatting an error message.
+
+- bpo-18540: The :class:`imaplib.IMAP4` and :class:`imaplib.IMAP4_SSL`
+  classes now resolve to the local host IP correctly when the default value
+  of *host* parameter (``''``) is used.
+
+- bpo-26502: Implement ``traceback.FrameSummary.__len__()`` method to
+  preserve compatibility with the old tuple API.
+
+- bpo-34318: :func:`~unittest.TestCase.assertRaises`,
+  :func:`~unittest.TestCase.assertRaisesRegex`,
+  :func:`~unittest.TestCase.assertWarns` and
+  :func:`~unittest.TestCase.assertWarnsRegex` no longer success if the
+  passed callable is None. They no longer ignore unknown keyword arguments
+  in the context manager mode. A DeprecationWarning was raised in these
+  cases since Python 3.5.
+
+- bpo-9372: Deprecate :meth:`__getitem__` methods of
+  :class:`xml.dom.pulldom.DOMEventStream`, :class:`wsgiref.util.FileWrapper`
+  and :class:`fileinput.FileInput`.
+
+- bpo-33613: Fix a race condition in ``multiprocessing.semaphore_tracker``
+  when the tracker receives SIGINT before it can register signal handlers
+  for ignoring it.
+
+- bpo-34248: Report filename in the exception raised when the database file
+  cannot be opened by :func:`dbm.gnu.open` and :func:`dbm.ndbm.open` due to
+  OS-related error. Patch by Zsolt Cserna.
+
+- bpo-33089: Add math.dist() to compute the Euclidean distance between two
+  points.
+
+- bpo-34246: :meth:`smtplib.SMTP.send_message` no longer modifies the
+  content of the *mail_options* argument. Patch by Pablo S. Blum de Aguiar.
+
+- bpo-31047: Fix ``ntpath.abspath`` for invalid paths on windows. Patch by
+  Franz Woellert.
+
+- bpo-32321: Add pure Python fallback for functools.reduce. Patch by Robert
+  Wright.
+
+- bpo-34270: The default asyncio task class now always has a name which can
+  be get or set using two new methods (:meth:`~asyncio.Task.get_name()` and
+  :meth:`~asyncio.Task.set_name`) and is visible in the :func:`repr` output.
+  An initial name can also be set using the new ``name`` keyword argument to
+  :func:`asyncio.create_task` or the
+  :meth:`~asyncio.AbstractEventLoop.create_task` method of the event loop.
+  If no initial name is set, the default Task implementation generates a
+  name like ``Task-1`` using a monotonic counter.
+
+- bpo-34263: asyncio's event loop will not pass timeouts longer than one day
+  to epoll/select etc.
+
+- bpo-34035: Fix several AttributeError in zipfile seek() methods. Patch by
+  Mickaël Schoentgen.
+
+- bpo-32215: Fix performance regression in :mod:`sqlite3` when a DML
+  statement appeared in a different line than the rest of the SQL query.
+
+- bpo-34075: Deprecate passing non-ThreadPoolExecutor instances to
+  :meth:`AbstractEventLoop.set_default_executor`.
+
+- bpo-34251: Restore ``msilib.Win64`` to preserve backwards compatibility
+  since it's already used by :mod:`distutils`' ``bdist_msi`` command.
+
+- bpo-19891: Ignore errors caused by missing / non-writable homedir while
+  writing history during exit of an interactive session.  Patch by Anthony
+  Sottile.
+
+- bpo-33089: Enhanced math.hypot() to support more than two dimensions.
+
+- bpo-34228: tracemalloc: PYTHONTRACEMALLOC=0 environment variable and -X
+  tracemalloc=0 command line option are now allowed to disable explicitly
+  tracemalloc at startup.
+
+- bpo-13041: Use :func:`shutil.get_terminal_size` to calculate the terminal
+  width correctly in the ``argparse.HelpFormatter`` class.  Initial patch by
+  Zbyszek Jędrzejewski-Szmek.
+
+- bpo-34213: Allow frozen dataclasses to have a field named "object".
+  Previously this conflicted with an internal use of "object".
+
+- bpo-34052: :meth:`sqlite3.Connection.create_aggregate`,
+  :meth:`sqlite3.Connection.create_function`,
+  :meth:`sqlite3.Connection.set_authorizer`,
+  :meth:`sqlite3.Connection.set_progress_handler` methods raises TypeError
+  when unhashable objects are passed as callable. These methods now don't
+  pass such objects to SQLite API. Previous behavior could lead to
+  segfaults. Patch by Sergey Fedoseev.
+
+- bpo-34197: Attributes *skipinitialspace*, *doublequote* and *strict* of
+  the *dialect* attribute of the :mod:`csv` reader are now :class:`bool`
+  instances instead of integers 0 or 1.
+
+- bpo-32788: Errors other than :exc:`TypeError` raised in methods
+  ``__adapt__()`` and ``__conform__()`` in the :mod:`sqlite3` module are now
+  propagated to the user.
+
+- bpo-21446: The :2to3fixer:`reload` fixer now uses :func:`importlib.reload`
+  instead of deprecated :func:`imp.reload`.
+
+- bpo-940286: pydoc's ``Helper.showtopic()`` method now prints the cross
+  references of a topic correctly.
+
+- bpo-34164: :func:`base64.b32decode` could raise UnboundLocalError or
+  OverflowError for incorrect padding.  Now it always raises
+  :exc:`base64.Error` in these cases.
+
+- bpo-33729: Fixed issues with arguments parsing in :mod:`hashlib`.
+
+- bpo-34097: ZipFile can zip files older than 1980-01-01 and newer than
+  2107-12-31 using a new ``strict_timestamps`` parameter at the cost of
+  setting the timestamp to the limit.
+
+- bpo-34108: Remove extraneous CR in 2to3 refactor.
+
+- bpo-34070: Make sure to only check if the handle is a tty, when opening a
+  file with ``buffering=-1``.
+
+- bpo-27494: Reverted :issue:`27494`. 2to3 rejects now a trailing comma in
+  generator expressions.
+
+- bpo-33967: functools.singledispatch now raises TypeError instead of
+  IndexError when no positional arguments are passed.
+
+- bpo-34041: Add the parameter *deterministic* to the
+  :meth:`sqlite3.Connection.create_function` method. Patch by Sergey
+  Fedoseev.
+
+- bpo-34056: Ensure the loader shim created by ``imp.load_module`` always
+  returns bytes from its ``get_data()`` function. This fixes using
+  ``imp.load_module`` with :pep:`552` hash-based pycs.
+
+- bpo-34054: The multiprocessing module now uses the monotonic clock
+  :func:`time.monotonic` instead of the system clock :func:`time.time` to
+  implement timeout.
+
+- bpo-34043: Optimize tarfile uncompress performance about 15% when gzip is
+  used.
+
+- bpo-34044: ``subprocess.Popen`` now copies the *startupinfo* argument to
+  leave it unchanged: it will modify the copy, so that the same
+  ``STARTUPINFO`` object can be used multiple times.
+
+- bpo-34010: Fixed a performance regression for reading streams with
+  tarfile. The buffered read should use a list, instead of appending to a
+  bytes object.
+
+- bpo-34019: webbrowser: Correct the arguments passed to Opera Browser when
+  opening a new URL using the ``webbrowser`` module. Patch by Bumsik Kim.
+
+- bpo-34003: csv.DictReader now creates dicts instead of OrderedDicts. Patch
+  by Michael Selik.
+
+- bpo-33978: Closed existing logging handlers before reconfiguration via
+  fileConfig and dictConfig. Patch by Karthikeyan Singaravelan.
+
+- bpo-14117: Make minor tweaks to turtledemo. The 'wikipedia' example is now
+  'rosette', describing what it draws.  The 'penrose' print output is
+  reduced. The'1024' output of 'tree' is eliminated.
+
+- bpo-33974: Fixed passing lists and tuples of strings containing special
+  characters ``"``, ``\``, ``{``, ``}`` and ``\n`` as options to
+  :mod:`~tkinter.ttk` widgets.
+
+- bpo-27500: Fix getaddrinfo to resolve IPv6 addresses correctly.
+
+- bpo-24567: Improve random.choices() to handle subnormal input weights that
+  could occasionally trigger an IndexError.
+
+- bpo-33871: Fixed integer overflow in :func:`os.readv`, :func:`os.writev`,
+  :func:`os.preadv` and :func:`os.pwritev` and in :func:`os.sendfile` with
+  *headers* or *trailers* arguments (on BSD-based OSes and macOS).
+
+- bpo-25007: Add :func:`copy.copy` and :func:`copy.deepcopy` support to zlib
+  compressors and decompressors.  Patch by Zackery Spytz.
+
+- bpo-33929: multiprocessing: Fix a race condition in Popen of
+  multiprocessing.popen_spawn_win32. The child process now duplicates the
+  read end of pipe instead of "stealing" it. Previously, the read end of
+  pipe was "stolen" by the child process, but it leaked a handle if the
+  child process had been terminated before it could steal the handle from
+  the parent process.
+
+- bpo-33899: Tokenize module now implicitly emits a NEWLINE when provided
+  with input that does not have a trailing new line.  This behavior now
+  matches what the C tokenizer does internally.  Contributed by Ammar Askar.
+
+- bpo-33897: Added a 'force' keyword argument to logging.basicConfig().
+
+- bpo-33695: :func:`shutil.copytree` uses :func:`os.scandir` function and
+  all copy functions depending from it use cached :func:`os.stat` values.
+  The speedup for copying a directory with 8000 files is around +9% on
+  Linux, +20% on Windows and + 30% on a Windows SMB share. Also the number
+  of :func:`os.stat` syscalls is reduced by 38% making
+  :func:`shutil.copytree` especially faster on network filesystems.
+  (Contributed by Giampaolo Rodola' in :issue:`33695`.)
+
+- bpo-33916: bz2 and lzma: When Decompressor.__init__() is called twice,
+  free the old lock to not leak memory.
+
+- bpo-32568: Make select.epoll() and its documentation consistent regarding
+  *sizehint* and *flags*.
+
+- bpo-33833: Fixed bug in asyncio where ProactorSocketTransport logs
+  AssertionError if force closed during write.
+
+- bpo-33663: Convert content length to string before putting to header.
+
+- bpo-33721: :mod:`os.path` functions that return a boolean result like
+  :func:`~os.path.exists`, :func:`~os.path.lexists`, :func:`~os.path.isdir`,
+  :func:`~os.path.isfile`, :func:`~os.path.islink`, and
+  :func:`~os.path.ismount`, and :mod:`pathlib.Path` methods that return a
+  boolean result like :meth:`~pathlib.Path.exists()`,
+  :meth:`~pathlib.Path.is_dir()`, :meth:`~pathlib.Path.is_file()`,
+  :meth:`~pathlib.Path.is_mount()`, :meth:`~pathlib.Path.is_symlink()`,
+  :meth:`~pathlib.Path.is_block_device()`,
+  :meth:`~pathlib.Path.is_char_device()`, :meth:`~pathlib.Path.is_fifo()`,
+  :meth:`~pathlib.Path.is_socket()` now return ``False`` instead of raising
+  :exc:`ValueError` or its subclasses :exc:`UnicodeEncodeError` and
+  :exc:`UnicodeDecodeError` for paths that contain characters or bytes
+  unrepresentable at the OS level.
+
+- bpo-26544: Fixed implementation of :func:`platform.libc_ver`. It almost
+  always returned version '2.9' for glibc.
+
+- bpo-33843: Remove deprecated ``cgi.escape``, ``cgi.parse_qs`` and
+  ``cgi.parse_qsl``.
+
+- bpo-33842: Remove ``tarfile.filemode`` which is deprecated since Python
+  3.3.
+
+- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
+  Steve Weber.
+
+- bpo-33805: Improve error message of dataclasses.replace() when an InitVar
+  is not specified
+
+- bpo-33687: Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is
+  given or decoded. Patch by Timo Furrer.
+
+- bpo-33812: Datetime instance d with non-None tzinfo, but with
+  d.tzinfo.utcoffset(d) returning None is now treated as naive by the
+  astimezone() method.
+
+- bpo-32108: In configparser, don't clear section when it is assigned to
+  itself.
+
+- bpo-27397: Make email module properly handle invalid-length base64
+  strings.
+
+- bpo-33578: Implement multibyte encoder/decoder state methods
+
+- bpo-30805: Avoid race condition with debug logging
+
+- bpo-33476: Fix _header_value_parser.py when address group is missing final
+  ';'. Contributed by Enrique Perez-Terron
+
+- bpo-33694: asyncio: Fix a race condition causing data loss on
+  pause_reading()/resume_reading() when using the ProactorEventLoop.
+
+- bpo-32493: Correct test for ``uuid_enc_be`` availability in
+  ``configure.ac``. Patch by Michael Felt.
+
+- bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and
+  asyncio.WindowsProactorEventLoopPolicy.
+
+- bpo-33274: W3C DOM Level 1 specifies return value of
+  Element.removeAttributeNode() as "The Attr node that was removed."
+  xml.dom.minidom now complies with this requirement.
+
+- bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0.
+
+- bpo-33165: Added a stacklevel parameter to logging calls to allow use of
+  wrapper/helper functions for logging APIs.
+
+- bpo-33770: improve base64 exception message for encoded inputs of invalid
+  length
+
+- bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case
+  of an unhandled error; mark SSLTransport as closed if it is aborted.
+
+- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
+  operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
+  performed on :class:`mmap.mmap` objects.  Patch by Zackery Spytz.
+
+- bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake
+  timeout
+
+- bpo-31014: Fixed creating a controller for :mod:`webbrowser` when a user
+  specifies a path to an entry in the BROWSER environment variable.  Based
+  on patch by John Still.
+
+- bpo-2504: Add gettext.pgettext() and variants.
+
+- bpo-33197: Add description property for _ParameterKind
+
+- bpo-32751: When cancelling the task due to a timeout,
+  :meth:`asyncio.wait_for` will now wait until the cancellation is complete.
+
+- bpo-32684: Fix gather to propagate cancellation of itself even with
+  return_exceptions.
+
+- bpo-33654: Support protocol type switching in SSLTransport.set_protocol().
+
+- bpo-33674: Pause the transport as early as possible to further reduce the
+  risk of data_received() being called before connection_made().
+
+- bpo-33671: :func:`shutil.copyfile`, :func:`shutil.copy`,
+  :func:`shutil.copy2`, :func:`shutil.copytree` and :func:`shutil.move` use
+  platform-specific fast-copy syscalls on Linux and macOS in order to copy
+  the file more efficiently. On Windows :func:`shutil.copyfile` uses a
+  bigger default buffer size (1 MiB instead of 16 KiB) and a
+  :func:`memoryview`-based variant of :func:`shutil.copyfileobj` is used.
+  The speedup for copying a 512MiB file is about +26% on Linux, +50% on
+  macOS and +40% on Windows. Also, much less CPU cycles are consumed.
+  (Contributed by Giampaolo Rodola' in :issue:`25427`.)
+
+- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
+  asyncio.sslproto: start immediately the handshake instead of using
+  call_soon(). Previously, data_received() could be called before the
+  handshake started, causing the handshake to hang or fail.
+
+- bpo-31647: Fixed bug where calling write_eof() on a
+  _SelectorSocketTransport after it's already closed raises AttributeError.
+
+- bpo-32610: Make asyncio.all_tasks() return only pending tasks.
+
+- bpo-32410: Avoid blocking on file IO in sendfile fallback code
+
+- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
+
+- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
+
+- bpo-33654: Fix transport.set_protocol() to support switching between
+  asyncio.Protocol and asyncio.BufferedProtocol.  Fix loop.start_tls() to
+  work with asyncio.BufferedProtocols.
+
+- bpo-33652: Pickles of type variables and subscripted generics are now
+  future-proof and compatible with older Python versions.
+
+- bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD.
+
+- bpo-33238: Add ``InvalidStateError`` to :mod:`concurrent.futures`.
+  ``Future.set_result`` and ``Future.set_exception`` now raise
+  ``InvalidStateError`` if the futures are not pending or running. Patch by
+  Jason Haydaman.
+
+- bpo-33618: Finalize and document preliminary and experimental TLS 1.3
+  support with OpenSSL 1.1.1
+
+- bpo-33625: Release GIL on `grp.getgrnam`, `grp.getgrgid`, `pwd.getpwnam`
+  and `pwd.getpwuid` if reentrant variants of these functions are available.
+  Patch by William Grzybowski.
+
+- bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__
+
+- bpo-11874: Use a better regex when breaking usage into wrappable parts.
+  Avoids bogus assertion errors from custom metavar strings.
+
+- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
+  that prevented the cache of parsed strings from clearing after finishing
+  the decoding. Based on patch by c-fos.
+
+- bpo-33604: Remove HMAC default to md5 marked for removal in 3.8 (removal
+  originally planned in 3.6, bump to 3.8 in gh-7062).
+
+- bpo-33582: Emit a deprecation warning for inspect.formatargspec
+
+- bpo-21145: Add ``functools.cached_property`` decorator, for computed
+  properties cached for the life of the instance.
+
+- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
+  OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers
+  enabled by default.
+
+- bpo-28556: Do not simplify arguments to `typing.Union`. Now
+  `Union[Manager, Employee]` is not simplified to `Employee` at runtime.
+  Such simplification previously caused several bugs and limited
+  possibilities for introspection.
+
+- bpo-12486: :func:`tokenize.generate_tokens` is now documented as a public
+  API to tokenize unicode strings. It was previously present but
+  undocumented.
+
+- bpo-33540: Add a new ``block_on_close`` class attribute to
+  ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`.
+
+- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
+  locations
+
+- bpo-33109: argparse subparsers are once again not required by default,
+  reverting the change in behavior introduced by bpo-26510 in 3.7.0a2.
+
+- bpo-33541: Remove unused private method ``_strptime.LocaleTime.__pad``
+  (a.k.a. ``_LocaleTime__pad``).
+
+- bpo-33536: dataclasses.make_dataclass now checks for invalid field names
+  and duplicate fields. Also, added a check for invalid field
+  specifications.
+
+- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
+  Windows. Patch by Zvi Effron
+
+- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
+  Windows proactor event loop.
+
+- Fix failure in `typing.get_type_hints()` when ClassVar was provided as a
+  string forward reference.
+
+- bpo-33516: :class:`unittest.mock.MagicMock` now supports the ``__round__``
+  magic method.
+
+- bpo-28612: Added support for Site Maps to urllib's ``RobotFileParser`` as
+  :meth:`RobotFileParser.site_maps()
+  <urllib.robotparser.RobotFileParser.site_maps>`. Patch by Lady Red, based
+  on patch by Peter Wirtz.
+
+- bpo-28167: Remove platform.linux_distribution, which was deprecated since
+  3.5.
+
+- bpo-33504: Switch the default dictionary implementation for
+  :mod:`configparser` from :class:`collections.OrderedDict` to the standard
+  :class:`dict` type.
+
+- bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x
+  faster.
+
+- bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in
+  FieldStorage use the given errors (needed for Twisted).  Patch by Amber
+  Brown.
+
+- bpo-29235: The :class:`cProfile.Profile` class can now be used as a
+  context manager. Patch by Scott Sanderson.
+
+- bpo-33495: Change dataclasses.Fields repr to use the repr of each of its
+  members, instead of str.  This makes it more clear what each field
+  actually represents.  This is especially true for the 'type' member.
+
+- bpo-26103: Correct ``inspect.isdatadescriptor`` to look for ``__set__`` or
+  ``__delete__``.  Patch by Aaron Hall.
+
+- bpo-29209: Removed the ``doctype()`` method and the *html* parameter of
+  the constructor of :class:`~xml.etree.ElementTree.XMLParser`.  The
+  ``doctype()`` method defined in a subclass will no longer be called.
+  Deprecated methods ``getchildren()`` and ``getiterator()`` in the
+  :mod:`~xml.etree.ElementTree` module emit now a :exc:`DeprecationWarning`
+  instead of :exc:`PendingDeprecationWarning`.
+
+- bpo-33453: Fix dataclasses to work if using literal string type
+  annotations or if using PEP 563 "Postponed Evaluation of Annotations".
+  Only specific string prefixes are detected for both ClassVar ("ClassVar"
+  and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar").
+
+- bpo-28556: Minor fixes in typing module: add annotations to
+  ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
+  ``Generic.__new__``.  Original PRs by Paulius Šarka and Chad Dombrova.
+
+- bpo-33365: Print the header values besides the header keys instead just
+  the header keys if *debuglevel* is set to >0 in :mod:`http.client`. Patch
+  by Marco Strigl.
+
+- bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
+
+- bpo-33422: Fix trailing quotation marks getting deleted when looking up
+  byte/string literals on pydoc. Patch by Andrés Delfino.
+
+- bpo-28167: The function ``platform.linux_distribution`` and
+  ``platform.dist`` now trigger a ``DeprecationWarning`` and have been
+  marked for removal in Python 3.8
+
+- bpo-33281: Fix ctypes.util.find_library regression on macOS.
+
+- bpo-33311: Text and html output generated by cgitb does not display
+  parentheses if the current call is done directly in the module. Patch by
+  Stéphane Blondon.
+
+- bpo-27300: The file classes in *tempfile* now accept an *errors* parameter
+  that complements the already existing *encoding*.  Patch by Stephan Hohe.
+
+- bpo-32933: :func:`unittest.mock.mock_open` now supports iteration over the
+  file contents. Patch by Tony Flury.
+
+- bpo-33217: Raise :exc:`TypeError` when looking up non-Enum objects in Enum
+  classes and Enum members.
+
+- bpo-33197: Update error message when constructing invalid
+  inspect.Parameters Patch by Dong-hee Na.
+
+- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
+  object when it is called with a single argument.
+
+- bpo-33375: The warnings module now finds the Python file associated with a
+  warning from the code object, rather than the frame's global namespace.
+  This is consistent with how tracebacks and pdb find filenames, and should
+  work better for dynamically executed code.
+
+- bpo-33336: ``imaplib`` now allows ``MOVE`` command in ``IMAP4.uid()`` (RFC
+  6851: IMAP MOVE Extension) and potentially as a name of supported method
+  of ``IMAP4`` object.
+
+- bpo-32455: Added *jump* parameter to :func:`dis.stack_effect`.
+
+- bpo-27485: Rename and deprecate undocumented functions in
+  :func:`urllib.parse`.
+
+- bpo-33332: Add ``signal.valid_signals()`` to expose the POSIX sigfillset()
+  functionality.
+
+- bpo-33251: `ConfigParser.items()` was fixed so that key-value pairs passed
+  in via `vars` are not included in the resulting output.
+
+- bpo-33329: Fix multiprocessing regression on newer glibcs
+
+- bpo-33334: :func:`dis.stack_effect` now supports all defined opcodes
+  including NOP and EXTENDED_ARG.
+
+- bpo-991266: Fix quoting of the ``Comment`` attribute of
+  :class:`http.cookies.SimpleCookie`.
+
+- bpo-33131: Upgrade bundled version of pip to 10.0.1.
+
+- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
+  object to a tree of tuples or lists with ``line_info=False`` and
+  ``col_info=True``.
+
+- bpo-23403: lib2to3 now uses pickle protocol 4 for pre-computed grammars.
+
+- bpo-33266: lib2to3 now recognizes ``rf'...'`` strings.
+
+- bpo-11594: Ensure line-endings are respected when using lib2to3.
+
+- bpo-33254: Have :func:`importlib.resources.contents` and
+  :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable`
+  instead of an :term:`iterator`.
+
+- bpo-33265: ``contextlib.ExitStack`` and ``contextlib.AsyncExitStack`` now
+  use a method instead of a wrapper function for exit callbacks.
+
+- bpo-33263: Fix FD leak in `_SelectorSocketTransport`  Patch by Vlad
+  Starostin.
+
+- bpo-33256: Fix display of ``<module>`` call in the html produced by
+  ``cgitb.html()``. Patch by Stéphane Blondon.
+
+- bpo-33144: ``random.Random()`` and its subclassing mechanism got optimized
+  to check only once at class/subclass instantiation time whether its
+  ``getrandbits()`` method can be relied on by other methods, including
+  ``randrange()``, for the generation of arbitrarily large random integers.
+  Patch by Wolfgang Maier.
+
+- bpo-33185: Fixed regression when running pydoc with the :option:`-m`
+  switch. (The regression was introduced in 3.7.0b3 by the resolution of
+  :issue:`33053`)
+
+  This fix also changed pydoc to add ``os.getcwd()`` to :data:`sys.path`
+  when necessary, rather than adding ``"."``.
+
+- bpo-29613: Added support for the ``SameSite`` cookie flag to the
+  ``http.cookies`` module.
+
+- bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache`
+  when :meth:`importlib.machinery.invalidate_caches` is called.
+
+- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
+  sequences consistently even when called from subclasses without a
+  ``getrandbits()`` implementation.
+
+- bpo-33224: Update difflib.mdiff() for :pep:`479`.  Convert an uncaught
+  StopIteration in a generator into a return-statement.
+
+- bpo-33209: End framing at the end of C implementation of
+  :func:`pickle.Pickler.dump`.
+
+- bpo-32861: The urllib.robotparser's ``__str__`` representation now
+  includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
+  Also removes extra newlines that were being appended to the end of the
+  string. Patch by Michael Lazar.
+
+- bpo-23403: ``DEFAULT_PROTOCOL`` in :mod:`pickle` was bumped to 4. Protocol
+  4 is described in :pep:`3154` and available since Python 3.4. It offers
+  better performance and smaller size compared to protocol 3 introduced in
+  Python 3.0.
+
+- bpo-20104: Improved error handling and fixed a reference leak in
+  :func:`os.posix_spawn()`.
+
+- bpo-33106: Deleting a key from a read-only dbm database raises module
+  specific error instead of KeyError.
+
+- bpo-33175: In dataclasses, Field.__set_name__ now looks up the
+  __set_name__ special method on the class, not the instance, of the default
+  value.
+
+- bpo-32380: Create functools.singledispatchmethod to support generic single
+  dispatch on descriptors and methods.
+
+- bpo-33141: Have Field objects pass through __set_name__ to their default
+  values, if they have their own __set_name__.
+
+- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
+  boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
+  Khatri.
+
+- bpo-32873: Treat type variables and special typing forms as immutable by
+  copy and pickle.  This fixes several minor issues and inconsistencies, and
+  improves backwards compatibility with Python 3.6.
+
+- bpo-33134: When computing dataclass's __hash__, use the lookup table to
+  contain the function which returns the __hash__ value.  This is an
+  improvement over looking up a string, and then testing that string to see
+  what to do.
+
+- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
+
+- bpo-32505: Raise TypeError if a member variable of a dataclass is of type
+  Field, but doesn't have a type annotation.
+
+- bpo-33078: Fix the failure on OSX caused by the tests relying on
+  sem_getvalue
+
+- bpo-33116: Add 'Field' to dataclasses.__all__.
+
+- bpo-32896: Fix an error where subclassing a dataclass with a field that
+  uses a default_factory would generate an incorrect class.
+
+- bpo-33100: Dataclasses: If a field has a default value that's a
+  MemberDescriptorType, then it's from that field being in __slots__, not an
+  actual default value.
+
+- bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow
+  attributes to be added to the derived class.  Only attributes from the
+  frozen dataclass cannot be assigned to.  Require all dataclasses in a
+  hierarchy to be either all frozen or all non-frozen.
+
+- bpo-33097: Raise RuntimeError when ``executor.submit`` is called during
+  interpreter shutdown.
+
+- bpo-32968: Modulo and floor division involving Fraction and float should
+  return float.
+
+- bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py
+
+- bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling
+  error occurs.
+
+- bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
+  and ``**kwargs`` in function signatures.
+
+- bpo-33056: FIX properly close leaking fds in
+  concurrent.futures.ProcessPoolExecutor.
+
+- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
+  threads when calling mmap.mmap(), os.urandom(), and random.seed().  Patch
+  by Nir Soffer.
+
+- bpo-31804: Avoid failing in multiprocessing.Process if the standard
+  streams are closed or None at exit.
+
+- bpo-33034: Providing an explicit error message when casting the port
+  property to anything that is not an integer value using ``urlparse()`` and
+  ``urlsplit()``. Patch by Matt Eaton.
+
+- bpo-30249: Improve struct.unpack_from() exception messages for problems
+  with the buffer size and offset.
+
+- bpo-33037: Skip sending/receiving data after SSL transport closing.
+
+- bpo-27683: Fix a regression in :mod:`ipaddress` that result of
+  :meth:`hosts` is empty when the network is constructed by a tuple
+  containing an integer mask and only 1 bit left for addresses.
+
+- bpo-22674: Add the strsignal() function in the signal module that returns
+  the system description of the given signal, as returned by strsignal(3).
+
+- bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls,
+  subclass)`` crashed when ``subclass`` is not a type object.
+
+- bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
+
+- bpo-32969: Expose several missing constants in zlib and fix corresponding
+  documentation.
+
+- bpo-32056: Improved exceptions raised for invalid number of channels and
+  sample width when read an audio file in modules :mod:`aifc`, :mod:`wave`
+  and :mod:`sunau`.
+
+- bpo-32970: Improved disassembly of the MAKE_FUNCTION instruction.
+
+- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
+  subprocess if another low descriptor is closed.
+
+- bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen
+  classes, and also disallow inheriting non-frozen from frozen classes. This
+  restriction will be relaxed at a future date.
+
+- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
+  by Joffrey Fuhrer.
+
+- bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant,
+  available with OpenSSL 1.1.0h or 1.1.1.
+
+- bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now
+  prohibited. The constructors were never documented, tested, or designed as
+  public constructors. Users were suppose to use ssl.wrap_socket() or
+  SSLContext.
+
+- bpo-32929: Remove the tri-state parameter "hash", and add the boolean
+  "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a
+  __hash__ exists, raise TypeError.  If unsafe_hash is False, add a __hash__
+  based on the values of eq= and frozen=.  The unsafe_hash=False behavior is
+  the same as the old hash=None behavior.  unsafe_hash=False is the default,
+  just as hash=None used to be.
+
+- bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3
+  for future compatibility with OpenSSL 1.1.1.
+
+- bpo-32146: Document the interaction between frozen executables and the
+  spawn and forkserver start methods in multiprocessing.
+
+- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
+
+- bpo-32922: dbm.open() now encodes filename with the filesystem encoding
+  rather than default encoding.
+
+- bpo-32759: Free unused arenas in multiprocessing.heap.
+
+- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
+  syscall exists or not.
+
+- bpo-32556: nt._getfinalpathname, nt._getvolumepathname and
+  nt._getdiskusage now correctly convert from bytes.
+
+- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
+  file created in earlier command" to the more helpful "Must create and
+  upload files in one command".
+
+- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
+  :exc:`ValueError` instead of canceling the first scheduled function.
+  Patch by Cheryl Sabella.
+
+- bpo-32852: Make sure sys.argv remains as a list when running trace.
+
+- bpo-31333: ``_abc`` module is added.  It is a speedup module with C
+  implementations for various functions and methods in ``abc``.  Creating an
+  ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC
+  subclass are up to 1.5x faster. In addition, this makes Python start-up up
+  to 10% faster.
+
+  Note that the new implementation hides internal registry and caches,
+  previously accessible via private attributes ``_abc_registry``,
+  ``_abc_cache``, and ``_abc_negative_cache``.  There are three debugging
+  helper methods that can be used instead ``_dump_registry``,
+  ``_abc_registry_clear``, and ``_abc_caches_clear``.
+
+- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
+  cancellation after notifying and cancelling a conditional lock. Patch by
+  Bar Harel.
+
+- bpo-32819: ssl.match_hostname() has been simplified and no longer depends
+  on re and ipaddress module for wildcard and IP addresses. Error reporting
+  for invalid wildcards has been improved.
+
+- bpo-19675: ``multiprocessing.Pool`` no longer leaks processes if its
+  initialization fails.
+
+- bpo-32394: socket: Remove
+  TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version
+  Windows during run-time.
+
+- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
+  (Contributed by Oren Milman)
+
+- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
+  only the last field is quoted.  Patch by Jake Davis.
+
+- bpo-30688: Added support of ``\N{name}`` escapes in regular expressions.
+  Based on patch by Jonathan Eunice.
+
+- bpo-32792: collections.ChainMap() preserves the order of the underlying
+  mappings.
+
+- bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which
+  contain set operations. Sets starting with '[' or containing '--', '&&',
+  '~~' or '||' will be interpreted differently in regular expressions in
+  future versions. Currently they emit warnings. fnmatch.translate() now
+  avoids producing patterns containing such sets by accident.
+
+- bpo-32622: Implement native fast sendfile for Windows proactor event loop.
+
+- bpo-32777: Fix a rare but potential pre-exec child process deadlock in
+  subprocess on POSIX systems when marking file descriptors inheritable on
+  exec in the child process.  This bug appears to have been introduced in
+  3.4.
+
+- bpo-32647: The ctypes module used to depend on indirect linking for
+  dlopen. The shared extension is now explicitly linked against libdl on
+  platforms with dl.
+
+- bpo-32749: A :mod:`dbm.dumb` database opened with flags 'r' is now
+  read-only. :func:`dbm.dumb.open` with flags 'r' and 'w' no longer creates
+  a database if it does not exist.
+
+- bpo-32741: Implement ``asyncio.TimerHandle.when()`` method.
+
+- bpo-32691: Use mod_spec.parent when running modules with pdb
+
+- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
+  and locking the same lock multiple times, without it being free. Patch by
+  Bar Harel.
+
+- bpo-32727: Do not include name field in SMTP envelope from address. Patch
+  by Stéphane Wirtel
+
+- bpo-31453: Add TLSVersion constants and SSLContext.maximum_version /
+  minimum_version attributes. The new API wraps OpenSSL 1.1
+  https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html
+  feature.
+
+- bpo-24334: Internal implementation details of ssl module were cleaned up.
+  The SSLSocket has one less layer of indirection. Owner and session
+  information are now handled by the SSLSocket and SSLObject constructor.
+  Channel binding implementation has been simplified.
+
+- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
+  chunk is not found. Patch by Zackery Spytz.
+
+- bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`.  Patch by Alan D
+  Moore.
+
+- bpo-32512: :mod:`profile` CLI accepts `-m module_name` as an alternative
+  to script path.
+
+- bpo-8525: help() on a type now displays builtin subclasses. This is
+  intended primarily to help with notification of more specific exception
+  subclasses.
+
+  Patch by Sanyam Khurana.
+
+- bpo-31639: http.server now exposes a ThreadingHTTPServer class and uses it
+  when the module is run with ``-m`` to cope with web browsers pre-opening
+  sockets.
+
+- bpo-29877: compileall: import ProcessPoolExecutor only when needed,
+  preventing hangs on low resource platforms
+
+- bpo-32221: Various functions returning tuple containing IPv6 addresses now
+  omit ``%scope`` part since the same information is already encoded in
+  *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom`
+  when it receives multicast packet since useless resolving of network
+  interface name is omitted.
+
+- bpo-32147: :func:`binascii.unhexlify` is now up to 2 times faster. Patch
+  by Sergey Fedoseev.
+
+- bpo-30693: The TarFile class now recurses directories in a reproducible
+  way.
+
+- bpo-30693: The ZipFile class now recurses directories in a reproducible
+  way.
+
+- bpo-31680: Added :data:`curses.ncurses_version`.
+
+- bpo-31908: Fix output of cover files for ``trace`` module command-line
+  tool. Previously emitted cover files only when ``--missing`` option was
+  used. Patch by Michael Selik.
+
+- bpo-31608: Raise a ``TypeError`` instead of crashing if a
+  ``collections.deque`` subclass returns a non-deque from ``__new__``. Patch
+  by Oren Milman.
+
+- bpo-31425: Add support for sockets of the AF_QIPCRTR address family,
+  supported by the Linux kernel. This is used to communicate with services,
+  such as GPS or radio, running on Qualcomm devices. Patch by Bjorn
+  Andersson.
+
+- bpo-22005: Implemented unpickling instances of
+  :class:`~datetime.datetime`, :class:`~datetime.date` and
+  :class:`~datetime.time` pickled by Python 2. ``encoding='latin1'`` should
+  be used for successful decoding.
+
+- bpo-27645: :class:`sqlite3.Connection` now exposes a
+  :class:`~sqlite3.Connection.backup` method, if the underlying SQLite
+  library is at version 3.6.11 or higher.  Patch by Lele Gaifax.
+
+- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`.  Patch by Segev Finer.
+
+- bpo-31508: Removed support of arguments in
+  `tkinter.ttk.Treeview.selection`. It was deprecated in 3.6.  Use
+  specialized methods like `selection_set` for changing the selection.
+
+- bpo-29456: Fix bugs in hangul normalization: u1176, u11a7 and u11c3
+
+Documentation
+-------------
+
+- bpo-21257: Document :func:`http.client.parse_headers`.
+
+- bpo-34764: Improve example of iter() with 2nd sentinel argument.
+
+- bpo-35564: Explicitly set master_doc variable in conf.py for compliance
+  with Sphinx 2.0
+
+- bpo-35511: Specified that profile.Profile class doesn't not support enable
+  or disable methods. Also, elaborated that Profile object as a context
+  manager is only supported in cProfile module.
+
+- bpo-10536: Enhance the gettext docs. Patch by Éric Araujo
+
+- bpo-35089: Remove mention of ``typing.io`` and ``typing.re``. Their types
+  should be imported from ``typing`` directly.
+
+- bpo-35038: Fix the documentation about an unexisting `f_restricted`
+  attribute in the frame object. Patch by Stéphane Wirtel
+
+- bpo-35042: Replace PEP XYZ by the pep role and allow to use the direct
+  links to the PEPs.
+
+- bpo-35044: Fix the documentation with the role ``exc`` for the
+  appropriated exception. Patch by Stéphane Wirtel
+
+- bpo-35035: Rename documentation for :mod:`email.utils` to
+  ``email.utils.rst``.
+
+- bpo-34967: Use app.add_object_type() instead of the deprecated Sphinx
+  function app.description_unit()
+
+- bpo-34913: Add documentation about the new command line interface of the
+  gzip module.
+
+- bpo-32174: chm document displays non-ASCII charaters properly on some MBCS
+  Windows systems.
+
+- bpo-11233: Create availability directive for documentation.  Original
+  patch by Georg Brandl.
+
+- bpo-34790: Document how passing coroutines to asyncio.wait() can be
+  confusing.
+
+- bpo-34552: Make clear that ``==`` operator sometimes is equivalent to
+  `is`. The ``<``, ``<=``, ``>`` and ``>=`` operators are only defined where
+  they make sense.
+
+- bpo-28617: Fixed info in the stdtypes docs concerning the types that
+  support membership tests.
+
+- bpo-20177: Migrate datetime.date.fromtimestamp to Argument Clinic. Patch
+  by Tim Hoffmann.
+
+- bpo-34065: Fix wrongly written basicConfig documentation markup syntax
+
+- bpo-33460: replaced ellipsis with correct error codes in tutorial chapter
+  3.
+
+- bpo-33847: Add '@' operator entry to index.
+
+- bpo-33409: Clarified the relationship between :pep:`538`'s
+  PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode.
+
+- bpo-33197: Add versionadded tag to the documentation of
+  ParameterKind.description
+
+- bpo-17045: Improve the C-API doc for PyTypeObject.  This includes adding
+  several quick-reference tables and a lot of missing slot/typedef entries.
+  The existing entries were also cleaned up with a slightly more consistent
+  format.
+
+- bpo-33736: Improve the documentation of :func:`asyncio.open_connection`,
+  :func:`asyncio.start_server` and their UNIX socket counterparts.
+
+- bpo-23859: Document that `asyncio.wait()` does not cancel its futures on
+  timeout.
+
+- bpo-32436: Document :pep:`567` changes to asyncio.
+
+- bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal
+  to 3.8.
+
+- bpo-33594: Document ``getargspec``, ``from_function`` and ``from_builtin``
+  as deprecated in their respective docstring, and include version since
+  deprecation in DeprecationWarning message.
+
+- bpo-33503: Fix broken pypi link
+
+- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
+
+- bpo-33487: BZ2file now emit a DeprecationWarning when buffering=None is
+  passed, the deprecation message and documentation also now explicitly
+  state it is deprecated since 3.0.
+
+- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
+
+- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
+  just any value.
+
+- bpo-33201: Modernize documentation for writing C extension types.
+
+- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
+  ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
+  missed in the document.
+
+- bpo-33126: Document PyBuffer_ToContiguous().
+
+- bpo-27212: Modify documentation for the :func:`islice` recipe to consume
+  initial values up to the start index.
+
+- bpo-28247: Update :mod:`zipapp` documentation to describe how to make
+  standalone applications.
+
+- bpo-18802: Documentation changes for ipaddress.  Patch by Jon Foster and
+  Berker Peksag.
+
+- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
+  implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
+
+- bpo-28124: The ssl module function ssl.wrap_socket() has been
+  de-emphasized and deprecated in favor of the more secure and efficient
+  SSLContext.wrap_socket() method.
+
+- bpo-17232: Clarify docs for -O and -OO.  Patch by Terry Reedy.
+
+- bpo-32436: Add documentation for the contextvars module (PEP 567).
+
+- bpo-32800: Update link to w3c doc for xml default namespaces.
+
+- bpo-11015: Update :mod:`test.support` documentation.
+
+- bpo-32613: Update the faq/windows.html to use the py command from PEP 397
+  instead of python.
+
+- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
+  method raises :exc:`AttributeError`.
+
+- bpo-32614: Modify RE examples in documentation to use raw strings to
+  prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
+  the deprecation.
+
+- bpo-20709: Remove the paragraph where we explain that os.utime() does not
+  support a directory as path under Windows. Patch by Jan-Philip Gehrcke
+
+- bpo-32722: Remove the bad example in the tutorial of the Generator
+  Expression. Patch by Stéphane Wirtel
+
+- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
+
+- bpo-30607: Use the externalized ``python-docs-theme`` package when
+  building the documentation.
+
+- bpo-8243: Add a note about curses.addch and curses.addstr exception
+  behavior when writing outside a window, or pad.
+
+- bpo-32337: Update documentation related with ``dict`` order.
+
+- bpo-25041: Document ``AF_PACKET`` in the :mod:`socket` module.
+
+- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
+  flags for ssl.SSLContext.verify_mode.
+
+Tests
+-----
+
+- bpo-35772: Fix sparse file tests of test_tarfile on ppc64 with the tmpfs
+  filesystem. Fix the function testing if the filesystem supports sparse
+  files: create a file which contains data and "holes", instead of creating
+  a file which contains no data. tmpfs effective block size is a page size
+  (tmpfs lives in the page cache). RHEL uses 64 KiB pages on aarch64, ppc64,
+  ppc64le, only s390x and x86_64 use 4 KiB pages, whereas the test punch
+  holes of 4 KiB.
+
+- bpo-35045: Make ssl tests less strict and also accept TLSv1 as system
+  default. The changes unbreaks test_min_max_version on Fedora 29.
+
+- bpo-32710: ``test_asyncio/test_sendfile.py`` now resets the event loop
+  policy using :func:`tearDownModule` as done in other tests, to prevent a
+  warning when running tests on Windows.
+
+- bpo-33717: test.pythoninfo now logs information of all clocks, not only
+  time.time() and time.perf_counter().
+
+- bpo-35488: Add a test to pathlib's Path.match() to verify it does not
+  support glob-style ** recursive pattern matching.
+
+- bpo-31731: Fix a race condition in ``check_interrupted_write()`` of
+  test_io: create directly the thread with SIGALRM signal blocked, rather
+  than blocking the signal later from the thread. Previously, it was
+  possible that the thread gets the signal before the signal is blocked.
+
+- bpo-35424: Fix test_multiprocessing_main_handling: use
+  :class:`multiprocessing.Pool` with a context manager and then explicitly
+  join the pool.
+
+- bpo-35519: Rename :mod:`test.bisect` module to :mod:`test.bisect_cmd` to
+  avoid conflict with :mod:`bisect` module when running directly a test like
+  ``./python Lib/test/test_xmlrpc.py``.
+
+- bpo-35513: Replace :func:`time.time` with :func:`time.monotonic` in tests
+  to measure time delta.
+
+- bpo-34279: :func:`test.support.run_unittest` no longer raise
+  :exc:`TestDidNotRun` if the test result contains skipped tests. The
+  exception is now only raised if no test have been run and no test have
+  been skipped.
+
+- bpo-35412: Add testcase to ``test_future4``: check unicode literal.
+
+- bpo-26704: Added test demonstrating double-patching of an instance method.
+  Patch by Anthony Sottile.
+
+- bpo-33725: test_multiprocessing_fork may crash on recent versions of
+  macOS.  Until the issue is resolved, skip the test on macOS.
+
+- bpo-35352: Modify test_asyncio to use the certificate set from the test
+  directory.
+
+- bpo-35317: Fix ``mktime()`` overflow error in ``test_email``: run
+  ``test_localtime_daylight_true_dst_true()`` and
+  ``test_localtime_daylight_false_dst_true()`` with a specific timezone.
+
+- bpo-21263: After several reports that test_gdb does not work properly on
+  macOS and since gdb is not shipped by default anymore, test_gdb is now
+  skipped on macOS when LLVM Clang has been used to compile Python. Patch by
+  Lysandros Nikolaou
+
+- bpo-34279: regrtest issue a warning when no tests have been executed in a
+  particular test file. Also, a new final result state is issued if no test
+  have been executed across all test files. Patch by Pablo Galindo.
+
+- bpo-34962: make docstest in Doc now passes., and is enforced in CI
+
+- bpo-23596: Use argparse for the command line of the gzip module. Patch by
+  Antony Lee
+
+- bpo-34537: Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was
+  compiled with Python 3.6 or earlier.
+
+- bpo-34587: test_socket: Remove RDSTest.testCongestion(). The test tries to
+  fill the receiver's socket buffer and expects an error. But the RDS
+  protocol doesn't require that. Moreover, the Linux implementation of RDS
+  expects that the producer of the messages reduces its rate, it's not the
+  role of the receiver to trigger an error. The test fails on Fedora 28 by
+  design, so just remove it.
+
+- bpo-34661: Fix test_shutil if unzip doesn't support -t.
+
+- bpo-34200: Fixed non-deterministic flakiness of test_pkg by not using the
+  scary test.support.module_cleanup() logic to save and restore sys.modules
+  contents between test cases.
+
+- bpo-34569: The experimental PEP 554 data channels now correctly pass
+  negative PyLong objects between subinterpreters on 32-bit systems. Patch
+  by Michael Felt.
+
+- bpo-34594: Fix usage of hardcoded ``errno`` values in the tests.
+
+- bpo-34579: Fix test_embed for AIX Patch by Michael Felt
+
+- bpo-34542: Use 3072 RSA keys and SHA-256 signature for test certs and
+  keys.
+
+- bpo-11193: Remove special condition for AIX in
+  `test_subprocess.test_undecodable_env`
+
+- bpo-34347: Fix `test_utf8_mode.test_cmd_line` for AIX
+
+- bpo-34490: On AIX with AF_UNIX family sockets getsockname() does not
+  provide 'sockname', so skip calls to transport.get_extra_info('sockname')
+
+- bpo-34391: Fix ftplib test for TLS 1.3 by reading from data socket.
+
+- bpo-11192: Fix `test_socket` on AIX AIX 6.1 and later IPv6 zone id
+  supports only supported by inet_pton6_zone() Switch to runtime-based
+  platform.system() to establish current platform  rather than build-time
+  based sys.platform()
+
+- bpo-34399: Update all RSA keys and DH params to use at least 2048 bits.
+
+- bpo-34373: Fix ``test_mktime`` and ``test_pthread_getcpuclickid`` tests
+  for AIX Add range checking for ``_PyTime_localtime`` for AIX Patch by
+  Michael Felt
+
+- bpo-11191: Skip the distutils test 'test_search_cpp' when using XLC as
+  compiler patch by aixtools (Michael Felt)
+
+- Improved an error message when mock assert_has_calls fails.
+
+- bpo-33746: Fix test_unittest when run in verbose mode.
+
+- bpo-33901: Fix test_dbm_gnu on macOS with gdbm 1.15: add a larger value to
+  make sure that the file size changes.
+
+- bpo-33873: Fix a bug in ``regrtest`` that caused an extra test to run if
+  --huntrleaks/-R was used. Exit with error in case that invalid parameters
+  are specified to --huntrleaks/-R (at least one warmup run and one
+  repetition must be used).
+
+- bpo-33562: Check that a global asyncio event loop policy is not left
+  behind by any tests.
+
+- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
+  might be due to running on ZFS.
+
+- bpo-32962: Fixed test_gdb when Python is compiled with flags -mcet
+  -fcf-protection -O0.
+
+- bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when
+  the interpreter is built with ``--enable-shared``.
+
+- bpo-32872: Avoid regrtest compatibility issue with namespace packages.
+
+- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
+  of ``KqueueSelector`` loop was not being closed.
+
+- bpo-32663: Making sure the `SMTPUTF8SimTests` class of tests gets run in
+  test_smtplib.py.
+
+- bpo-27643: Test_C test case needs "signed short" bitfields, but the IBM
+  XLC compiler (on AIX) does not support this Skip the code and test when
+  AIX and XLC are used
+
+  Applicable to Python2-2.7 and later
+
+- bpo-19417: Add test_bdb.py.
+
+- bpo-31809: Add tests to verify connection with secp ECDH curves.
+
+Build
+-----
+
+- bpo-34691: The _contextvars module is now built into the core Python
+  library on Windows.
+
+- bpo-35683: Improved Azure Pipelines build steps and now verifying layouts
+  correctly
+
+- bpo-35642: Remove asynciomodule.c from pythoncore.vcxproj
+
+- bpo-35550: Fix incorrect Solaris #ifdef checks to look for __sun && __SVR4
+  instead of sun when compiling.
+
+- bpo-35499: ``make profile-opt`` no longer replaces ``CFLAGS_NODIST`` with
+  ``CFLAGS``. It now adds profile-guided optimization (PGO) flags to
+  ``CFLAGS_NODIST``: existing ``CFLAGS_NODIST`` flags are kept.
+
+- bpo-35257: Avoid leaking the linker flags from Link Time Optimizations
+  (LTO) into distutils when compiling C extensions.
+
+- bpo-35351: When building Python with clang and LTO, LTO flags are no
+  longer passed into CFLAGS to build third-party C extensions through
+  distutils.
+
+- bpo-35139: Fix a compiler error when statically linking `pyexpat` in
+  `Modules/Setup`.
+
+- bpo-35059: PCbuild: Set InlineFunctionExpansion to OnlyExplicitInline
+  ("/Ob1" option) in pyproject.props in Debug mode to expand functions
+  marked as inline. This change should make Python compiled in Debug mode a
+  little bit faster on Windows.
+
+- bpo-35011: Restores the use of pyexpatns.h to isolate our embedded copy of
+  the expat C library so that its symbols do not conflict at link or dynamic
+  loading time with an embedding application or other extension modules with
+  their own version of libexpat.
+
+- bpo-28015: Have --with-lto works correctly with clang.
+
+- bpo-34765: Update the outdated install-sh file to the latest revision from
+  automake v1.16.1
+
+- bpo-34585: Check for floating-point byte order in configure.ac using
+  compilation tests instead of executing code, so that these checks work in
+  cross-compiled builds.
+
+- bpo-34710: Fixed SSL module build with OpenSSL & pedantic CFLAGS.
+
+- bpo-34582: Add JUnit XML output for regression tests and update Azure
+  DevOps builds.
+
+- bpo-34081: Make Sphinx warnings as errors in the Docs Makefile.
+
+- bpo-34555: Fix for case where it was not possible to have both
+  ``HAVE_LINUX_VM_SOCKETS_H`` and ``HAVE_SOCKADDR_ALG`` be undefined.
+
+- bpo-33015: Fix an undefined behaviour in the pthread implementation of
+  :c:func:`PyThread_start_new_thread`: add a function wrapper to always
+  return ``NULL``.
+
+- bpo-34245: The Python shared library is now installed with write
+  permission (mode 0755), which is the standard way of installing such
+  libraries.
+
+- bpo-34121: Fix detection of C11 atomic support on clang.
+
+- bpo-32430: Rename Modules/Setup.dist to Modules/Setup, and remove the
+  necessity to copy the former manually to the latter when updating the
+  local source tree.
+
+- bpo-30345: Add -g to LDFLAGS when compiling with LTO to get debug symbols.
+
+- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
+  ``OPT``. This option emitted annoying warnings when building extension
+  modules written in C++.
+
+- bpo-33614: Ensures module definition files for the stable ABI on Windows
+  are correctly regenerated.
+
+- bpo-33648: The --with-c-locale-warning configuration flag has been
+  removed. It has had no effect for about a year.
+
+- bpo-33522: Enable CI builds on Visual Studio Team Services at
+  https://python.visualstudio.com/cpython
+
+- bpo-33512: configure's check for "long double" has been simplified
+
+- bpo-33483: C compiler is now correctly detected from the standard
+  environment variables. --without-gcc and --with-icc options have been
+  removed.
+
+- bpo-33394: Enable the verbose build for extension modules, when GNU make
+  is passed macros on the command line.
+
+- bpo-33393: Update config.guess and config.sub files.
+
+- bpo-33377: Add new triplets for mips r6 and riscv variants (used in
+  extension suffixes).
+
+- bpo-32232: By default, modules configured in `Modules/Setup` are no longer
+  built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that
+  preprocessor definition include it in their individual entries.
+
+- bpo-33182: The embedding tests can once again be built with clang 6.0
+
+- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
+
+- bpo-33012: gcc 8 has added a new warning heuristic to detect invalid
+  function casts and a stock python build seems to hit that warning quite
+  often.  The most common is the cast of a METH_NOARGS function (that uses
+  just one argument) to a PyCFunction. Fix this by adding a dummy argument
+  to all functions that implement METH_NOARGS.
+
+- bpo-32898: Fix the python debug build when using COUNT_ALLOCS.
+
+- bpo-29442: Replace optparse with argparse in setup.py
+
+Windows
+-------
+
+- bpo-35890: Fix API calling consistency of GetVersionEx and wcstok.
+
+- bpo-32560: The ``py`` launcher now forwards its ``STARTUPINFO`` structure
+  to child processes.
+
+- bpo-35854: Fix EnvBuilder and --symlinks in venv on Windows
+
+- bpo-35811: Avoid propagating venv settings when launching via py.exe
+
+- bpo-35797: Fix default executable used by the multiprocessing module
+
+- bpo-35758: Allow building on ARM with MSVC.
+
+- bpo-29734: Fix handle leaks in os.stat on Windows.
+
+- bpo-35596: Use unchecked PYCs for the embeddable distro to avoid zipimport
+  restrictions.
+
+- bpo-35596: Fix vcruntime140.dll being added to embeddable distro multiple
+  times.
+
+- bpo-35402: Update Windows build to use Tcl and Tk 8.6.9
+
+- bpo-35401: Updates Windows build to OpenSSL 1.1.0j
+
+- bpo-34977: venv on Windows will now use a python.exe redirector rather
+  than copying the actual binaries from the base environment.
+
+- bpo-34977: Adds support for building a Windows App Store package
+
+- bpo-35067: Remove _distutils_findvs module and use vswhere.exe instead.
+
+- bpo-32557: Allow shutil.disk_usage to take a file path on Windows
+
+- bpo-34770: Fix a possible null pointer dereference in pyshellext.cpp.
+
+- bpo-34603: Fix returning structs from functions produced by MSVC
+
+- bpo-34581: Guard MSVC-specific code in socketmodule.c with ``#ifdef
+  _MSC_VER``.
+
+- bpo-34532: Fixes exit code of list version arguments for py.exe.
+
+- bpo-34062: Fixed the '--list' and '--list-paths' arguments for the py.exe
+  launcher
+
+- bpo-34225: Ensure INCLUDE and LIB directories do not end with a backslash.
+
+- bpo-34011: A suite of code has been changed which copied across DLLs and
+  init.tcl from the running Python location into a venv being created. These
+  copies are needed only when running from a Python source build, and the
+  copying code is now only run when that is the case, rather than whenever a
+  venv is created.
+
+- bpo-34006: Revert line length limit for Windows help docs. The line-length
+  limit is not needed because the pages appear in a separate app rather than
+  on a browser tab.  It can also interact badly with the DPI setting.
+
+- bpo-31546: Restore running PyOS_InputHook while waiting for user input at
+  the prompt. The restores integration of interactive GUI windows (such as
+  Matplotlib figures) with the prompt on Windows.
+
+- bpo-30237: Output error when ReadConsole is canceled by
+  CancelSynchronousIo instead of crashing.
+
+- bpo-33895: GIL is released while calling functions that acquire Windows
+  loader lock.
+
+- bpo-33720: Reduces maximum marshal recursion depth on release builds.
+
+- bpo-29097: Fix bug where :meth:`datetime.fromtimestamp` erroneously throws
+  an :exc:`OSError` on Windows for values between 0 and 86400. Patch by
+  Ammar Askar.
+
+- bpo-33316: PyThread_release_lock always fails
+
+- bpo-33184: Update Windows installer to use OpenSSL 1.1.0h.
+
+- bpo-32890: Fix usage of GetLastError() instead of errno in os.execve() and
+  os.truncate().
+
+- bpo-33016: Fix potential use of uninitialized memory in
+  nt._getfinalpathname
+
+- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
+  directory is set to a UNC path.
+
+- bpo-32901: Update Tcl and Tk versions to 8.6.8
+
+- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
+
+- bpo-32409: Ensures activate.bat can handle Unicode contents.
+
+- bpo-32457: Improves handling of denormalized executable path when
+  launching Python.
+
+- bpo-32370: Use the correct encoding for ipconfig output in the uuid
+  module. Patch by Segev Finer.
+
+- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
+  treating the ``PrintNameOffset`` field of the reparse data buffer as a
+  number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
+
+- bpo-1104: Correctly handle string length in
+  ``msilib.SummaryInfo.GetProperty()`` to prevent it from truncating the
+  last character.
+
+macOS
+-----
+
+- bpo-35401: Update macOS installer to use OpenSSL 1.1.0j.
+
+- bpo-35025: Properly guard the use of the ``CLOCK_GETTIME`` et al. macros
+  in ``timemodule`` on macOS.
+
+- bpo-24658: On macOS, fix reading from and writing into a file with a size
+  larger than 2 GiB.
+
+- bpo-34405: Update to OpenSSL 1.1.0i for macOS installer builds.
+
+- bpo-33635: In macOS stat on some file descriptors (/dev/fd/3 f.e) will
+  result in bad file descriptor OSError. Guard against this exception was
+  added in is_dir, is_file and similar methods. DirEntry.is_dir can also
+  throw this exception so _RecursiveWildcardSelector._iterate_directories
+  was also extended with the same error ignoring pattern.
+
+- bpo-13631: The .editrc file in user's home directory is now processed
+  correctly during the readline initialization through editline emulation on
+  macOS.
+
+- bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h.
+
+- bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS
+  10.6+ installer. The 10.9+ installer variant already does this.  This
+  means that the Python 3.7 provided by the python.org macOS installers no
+  longer need or use any external versions of Tcl/Tk, either system-provided
+  or user-installed, such as ActiveTcl.
+
+- bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8.
+
+- bpo-31903: In :mod:`_scproxy`, drop the GIL when calling into
+  ``SystemConfiguration`` to avoid deadlocks.
+
+IDLE
+----
+
+- bpo-35770: IDLE macosx deletes Options => Configure IDLE. It previously
+  deleted Window => Zoom Height by mistake. (Zoom Height is now on the
+  Options menu).  On Mac, the settings dialog is accessed via Preferences on
+  the IDLE menu.
+
+- bpo-35769: Change IDLE's new file name from 'Untitled' to 'untitled'
+
+- bpo-35660: Fix imports in idlelib.window.
+
+- bpo-35641: Proper format `calltip` when the function has no docstring.
+
+- bpo-33987: Use ttk Frame for ttk widgets.
+
+- bpo-34055: Fix erroneous 'smart' indents and newlines in IDLE Shell.
+
+- bpo-35591: Find Selection now works when selection not found.
+
+- bpo-35196: Speed up squeezer line counting.
+
+- bpo-35598: Update config_key: use PEP 8 names and ttk widgets, make some
+  objects global, and add tests.
+
+- bpo-28097: Add Previous/Next History entries to Shell menu.
+
+- bpo-35208: Squeezer now properly counts wrapped lines before newlines.
+
+- bpo-35555: Gray out Code Context menu entry when it's not applicable.
+
+- bpo-35521: Document the IDLE editor code context feature. Add some
+  internal references within the IDLE doc.
+
+- bpo-22703: The Code Context menu label now toggles between Show/Hide Code
+  Context. The Zoom Height menu now toggles between Zoom/Restore Height.
+  Zoom Height has moved from the Window menu to the Options menu.
+
+- bpo-35213: Where appropriate, use 'macOS' in idlelib.
+
+- bpo-34864: On macOS, warn if the system preference "Prefer tabs when
+  opening documents" is set to "Always".
+
+- bpo-34864: Document two IDLE on MacOS issues. The System Preferences Dock
+  "prefer tabs always" setting disables some IDLE features.  Menus are a bit
+  different than as described for Windows and Linux.
+
+- bpo-35202: Remove unused imports from lib/idlelib
+
+- bpo-33000: Document that IDLE's shell has no line limit. A program that
+  runs indefinitely can overfill memory.
+
+- bpo-23220: Explain how IDLE's Shell displays output.
+
+- bpo-35099: Improve the doc about IDLE running user code.   The section is
+  renamed from "IDLE -- console differences" is renamed "Running user code".
+  It mostly covers the implications of using custom sys.stdxxx objects.
+
+- bpo-35097: Add IDLE doc subsection explaining editor windows. Topics
+  include opening, title and status bar, .py* extension, and running.
+
+- bpo-35093: Document the IDLE document viewer in the IDLE doc. Add a
+  paragraph in "Help and preferences", "Help sources" subsection.
+
+- bpo-35088: Update idlelib.help.copy_string docstring. We now use git and
+  backporting instead of hg and forward merging.
+
+- bpo-35087: Update idlelib help files for the current doc build. The main
+  change is the elimination of chapter-section numbers.
+
+- bpo-34548: Use configured color theme for read-only text views.
+
+- bpo-1529353: Enable "squeezing" of long outputs in the shell, to avoid
+  performance degradation and to clean up the history without losing it.
+  Squeezed outputs may be copied, viewed in a separate window, and
+  "unsqueezed".
+
+- bpo-34047: Fixed mousewheel scrolling direction on macOS.
+
+- bpo-34275: Make IDLE calltips always visible on Mac. Some MacOS-tk
+  combinations need .update_idletasks(). Patch by Kevin Walzer.
+
+- bpo-34120: Fix unresponsiveness after closing certain windows and dialogs.
+
+- bpo-33975: Avoid small type when running htests. Since part of the purpose
+  of human-viewed tests is to determine that widgets look right, it is
+  important that they look the same for testing as when running IDLE.
+
+- bpo-33905: Add test for idlelib.stackview.StackBrowser.
+
+- bpo-33924: Change mainmenu.menudefs key 'windows' to 'window'. Every other
+  menudef key is lowercase version of main menu entry.
+
+- bpo-33906: Rename idlelib.windows as window Match Window on the main menu
+  and remove last plural module name.
+
+- bpo-33917: Fix and document idlelib/idle_test/template.py. The revised
+  file compiles, runs, and tests OK.  idle_test/README.txt explains how to
+  use it to create new IDLE test files.
+
+- bpo-33904: IDLE: In rstrip, rename class RstripExtension as Rstrip
+
+- bpo-33907: For consistency and clarity, rename an IDLE module and classes.
+  Module calltips and its class CallTips are now calltip and Calltip. In
+  module calltip_w, class CallTip is now CalltipWindow.
+
+- bpo-33856: Add "help" in the welcome message of IDLE
+
+- bpo-33839: IDLE: refactor ToolTip and CallTip and add documentation and
+  tests
+
+- bpo-33855: Minimally test all IDLE modules. Add missing files, import
+  module, instantiate classes, and check coverage. Check existing files.
+
+- bpo-33656: On Windows, add API call saying that tk scales for DPI. On
+  Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
+  unchanged, and a monitor resolution greater than 96 DPI, this should make
+  text and lines sharper.  It should otherwise have no effect.
+
+- bpo-33768: Clicking on a context line moves that line to the top of the
+  editor window.
+
+- bpo-33763: IDLE: Use read-only text widget for code context instead of
+  label widget.
+
+- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
+  and scrollbar slider moved text by a fixed number of pixels, resulting in
+  partial lines at the top of the editor box.  The change also applies to
+  the shell and grep output windows, but not to read-only text views.
+
+- bpo-33679: Enable theme-specific color configuration for Code Context. Use
+  the Highlights tab to see the setting for built-in themes or add settings
+  to custom themes.
+
+- bpo-33642: Display up to maxlines non-blank lines for Code Context. If
+  there is no current context, show a single blank line.
+
+- bpo-33628: IDLE: Cleanup codecontext.py and its test.
+
+- bpo-33564: IDLE's code context now recognizes async as a block opener.
+
+- bpo-21474: Update word/identifier definition from ascii to unicode. In
+  text and entry boxes, this affects selection by double-click, movement
+  left/right by control-left/right, and deletion left/right by
+  control-BACKSPACE/DEL.
+
+- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
+  prefix cannot be paired with either 'r' or 'f'. Consistently color as much
+  of the prefix, starting at the right, as is valid. Revise and extend
+  colorizer test.
+
+- bpo-32984: Set ``__file__`` while running a startup file.  Like Python,
+  IDLE optionally runs one startup file in the Shell window before
+  presenting the first interactive input prompt.  For IDLE, ``-s`` runs a
+  file named in environmental variable  :envvar:`IDLESTARTUP` or
+  :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``.  Python sets
+  ``__file__`` to the startup file name before running the file and unsets
+  it before the first prompt.  IDLE now does the same when run normally,
+  without the ``-n`` option.
+
+- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
+
+- bpo-32916: Change ``str`` to ``code`` in pyparse.
+
+- bpo-32905: Remove unused code in pyparse module.
+
+- bpo-32874: Add tests for pyparse.
+
+- bpo-32837: Using the system and place-dependent default encoding for
+  open() is a bad idea for IDLE's system and location-independent files.
+
+- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
+  test test_file_buttons() only looks at initial ascii-only lines, but
+  failed on systems where open() defaults to 'ascii' because readline()
+  internally reads and decodes far enough ahead to encounter a non-ascii
+  character in CREDITS.txt.
+
+- bpo-32831: Add docstrings and tests for codecontext.
+
+- bpo-32765: Update configdialog General tab docstring to add new widgets to
+  the widget list.
+
+Tools/Demos
+-----------
+
+- bpo-35884: Add a benchmark script for timing various ways to access
+  variables: ``Tools/scripts/var_access_benchmark.py``.
+
+- bpo-34989: python-gdb.py now handles errors on computing the line number
+  of a Python frame.
+
+- bpo-20260: Argument Clinic now has non-bitwise unsigned int converters.
+
+- bpo-32962: python-gdb now catches ``UnicodeDecodeError`` exceptions when
+  calling ``string()``.
+
+- bpo-32962: python-gdb now catches ValueError on read_var(): when Python
+  has no debug symbols for example.
+
+- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
+  docstrings and translatable strings, and rejects bytes literals and
+  f-string expressions.
+
+- bpo-31920: Fixed handling directories as arguments in the ``pygettext``
+  script. Based on patch by Oleg Krasnikov.
+
+- bpo-29673: Fix pystackv and pystack gdbinit macros.
+
+- bpo-25427: Remove the pyvenv script in favor of ``python3 -m venv`` in
+  order to lower confusion as to what Python interpreter a virtual
+  environment will be created for.
+
+- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
+  automatic backup creation (files with ``~`` suffix).
+
+- bpo-32222: Fix pygettext not extracting docstrings for functions with type
+  annotated arguments. Patch by Toby Harradine.
+
+- bpo-31583: Fix 2to3 for using with --add-suffix option but without
+  --output-dir option for relative path to files in current directory.
+
+C API
+-----
+
+- bpo-35713: The :c:func:`PyByteArray_Init` and :c:func:`PyByteArray_Fini`
+  functions have been removed. They did nothing since Python 2.7.4 and
+  Python 3.2.0, were excluded from the limited API (stable ABI), and were
+  not documented.
+
+- bpo-33817: Fixed :c:func:`_PyBytes_Resize` for empty bytes objects.
+
+- bpo-35322: Fix memory leak in :c:func:`PyUnicode_EncodeLocale` and
+  :c:func:`PyUnicode_EncodeFSDefault` on error handling.
+
+- bpo-35059: The following C macros have been converted to static inline
+  functions: :c:func:`Py_INCREF`, :c:func:`Py_DECREF`, :c:func:`Py_XINCREF`,
+  :c:func:`Py_XDECREF`, :c:func:`PyObject_INIT`,
+  :c:func:`PyObject_INIT_VAR`.
+
+- bpo-35296: ``make install`` now also installs the internal API:
+  ``Include/internal/*.h`` header files.
+
+- bpo-35081: Internal APIs surrounded by ``#ifdef Py_BUILD_CORE`` have been
+  moved from ``Include/*.h`` headers to new header files
+  ``Include/internal/pycore_*.h``.
+
+- bpo-35259: Conditionally declare :c:func:`Py_FinalizeEx()` (new in 3.6)
+  based on Py_LIMITED_API. Patch by Arthur Neufeld.
+
+- bpo-35081: The :c:func:`_PyObject_GC_TRACK` and
+  :c:func:`_PyObject_GC_UNTRACK` macros have been removed from the public C
+  API.
+
+- bpo-35134: Creation of a new ``Include/cpython/`` subdirectory.
+
+- bpo-34725: Adds _Py_SetProgramFullPath so embedders may override
+  sys.executable
+
+- bpo-34910: Ensure that :c:func:`PyObject_Print` always returns ``-1`` on
+  error.  Patch by Zackery Spytz.
+
+- bpo-34523: Py_DecodeLocale() and Py_EncodeLocale() now use the UTF-8
+  encoding on Windows if Py_LegacyWindowsFSEncodingFlag is zero.
+
+- bpo-34193: Fix pluralization in TypeError messages in getargs.c and
+  typeobject.c: '1 argument' instead of '1 arguments' and '1 element'
+  instead of '1 elements'.
+
+- bpo-34127: Return grammatically correct error message based on argument
+  count. Patch by Karthikeyan Singaravelan.
+
+- bpo-23927: Fixed :exc:`SystemError` in
+  :c:func:`PyArg_ParseTupleAndKeywords` when the ``w*`` format unit is used
+  for optional parameter.
+
+- bpo-32455: Added :c:func:`PyCompile_OpcodeStackEffectWithJump`.
+
+- bpo-34008: Py_Main() can again be called after Py_Initialize(), as in
+  Python 3.6.
+
+- bpo-32500: Fixed error messages for :c:func:`PySequence_Size`,
+  :c:func:`PySequence_GetItem`, :c:func:`PySequence_SetItem` and
+  :c:func:`PySequence_DelItem` called with a mapping and
+  :c:func:`PyMapping_Size` called with a sequence.
+
+- bpo-33818: :c:func:`PyExceptionClass_Name` will now return ``const char
+  *`` instead of ``char *``.
+
+- bpo-33042: Embedding applications may once again call
+  PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to
+  calling Py_Initialize.
+
+- bpo-32374: Document that m_traverse for multi-phase initialized modules
+  can be called with m_state=NULL, and add a sanity check
+
+- bpo-30863: :c:func:`PyUnicode_AsWideChar` and
+  :c:func:`PyUnicode_AsWideCharString` no longer cache the ``wchar_t*``
+  representation of string objects.
+
+
+What's New in Python 3.7.0 final?
+=================================
+
+*Release date: 2018-06-27*
+
+Library
+-------
+
+- bpo-33851: Fix :func:`ast.get_docstring` for a node that lacks a
+  docstring.
+
+C API
+-----
+
+- bpo-33932: Calling Py_Initialize() twice does nothing, instead of failing
+  with a fatal error: restore the Python 3.6 behaviour.
+
+
+What's New in Python 3.7.0 release candidate 1?
+===============================================
+
+*Release date: 2018-06-12*
+
+Core and Builtins
+-----------------
+
+- bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an
+  object that hadn't all of its fields set to NULL.
+
+- bpo-33706: Fix a crash in Python initialization when parsing the command
+  line options. Thanks Christoph Gohlke for the bug report and the fix!
+
+- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
+  shutdown even when there was a custom handler set previously. Patch by
+  Philipp Kerling.
+
+- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
+
+Library
+-------
+
+- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
+  Steve Weber.
+
+- bpo-33812: Datetime instance d with non-None tzinfo, but with
+  d.tzinfo.utcoffset(d) returning None is now treated as naive by the
+  astimezone() method.
+
+- bpo-30805: Avoid race condition with debug logging
+
+- bpo-33694: asyncio: Fix a race condition causing data loss on
+  pause_reading()/resume_reading() when using the ProactorEventLoop.
+
+- bpo-32493: Correct test for ``uuid_enc_be`` availability in
+  ``configure.ac``. Patch by Michael Felt.
+
+- bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and
+  asyncio.WindowsProactorEventLoopPolicy.
+
+- bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0.
+
+- bpo-33770: improve base64 exception message for encoded inputs of invalid
+  length
+
+- bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case
+  of an unhandled error; mark SSLTransport as closed if it is aborted.
+
+- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
+  operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
+  performed on :class:`mmap.mmap` objects.  Patch by Zackery Spytz.
+
+- bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake
+  timeout
+
+- bpo-11874: Use a better regex when breaking usage into wrappable parts.
+  Avoids bogus assertion errors from custom metavar strings.
+
+- bpo-33582: Emit a deprecation warning for inspect.formatargspec
+
+Documentation
+-------------
+
+- bpo-33409: Clarified the relationship between :pep:`538`'s
+  PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode.
+
+- bpo-33736: Improve the documentation of :func:`asyncio.open_connection`,
+  :func:`asyncio.start_server` and their UNIX socket counterparts.
+
+- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
+  flags for ssl.SSLContext.verify_mode.
+
+Build
+-----
+
+- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
+  ``OPT``. This option emitted annoying warnings when building extension
+  modules written in C++.
+
+Windows
+-------
+
+- bpo-33720: Reduces maximum marshal recursion depth on release builds.
+
+IDLE
+----
+
+- bpo-33656: On Windows, add API call saying that tk scales for DPI. On
+  Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
+  unchanged, and a monitor resolution greater than 96 DPI, this should make
+  text and lines sharper.  It should otherwise have no effect.
+
+- bpo-33768: Clicking on a context line moves that line to the top of the
+  editor window.
+
+- bpo-33763: IDLE: Use read-only text widget for code context instead of
+  label widget.
+
+- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
+  and scrollbar slider moved text by a fixed number of pixels, resulting in
+  partial lines at the top of the editor box.  The change also applies to
+  the shell and grep output windows, but not to read-only text views.
+
+- bpo-33679: Enable theme-specific color configuration for Code Context. Use
+  the Highlights tab to see the setting for built-in themes or add settings
+  to custom themes.
+
+- bpo-33642: Display up to maxlines non-blank lines for Code Context. If
+  there is no current context, show a single blank line.
+
+
+What's New in Python 3.7.0 beta 5?
+==================================
+
+*Release date: 2018-05-30*
+
+Core and Builtins
+-----------------
+
+- bpo-33622: Fixed a leak when the garbage collector fails to add an object
+  with the ``__del__`` method or referenced by it into the
+  :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
+  exception is set and preserves it.
+
+- bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't
+  crash if module_globals is not a dict.
+
+- bpo-20104: The new `os.posix_spawn` added in 3.7.0b1 was removed as we are
+  still working on what the API should look like.  Expect this in 3.8
+  instead.
+
+- bpo-33475: Fixed miscellaneous bugs in converting annotations to strings
+  and optimized parentheses in the string representation.
+
+- bpo-33391: Fix a leak in set_symmetric_difference().
+
+- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
+
+- bpo-32911: Due to unexpected compatibility issues discovered during
+  downstream beta testing, reverted :issue:`29463`. ``docstring`` field is
+  removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes
+  which was added in 3.7a1.  Docstring expression is restored as a first
+  statement in their body. Based on patch by Inada Naoki.
+
+- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
+  ctypes structured data type. Patch by Eryk Sun and Oren Milman.
+
+Library
+-------
+
+- bpo-32751: When cancelling the task due to a timeout,
+  :meth:`asyncio.wait_for` will now wait until the cancellation is complete.
+
+- bpo-32684: Fix gather to propagate cancellation of itself even with
+  return_exceptions.
+
+- bpo-33654: Support protocol type switching in SSLTransport.set_protocol().
+
+- bpo-33674: Pause the transport as early as possible to further reduce the
+  risk of data_received() being called before connection_made().
+
+- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
+  asyncio.sslproto: start immediately the handshake instead of using
+  call_soon(). Previously, data_received() could be called before the
+  handshake started, causing the handshake to hang or fail.
+
+- bpo-31647: Fixed bug where calling write_eof() on a
+  _SelectorSocketTransport after it's already closed raises AttributeError.
+
+- bpo-32610: Make asyncio.all_tasks() return only pending tasks.
+
+- bpo-32410: Avoid blocking on file IO in sendfile fallback code
+
+- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
+
+- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
+
+- bpo-33654: Fix transport.set_protocol() to support switching between
+  asyncio.Protocol and asyncio.BufferedProtocol.  Fix loop.start_tls() to
+  work with asyncio.BufferedProtocols.
+
+- bpo-33652: Pickles of type variables and subscripted generics are now
+  future-proof and compatible with older Python versions.
+
+- bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD.
+
+- bpo-33618: Finalize and document preliminary and experimental TLS 1.3
+  support with OpenSSL 1.1.1
+
+- bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__
+
+- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
+  that prevented the cache of parsed strings from clearing after finishing
+  the decoding. Based on patch by c-fos.
+
+- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
+  OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers
+  enabled by default.
+
+- bpo-28556: Do not simplify arguments to `typing.Union`. Now
+  `Union[Manager, Employee]` is not simplified to `Employee` at runtime.
+  Such simplification previously caused several bugs and limited
+  possibilities for introspection.
+
+- bpo-33540: Add a new ``block_on_close`` class attribute to
+  ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`.
+
+- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
+  locations
+
+- bpo-33109: argparse subparsers are once again not required by default,
+  reverting the change in behavior introduced by bpo-26510 in 3.7.0a2.
+
+- bpo-33536: dataclasses.make_dataclass now checks for invalid field names
+  and duplicate fields. Also, added a check for invalid field
+  specifications.
+
+- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
+  Windows. Patch by Zvi Effron
+
+- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
+  Windows proactor event loop.
+
+- Fix failure in `typing.get_type_hints()` when ClassVar was provided as a
+  string forward reference.
+
+- bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x
+  faster.
+
+- bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in
+  FieldStorage use the given errors (needed for Twisted).  Patch by Amber
+  Brown.
+
+- bpo-33495: Change dataclasses.Fields repr to use the repr of each of its
+  members, instead of str.  This makes it more clear what each field
+  actually represents.  This is especially true for the 'type' member.
+
+- bpo-33453: Fix dataclasses to work if using literal string type
+  annotations or if using PEP 563 "Postponed Evaluation of Annotations".
+  Only specific string prefixes are detected for both ClassVar ("ClassVar"
+  and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar").
+
+- bpo-28556: Minor fixes in typing module: add annotations to
+  ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
+  ``Generic.__new__``.  Original PRs by Paulius Šarka and Chad Dombrova.
+
+- bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
+
+- bpo-33422: Fix trailing quotation marks getting deleted when looking up
+  byte/string literals on pydoc. Patch by Andrés Delfino.
+
+- bpo-28167: The function ``platform.linux_distribution`` and
+  ``platform.dist`` now trigger a ``DeprecationWarning`` and have been
+  marked for removal in Python 3.8
+
+- bpo-33197: Update error message when constructing invalid
+  inspect.Parameters Patch by Dong-hee Na.
+
+- bpo-33263: Fix FD leak in `_SelectorSocketTransport`  Patch by Vlad
+  Starostin.
+
+- bpo-32861: The urllib.robotparser's ``__str__`` representation now
+  includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
+  Patch by Michael Lazar.
+
+- bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant,
+  available with OpenSSL 1.1.0h or 1.1.1.
+
+- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`.  Patch by Segev Finer.
+
+Documentation
+-------------
+
+- bpo-23859: Document that `asyncio.wait()` does not cancel its futures on
+  timeout.
+
+- bpo-32436: Document :pep:`567` changes to asyncio.
+
+- bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal
+  to 3.8.
+
+- bpo-33503: Fix broken pypi link
+
+- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
+
+Tests
+-----
+
+- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
+  might be due to running on ZFS.
+
+- bpo-32604: Remove the _xxsubinterpreters module (meant for testing) and
+  associated helpers.  This module was originally added recently in 3.7b1.
+
+Build
+-----
+
+- bpo-33614: Ensures module definition files for the stable ABI on Windows
+  are correctly regenerated.
+
+- bpo-33522: Enable CI builds on Visual Studio Team Services at
+  https://python.visualstudio.com/cpython
+
+- bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing
+  warnings about function casts like casting to PyCFunction in method
+  definition lists.
+
+macOS
+-----
+
+- bpo-13631: The .editrc file in user's home directory is now processed
+  correctly during the readline initialization through editline emulation on
+  macOS.
+
+IDLE
+----
+
+- bpo-33628: IDLE: Cleanup codecontext.py and its test.
+
+- bpo-33564: IDLE's code context now recognizes async as a block opener.
+
+- bpo-32831: Add docstrings and tests for codecontext.
+
+
+What's New in Python 3.7.0 beta 4?
+==================================
+
+*Release date: 2018-05-02*
+
+Core and Builtins
+-----------------
+
+- bpo-33363: Raise a SyntaxError for ``async with`` and ``async for``
+  statements outside of async functions.
+
+- bpo-33128: Fix a bug that causes PathFinder to appear twice on
+  sys.meta_path. Patch by Pablo Galindo Salgado.
+
+- bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in
+  dictobject.c by adjusting how the internal struct _dictkeysobject shared
+  keys structure is declared.
+
+- bpo-33231: Fix potential memory leak in ``normalizestring()``.
+
+- bpo-33205: Change dict growth function from
+  ``round_up_to_power_2(used*2+hashtable_size/2)`` to
+  ``round_up_to_power_2(used*3)``.  Previously, dict is shrinked only when
+  ``used == 0``. Now dict has more chance to be shrinked.
+
+- bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
+  or ``__aexit__()`` return non-awaitable object.
+
+- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
+  when copying from key-sharing dict.
+
+Library
+-------
+
+- bpo-33281: Fix ctypes.util.find_library regression on macOS.
+
+- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
+  object when it is called with a single argument.
+
+- bpo-33329: Fix multiprocessing regression on newer glibcs
+
+- bpo-991266: Fix quoting of the ``Comment`` attribute of
+  :class:`http.cookies.SimpleCookie`.
+
+- bpo-33131: Upgrade bundled version of pip to 10.0.1.
+
+- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
+  object to a tree of tuples or lists with ``line_info=False`` and
+  ``col_info=True``.
+
+- bpo-33266: lib2to3 now recognizes ``rf'...'`` strings.
+
+- bpo-11594: Ensure line-endings are respected when using lib2to3.
+
+- bpo-33254: Have :func:`importlib.resources.contents` and
+  :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable`
+  instead of an :term:`iterator`.
+
+- bpo-33256: Fix display of ``<module>`` call in the html produced by
+  ``cgitb.html()``. Patch by Stéphane Blondon.
+
+- bpo-33185: Fixed regression when running pydoc with the :option:`-m`
+  switch. (The regression was introduced in 3.7.0b3 by the resolution of
+  :issue:`33053`) This fix also changed pydoc to add ``os.getcwd()`` to
+  :data:`sys.path` when necessary, rather than adding ``"."``.
+
+- bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache`
+  when :meth:`importlib.machinery.invalidate_caches` is called.
+
+- bpo-33217: Deprecate looking up non-Enum objects in Enum classes and Enum
+  members (will raise :exc:`TypeError` in 3.8+).
+
+- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
+  sequences consistently even when called from subclasses without a
+  ``getrandbits()`` implementation.
+
+- bpo-33224: Update difflib.mdiff() for :pep:`479`.  Convert an uncaught
+  StopIteration in a generator into a return-statement.
+
+- bpo-33209: End framing at the end of C implementation of
+  :func:`pickle.Pickler.dump`.
+
+- bpo-20104: Improved error handling and fixed a reference leak in
+  :func:`os.posix_spawn()`.
+
+- bpo-33175: In dataclasses, Field.__set_name__ now looks up the
+  __set_name__ special method on the class, not the instance, of the default
+  value.
+
+- bpo-33097: Raise RuntimeError when ``executor.submit`` is called during
+  interpreter shutdown.
+
+- bpo-31908: Fix output of cover files for ``trace`` module command-line
+  tool. Previously emitted cover files only when ``--missing`` option was
+  used. Patch by Michael Selik.
+
+Documentation
+-------------
+
+- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
+
+- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
+  just any value.
+
+- bpo-33201: Modernize documentation for writing C extension types.
+
+- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
+  ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
+  missed in the document.
+
+- bpo-8243: Add a note about curses.addch and curses.addstr exception
+  behavior when writing outside a window, or pad.
+
+- bpo-32337: Update documentation related with ``dict`` order.
+
+Tests
+-----
+
+- bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when
+  the interpreter is built with ``--enable-shared``.
+
+Build
+-----
+
+- bpo-33394: Enable the verbose build for extension modules, when GNU make
+  is passed macros on the command line.
+
+- bpo-33393: Update config.guess and config.sub files.
+
+- bpo-33377: Add new triplets for mips r6 and riscv variants (used in
+  extension suffixes).
+
+- bpo-32232: By default, modules configured in `Modules/Setup` are no longer
+  built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that
+  preprocessor definition include it in their individual entries.
+
+- bpo-33182: The embedding tests can once again be built with clang 6.0
+
+Windows
+-------
+
+- bpo-33184: Update Windows installer to use OpenSSL 1.1.0h.
+
+macOS
+-----
+
+- bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h.
+
+IDLE
+----
+
+- bpo-21474: Update word/identifier definition from ascii to unicode. In
+  text and entry boxes, this affects selection by double-click, movement
+  left/right by control-left/right, and deletion left/right by
+  control-BACKSPACE/DEL.
+
+- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
+  prefix cannot be paired with either 'r' or 'f'. Consistently color as much
+  of the prefix, starting at the right, as is valid. Revise and extend
+  colorizer test.
+
+Tools/Demos
+-----------
+
+- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
+  docstrings and translatable strings, and rejects bytes literals and
+  f-string expressions.
+
+- bpo-31920: Fixed handling directories as arguments in the ``pygettext``
+  script. Based on patch by Oleg Krasnikov.
+
+- bpo-29673: Fix pystackv and pystack gdbinit macros.
+
+- bpo-31583: Fix 2to3 for using with --add-suffix option but without
+  --output-dir option for relative path to files in current directory.
+
+
+What's New in Python 3.7.0 beta 3?
+==================================
+
+*Release date: 2018-03-29*
+
+Security
+--------
+
+- bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970.
+  X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new
+  test ensures that NULL bytes are not allowed.
+
+- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
+
+- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
+  backtracking. These regexes formed potential DOS vectors (REDOS). They
+  have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
+  by Jamie Davis.
+
+Core and Builtins
+-----------------
+
+- bpo-33053: When using the -m switch, sys.path[0] is now explicitly
+  expanded as the *starting* working directory, rather than being left as
+  the empty path (which allows imports from the current working directory at
+  the time of the import)
+
+- bpo-33018: Improve consistency of errors raised by ``issubclass()`` when
+  called with a non-class and an abstract base class as the first and second
+  arguments, respectively. Patch by Josh Bronson.
+
+- bpo-33041: Fixed jumping when the function contains an ``async for`` loop.
+
+- bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
+
+- bpo-33005: Fix a crash on fork when using a custom memory allocator (ex:
+  using PYTHONMALLOC env var). _PyGILState_Reinit() and
+  _PyInterpreterState_Enable() now use the default RAW memory allocator to
+  allocate a new interpreters mutex on fork.
+
+- bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
+
+- bpo-32836: Don't use temporary variables in cases of list/dict/set
+  comprehensions
+
+Library
+-------
+
+- bpo-33141: Have Field objects pass through __set_name__ to their default
+  values, if they have their own __set_name__.
+
+- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
+  boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
+  Khatri.
+
+- bpo-32873: Treat type variables and special typing forms as immutable by
+  copy and pickle.  This fixes several minor issues and inconsistencies, and
+  improves backwards compatibility with Python 3.6.
+
+- bpo-33134: When computing dataclass's __hash__, use the lookup table to
+  contain the function which returns the __hash__ value.  This is an
+  improvement over looking up a string, and then testing that string to see
+  what to do.
+
+- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
+
+- bpo-32505: Raise TypeError if a member variable of a dataclass is of type
+  Field, but doesn't have a type annotation.
+
+- bpo-33078: Fix the failure on OSX caused by the tests relying on
+  sem_getvalue
+
+- bpo-33116: Add 'Field' to dataclasses.__all__.
+
+- bpo-32896: Fix an error where subclassing a dataclass with a field that
+  uses a default_factory would generate an incorrect class.
+
+- bpo-33100: Dataclasses: If a field has a default value that's a
+  MemberDescriptorType, then it's from that field being in __slots__, not an
+  actual default value.
+
+- bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow
+  attributes to be added to the derived class.  Only attributes from the
+  frozen dataclass cannot be assigned to.  Require all dataclasses in a
+  hierarchy to be either all frozen or all non-frozen.
+
+- bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py
+
+- bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling
+  error occurs.
+
+- bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
+  and ``**kwargs`` in function signatures.
+
+- bpo-33056: FIX properly close leaking fds in
+  concurrent.futures.ProcessPoolExecutor.
+
+- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
+  threads when calling mmap.mmap(), os.urandom(), and random.seed().  Patch
+  by Nir Soffer.
+
+- bpo-31804: Avoid failing in multiprocessing.Process if the standard
+  streams are closed or None at exit.
+
+- bpo-33037: Skip sending/receiving data after SSL transport closing.
+
+- bpo-27683: Fix a regression in :mod:`ipaddress` that result of
+  :meth:`hosts` is empty when the network is constructed by a tuple
+  containing an integer mask and only 1 bit left for addresses.
+
+- bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls,
+  subclass)`` crashed when ``subclass`` is not a type object.
+
+- bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
+
+- bpo-32969: Expose several missing constants in zlib and fix corresponding
+  documentation.
+
+- bpo-32056: Improved exceptions raised for invalid number of channels and
+  sample width when read an audio file in modules :mod:`aifc`, :mod:`wave`
+  and :mod:`sunau`.
+
+- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
+  subprocess if another low descriptor is closed.
+
+- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
+  :exc:`ValueError` instead of canceling the first scheduled function.
+  Patch by Cheryl Sabella.
+
+- bpo-31639: http.server now exposes a ThreadedHTTPServer class and uses it
+  when the module is run with ``-m`` to cope with web browsers pre-opening
+  sockets.
+
+- bpo-27645: :class:`sqlite3.Connection` now exposes a
+  :class:`~sqlite3.Connection.backup` method, if the underlying SQLite
+  library is at version 3.6.11 or higher.  Patch by Lele Gaifax.
+
+Documentation
+-------------
+
+- bpo-33126: Document PyBuffer_ToContiguous().
+
+- bpo-27212: Modify documentation for the :func:`islice` recipe to consume
+  initial values up to the start index.
+
+- bpo-28247: Update :mod:`zipapp` documentation to describe how to make
+  standalone applications.
+
+- bpo-18802: Documentation changes for ipaddress.  Patch by Jon Foster and
+  Berker Peksag.
+
+- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
+  implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
+
+Tests
+-----
+
+- bpo-32872: Avoid regrtest compatibility issue with namespace packages.
+
+- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
+  of ``KqueueSelector`` loop was not being closed.
+
+- bpo-19417: Add test_bdb.py.
+
+Build
+-----
+
+- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
+
+Windows
+-------
+
+- bpo-33016: Fix potential use of uninitialized memory in
+  nt._getfinalpathname
+
+- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
+  directory is set to a UNC path.
+
+macOS
+-----
+
+- bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS
+  10.6+ installer. The 10.9+ installer variant already does this.  This
+  means that the Python 3.7 provided by the python.org macOS installers no
+  longer need or use any external versions of Tcl/Tk, either system-provided
+  or user-installed, such as ActiveTcl.
+
+IDLE
+----
+
+- bpo-32984: Set ``__file__`` while running a startup file.  Like Python,
+  IDLE optionally runs one startup file in the Shell window before
+  presenting the first interactive input prompt.  For IDLE, ``-s`` runs a
+  file named in environmental variable  :envvar:`IDLESTARTUP` or
+  :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``.  Python sets
+  ``__file__`` to the startup file name before running the file and unsets
+  it before the first prompt.  IDLE now does the same when run normally,
+  without the ``-n`` option.
+
+- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
+
+Tools/Demos
+-----------
+
+- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
+  automatic backup creation (files with ``~`` suffix).
+
+C API
+-----
+
+- bpo-33042: Embedding applications may once again call
+  PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to
+  calling Py_Initialize.
+
+- bpo-32374: Document that m_traverse for multi-phase initialized modules
+  can be called with m_state=NULL, and add a sanity check
+
+
+What's New in Python 3.7.0 beta 2?
+==================================
+
+*Release date: 2018-02-27*
+
+Security
+--------
+
+- bpo-28414: The ssl module now allows users to perform their own IDN
+  en/decoding when using SNI.
+
+Core and Builtins
+-----------------
+
+- bpo-32889: Update Valgrind suppression list to account for the rename of
+  ``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
+
+- bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled()
+  context manager).
+
+- bpo-32305: For namespace packages, ensure that both ``__file__`` and
+  ``__spec__.origin`` are set to None.
+
+- bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for
+  namespace packages.
+
+- bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by
+  Stéphane Wirtel
+
+- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
+  write out-of-bound errors when using customized decode error handlers.
+
+Library
+-------
+
+- bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen
+  classes, and also disallow inheriting non-frozen from frozen classes. This
+  restriction will be relaxed at a future date.
+
+- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
+  by Joffrey Fuhrer.
+
+- bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now
+  prohibited. The constructors were never documented, tested, or designed as
+  public constructors. Users were suppose to use ssl.wrap_socket() or
+  SSLContext.
+
+- bpo-32929: Remove the tri-state parameter "hash", and add the boolean
+  "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a
+  __hash__ exists, raise TypeError.  If unsafe_hash is False, add a __hash__
+  based on the values of eq= and frozen=.  The unsafe_hash=False behavior is
+  the same as the old hash=None behavior.  unsafe_hash=False is the default,
+  just as hash=None used to be.
+
+- bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3
+  for future compatibility with OpenSSL 1.1.1.
+
+- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
+
+- bpo-32922: dbm.open() now encodes filename with the filesystem encoding
+  rather than default encoding.
+
+- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
+  syscall exists or not.
+
+- bpo-32556: nt._getfinalpathname, nt._getvolumepathname and
+  nt._getdiskusage now correctly convert from bytes.
+
+- bpo-25988: Emit a :exc:`DeprecationWarning` when using or importing an ABC
+  directly from :mod:`collections` rather than from :mod:`collections.abc`.
+
+- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
+  file created in earlier command" to the more helpful "Must create and
+  upload files in one command".
+
+- bpo-32852: Make sure sys.argv remains as a list when running trace.
+
+- bpo-31333: ``_abc`` module is added.  It is a speedup module with C
+  implementations for various functions and methods in ``abc``.  Creating an
+  ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC
+  subclass are up to 1.5x faster. In addition, this makes Python start-up up
+  to 10% faster. Note that the new implementation hides internal registry
+  and caches, previously accessible via private attributes
+  ``_abc_registry``, ``_abc_cache``, and ``_abc_negative_cache``.  There are
+  three debugging helper methods that can be used instead
+  ``_dump_registry``, ``_abc_registry_clear``, and ``_abc_caches_clear``.
+
+- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
+  cancellation after notifying and cancelling a conditional lock. Patch by
+  Bar Harel.
+
+- bpo-32819: ssl.match_hostname() has been simplified and no longer depends
+  on re and ipaddress module for wildcard and IP addresses. Error reporting
+  for invalid wildcards has been improved.
+
+- bpo-32394: socket: Remove
+  TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version
+  Windows during run-time.
+
+- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
+  (Contributed by Oren Milman)
+
+- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
+  only the last field is quoted.  Patch by Jake Davis.
+
+- bpo-32792: collections.ChainMap() preserves the order of the underlying
+  mappings.
+
+- bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which
+  contain set operations. Sets starting with '[' or containing '--', '&&',
+  '~~' or '||' will be interpreted differently in regular expressions in
+  future versions. Currently they emit warnings. fnmatch.translate() now
+  avoids producing patterns containing such sets by accident.
+
+- bpo-32622: Implement native fast sendfile for Windows proactor event loop.
+
+- bpo-32777: Fix a rare but potential pre-exec child process deadlock in
+  subprocess on POSIX systems when marking file descriptors inheritable on
+  exec in the child process.  This bug appears to have been introduced in
+  3.4.
+
+- bpo-32647: The ctypes module used to depend on indirect linking for
+  dlopen. The shared extension is now explicitly linked against libdl on
+  platforms with dl.
+
+- bpo-32741: Implement ``asyncio.TimerHandle.when()`` method.
+
+- bpo-32691: Use mod_spec.parent when running modules with pdb
+
+- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
+  and locking the same lock multiple times, without it being free. Patch by
+  Bar Harel.
+
+- bpo-32727: Do not include name field in SMTP envelope from address. Patch
+  by Stéphane Wirtel
+
+- bpo-31453: Add TLSVersion constants and SSLContext.maximum_version /
+  minimum_version attributes. The new API wraps OpenSSL 1.1
+  https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html
+  feature.
+
+- bpo-24334: Internal implementation details of ssl module were cleaned up.
+  The SSLSocket has one less layer of indirection. Owner and session
+  information are now handled by the SSLSocket and SSLObject constructor.
+  Channel binding implementation has been simplified.
+
+- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
+  chunk is not found. Patch by Zackery Spytz.
+
+- bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`.  Patch by Alan D
+  Moore.
+
+- bpo-32221: Various functions returning tuple containing IPv6 addresses now
+  omit ``%scope`` part since the same information is already encoded in
+  *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom`
+  when it receives multicast packet since useless resolving of network
+  interface name is omitted.
+
+- bpo-30693: The TarFile class now recurses directories in a reproducible
+  way.
+
+- bpo-30693: The ZipFile class now recurses directories in a reproducible
+  way.
+
+Documentation
+-------------
+
+- bpo-28124: The ssl module function ssl.wrap_socket() has been
+  de-emphasized and deprecated in favor of the more secure and efficient
+  SSLContext.wrap_socket() method.
+
+- bpo-17232: Clarify docs for -O and -OO.  Patch by Terry Reedy.
+
+- bpo-32436: Add documentation for the contextvars module (PEP 567).
+
+- bpo-32800: Update link to w3c doc for xml default namespaces.
+
+- bpo-11015: Update :mod:`test.support` documentation.
+
+- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
+  method raises :exc:`AttributeError`.
+
+- bpo-32614: Modify RE examples in documentation to use raw strings to
+  prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
+  the deprecation.
+
+- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
+
+Tests
+-----
+
+- bpo-31809: Add tests to verify connection with secp ECDH curves.
+
+Build
+-----
+
+- bpo-32898: Fix the python debug build when using COUNT_ALLOCS.
+
+Windows
+-------
+
+- bpo-32901: Update Tcl and Tk versions to 8.6.8
+
+- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
+
+- bpo-32409: Ensures activate.bat can handle Unicode contents.
+
+- bpo-32457: Improves handling of denormalized executable path when
+  launching Python.
+
+- bpo-32370: Use the correct encoding for ipconfig output in the uuid
+  module. Patch by Segev Finer.
+
+- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
+  treating the ``PrintNameOffset`` field of the reparse data buffer as a
+  number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
+
+macOS
+-----
+
+- bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8.
+
+IDLE
+----
+
+- bpo-32916: Change ``str`` to ``code`` in pyparse.
+
+- bpo-32905: Remove unused code in pyparse module.
+
+- bpo-32874: Add tests for pyparse.
+
+- bpo-32837: Using the system and place-dependent default encoding for
+  open() is a bad idea for IDLE's system and location-independent files.
+
+- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
+  test test_file_buttons() only looks at initial ascii-only lines, but
+  failed on systems where open() defaults to 'ascii' because readline()
+  internally reads and decodes far enough ahead to encounter a non-ascii
+  character in CREDITS.txt.
+
+- bpo-32765: Update configdialog General tab docstring to add new widgets to
+  the widget list.
+
+Tools/Demos
+-----------
+
+- bpo-32222: Fix pygettext not extracting docstrings for functions with type
+  annotated arguments. Patch by Toby Harradine.
+
+
+What's New in Python 3.7.0 beta 1?
+==================================
+
+*Release date: 2018-01-30*
+
+Core and Builtins
+-----------------
+
+- bpo-32703: Fix coroutine's ResourceWarning when there's an active error
+  set when it's being finalized.
+
+- bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step
+  over (next command) native coroutines. Patch by Pablo Galindo.
+
+- bpo-28685: Optimize list.sort() and sorted() by using type specialized
+  comparisons when possible.
+
+- bpo-32685: Improve suggestion when the Python 2 form of print statement is
+  either present on the same line as the header of a compound statement or
+  else terminated by a semi-colon instead of a newline. Patch by Nitish
+  Chandra.
+
+- bpo-32697: Python now explicitly preserves the definition order of
+  keyword-only parameters.  It's always preserved their order, but this
+  behavior was never guaranteed before; this behavior is now guaranteed and
+  tested.
+
+- bpo-32690: The locals() dictionary now displays in the lexical order that
+  variables were defined.  Previously, the order was reversed.
+
+- bpo-32677: Add ``.isascii()`` method to ``str``, ``bytes`` and
+  ``bytearray``. It can be used to test that string contains only ASCII
+  characters.
+
+- bpo-32670: Enforce :pep:`479` for all code. This means that manually
+  raising a StopIteration exception from a generator is prohibited for all
+  code, regardless of whether 'from __future__ import generator_stop' was
+  used or not.
+
+- bpo-32591: Added built-in support for tracking the origin of coroutine
+  objects; see sys.set_coroutine_origin_tracking_depth and
+  CoroutineType.cr_origin. This replaces the asyncio debug mode's use of
+  coroutine wrapping for native coroutine objects.
+
+- bpo-31368: Expose preadv and pwritev system calls in the os module. Patch
+  by Pablo Galindo
+
+- bpo-32544: ``hasattr(obj, name)`` and ``getattr(obj, name, default)`` are
+  about 4 times faster than before when ``name`` is not found and ``obj``
+  doesn't override ``__getattr__`` or ``__getattribute__``.
+
+- bpo-26163: Improved frozenset() hash to create more distinct hash values
+  when faced with datasets containing many similar values.
+
+- bpo-32550: Remove the STORE_ANNOTATION bytecode.
+
+- bpo-20104: Expose posix_spawn as a low level API in the os module.
+  (removed before 3.7.0rc1)
+
+- bpo-24340: Fixed estimation of the code stack size.
+
+- bpo-32436: Implement :pep:`567` Context Variables.
+
+- bpo-18533: ``repr()`` on a dict containing its own ``values()`` or
+  ``items()`` no longer raises ``RecursionError``; OrderedDict similarly.
+  Instead, use ``...``, as for other recursive structures.  Patch by Ben
+  North.
+
+- bpo-20891: Py_Initialize() now creates the GIL. The GIL is no longer
+  created "on demand" to fix a race condition when PyGILState_Ensure() is
+  called in a non-Python thread.
+
+- bpo-32028: Leading whitespace is now correctly ignored when generating
+  suggestions for converting Py2 print statements to Py3 builtin print
+  function calls. Patch by Sanyam Khurana.
+
+- bpo-31179: Make dict.copy() up to 5.5 times faster.
+
+- bpo-31113: Get rid of recursion in the compiler for normal control flow.
+
+Library
+-------
+
+- bpo-25988: Deprecate exposing the contents of collections.abc in the
+  regular collections module.
+
+- bpo-31429: The default cipher suite selection of the ssl module now uses a
+  blacklist approach rather than a hard-coded whitelist. Python no longer
+  re-enables ciphers that have been blocked by OpenSSL security update.
+  Default cipher suite selection can be configured on compile time.
+
+- bpo-30306: contextlib.contextmanager now releases the arguments passed to
+  the underlying generator as soon as the context manager is entered.
+  Previously it would keep them alive for as long as the context manager was
+  alive, even when not being used as a function decorator. Patch by Martin
+  Teichmann.
+
+- bpo-21417: Added support for setting the compression level for
+  zipfile.ZipFile.
+
+- bpo-32251: Implement asyncio.BufferedProtocol (provisional API).
+
+- bpo-32513: In dataclasses, allow easier overriding of dunder methods
+  without specifying decorator parameters.
+
+- bpo-32660: :mod:`termios` makes available ``FIONREAD``, ``FIONCLEX``,
+  ``FIOCLEX``, ``FIOASYNC`` and ``FIONBIO`` also under Solaris/derivatives.
+
+- bpo-27931: Fix email address header parsing error when the username is an
+  empty quoted string. Patch by Xiang Zhang.
+
+- bpo-32659: Under Solaris and derivatives, :class:`os.stat_result` provides
+  a st_fstype attribute.
+
+- bpo-32662: Implement Server.start_serving(), Server.serve_forever(), and
+  Server.is_serving() methods.  Add 'start_serving' keyword parameter to
+  loop.create_server() and loop.create_unix_server().
+
+- bpo-32391: Implement :meth:`asyncio.StreamWriter.wait_closed` and
+  :meth:`asyncio.StreamWriter.is_closing` methods
+
+- bpo-32643: Make Task._step, Task._wakeup and Future._schedule_callbacks
+  methods private.
+
+- bpo-32630: Refactor decimal module to use contextvars to store decimal
+  context.
+
+- bpo-32622: Add :meth:`asyncio.AbstractEventLoop.sendfile` method.
+
+- bpo-32304: distutils' upload command no longer corrupts tar files ending
+  with a CR byte, and no longer tries to convert CR to CRLF in any of the
+  upload text fields.
+
+- bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware
+  address is encountered.
+
+- bpo-32596: ``concurrent.futures`` imports ``ThreadPoolExecutor`` and
+  ``ProcessPoolExecutor`` lazily (using :pep:`562`). It makes ``import
+  asyncio`` about 15% faster because asyncio uses only
+  ``ThreadPoolExecutor`` by default.
+
+- bpo-31801: Add ``_ignore_`` to ``Enum`` so temporary variables can be used
+  during class construction without being turned into members.
+
+- bpo-32576: Use queue.SimpleQueue() in places where it can be invoked from
+  a weakref callback.
+
+- bpo-32574: Fix memory leak in asyncio.Queue, when the queue has limited
+  size and it is full, the cancelation of queue.put() can cause a memory
+  leak. Patch by: José Melero.
+
+- bpo-32521: The nis module is now compatible with new libnsl and headers
+  location.
+
+- bpo-32467: collections.abc.ValuesView now inherits from
+  collections.abc.Collection.
+
+- bpo-32473: Improve ABCMeta._dump_registry() output readability
+
+- bpo-32102: New argument ``capture_output`` for subprocess.run
+
+- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
+  library in nis module.
+
+- bpo-32493: UUID module fixes build for FreeBSD/OpenBSD
+
+- bpo-32503: Pickling with protocol 4 no longer creates too small frames.
+
+- bpo-29237: Create enum for pstats sorting options
+
+- bpo-32454: Add close(fd) function to the socket module.
+
+- bpo-25942: The subprocess module is now more graceful when handling a
+  Ctrl-C KeyboardInterrupt during subprocess.call, subprocess.run, or a
+  Popen context manager.  It now waits a short amount of time for the child
+  (presumed to have also gotten the SIGINT) to exit, before continuing the
+  KeyboardInterrupt exception handling.  This still includes a SIGKILL in
+  the call() and run() APIs, but at least the child had a chance first.
+
+- bpo-32433: The hmac module now has hmac.digest(), which provides an
+  optimized HMAC digest.
+
+- bpo-28134: Sockets now auto-detect family, type and protocol from file
+  descriptor by default.
+
+- bpo-32404: Fix bug where :meth:`datetime.datetime.fromtimestamp` did not
+  call __new__ in :class:`datetime.datetime` subclasses.
+
+- bpo-32403: Improved speed of :class:`datetime.date` and
+  :class:`datetime.datetime` alternate constructors.
+
+- bpo-32228: Ensure that ``truncate()`` preserves the file position (as
+  reported by ``tell()``) after writes longer than the buffer size.
+
+- bpo-32410: Implement ``loop.sock_sendfile`` for asyncio event loop.
+
+- bpo-22908: Added seek and tell to the ZipExtFile class. This only works if
+  the file object used to open the zipfile is seekable.
+
+- bpo-32373: Add socket.getblocking() method.
+
+- bpo-32248: Add :mod:`importlib.resources` and
+  :class:`importlib.abc.ResourceReader` as the unified API for reading
+  resources contained within packages.  Loaders wishing to support resource
+  reading must implement the :meth:`get_resource_reader()` method.
+  File-based and zipimport-based loaders both implement these APIs.
+  :class:`importlib.abc.ResourceLoader` is deprecated in favor of these new
+  APIs.
+
+- bpo-32320: collections.namedtuple() now supports default values.
+
+- bpo-29302: Add contextlib.AsyncExitStack. Patch by Alexander Mohr and Ilya
+  Kulakov.
+
+- bpo-31961: *Removed in Python 3.7.0b2.* The *args* argument of
+  subprocess.Popen can now be a :term:`path-like object`. If *args* is given
+  as a sequence, it's first element can now be a :term:`path-like object` as
+  well.
+
+- bpo-31900: The :func:`locale.localeconv` function now sets temporarily the
+  ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode
+  ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII
+  or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the
+  ``LC_CTYPE`` locale. This temporary change affects other threads. Same
+  change for the :meth:`str.format` method when formatting a number
+  (:class:`int`, :class:`float`, :class:`float` and subclasses) with the
+  ``n`` type (ex: ``'{:n}'.format(1234)``).
+
+- bpo-31853: Use super().method instead of socket.method in SSLSocket.  They
+  were there most likely for legacy reasons.
+
+- bpo-31399: The ssl module now uses OpenSSL's X509_VERIFY_PARAM_set1_host()
+  and X509_VERIFY_PARAM_set1_ip() API to verify hostname and IP addresses.
+  Subject common name fallback can be disabled with
+  SSLContext.hostname_checks_common_name.
+
+- bpo-14976: Add a queue.SimpleQueue class, an unbounded FIFO queue with a
+  reentrant C implementation of put().
+
+Documentation
+-------------
+
+- bpo-32724: Add references to some commands in the documentation of Pdb.
+  Patch by Stéphane Wirtel
+
+- bpo-32649: Complete the C API documentation, profiling and tracing part
+  with the newly added per-opcode events.
+
+- bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and
+  their C-API counterparts regarding which type of events are received in
+  each function. Patch by Pablo Galindo Salgado.
+
+Tests
+-----
+
+- bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built.
+
+- bpo-28414: Add test cases for IDNA 2003 and 2008 host names. IDNA 2003
+  internationalized host names are working since bpo-31399 has landed. IDNA
+  2008 are still broken.
+
+- bpo-32604: Add a new "_xxsubinterpreters" extension module that exposes
+  the existing subinterpreter C-API and a new cross-interpreter data sharing
+  mechanism. The module is primarily intended for more thorough testing of
+  the existing subinterpreter support. Note that the _xxsubinterpreters
+  module has been removed in 3.7.0rc1.
+
+- bpo-32602: Add test certs and test for ECDSA cert and EC/RSA dual mode.
+
+- bpo-32549: On Travis CI, Python now Compiles and uses a local copy of
+  OpenSSL 1.1.0g for testing.
+
+Build
+-----
+
+- bpo-32635: Fix segfault of the crypt module when libxcrypt is provided
+  instead of libcrypt at the system.
+
+- bpo-32598: Use autoconf to detect OpenSSL libs, headers and supported
+  features. The ax_check_openssl M4 macro uses pkg-config to locate OpenSSL
+  and falls back to manual search.
+
+- bpo-32593: Drop support of FreeBSD 9 and older.
+
+- bpo-29708: If the :envvar:`SOURCE_DATE_EPOCH` environment variable is set,
+  :mod:`py_compile` will always create hash-based ``.pyc`` files.
+
+Windows
+-------
+
+- bpo-32588: Create standalone _distutils_findvs module and add missing
+  _queue module to installer.
+
+- bpo-29911: Ensure separate Modify and Uninstall buttons are displayed.
+
+- bpo-32507: Use app-local UCRT install rather than the proper update for
+  old versions of Windows.
+
+macOS
+-----
+
+- bpo-32726: Provide an additional, more modern macOS installer variant that
+  supports macOS 10.9+ systems in 64-bit mode only.  Upgrade the supplied
+  third-party libraries to OpenSSL 1.1.0g and to SQLite 3.22.0.  The 10.9+
+  installer now links with and supplies its own copy of Tcl/Tk 8.6.
+
+- bpo-28440: No longer add /Library/Python/3.x/site-packages to sys.path for
+  macOS framework builds to avoid future conflicts.
+
+C API
+-----
+
+- bpo-32681: Fix uninitialized variable 'res' in the C implementation of
+  os.dup2. Patch by Stéphane Wirtel
+
+- bpo-10381: Add C API access to the ``datetime.timezone`` constructor and
+  ``datetime.timzone.UTC`` singleton.
+
+
+What's New in Python 3.7.0 alpha 4?
+===================================
+
+*Release date: 2018-01-08*
+
+Core and Builtins
+-----------------
+
+- bpo-31975: The default warning filter list now starts with a
+  "default::DeprecationWarning:__main__" entry, so deprecation warnings are
+  once again shown by default in single-file scripts and at the interactive
+  prompt.
+
+- bpo-32226: ``__class_getitem__`` is now an automatic class method.
+
+- bpo-32399: Add AIX uuid library support for RFC4122 using uuid_create() in
+  libc.a
+
+- bpo-32390: Fix the compilation failure on AIX after the f_fsid field has
+  been added to the object returned by os.statvfs() (issue #32143). Original
+  patch by Michael Felt.
+
+- bpo-32379: Make MRO computation faster when a class inherits from a single
+  base.
+
+- bpo-32259: The error message of a TypeError raised when unpack
+  non-iterable is now more specific.
+
+- bpo-27169: The ``__debug__`` constant is now optimized out at compile
+  time. This fixes also bpo-22091.
+
+- bpo-32329: The :option:`-R` option now turns on hash randomization when
+  the :envvar:`PYTHONHASHSEED` environment variable is set to ``0``.
+  Previously, the option was ignored. Moreover,
+  ``sys.flags.hash_randomization`` is now properly set to 0 when hash
+  randomization is turned off by ``PYTHONHASHSEED=0``.
+
+- bpo-30416: The optimizer is now protected from spending much time doing
+  complex calculations and consuming much memory for creating large
+  constants in constant folding. Increased limits for constants that can be
+  produced in constant folding.
+
+- bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in
+  socketmodule on Windows.
+
+- bpo-30579: Implement TracebackType.__new__ to allow Python-level creation
+  of traceback objects, and make TracebackType.tb_next mutable.
+
+- bpo-32260: Don't byte swap the input keys to the SipHash algorithm on
+  big-endian platforms. This should ensure siphash gives consistent results
+  across platforms.
+
+- bpo-31506: Improve the error message logic for object.__new__ and
+  object.__init__. Patch by Sanyam Khurana.
+
+- bpo-20361: ``-b`` and ``-bb`` now inject ``'default::BytesWarning'`` and
+  ``error::BytesWarning`` entries into ``sys.warnoptions``, ensuring that
+  they take precedence over any other warning filters configured via the
+  ``-W`` option or the ``PYTHONWARNINGS`` environment variable.
+
+- bpo-32230: `-X dev` now injects a ``'default'`` entry into
+  sys.warnoptions, ensuring that it behaves identically to actually passing
+  ``-Wdefault`` at the command line.
+
+- bpo-29240: Add a new UTF-8 mode: implementation of the :pep:`540`.
+
+- bpo-32226: :pep:`560`: Add support for ``__mro_entries__`` and
+  ``__class_getitem__``. Implemented by Ivan Levkivskyi.
+
+- bpo-32225: :pep:`562`: Add support for module ``__getattr__`` and
+  ``__dir__``. Implemented by Ivan Levkivskyi.
+
+- bpo-31901: The `atexit` module now has its callback stored per
+  interpreter.
+
+- bpo-31650: Implement :pep:`552` (Deterministic pycs). Python now supports
+  invalidating bytecode cache files bashed on a source content hash rather
+  than source last-modified time.
+
+- bpo-29469: Move constant folding from bytecode layer to AST layer.
+  Original patch by Eugene Toder.
+
+Library
+-------
+
+- bpo-32506: Now that dict is defined as keeping insertion order, drop
+  OrderedDict and just use plain dict.
+
+- bpo-32279: Add params to dataclasses.make_dataclasses(): init, repr, eq,
+  order, hash, and frozen.  Pass them through to dataclass().
+
+- bpo-32278: Make type information optional on dataclasses.make_dataclass().
+  If omitted, the string 'typing.Any' is used.
+
+- bpo-32499: Add dataclasses.is_dataclass(obj), which returns True if obj is
+  a dataclass or an instance of one.
+
+- bpo-32468: Improve frame repr() to mention filename, code name and current
+  line number.
+
+- bpo-23749: asyncio: Implement loop.start_tls()
+
+- bpo-32441: Return the new file descriptor (i.e., the second argument) from
+  ``os.dup2``. Previously, ``None`` was always returned.
+
+- bpo-32422: ``functools.lru_cache`` uses less memory (3 words for each
+  cached key) and takes about 1/3 time for cyclic GC.
+
+- bpo-31721: Prevent Python crash from happening when Future._log_traceback
+  is set to True manually.  Now it can only be set to False, or a ValueError
+  is raised.
+
+- bpo-32415: asyncio: Add Task.get_loop() and Future.get_loop()
+
+- bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on
+  interpreter shutdown.
+
+- bpo-32363: Make asyncio.Task.set_exception() and set_result() raise
+  NotImplementedError. Task._step() and Future.__await__() raise proper
+  exceptions when they are in an invalid state, instead of raising an
+  AssertionError.
+
+- bpo-32357: Optimize asyncio.iscoroutine() and loop.create_task() for
+  non-native coroutines (e.g. async/await compiled with Cython).
+  'loop.create_task(python_coroutine)' used to be 20% faster than
+  'loop.create_task(cython_coroutine)'.  Now, the latter is as fast.
+
+- bpo-32356: asyncio.transport.resume_reading() and pause_reading() are now
+  idempotent. New transport.is_reading() method is added.
+
+- bpo-32355: Optimize asyncio.gather(); now up to 15% faster.
+
+- bpo-32351: Use fastpath in asyncio.sleep if delay<0 (2x boost)
+
+- bpo-32348: Optimize asyncio.Future schedule/add/remove callback.  The
+  optimization shows 3-6% performance improvements of async/await code.
+
+- bpo-32331: Fix socket.settimeout() and socket.setblocking() to keep
+  socket.type as is. Fix socket.socket() constructor to reset any bit flags
+  applied to socket's type.  This change only affects OSes that have
+  SOCK_NONBLOCK and/or SOCK_CLOEXEC.
+
+- bpo-32248: Add :class:`importlib.abc.ResourceReader` as an ABC for loaders
+  to provide a unified API for reading resources contained within packages.
+  Also add :mod:`importlib.resources` as the port of
+  ``importlib_resources``.
+
+- bpo-32311: Implement asyncio.create_task(coro) shortcut
+
+- bpo-32327: Convert asyncio functions that were documented as coroutines to
+  coroutines. Affected functions: loop.sock_sendall, loop.sock_recv,
+  loop.sock_accept, loop.getaddrinfo, loop.getnameinfo.
+
+- bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id
+  (scope) to lower case for scoped IPv6 addresses in hostnames now.
+
+- bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary
+  compatible with CRT v140.
+
+- bpo-29711: Fix ``stop_serving`` in asyncio proactor loop kill all
+  listening servers
+
+- bpo-32308: :func:`re.sub()` now replaces empty matches adjacent to a
+  previous non-empty match.
+
+- bpo-29970: Abort asyncio SSLProtocol connection if handshake not complete
+  within 10s
+
+- bpo-32314: Implement asyncio.run().
+
+- bpo-17852: Revert incorrect fix based on misunderstanding of
+  _Py_PyAtExit() semantics.
+
+- bpo-32296: Implement asyncio._get_running_loop() and get_event_loop() in
+  C. This makes them 4x faster.
+
+- bpo-32250: Implement ``asyncio.current_task()`` and
+  ``asyncio.all_tasks()``. Add helpers intended to be used by alternative
+  task implementations: ``asyncio._register_task``, ``asyncio._enter_task``,
+  ``asyncio._leave_task`` and ``asyncio._unregister_task``. Deprecate
+  ``asyncio.Task.current_task()`` and ``asyncio.Task.all_tasks()``.
+
+- bpo-32255: A single empty field is now always quoted when written into a
+  CSV file. This allows to distinguish an empty row from a row consisting of
+  a single empty field. Patch by Licht Takeuchi.
+
+- bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on
+  platforms where ``chmod(..., follow_symlinks=False)`` is not supported.
+  Patch by Anthony Sottile.
+
+- bpo-30050: New argument warn_on_full_buffer to signal.set_wakeup_fd lets
+  you control whether Python prints a warning on stderr when the wakeup fd
+  buffer overflows.
+
+- bpo-29137: The ``fpectl`` library has been removed. It was never enabled
+  by default, never worked correctly on x86-64, and it changed the Python
+  ABI in ways that caused unexpected breakage of C extensions.
+
+- bpo-32273: Move asyncio.test_utils to test.test_asyncio.
+
+- bpo-32272: Remove asyncio.async() function.
+
+- bpo-32269: Add asyncio.get_running_loop() function.
+
+- bpo-32265: All class and static methods of builtin types now are correctly
+  classified by inspect.classify_class_attrs() and grouped in pydoc ouput.
+  Added types.ClassMethodDescriptorType for unbound class methods of builtin
+  types.
+
+- bpo-32253: Deprecate ``yield from lock``, ``await lock``, ``with (yield
+  from lock)`` and ``with await lock`` for asyncio synchronization
+  primitives.
+
+- bpo-22589: Changed MIME type of .bmp from 'image/x-ms-bmp' to 'image/bmp'
+
+- bpo-32193: Convert asyncio to use *async/await* syntax. Old styled ``yield
+  from`` is still supported too.
+
+- bpo-32206: Add support to run modules with pdb
+
+- bpo-32227: ``functools.singledispatch`` now supports registering
+  implementations using type annotations.
+
+- bpo-15873: Added new alternate constructors
+  :meth:`datetime.datetime.fromisoformat`,
+  :meth:`datetime.time.fromisoformat` and
+  :meth:`datetime.date.fromisoformat` as the inverse operation of each
+  classes's respective ``isoformat`` methods.
+
+- bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link
+  list'.
+
+- bpo-32143: os.statvfs() includes the f_fsid field from statvfs(2)
+
+- bpo-26439: Fix ctypes.util.find_library() for AIX by implementing
+  ctypes._aix.find_library() Patch by: Michael Felt
+
+- bpo-31993: The pickler now uses less memory when serializing large bytes
+  and str objects into a file.  Pickles created with protocol 4 will require
+  less memory for unpickling large bytes and str objects.
+
+- bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
+
+- bpo-31778: ast.literal_eval() is now more strict. Addition and subtraction
+  of arbitrary numbers no longer allowed.
+
+- bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now
+  works even if the ``os`` module still is not imported.
+
+- bpo-30241: Add contextlib.AbstractAsyncContextManager. Patch by Jelle
+  Zijlstra.
+
+- bpo-31699: Fix deadlocks in
+  :class:`concurrent.futures.ProcessPoolExecutor` when task arguments or
+  results cause pickling or unpickling errors. This should make sure that
+  calls to the :class:`ProcessPoolExecutor` API always eventually return.
+
+- bpo-15216: ``TextIOWrapper.reconfigure()`` supports changing *encoding*,
+  *errors*, and *newline*.
+
+Documentation
+-------------
+
+- bpo-32418: Add get_loop() method to Server and AbstractServer classes.
+
+Tests
+-----
+
+- bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core
+  dump files when testing crashes. getrlimit() returns zero on success.
+
+- bpo-32002: Adjust C locale coercion testing for the empty locale and POSIX
+  locale cases to more readily adjust to platform dependent behaviour.
+
+Windows
+-------
+
+- bpo-19764: Implement support for `subprocess.Popen(close_fds=True)` on
+  Windows. Patch by Segev Finer.
+
+Tools/Demos
+-----------
+
+- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
+  pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
+  lib2to3 work when run from a zipfile.
+
+C API
+-----
+
+- bpo-32030: Py_Initialize() doesn't reset the memory allocators to default
+  if the ``PYTHONMALLOC`` environment variable is not set.
+
+- bpo-29084: Undocumented C API for OrderedDict has been excluded from the
+  limited C API. It was added by mistake and actually never worked in the
+  limited C API.
+
+- bpo-32264: Moved the pygetopt.h header into internal/, since it has no
+  public APIs.
+
+- bpo-32241: :c:func:`Py_SetProgramName` and :c:func:`Py_SetPythonHome` now
+  take the ``const wchar *`` arguments instead of ``wchar *``.
+
+
+What's New in Python 3.7.0 alpha 3?
+===================================
+
+*Release date: 2017-12-05*
+
+Core and Builtins
+-----------------
+
+- bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code
+  object constructor based on freevars and cellvars, rather than needing to
+  be set correctly by the caller. This ensures it will be cleared
+  automatically when additional cell references are injected into a modified
+  code object and function.
+
+- bpo-10544: Yield expressions are now deprecated in comprehensions and
+  generator expressions. They are still permitted in the definition of the
+  outermost iterable, as that is evaluated directly in the enclosing scope.
+
+- bpo-32137: The repr of deeply nested dict now raises a RecursionError
+  instead of crashing due to a stack overflow.
+
+- bpo-32096: Revert memory allocator changes in the C API: move structures
+  back from _PyRuntime to Objects/obmalloc.c. The memory allocators are once
+  again initialized statically, and so PyMem_RawMalloc() and
+  Py_DecodeLocale() can be called before _PyRuntime_Initialize().
+
+- bpo-32043: Add a new "developer mode": new "-X dev" command line option to
+  enable debug checks at runtime.
+
+- bpo-32023: SyntaxError is now correctly raised when a generator expression
+  without parenthesis is used instead of an inheritance list in a class
+  definition. The duplication of the parentheses can be omitted only on
+  calls.
+
+- bpo-32012: SyntaxError is now correctly raised when a generator expression
+  without parenthesis is passed as an argument, but followed by a trailing
+  comma. A generator expression always needs to be directly inside a set of
+  parentheses and cannot have a comma on either side.
+
+- bpo-28180: A new internal ``_Py_SetLocaleFromEnv(category)`` helper
+  function has been added in order to improve the consistency of behaviour
+  across different ``libc`` implementations (e.g. Android doesn't support
+  setting the locale from the environment by default).
+
+- bpo-31949: Fixed several issues in printing tracebacks
+  (PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now
+  suppresses printing tracebacks. Setting sys.tracebacklimit to None now
+  causes using the default limit. Setting sys.tracebacklimit to an integer
+  larger than LONG_MAX now means using the limit LONG_MAX rather than the
+  default limit. Fixed integer overflows in the case of more than 2**31
+  traceback items on Windows. Fixed output errors handling.
+
+- bpo-30696: Fix the interactive interpreter looping endlessly when no
+  memory.
+
+- bpo-20047: Bytearray methods partition() and rpartition() now accept only
+  bytes-like objects as separator, as documented.  In particular they now
+  raise TypeError rather of returning a bogus result when an integer is
+  passed as a separator.
+
+- bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of
+  ``__import__()`` or the ``__all__`` attribute of the module contain bytes
+  instances.
+
+- bpo-31845: Environment variables are once more read correctly at
+  interpreter startup.
+
+- bpo-28936: Ensure that lexically first syntax error involving a parameter
+  and ``global`` or ``nonlocal`` is detected first at a given scope. Patch
+  by Ivan Levkivskyi.
+
+- bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in
+  codecs.escape_decode() when decode an escaped non-ascii byte.
+
+- bpo-31618: The per-frame tracing logic added in 3.7a1 has been altered so
+  that ``frame->f_lineno`` is updated before either ``"line"`` or
+  ``"opcode"`` events are emitted. Previously, opcode events were emitted
+  first, and therefore would occasionally see stale line numbers on the
+  frame. The behavior of this feature has changed slightly as a result: when
+  both ``f_trace_lines`` and ``f_trace_opcodes`` are enabled, line events
+  now occur first.
+
+- bpo-28603: Print the full context/cause chain of exceptions on interpreter
+  exit, even if an exception in the chain is unhashable or compares equal to
+  later ones. Patch by Zane Bitter.
+
+- bpo-31786: Fix timeout rounding in the select module to round correctly
+  negative timeouts between -1.0 and 0.0. The functions now block waiting
+  for events as expected. Previously, the call was incorrectly non-blocking.
+  Patch by Pablo Galindo.
+
+- bpo-31781: Prevent crashes when calling methods of an uninitialized
+  ``zipimport.zipimporter`` object. Patch by Oren Milman.
+
+- bpo-30399: Standard repr() of BaseException with a single argument no
+  longer contains redundant trailing comma.
+
+- bpo-31626: Fixed a bug in debug memory allocator.  There was a write to
+  freed memory after shrinking a memory block.
+
+- bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be
+  raised by `_PySys_SetObjectId()`, for example when no memory.
+
+Library
+-------
+
+- bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying
+  instances of generic classes, improve interaction of ``__init_subclass__``
+  with generics. Original PRs by Ivan Levkivskyi.
+
+- bpo-32214: PEP 557, Data Classes. Provides a decorator which adds
+  boilerplate methods to classes which use type annotations so specify
+  fields.
+
+- bpo-27240: The header folding algorithm for the new email policies has
+  been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182.  In
+  particular, RFC2231 folding is now done correctly.
+
+- bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL
+  when getting the file size. Fixed hang of all threads with inaccessible
+  NFS server. Patch by Nir Soffer.
+
+- bpo-321010: Add :attr:`sys.flags.dev_mode` flag
+
+- bpo-32154: The ``asyncio.windows_utils.socketpair()`` function has been
+  removed: use directly :func:`socket.socketpair` which is available on all
+  platforms since Python 3.5 (before, it wasn't available on Windows).
+  ``asyncio.windows_utils.socketpair()`` was just an alias to
+  ``socket.socketpair`` on Python 3.5 and newer.
+
+- bpo-32089: warnings: In development (-X dev) and debug mode (pydebug
+  build), use the "default" action for ResourceWarning, rather than the
+  "always" action, in the default warnings filters.
+
+- bpo-32107: ``uuid.getnode()`` now preferentially returns universally
+  administered MAC addresses if available, over locally administered MAC
+  addresses.  This makes a better guarantee for global uniqueness of UUIDs
+  returned from ``uuid.uuid1()``.  If only locally administered MAC
+  addresses are available, the first such one found is returned.
+
+- bpo-23033: Wildcard is now supported in hostname when it is one and only
+  character in the left most segment of hostname in second argument of
+  :meth:`ssl.match_hostname`.  Patch by Mandeep Singh.
+
+- bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return
+  ``None`` when the value of property is ``VT_EMPTY``.  Initial patch by
+  Mark Mc Mahon.
+
+- bpo-28334: Use :func:`os.path.expanduser` to find the ``~/.netrc`` file in
+  :class:`netrc.netrc`.  If it does not exist, :exc:`FileNotFoundError` is
+  raised.  Patch by Dimitri Merejkowsky.
+
+- bpo-32121: Made ``tracemalloc.Traceback`` behave more like the traceback
+  module, sorting the frames from oldest to most recent.
+  ``Traceback.format()`` now accepts negative *limit*, truncating the result
+  to the ``abs(limit)`` oldest frames. To get the old behaviour, one can use
+  the new *most_recent_first* argument to ``Traceback.format()``. (Patch by
+  Jesse Bakker.)
+
+- bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the
+  :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>`
+  method. Initial patch by Robin Wellner.
+
+- bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception
+  message when it couldn't open or create an MSI file.  Initial patch by
+  William Tisäter.
+
+- bpo-19610: ``setup()`` now warns about invalid types for some fields. The
+  ``distutils.dist.Distribution`` class now warns when ``classifiers``,
+  ``keywords`` and ``platforms`` fields are not specified as a list or a
+  string.
+
+- bpo-32071: Added the ``-k`` command-line option to ``python -m unittest``
+  to run only tests that match the given pattern(s).
+
+- bpo-10049: Added *nullcontext* no-op context manager to contextlib. This
+  provides a simpler and faster alternative to ExitStack() when handling
+  optional context managers.
+
+- bpo-28684: The new test.support.skip_unless_bind_unix_socket() decorator
+  is used here to skip asyncio tests that fail because the platform lacks a
+  functional bind() function for unix domain sockets (as it is the case for
+  non root users on the recent Android versions that run now SELinux in
+  enforcing mode).
+
+- bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n*
+  characters/bytes for non-negative *n*. This makes it compatible with
+  ``read()`` methods of other file-like objects.
+
+- bpo-27535: The warnings module doesn't leak memory anymore in the hidden
+  warnings registry for the "ignore" action of warnings filters.
+  warn_explicit() function doesn't add the warning key to the registry
+  anymore for the "ignore" action.
+
+- bpo-32088: warnings:  When Python is build is debug mode (``Py_DEBUG``),
+  :exc:`DeprecationWarning`, :exc:`PendingDeprecationWarning` and
+  :exc:`ImportWarning` warnings are now displayed by default.
+
+- bpo-1647489: Fixed searching regular expression patterns that could match
+  an empty string. Non-empty string can now be correctly found after
+  matching an empty string.
+
+- bpo-25054: Added support of splitting on a pattern that could match an
+  empty string.
+
+- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays.
+  Identical objects will be saved only once. Equal references will be load
+  as identical objects. Added support for saving and loading recursive data
+  structures.
+
+- bpo-32069: Drop legacy SSL transport from asyncio, ssl.MemoryBIO is always
+  used anyway.
+
+- bpo-32066: asyncio: Support pathlib.Path in create_unix_connection; sock
+  arg should be optional
+
+- bpo-32046: Updates 2to3 to convert from operator.isCallable(obj) to
+  callable(obj). Patch by Dong-hee Na.
+
+- bpo-32018: inspect.signature should follow :pep:`8`, if the parameter has
+  an annotation and a default value. Patch by Dong-hee Na.
+
+- bpo-32025: Add time.thread_time() and time.thread_time_ns()
+
+- bpo-32037: Integers that fit in a signed 32-bit integer will be now
+  pickled with protocol 0 using the INT opcode.  This will decrease the size
+  of a pickle, speed up pickling and unpickling, and make these integers be
+  unpickled as int instances in Python 2.
+
+- bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError
+  pickleable.
+
+- bpo-32015: Fixed the looping of asyncio in the case of reconnection the
+  socket during waiting async read/write from/to the socket.
+
+- bpo-32011: Restored support of loading marshal files with the TYPE_INT64
+  code. These files can be produced in Python 2.7.
+
+- bpo-28369: Enhance add_reader/writer check that socket is not used by some
+  transport. Before, only cases when add_reader/writer were called with an
+  int FD were supported.  Now the check is implemented correctly for all
+  file-like objects.
+
+- bpo-31976: Fix race condition when flushing a file is slow, which can
+  cause a segfault if closing the file from another thread.
+
+- bpo-31985: Formally deprecated aifc.openfp, sunau.openfp, and wave.openfp.
+  Since change 7bc817d5ba917528e8bd07ec461c635291e7b06a in 1993, openfp in
+  each of the three modules had been pointing to that module's open function
+  as a matter of backwards compatibility, though it had been both untested
+  and undocumented.
+
+- bpo-21862: cProfile command line now accepts `-m module_name` as an
+  alternative to script path. Patch by Sanyam Khurana.
+
+- bpo-31970: Reduce performance overhead of asyncio debug mode.
+
+- bpo-31843: *database* argument of sqlite3.connect() now accepts a
+  :term:`path-like object`, instead of just a string.
+
+- bpo-31945: Add Configurable *blocksize* to ``HTTPConnection`` and
+  ``HTTPSConnection`` for improved upload throughput.  Patch by Nir Soffer.
+
+- bpo-31943: Add a ``cancelled()`` method to :class:`asyncio.Handle`.  Patch
+  by Marat Sharafutdinov.
+
+- bpo-9678: Fixed determining the MAC address in the uuid module: Using
+  ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and
+  OpenBSD. Based on patch by Takayuki Shimizukawa.
+
+- bpo-30057: Fix potential missed signal in signal.signal().
+
+- bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian
+  platforms. Patch by Jack O'Connor.
+
+- bpo-21423: Add an initializer argument to {Process,Thread}PoolExecutor
+
+- bpo-31927: Fixed compilation of the socket module on NetBSD 8.  Fixed
+  assertion failure or reading arbitrary data when parse a AF_BLUETOOTH
+  address on NetBSD and DragonFly BSD.
+
+- bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse()
+  when the size of types chtype or mmask_t is less than the size of C long.
+  curses.box() now accepts characters as arguments.  Based on patch by Steve
+  Fink.
+
+- bpo-31917: Add 3 new clock identifiers: :data:`time.CLOCK_BOOTTIME`,
+  :data:`time.CLOCK_PROF` and :data:`time.CLOCK_UPTIME`.
+
+- bpo-31897: plistlib now catches more errors when read binary plists and
+  raises InvalidFileException instead of unexpected exceptions.
+
+- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
+  by Masayuki Yamamoto.
+
+- bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and
+  NetBSD. Fixed the comparison of the kqueue_event objects.
+
+- bpo-31891: Fixed building the curses module on NetBSD.
+
+- bpo-31884: added required constants to subprocess module for setting
+  priority on windows
+
+- bpo-28281: Remove year (1-9999) limits on the Calendar.weekday() function.
+  Patch by Mark Gollahon.
+
+- bpo-31702: crypt.mksalt() now allows to specify the number of rounds for
+  SHA-256 and SHA-512 hashing.
+
+- bpo-30639: :func:`inspect.getfile` no longer computes the repr of unknown
+  objects to display in an error message, to protect against badly behaved
+  custom reprs.
+
+- bpo-30768: Fix the pthread+semaphore implementation of
+  PyThread_acquire_lock_timed() when called with timeout > 0 and
+  intr_flag=0: recompute the timeout if sem_timedwait() is interrupted by a
+  signal (EINTR). See also the :pep:`475`.
+
+- bpo-31854: Add ``mmap.ACCESS_DEFAULT`` constant.
+
+- bpo-31834: Use optimized code for BLAKE2 only with SSSE3+. The pure SSE2
+  implementation is slower than the pure C reference implementation.
+
+- bpo-28292: Calendar.itermonthdates() will now consistently raise an
+  exception when a date falls outside of the 0001-01-01 through 9999-12-31
+  range.  To support applications that cannot tolerate such exceptions, the
+  new methods itermonthdays3() and itermonthdays4() are added.  The new
+  methods return tuples and are not restricted by the range supported by
+  datetime.date.
+
+- bpo-28564: The shutil.rmtree() function has been sped up to 20--40%. This
+  was done using the os.scandir() function.
+
+- bpo-28416: Instances of pickle.Pickler subclass with the persistent_id()
+  method and pickle.Unpickler subclass with the persistent_load() method no
+  longer create reference cycles.
+
+- bpo-31653: Don't release the GIL if we can acquire a multiprocessing
+  semaphore immediately.
+
+- bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed
+  or None.
+
+- bpo-20825: Add `subnet_of` and `superset_of` containment tests to
+  :class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network`. Patch
+  by Michel Albert and Cheryl Sabella.
+
+- bpo-31827: Remove the os.stat_float_times() function. It was introduced in
+  Python 2.3 for backward compatibility with Python 2.2, and was deprecated
+  since Python 3.1.
+
+- bpo-31756: Add a ``subprocess.Popen(text=False)`` keyword argument to
+  `subprocess` functions to be more explicit about when the library should
+  attempt to decode outputs into text. Patch by Andrew Clegg.
+
+- bpo-31819: Add AbstractEventLoop.sock_recv_into().
+
+- bpo-31457: If nested log adapters are used, the inner ``process()``
+  methods are no longer omitted.
+
+- bpo-31457: The ``manager`` property on LoggerAdapter objects is now
+  properly settable.
+
+- bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire()
+  and socket.socket.settimeout() to round correctly negative timeouts
+  between -1.0 and 0.0. The functions now block waiting for events as
+  expected. Previously, the call was incorrectly non-blocking. Patch by
+  Pablo Galindo.
+
+- bpo-31803: time.clock() and time.get_clock_info('clock') now emit a
+  DeprecationWarning warning.
+
+- bpo-31800: Extended support for parsing UTC offsets. strptime '%z' can now
+  parse the output generated by datetime.isoformat, including seconds and
+  microseconds.
+
+- bpo-28603: traceback: Fix a TypeError that occurred during printing of
+  exception tracebacks when either the current exception or an exception in
+  its context/cause chain is unhashable. Patch by Zane Bitter.
+
+- bpo-30541: Add new function to seal a mock and prevent the automatically
+  creation of child mocks. Patch by Mario Corchero.
+
+- bpo-31784: Implement the :pep:`564`, add new 6 new functions with
+  nanosecond resolution to the :mod:`time` module:
+  :func:`~time.clock_gettime_ns`, :func:`~time.clock_settime_ns`,
+  :func:`~time.monotonic_ns`, :func:`~time.perf_counter_ns`,
+  :func:`~time.process_time_ns`, :func:`~time.time_ns`.
+
+- bpo-30143: 2to3 now generates a code that uses abstract collection classes
+  from collections.abc rather than collections.
+
+- bpo-31770: Prevent a crash when calling the ``__init__()`` method of a
+  ``sqlite3.Cursor`` object more than once. Patch by Oren Milman.
+
+- bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the
+  ``Cursor`` object is uninitialized. Patch by Oren Milman.
+
+- bpo-31752: Fix possible crash in timedelta constructor called with custom
+  integers.
+
+- bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get
+  pollers timeout
+
+- bpo-31690: Allow the flags re.ASCII, re.LOCALE, and re.UNICODE to be used
+  as group flags for regular expressions.
+
+- bpo-30349: FutureWarning is now emitted if a regular expression contains
+  character set constructs that will change semantically in the future
+  (nested sets and set operations).
+
+- bpo-31664: Added support for the Blowfish hashing in the crypt module.
+
+- bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in
+  asyncio module. This method was previously modifying a wrong reference to
+  the protocol.
+
+- bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and
+  earlier.
+
+- bpo-31307: Allow use of bytes objects for arguments to
+  :meth:`configparser.ConfigParser.read`. Patch by Vincent Michel.
+
+- bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for
+  arbitrary negative timeouts on all OSes where it can only be a
+  non-negative integer or -1. Patch by Riccardo Coccioli.
+
+- bpo-31310: multiprocessing's semaphore tracker should be launched again if
+  crashed.
+
+- bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and
+  other user interruptions. If it crashes, restart it when necessary.
+
+- bpo-31245: Added support for AF_UNIX socket in asyncio
+  `create_datagram_endpoint`.
+
+- bpo-30553: Add HTTP/2 status code 421 (Misdirected Request) to
+  :class:`http.HTTPStatus`. Patch by Vitor Pereira.
+
+Documentation
+-------------
+
+- bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket
+  versionadded marker.
+
+Tests
+-----
+
+- bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on
+  APFS.
+
+- bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5.
+  The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged
+  into the kernel 4.5.
+
+- bpo-32138: Skip on Android test_faulthandler tests that raise SIGSEGV and
+  remove the test.support.requires_android_level decorator.
+
+- bpo-32136: The runtime embedding tests have been split out from
+  ``Lib/test/test_capi.py`` into a new ``Lib/test/test_embed.py`` file.
+
+- bpo-28668: test.support.requires_multiprocessing_queue is removed. Skip
+  tests with test.support.import_module('multiprocessing.synchronize')
+  instead when the semaphore implementation is broken or missing.
+
+- bpo-32126: Skip test_get_event_loop_new_process in
+  test.test_asyncio.test_events when sem_open() is not functional.
+
+- bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the
+  names sample to always test the same files. It prevents false alarms when
+  hunting reference leaks.
+
+Build
+-----
+
+- bpo-28538: Revert the previous changes, the if_nameindex structure is
+  defined by Unified Headers.
+
+- bpo-28762: Revert the last commit, the F_LOCK macro is defined by Android
+  Unified Headers.
+
+- bpo-29040: Support building Android with Unified Headers. The first NDK
+  release to support Unified Headers is android-ndk-r14.
+
+- bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the
+  sysroot paths when cross-compiling.
+
+- bpo-31957: Fixes Windows SDK version detection when building for Windows.
+
+- bpo-31609: Fixes quotes in PCbuild/clean.bat
+
+- bpo-31934: Abort the build when building out of a not clean source tree.
+
+- bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when
+  there was more than one function and/or method in a .c file with the same
+  name.
+
+- bpo-28791: Update Windows builds to use SQLite 3.21.0.
+
+- bpo-28791: Update OS X installer to use SQLite 3.21.0.
+
+- bpo-28643: Record profile-opt build progress with stamp files.
+
+- bpo-31866: Finish removing support for AtheOS.
+
+Windows
+-------
+
+- bpo-1102: Return ``None`` when ``View.Fetch()`` returns
+  ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by
+  Anthony Tuininga.
+
+- bpo-31944: Fixes Modify button in Apps and Features dialog.
+
+- bpo-20486: Implement the ``Database.Close()`` method to help closing MSI
+  database objects.
+
+- bpo-31857: Make the behavior of USE_STACKCHECK deterministic in a
+  multi-threaded environment.
+
+macOS
+-----
+
+- bpo-31392: Update macOS installer to use OpenSSL 1.0.2m
+
+IDLE
+----
+
+- bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event
+  handling is driven by IDLE's run loop, a confusing and distracting
+  queue.EMPTY traceback context is no longer added to tk event exception
+  tracebacks.  The traceback is now the same as when event handling is
+  driven by user code.  Patch based on a suggestion by Serhiy Storchaka.
+
+- bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet
+  in configdialog was replaced by ttk.Notebook.
+
+- bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch
+  mostly by Cheryl Sabella.
+
+- bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor
+  and output windows only see an empty last prompt line.  This simplifies
+  the code and fixes a minor bug when newline is inserted. Sys.ps1, if
+  present, is read on Shell start-up, but is not set or changed.
+
+- bpo-31860: The font sample in the IDLE configuration dialog is now
+  editable. Changes persist while IDLE remains open
+
+- bpo-31836: Test_code_module now passes if run after test_idle, which sets
+  ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not.
+  Test_code_module now properly tests both behaviors.  Ditto for ps2.
+
+- bpo-28603: Fix a TypeError that caused a shell restart when printing a
+  traceback that includes an exception that is unhashable. Patch by Zane
+  Bitter.
+
+- bpo-13802: Use non-Latin characters in the IDLE's Font settings sample.
+  Even if one selects a font that defines a limited subset of the unicode
+  Basic Multilingual Plane, tcl/tk will use other fonts that define a
+  character. The expanded example give users of non-Latin characters a
+  better idea of what they might see in IDLE's shell and editors. To make
+  room for the expanded sample, frames on the Font tab are re-arranged.  The
+  Font/Tabs help explains a bit about the additions.
+
+Tools/Demos
+-----------
+
+- bpo-32159: Remove CVS and Subversion tools: remove svneol.py and
+  treesync.py scripts. CPython migrated from CVS to Subversion, to
+  Mercurial, and then to Git. CVS and Subversion are no longer used to
+  develop CPython.
+
+- bpo-30722: Make redemo work with Python 3.6 and newer versions. Also,
+  remove the ``LOCALE`` option since it doesn't work with string patterns in
+  Python 3. Patch by Christoph Sarnowski.
+
+C API
+-----
+
+- bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in
+  a non-Python thread before PyEval_InitThreads(), only call
+  PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
+
+- bpo-32125: The ``Py_UseClassExceptionsFlag`` flag has been removed. It was
+  deprecated and wasn't used anymore since Python 2.0.
+
+- bpo-25612: Move the current exception state from the frame object to the
+  co-routine. This simplifies the interpreter and fixes a couple of obscure
+  bugs caused by having swap exception state when entering or exiting a
+  generator.
+
+- bpo-23699: Add Py_RETURN_RICHCOMPARE macro to reduce boilerplate code in
+  rich comparison functions.
+
+- bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and
+  `PyErr_NormalizeException()` does not use it anymore. This singleton is
+  persistent and its members being never cleared may cause a segfault during
+  finalization of the interpreter. See also issue #22898.
+
+
+What's New in Python 3.7.0 alpha 2?
+===================================
+
+*Release date: 2017-10-16*
+
+Core and Builtins
+-----------------
+
+- bpo-31558: ``gc.freeze()`` is a new API that allows for moving all objects
+  currently tracked by the garbage collector to a permanent generation,
+  effectively removing them from future collection events. This can be used
+  to protect those objects from having their PyGC_Head mutated. In effect,
+  this enables great copy-on-write stability at fork().
+
+- bpo-31642: Restored blocking "from package import module" by setting
+  sys.modules["package.module"] to None.
+
+- bpo-31708: Allow use of asynchronous generator expressions in synchronous
+  functions.
+
+- bpo-31709: Drop support of asynchronous __aiter__.
+
+- bpo-30404: The -u option now makes the stdout and stderr streams
+  unbuffered rather than line-buffered.
+
+- bpo-31619: Fixed a ValueError when convert a string with large number of
+  underscores to integer with binary base.
+
+- bpo-31602: Fix an assertion failure in `zipimporter.get_source()` in case
+  of a bad `zlib.decompress()`. Patch by Oren Milman.
+
+- bpo-31592: Fixed an assertion failure in Python parser in case of a bad
+  `unicodedata.normalize()`. Patch by Oren Milman.
+
+- bpo-31588: Raise a `TypeError` with a helpful error message when class
+  creation fails due to a metaclass with a bad ``__prepare__()`` method.
+  Patch by Oren Milman.
+
+- bpo-31574: Importlib was instrumented with two dtrace probes to profile
+  import timing.
+
+- bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad
+  ``__name__`` global. Patch by Oren Milman.
+
+- bpo-31506: Improved the error message logic for object.__new__ and
+  object.__init__.
+
+- bpo-31505: Fix an assertion failure in `json`, in case
+  `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren
+  Milman.
+
+- bpo-31492: Fix assertion failures in case of failing to import from a
+  module with a bad ``__name__`` attribute, and in case of failing to access
+  an attribute of such a module. Patch by Oren Milman.
+
+- bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the
+  argument has a bad ``__abs__()`` method. Patch by Oren Milman.
+
+- bpo-31336: Speed up class creation by 10-20% by reducing the overhead in
+  the necessary special method lookups.  Patch by Stefan Behnel.
+
+- bpo-31415: Add ``-X importtime`` option to show how long each import
+  takes. It can be used to optimize application's startup time.  Support the
+  :envvar:`PYTHONPROFILEIMPORTTIME` as an equivalent way to enable this.
+
+- bpo-31410: Optimized calling wrapper and classmethod descriptors.
+
+- bpo-31353: :pep:`553` - Add a new built-in called ``breakpoint()`` which
+  calls ``sys.breakpointhook()``.  By default this imports ``pdb`` and calls
+  ``pdb.set_trace()``, but users may override ``sys.breakpointhook()`` to
+  call whatever debugger they want.  The original value of the hook is saved
+  in ``sys.__breakpointhook__``.
+
+- bpo-17852: Maintain a list of open buffered files, flush them before
+  exiting the interpreter.  Based on a patch from Armin Rigo.
+
+- bpo-31315: Fix an assertion failure in imp.create_dynamic(), when
+  spec.name is not a string. Patch by Oren Milman.
+
+- bpo-31311: Fix a crash in the ``__setstate__()`` method of
+  `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman.
+
+- bpo-31293: Fix crashes in true division and multiplication of a timedelta
+  object by a float with a bad as_integer_ratio() method. Patch by Oren
+  Milman.
+
+- bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the
+  return value of the received loader's get_source() has a bad splitlines()
+  method. Patch by Oren Milman.
+
+- bpo-30406: Make ``async`` and ``await`` proper keywords, as specified in
+  :pep:`492`.
+
+Library
+-------
+
+- bpo-30058: Fixed buffer overflow in select.kqueue.control().
+
+- bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII
+  characters. Now it uses ``-i`` regular expression local flag to avoid
+  non-ASCII characters.
+
+- bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM
+  exceptions.
+
+- bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of
+  `Element.text` and `Element.tail`. Patch by Oren Milman.
+
+- bpo-31671: Now ``re.compile()`` converts passed RegexFlag to normal int
+  object before compiling. bm_regex_compile benchmark shows 14% performance
+  improvements.
+
+- bpo-30397: The types of compiled regular objects and match objects are now
+  exposed as `re.Pattern` and `re.Match`.  This adds information in pydoc
+  output for the re module.
+
+- bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split()
+  when pass a string larger than 2 GiB.
+
+- bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo().
+
+- bpo-31648: Improvements to path predicates in ElementTree: Allow
+  whitespace around predicate parts, i.e. "[a = 'text']" instead of
+  requiring the less readable "[a='text']". Add support for text comparison
+  of the current node, like "[.='text']". Patch by Stefan Behnel.
+
+- bpo-30806: Fix the string representation of a netrc object.
+
+- bpo-31638: Add optional argument ``compressed`` to
+  ``zipapp.create_archive``, and add option ``--compress`` to the command
+  line interface of ``zipapp``.
+
+- bpo-25351: Avoid venv activate failures with undefined variables
+
+- bpo-20519: Avoid ctypes use (if possible) and improve import time for
+  uuid.
+
+- bpo-28293: The regular expression cache is no longer completely dumped
+  when it is full.
+
+- bpo-31596: Added pthread_getcpuclockid() to the time module
+
+- bpo-27494: Make 2to3 accept a trailing comma in generator expressions. For
+  example, ``set(x for x in [],)`` is now allowed.
+
+- bpo-30347: Stop crashes when concurrently iterate over itertools.groupby()
+  iterators.
+
+- bpo-30346: An iterator produced by itertools.groupby() iterator now
+  becomes exhausted after advancing the groupby iterator.
+
+- bpo-31556: Cancel asyncio.wait_for future faster if timeout <= 0
+
+- bpo-31540: Allow passing a context object in
+  :class:`concurrent.futures.ProcessPoolExecutor` constructor. Also, free
+  job resources in :class:`concurrent.futures.ProcessPoolExecutor` earlier
+  to improve memory usage when a worker waits for new jobs.
+
+- bpo-31516: ``threading.current_thread()`` should not return a dummy thread
+  at shutdown.
+
+- bpo-31525: In the sqlite module, require the sqlite3_prepare_v2 API. Thus,
+  the sqlite module now requires sqlite version at least 3.3.9.
+
+- bpo-26510: argparse subparsers are now required by default.  This matches
+  behaviour in Python 2. For optional subparsers, use the new parameter
+  ``add_subparsers(required=False)``. Patch by Anthony Sottile. (As of
+  3.7.0rc1, the default was changed to not required as had been the case
+  since Python 3.3.)
+
+- bpo-27541: Reprs of subclasses of some collection and iterator classes
+  (`bytearray`, `array.array`, `collections.deque`,
+  `collections.defaultdict`, `itertools.count`, `itertools.repeat`) now
+  contain actual type name insteads of hardcoded name of the base class.
+
+- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
+  bootstrapping has failed.
+
+- bpo-31389: ``pdb.set_trace()`` now takes an optional keyword-only argument
+  ``header``. If given, this is printed to the console just before debugging
+  begins.
+
+Documentation
+-------------
+
+- bpo-31537: Fix incorrect usage of ``get_history_length`` in readline
+  documentation example code. Patch by Brad Smith.
+
+- bpo-30085: The operator functions without double underscores are preferred
+  for clarity. The one with underscores are only kept for
+  back-compatibility.
+
+Build
+-----
+
+- bpo-31696: Improve compiler version information in :data:`sys.version`
+  when Python is built with Clang.
+
+- bpo-31625: Stop using ranlib on static libraries. Instead, we assume ar
+  supports the 's' flag.
+
+- bpo-31624: Remove support for BSD/OS.
+
+- bpo-22140: Prevent double substitution of prefix in python-config.sh.
+
+- bpo-31569: Correct PCBuild/ case to PCbuild/ in build scripts and
+  documentation.
+
+- bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing
+  changed.
+
+IDLE
+----
+
+- bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget
+  instead of an flist with a root widget opens the option of creating a
+  browser frame that is only part of a window.  Passing a full file name
+  instead of pieces assumed to come from a .py file opens the possibility of
+  browsing python files that do not end in .py.
+
+- bpo-31649: IDLE - Make _htest, _utest parameters keyword only.
+
+- bpo-31559: Remove test order dependence in idle_test.test_browser.
+
+- bpo-31459: Rename IDLE's module browser from Class Browser to Module
+  Browser. The original module-level class and method browser became a
+  module browser, with the addition of module-level functions, years ago.
+  Nested classes and functions were added yesterday.  For
+  back-compatibility, the virtual event <<open-class-browser>>, which
+  appears on the Keys tab of the Settings dialog, is not changed. Patch by
+  Cheryl Sabella.
+
+- bpo-31500: Default fonts now are scaled on HiDPI displays.
+
+- bpo-1612262: IDLE module browser now shows nested classes and functions.
+  Original patches for code and tests by Guilherme Polo and Cheryl Sabella,
+  respectively.
+
+C API
+-----
+
+- bpo-28280: Make `PyMapping_Keys()`, `PyMapping_Values()` and
+  `PyMapping_Items()` always return a `list` (rather than a `list` or a
+  `tuple`). Patch by Oren Milman.
+
+- bpo-31532: Fix memory corruption due to allocator mix in getpath.c between
+  Py_GetPath() and Py_SetPath()
+
+- bpo-25658: Implement :pep:`539` for Thread Specific Storage (TSS) API: it
+  is a new Thread Local Storage (TLS) API to CPython which would supersede
+  use of the existing TLS API within the CPython interpreter, while
+  deprecating the existing API. PEP written by Erik M. Bray, patch by
+  Masayuki Yamamoto.
+
+
+What's New in Python 3.7.0 alpha 1?
+===================================
+
+*Release date: 2017-09-19*
+
+Security
+--------
+
+- bpo-29781: SSLObject.version() now correctly returns None when handshake
+  over BIO has not been performed yet.
+
+- bpo-29505: Add fuzz tests for float(str), int(str), unicode(str); for
+  oss-fuzz.
+
+- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
+  get security fixes.
+
+- bpo-30730: Prevent environment variables injection in subprocess on
+  Windows.  Prevent passing other environment variables and command
+  arguments.
+
+- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
+  security vulnerabilities including: CVE-2017-9233 (External entity
+  infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
+  CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
+  CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
+  CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
+  impact Python, since Python already gets entropy from the OS to set the
+  expat secret using ``XML_SetHashSalt()``.
+
+- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
+  example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
+  ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
+  authentication (``login@host``).
+
+- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
+  CVE-2016-0718 and CVE-2016-4472. See
+  https://sourceforge.net/p/expat/bugs/537/ for more information.
+
+Core and Builtins
+-----------------
+
+- bpo-31490: Fix an assertion failure in `ctypes` class definition, in case
+  the class has an attribute whose name is specified in ``_anonymous_`` but
+  not in ``_fields_``. Patch by Oren Milman.
+
+- bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in
+  case the env argument has a bad keys() method. Patch by Oren Milman.
+
+- bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case
+  of an exception with a bad ``__module__`` attribute. Patch by Oren Milman.
+
+- bpo-31416: Fix assertion failures in case of a bad warnings.filters or
+  warnings.defaultaction. Patch by Oren Milman.
+
+- bpo-28411: Change direct usage of PyInterpreterState.modules to
+  PyImport_GetModuleDict(). Also introduce more uniformity in other code
+  that deals with sys.modules. This helps reduce complications when working
+  on sys.modules.
+
+- bpo-28411: Switch to the abstract API when dealing with
+  ``PyInterpreterState.modules``. This allows later support for all dict
+  subclasses and other Mapping implementations.  Also add a
+  ``PyImport_GetModule()`` function to reduce a bunch of duplicated code.
+
+- bpo-31411: Raise a TypeError instead of SystemError in case
+  warnings.onceregistry is not a dictionary. Patch by Oren Milman.
+
+- bpo-31344: For finer control of tracing behaviour when testing the
+  interpreter, two new frame attributes have been added to control the
+  emission of particular trace events: ``f_trace_lines`` (``True`` by
+  default) to turn off per-line trace events; and ``f_trace_opcodes``
+  (``False`` by default) to turn on per-opcode trace events.
+
+- bpo-31373: Fix several possible instances of undefined behavior due to
+  floating-point demotions.
+
+- bpo-30465: Location information (``lineno`` and ``col_offset``) in
+  f-strings is now (mostly) correct.  This fixes tools like flake8 from
+  showing warnings on the wrong line (typically the first line of the file).
+
+- bpo-30860: Consolidate CPython's global runtime state under a single
+  struct.  This improves discoverability of the runtime state.
+
+- bpo-31347: Fix possible undefined behavior in _PyObject_FastCall_Prepend.
+
+- bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev().
+  GNU C libray plans to remove the functions from sys/types.h.
+
+- bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on
+  Windows, when the return value of ``pathname.replace('/','\\')`` isn't a
+  string. Patch by Oren Milman.
+
+- bpo-31271: Fix an assertion failure in the write() method of
+  `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch
+  by Oren Milman.
+
+- bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the
+  decoder's state is invalid. Patch by Oren Milman.
+
+- bpo-30721: ``print`` now shows correct usage hint for using Python 2
+  redirection syntax.  Patch by Sanyam Khurana.
+
+- bpo-31070: Fix a race condition in importlib _get_module_lock().
+
+- bpo-30747: Add a non-dummy implementation of _Py_atomic_store and
+  _Py_atomic_load on MSVC.
+
+- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
+  doesn't call ``PyObject_GC_UnTrack()``.
+
+- bpo-31071: Avoid masking original TypeError in call with * unpacking when
+  other arguments are passed.
+
+- bpo-30978: str.format_map() now passes key lookup exceptions through.
+  Previously any exception was replaced with a KeyError exception.
+
+- bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state.
+
+- bpo-30876: Relative import from unloaded package now reimports the package
+  instead of failing with SystemError.  Relative import from non-package now
+  fails with ImportError rather than SystemError.
+
+- bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from
+  signal handler, to avoid calling signal-unsafe functions. The tests I'm
+  adding here fail without the rest of the patch, on Linux and OS X. This
+  means our signal delivery logic had defects (some signals could be lost).
+
+- bpo-30765: Avoid blocking in pthread_mutex_lock() when
+  PyThread_acquire_lock() is asked not to block.
+
+- bpo-31161: Make sure the 'Missing parentheses' syntax error message is
+  only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters.
+
+- bpo-30814: Fixed a race condition when import a submodule from a package.
+
+- bpo-30736: The internal unicodedata database has been upgraded to Unicode
+  10.0.
+
+- bpo-30604: Move co_extra_freefuncs from per-thread to per-interpreter to
+  avoid crashes.
+
+- bpo-30597: ``print`` now shows expected input in custom error message when
+  used as a Python 2 statement. Patch by Sanyam Khurana.
+
+- bpo-30682: Removed a too-strict assertion that failed for certain
+  f-strings, such as eval("f'\\\n'") and eval("f'\\\r'").
+
+- bpo-30501: The compiler now produces more optimal code for complex
+  condition expressions in the "if", "while" and "assert" statement, the
+  "if" expression, and generator expressions and comprehensions.
+
+- bpo-28180: Implement :pep:`538` (legacy C locale coercion). This means
+  that when a suitable coercion target locale is available, both the core
+  interpreter and locale-aware C extensions will assume the use of UTF-8 as
+  the default text encoding, rather than ASCII.
+
+- bpo-30486: Allows setting cell values for __closure__. Patch by Lisa
+  Roach.
+
+- bpo-30537: itertools.islice now accepts integer-like objects (having an
+  __index__ method) as start, stop, and slice arguments
+
+- bpo-25324: Tokens needed for parsing in Python moved to C. ``COMMENT``,
+  ``NL`` and ``ENCODING``. This way the tokens and tok_names in the token
+  module don't get changed when you import the tokenize module.
+
+- bpo-29104: Fixed parsing backslashes in f-strings.
+
+- bpo-27945: Fixed various segfaults with dict when input collections are
+  mutated during searching, inserting or comparing.  Based on patches by
+  Duane Griffin and Tim Mitchell.
+
+- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
+  non-interned attribute names.  Based on patch by Eryk Sun.
+
+- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the
+  middle of resuming a chain of nested 'yield from' or 'await' calls, it's
+  now correctly delivered to the innermost frame.
+
+- bpo-28974: ``object.__format__(x, '')`` is now equivalent to ``str(x)``
+  rather than ``format(str(self), '')``.
+
+- bpo-30024: Circular imports involving absolute imports with binding a
+  submodule to a name are now supported.
+
+- bpo-12414: sys.getsizeof() on a code object now returns the sizes which
+  includes the code struct and sizes of objects which it references. Patch
+  by Dong-hee Na.
+
+- bpo-29839: len() now raises ValueError rather than OverflowError if
+  __len__() returned a large negative integer.
+
+- bpo-11913: README.rst is now included in the list of distutils standard
+  READMEs and therefore included in source distributions.
+
+- bpo-29914: Fixed default implementations of __reduce__ and
+  __reduce_ex__(). object.__reduce__() no longer takes arguments,
+  object.__reduce_ex__() now requires one argument.
+
+- bpo-29949: Fix memory usage regression of set and frozenset object.
+
+- bpo-29935: Fixed error messages in the index() method of tuple, list and
+  deque when pass indices of wrong type.
+
+- bpo-29816: Shift operation now has less opportunity to raise
+  OverflowError. ValueError always is raised rather than OverflowError for
+  negative counts. Shifting zero with non-negative count always returns
+  zero.
+
+- bpo-24821: Fixed the slowing down to 25 times in the searching of some
+  unlucky Unicode characters.
+
+- bpo-29102: Add a unique ID to PyInterpreterState.  This makes it easier to
+  identify each subinterpreter.
+
+- bpo-29894: The deprecation warning is emitted if __complex__ returns an
+  instance of a strict subclass of complex.  In a future versions of Python
+  this can be an error.
+
+- bpo-29859: Show correct error messages when any of the pthread_* calls in
+  thread_pthread.h fails.
+
+- bpo-29849: Fix a memory leak when an ImportError is raised during from
+  import.
+
+- bpo-28856: Fix an oversight that %b format for bytes should support
+  objects follow the buffer protocol.
+
+- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused
+  a regression by revealing an inconsistency in how sys.path is initialized
+  when executing ``__main__`` from a zipfile, directory, or other import
+  location. The interpreter now consistently avoids ever adding the import
+  location's parent directory to ``sys.path``, and ensures no other
+  ``sys.path`` entries are inadvertently modified when inserting the import
+  location named on the command line.
+
+- bpo-29568: Escaped percent "%%" in the format string for classic string
+  formatting no longer allows any characters between two percents.
+
+- bpo-29714: Fix a regression that bytes format may fail when containing
+  zero bytes inside.
+
+- bpo-29695: bool(), float(), list() and tuple() no longer take keyword
+  arguments. The first argument of int() can now be passes only as
+  positional argument.
+
+- bpo-28893: Set correct __cause__ for errors about invalid awaitables
+  returned from __aiter__ and __anext__.
+
+- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
+  :exc:`OverflowError`.
+
+- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra.  Patch by Brian
+  Coleman.
+
+- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It
+  should raise TypeError when kwargs is not a dict.  But it might cause segv
+  when args=NULL and kwargs is not a dict.
+
+- bpo-28598: Support __rmod__ for subclasses of str being called before
+  str.__mod__. Patch by Martijn Pieters.
+
+- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by
+  Matthieu Dartiailh.
+
+- bpo-29602: Fix incorrect handling of signed zeros in complex constructor
+  for complex subclasses and for inputs having a __complex__ method. Patch
+  by Serhiy Storchaka.
+
+- bpo-29347: Fixed possibly dereferencing undefined pointers when creating
+  weakref objects.
+
+- bpo-29463: Add ``docstring`` field to Module, ClassDef, FunctionDef, and
+  AsyncFunctionDef ast nodes.  docstring is not first stmt in their body
+  anymore.  It affects ``co_firstlineno`` and ``co_lnotab`` of code object
+  for module and class. (Reverted in :issue:`32911`.)
+
+- bpo-29438: Fixed use-after-free problem in key sharing dict.
+
+- bpo-29546: Set the 'path' and 'name' attribute on ImportError for ``from
+  ... import ...``.
+
+- bpo-29546: Improve from-import error message with location
+
+- bpo-29478: If max_line_length=None is specified while using the Compat32
+  policy, it is no longer ignored.  Patch by Mircea Cosbuc.
+
+- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
+
+- bpo-29337: Fixed possible BytesWarning when compare the code objects.
+  Warnings could be emitted at compile time.
+
+- bpo-29327: Fixed a crash when pass the iterable keyword argument to
+  sorted().
+
+- bpo-29034: Fix memory leak and use-after-free in os module
+  (path_converter).
+
+- bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception.
+
+- bpo-29049: Call _PyObject_GC_TRACK() lazily when calling Python function.
+  Calling function is up to 5% faster.
+
+- bpo-28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII
+  whitespace, not only spaces.  Patch by Robert Xiao.
+
+- bpo-28932: Do not include <sys/random.h> if it does not exist.
+
+- bpo-25677: Correct the positioning of the syntax error caret for indented
+  blocks. Based on patch by Michael Layzell.
+
+- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
+  form.
+
+- bpo-18896: Python function can now have more than 255 parameters.
+  collections.namedtuple() now supports tuples with more than 255 elements.
+
+- bpo-28596: The preferred encoding is UTF-8 on Android. Patch written by
+  Chi Hsuan Yen.
+
+- bpo-22257: Clean up interpreter startup (see :pep:`432`).
+
+- bpo-26919: On Android, operating system data is now always encoded/decoded
+  to/from UTF-8, instead of the locale encoding to avoid inconsistencies
+  with os.fsencode() and os.fsdecode() which are already using UTF-8.
+
+- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
+  bug triggerable by a monkey-patched len() function.
+
+- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
+  not convert combined table into split table. Patch written by INADA Naoki.
+
+- bpo-28739: f-string expressions are no longer accepted as docstrings and
+  by ast.literal_eval() even if they do not include expressions.
+
+- bpo-28512: Fixed setting the offset attribute of SyntaxError by
+  PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
+
+- bpo-28918: Fix the cross compilation of xxlimited when Python has been
+  built with Py_DEBUG defined.
+
+- bpo-23722: Rather than silently producing a class that doesn't support
+  zero-argument ``super()`` in methods, failing to pass the new
+  ``__classcell__`` namespace entry up to ``type.__new__`` now results in a
+  ``DeprecationWarning`` and a class that supports zero-argument
+  ``super()``.
+
+- bpo-28797: Modifying the class __dict__ inside the __set_name__ method of
+  a descriptor that is used inside that class no longer prevents calling the
+  __set_name__ method of other descriptors.
+
+- bpo-28799: Remove the ``PyEval_GetCallStats()`` function and deprecate the
+  untested and undocumented ``sys.callstats()`` function. Remove the
+  ``CALL_PROFILE`` special build: use the :func:`sys.setprofile` function,
+  :mod:`cProfile` or :mod:`profile` to profile function calls.
+
+- bpo-12844: More than 255 arguments can now be passed to a function.
+
+- bpo-28782: Fix a bug in the implementation ``yield from`` when checking if
+  the next instruction is YIELD_FROM. Regression introduced by WORDCODE
+  (issue #26647).
+
+- bpo-28774: Fix error position of the unicode error in ASCII and Latin1
+  encoders when a string returned by the error handler contains multiple
+  non-encodable characters (non-ASCII for the ASCII codec, characters out of
+  the U+0000-U+00FF range for Latin1).
+
+- bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict.
+  Improve speed of dict literal with constant keys up to 30%.
+
+- bpo-28532: Show sys.version when -V option is supplied twice.
+
+- bpo-27100: The with-statement now checks for __enter__ before it checks
+  for __exit__. This gives less confusing error messages when both methods
+  are missing. Patch by Jonathan Ellington.
+
+- bpo-28746: Fix the set_inheritable() file descriptor method on platforms
+  that do not have the ioctl FIOCLEX and FIONCLEX commands.
+
+- bpo-26920: Fix not getting the locale's charset upon initializing the
+  interpreter, on platforms that do not have langinfo.
+
+- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
+  when decode astral characters.  Patch by Xiang Zhang.
+
+- bpo-28665: Improve speed of the STORE_DEREF opcode by 40%.
+
+- bpo-19398: Extra slash no longer added to sys.path components in case of
+  empty compile-time PYTHONPATH components.
+
+- bpo-28621: Sped up converting int to float by reusing faster bits counting
+  implementation.  Patch by Adrian Wielgosik.
+
+- bpo-28580: Optimize iterating split table values. Patch by Xiang Zhang.
+
+- bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch
+  by Xiang Zhang.
+
+- bpo-28128: Deprecation warning for invalid str and byte escape sequences
+  now prints better information about where the error occurs. Patch by
+  Serhiy Storchaka and Eric Smith.
+
+- bpo-28509: dict.update() no longer allocate unnecessary large memory.
+
+- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
+  build.
+
+- bpo-28517: Fixed of-by-one error in the peephole optimizer that caused
+  keeping unreachable code.
+
+- bpo-28214: Improved exception reporting for problematic __set_name__
+  attributes.
+
+- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
+  loss in PyTraceBack_Here().
+
+- bpo-28183: Optimize and cleanup dict iteration.
+
+- bpo-26081: Added C implementation of asyncio.Future. Original patch by
+  Yury Selivanov.
+
+- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
+  Patch by Xiang Zhang.
+
+- bpo-28376: The type of long range iterator is now registered as Iterator.
+  Patch by Oren Milman.
+
+- bpo-28376: Creating instances of range_iterator by calling range_iterator
+  type now is disallowed.  Calling iter() on range instance is the only way.
+  Patch by Oren Milman.
+
+- bpo-26906: Resolving special methods of uninitialized type now causes
+  implicit initialization of the type instead of a fail.
+
+- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
+  patch by Niklas Koep.
+
+- bpo-24098: Fixed possible crash when AST is changed in process of
+  compiling it.
+
+- bpo-28201: Dict reduces possibility of 2nd conflict in hash table when
+  hashes have same lower bits.
+
+- bpo-28350: String constants with null character no longer interned.
+
+- bpo-26617: Fix crash when GC runs during weakref callbacks.
+
+- bpo-27942: String constants now interned recursively in tuples and
+  frozensets.
+
+- bpo-28289: ImportError.__init__ now resets not specified attributes.
+
+- bpo-21578: Fixed misleading error message when ImportError called with
+  invalid keyword args.
+
+- bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch
+  by Soumya Sharma.
+
+- bpo-28086: Single var-positional argument of tuple subtype was passed
+  unscathed to the C-defined function.  Now it is converted to exact tuple.
+
+- bpo-28214: Now __set_name__ is looked up on the class instead of the
+  instance.
+
+- bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
+  syscall fails with EPERM, for example when blocked by SECCOMP.
+
+- bpo-28192: Don't import readline in isolated mode.
+
+- bpo-27441: Remove some redundant assignments to ob_size in longobject.c.
+  Thanks Oren Milman.
+
+- bpo-27222: Clean up redundant code in long_rshift function. Thanks Oren
+  Milman.
+
+- Upgrade internal unicode databases to Unicode version 9.0.0.
+
+- bpo-28131: Fix a regression in zipimport's compile_source().  zipimport
+  should use the same optimization level as the interpreter.
+
+- bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
+  optimize memcpy().
+
+- bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a
+  "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.
+
+- bpo-26182: Raise DeprecationWarning when async and await keywords are used
+  as variable/attribute/class/function name.
+
+- bpo-26182: Fix a refleak in code that raises DeprecationWarning.
+
+- bpo-28721: Fix asynchronous generators aclose() and athrow() to handle
+  StopAsyncIteration propagation properly.
+
+- bpo-26110: Speed-up method calls: add LOAD_METHOD and CALL_METHOD opcodes.
+
+Library
+-------
+
+- bpo-31499: xml.etree: Fix a crash when a parser is part of a reference
+  cycle.
+
+- bpo-31482: ``random.seed()`` now works with bytes in version=1
+
+- bpo-28556: typing.get_type_hints now finds the right globalns for classes
+  and modules by default (when no ``globalns`` was specified by the caller).
+
+- bpo-28556: Speed improvements to the ``typing`` module.  Original PRs by
+  Ivan Levkivskyi and Mitar.
+
+- bpo-31544: The C accelerator module of ElementTree ignored exceptions
+  raised when looking up TreeBuilder target methods in XMLParser().
+
+- bpo-31234: socket.create_connection() now fixes manually a reference
+  cycle: clear the variable storing the last exception on success.
+
+- bpo-31457: LoggerAdapter objects can now be nested.
+
+- bpo-31431: SSLContext.check_hostname now automatically sets
+  SSLContext.verify_mode to ssl.CERT_REQUIRED instead of failing with a
+  ValueError.
+
+- bpo-31233: socketserver.ThreadingMixIn now keeps a list of non-daemonic
+  threads to wait until all these threads complete in server_close().
+
+- bpo-28638: Changed the implementation strategy for
+  collections.namedtuple() to substantially reduce the use of exec() in
+  favor of precomputed methods. As a result, the *verbose* parameter and
+  *_source* attribute are no longer supported.  The benefits include 1)
+  having a smaller memory footprint for applications using multiple named
+  tuples, 2) faster creation of the named tuple class (approx 4x to 6x
+  depending on how it is measured), and 3) minor speed-ups for instance
+  creation using __new__, _make, and _replace.  (The primary patch
+  contributor is Jelle Zijlstra with further improvements by INADA Naoki,
+  Serhiy Storchaka, and Raymond Hettinger.)
+
+- bpo-31400: Improves SSL error handling to avoid losing error numbers.
+
+- bpo-27629: Make return types of SSLContext.wrap_bio() and
+  SSLContext.wrap_socket() customizable.
+
+- bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a
+  context cannot be instantiated.
+
+- bpo-28182: The SSL module now raises SSLCertVerificationError when OpenSSL
+  fails to verify the peer's certificate. The exception contains more
+  information about the error.
+
+- bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of
+  data. This fixes support for all bytes-like object. It is also more
+  efficient and avoids costly copies.
+
+- bpo-14191: A new function
+  ``argparse.ArgumentParser.parse_intermixed_args`` provides the ability to
+  parse command lines where there user intermixes options and positional
+  arguments.
+
+- bpo-31178: Fix string concatenation bug in rare error path in the
+  subprocess module
+
+- bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up
+  to 10% faster.
+
+- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
+  partial characters for UTF-8 input (libexpat bug 115):
+  https://github.com/libexpat/libexpat/issues/115
+
+- bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
+
+- bpo-1198569: ``string.Template`` subclasses can optionally define
+  ``braceidpattern`` if they want to specify different placeholder patterns
+  inside and outside the braces.  If None (the default) it falls back to
+  ``idpattern``.
+
+- bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() now
+  explicitly closes the call queue. Moreover, shutdown(wait=True) now also
+  join the call queue thread, to prevent leaking a dangling thread.
+
+- bpo-27144: The ``map()`` and ``as_completed()`` iterators in
+  ``concurrent.futures`` now avoid keeping a reference to yielded objects.
+
+- bpo-31281: Fix ``fileinput.FileInput(files, inplace=True)`` when ``files``
+  contain ``pathlib.Path`` objects.
+
+- bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer
+  types.
+
+- bpo-27584: ``AF_VSOCK`` has been added to the socket interface which
+  allows communication between virtual machines and their host.
+
+- bpo-22536: The subprocess module now sets the filename when
+  FileNotFoundError is raised on POSIX systems due to the executable or cwd
+  not being found.
+
+- bpo-29741: Update some methods in the _pyio module to also accept integer
+  types. Patch by Oren Milman.
+
+- bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor
+  now breaks a reference cycle between an exception object and the WorkItem
+  object.
+
+- bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using
+  sys.exc_info() in code handling exceptions.
+
+- bpo-23835: configparser: reading defaults in the ``ConfigParser()``
+  constructor is now using ``read_dict()``, making its behavior consistent
+  with the rest of the parser.  Non-string keys and values in the defaults
+  dictionary are now being implicitly converted to strings.  Patch by James
+  Tocknell.
+
+- bpo-31238: pydoc: the stop() method of the private ServerThread class now
+  waits until DocServer.serve_until_quit() completes and then explicitly
+  sets its docserver attribute to None to break a reference cycle.
+
+- bpo-5001: Many asserts in `multiprocessing` are now more informative, and
+  some error types have been changed to more specific ones.
+
+- bpo-31109: Convert zipimport to use Argument Clinic.
+
+- bpo-30102: The ssl and hashlib modules now call
+  OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
+  detects CPU features and enables optimizations on some CPU architectures
+  such as POWER8. Patch is based on research from Gustavo Serra Scalet.
+
+- bpo-18966: Non-daemonic threads created by a multiprocessing.Process are
+  now joined on child exit.
+
+- bpo-31183: `dis` now works with asynchronous generator and coroutine
+  objects. Patch by George Collins based on diagnosis by Luciano Ramalho.
+
+- bpo-5001: There are a number of uninformative asserts in the
+  `multiprocessing` module, as noted in issue 5001. This change fixes two of
+  the most potentially problematic ones, since they are in error-reporting
+  code, in the `multiprocessing.managers.convert_to_error` function. (It
+  also makes more informative a ValueError message.) The only potentially
+  problematic change is that the AssertionError is now a TypeError; however,
+  this should also help distinguish it from an AssertionError being
+  *reported* by the function/its caller (such as in issue 31169). - Patch by
+  Allen W. Smith (drallensmith on github).
+
+- bpo-31185: Fixed miscellaneous errors in asyncio speedup module.
+
+- bpo-31151: socketserver.ForkingMixIn.server_close() now waits until all
+  child processes completed to prevent leaking zombie processes.
+
+- bpo-31072: Add an ``include_file`` parameter to
+  ``zipapp.create_archive()``
+
+- bpo-24700: Optimize array.array comparison. It is now from 10x up to 70x
+  faster when comparing arrays holding values of the same integer type.
+
+- bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu
+  classes. Call the parent destroy() method even if the used attribute
+  doesn't exist. The LabeledScale.destroy() method now also explicitly
+  clears label and scale attributes to help the garbage collector to destroy
+  all widgets.
+
+- bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for
+  classes whose name begins with an underscore. Patch by Shane Harvey.
+
+- bpo-31080: Allow `logging.config.fileConfig` to accept kwargs and/or args.
+
+- bpo-30897: ``pathlib.Path`` objects now include an ``is_mount()`` method
+  (only implemented on POSIX).  This is similar to ``os.path.ismount(p)``.
+  Patch by Cooper Ry Lees.
+
+- bpo-31061: Fixed a crash when using asyncio and threads.
+
+- bpo-30987: Added support for CAN ISO-TP protocol in the socket module.
+
+- bpo-30522: Added a ``setStream`` method to ``logging.StreamHandler`` to
+  allow the stream to be set after creation.
+
+- bpo-30502: Fix handling of long oids in ssl.  Based on patch by Christian
+  Heimes.
+
+- bpo-5288: Support tzinfo objects with sub-minute offsets.
+
+- bpo-30919: Fix shared memory performance regression in multiprocessing in
+  3.x. Shared memory used anonymous memory mappings in 2.x, while 3.x mmaps
+  actual files. Try to be careful to do as little disk I/O as possible.
+
+- bpo-26732: Fix too many fds in processes started with the "forkserver"
+  method. A child process would inherit as many fds as the number of
+  still-running children.
+
+- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
+  builtin functions.  Patch by Aaron Gallagher.
+
+- bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
+
+- bpo-19896: Fix multiprocessing.sharedctypes to recognize typecodes ``'q'``
+  and ``'Q'``.
+
+- bpo-30946: Remove obsolete code in readline module for platforms where GNU
+  readline is older than 2.1 or where select() is not available.
+
+- bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across
+  instances of ``OptionMenu``.
+
+- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
+  thread completes, even if the thread was started by the same process which
+  created the queue.
+
+- bpo-29854: Fix segfault in readline when using readline's history-size
+  option.  Patch by Nir Soffer.
+
+- bpo-30794: Added multiprocessing.Process.kill method to terminate using
+  the SIGKILL signal on Unix.
+
+- bpo-30319: socket.close() now ignores ECONNRESET error.
+
+- bpo-30828: Fix out of bounds write in
+  `asyncio.CFuture.remove_done_callback()`.
+
+- bpo-30302: Use keywords in the ``repr`` of ``datetime.timedelta``.
+
+- bpo-30807: signal.setitimer() may disable the timer when passed a tiny
+  value. Tiny values (such as 1e-6) are valid non-zero values for
+  setitimer(), which is specified as taking microsecond-resolution
+  intervals. However, on some platform, our conversion routine could convert
+  1e-6 into a zero interval, therefore disabling the timer instead of
+  (re-)scheduling it.
+
+- bpo-30441: Fix bug when modifying os.environ while iterating over it
+
+- bpo-29585: Avoid importing ``sysconfig`` from ``site`` to improve startup
+  speed. Python startup is about 5% faster on Linux and 30% faster on macOS.
+
+- bpo-29293: Add missing parameter "n" on
+  multiprocessing.Condition.notify(). The doc claims
+  multiprocessing.Condition behaves like threading.Condition, but its
+  notify() method lacked the optional "n" argument (to specify the number of
+  sleepers to wake up) that threading.Condition.notify() accepts.
+
+- bpo-30532: Fix email header value parser dropping folding white space in
+  certain cases.
+
+- bpo-30596: Add a ``close()`` method to ``multiprocessing.Process``.
+
+- bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash
+  functions such as md5 are not available in the linked OpenSSL library.  As
+  in some special FIPS-140 build environments.
+
+- bpo-29169: Update zlib to 1.2.11.
+
+- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
+  contains CR or LF. Patch by Dong-hee Na.
+
+- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
+  with bytes-like argument.
+
+- bpo-30746: Prohibited the '=' character in environment variable names in
+  ``os.putenv()`` and ``os.spawn*()``.
+
+- bpo-30664: The description of a unittest subtest now preserves the order
+  of keyword arguments of TestCase.subTest().
+
+- bpo-21071: struct.Struct.format type is now :class:`str` instead of
+  :class:`bytes`.
+
+- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to
+  have a non repr() based thread name by default when no thread_name_prefix
+  is supplied. They will now identify themselves as
+  "ThreadPoolExecutor-y_n".
+
+- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
+  They now always return bytes.
+
+- bpo-30616: Functional API of enum allows to create empty enums. Patched by
+  Dong-hee Na
+
+- bpo-30038: Fix race condition between signal delivery and wakeup file
+  descriptor. Patch by Nathaniel Smith.
+
+- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.
+
+- bpo-24744: pkgutil.walk_packages function now raises ValueError if *path*
+  is a string. Patch by Sanyam Khurana.
+
+- bpo-24484: Avoid race condition in multiprocessing cleanup.
+
+- bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite of
+  the signal number when the process is killed by a signal (instead of 255)
+  when using the "forkserver" method.
+
+- bpo-28994: The traceback no longer displayed for SystemExit raised in a
+  callback registered by atexit.
+
+- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
+  called.
+
+- bpo-30645: Fix path calculation in `imp.load_package()`, fixing it for
+  cases when a package is only shipped with bytecodes. Patch by Alexandru
+  Ardelean.
+
+- bpo-11822: The dis.dis() function now is able to disassemble nested code
+  objects.
+
+- bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into
+  account, leaving a fd in a bad state in case of error. Patch by Giampaolo
+  Rodola'.
+
+- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader
+  in non-blocking mode if it succeeded to acquire the lock but the acquire
+  took longer than the timeout.
+
+- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
+  support for ContextManager on all versions. Original PRs by Jelle Zijlstra
+  and Ivan Levkivskyi
+
+- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
+  bytes instance with misplaced inline modifier.  Patch by Roy Williams.
+
+- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
+  implementation. Patch by Michaël Sghaïer.
+
+- bpo-29743: Closing transport during handshake process leaks open socket.
+  Patch by Nikolay Kim
+
+- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
+  Sornay.
+
+- bpo-30014: modify() method of poll(), epoll() and devpoll() based classes
+  of selectors module is around 10% faster.  Patch by Giampaolo Rodola'.
+
+- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
+  EINVAL on stdin.write() if the child process is still running but closed
+  the pipe.
+
+- bpo-30463: Addded empty __slots__ to abc.ABC.  This allows subclassers to
+  deny __dict__ and __weakref__ creation.  Patch by Aaron Hall.
+
+- bpo-30520: Loggers are now pickleable.
+
+- bpo-30557: faulthandler now correctly filters and displays exception codes
+  on Windows
+
+- bpo-30526: Add TextIOWrapper.reconfigure() and a
+  TextIOWrapper.write_through attribute.
+
+- bpo-30245: Fix possible overflow when organize struct.pack_into error
+  message.  Patch by Yuan Liu.
+
+- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
+  handle IPv6 addresses.
+
+- bpo-16500: Allow registering at-fork handlers.
+
+- bpo-30470: Deprecate invalid ctypes call protection on Windows.  Patch by
+  Mariatta Wijaya.
+
+- bpo-30414: multiprocessing.Queue._feed background running thread do not
+  break from main loop on exception.
+
+- bpo-30003: Fix handling escape characters in HZ codec.  Based on patch by
+  Ma Lin.
+
+- bpo-30149: inspect.signature() now supports callables with
+  variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
+  Na.
+
+- bpo-30436: importlib.find_spec() raises ModuleNotFoundError instead of
+  AttributeError if the specified parent module is not a package (i.e. lacks
+  a __path__ attribute).
+
+- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
+  and *forkserver* start methods.
+
+- bpo-30375: Warnings emitted when compile a regular expression now always
+  point to the line in the user code.  Previously they could point into
+  inners of the re module if emitted from inside of groups or conditionals.
+
+- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
+  (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
+  This error occurs sometimes on SSL connections.
+
+- bpo-29196: Removed previously deprecated in Python 2.4 classes Plist, Dict
+  and _InternalDict in the plistlib module.  Dict values in the result of
+  functions readPlist() and readPlistFromBytes() are now normal dicts.  You
+  no longer can use attribute access to access items of these dictionaries.
+
+- bpo-9850: The :mod:`macpath` is now deprecated and will be removed in
+  Python 3.8.
+
+- bpo-30299: Compiling regular expression in debug mode on CPython now
+  displays the compiled bytecode in human readable form.
+
+- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
+  coroutine and the coroutine returned without any more ``await``.
+
+- bpo-30266: contextlib.AbstractContextManager now supports
+  anti-registration by setting __enter__ = None or __exit__ = None,
+  following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra.
+
+- bpo-30340: Enhanced regular expressions optimization. This increased the
+  performance of matching some patterns up to 25 times.
+
+- bpo-30298: Weaken the condition of deprecation warnings for inline
+  modifiers. Now allowed several subsequential inline modifiers at the start
+  of the pattern (e.g. ``'(?i)(?s)...'``).  In verbose mode whitespaces and
+  comments now are allowed before and between inline modifiers (e.g. ``'(?x)
+  (?i) (?s)...'``).
+
+- bpo-30285: Optimized case-insensitive matching and searching of regular
+  expressions.
+
+- bpo-29990: Fix range checking in GB18030 decoder.  Original patch by Ma
+  Lin.
+
+- bpo-29979: rewrite cgi.parse_multipart, reusing the FieldStorage class and
+  making its results consistent with those of FieldStorage for
+  multipart/form-data requests. Patch by Pierre Quentel.
+
+- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
+  Misusing them could cause memory leaks or crashes.  Now scanner and
+  encoder objects are completely initialized in the __new__ methods.
+
+- bpo-30215: Compiled regular expression objects with the re.LOCALE flag no
+  longer depend on the locale at compile time.  Only the locale at matching
+  time affects the result of matching.
+
+- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
+  when Ctrl-C is received.
+
+- bpo-30103: binascii.b2a_uu() and uu.encode() now support using ``'`'`` as
+  zero instead of space.
+
+- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
+  WrapperDescriptorType, minor bug-fixes.  Original PRs by Jim
+  Fasarakis-Hilliard and Ivan Levkivskyi.
+
+- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
+
+- bpo-30228: The seek() and tell() methods of io.FileIO now set the internal
+  seekable attribute to avoid one syscall on open() (in buffered or text
+  mode).
+
+- bpo-30190: unittest's assertAlmostEqual and assertNotAlmostEqual provide a
+  better message in case of failure which includes the difference between
+  left and right arguments.  (patch by Giampaolo Rodola')
+
+- bpo-30101: Add support for curses.A_ITALIC.
+
+- bpo-29822: inspect.isabstract() now works during __init_subclass__.  Patch
+  by Nate Soares.
+
+- bpo-29960: Preserve generator state when _random.Random.setstate() raises
+  an exception. Patch by Bryan Olson.
+
+- bpo-30070: Fixed leaks and crashes in errors handling in the parser
+  module.
+
+- bpo-22352: Column widths in the output of dis.dis() are now adjusted for
+  large line numbers and instruction offsets.
+
+- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
+  readline() or __next__() respectively return non-sizeable object. Fixed
+  possible other errors caused by not checking results of PyObject_Size(),
+  PySequence_Size(), or PyMapping_Size().
+
+- bpo-30218: Fix PathLike support for shutil.unpack_archive. Patch by Jelle
+  Zijlstra.
+
+- bpo-10076: Compiled regular expression and match objects in the re module
+  now support copy.copy() and copy.deepcopy() (they are considered atomic).
+
+- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
+  is present.
+
+- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
+  Patch by Armin Rigo.
+
+- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
+  contextlib.contextmanager.  Patch by Siddharth Velankar.
+
+- bpo-26187: Test that sqlite3 trace callback is not called multiple times
+  when schema is changing.  Indirectly fixed by switching to use
+  sqlite3_prepare_v2() in bpo-9303.  Patch by Aviv Palivoda.
+
+- bpo-30017: Allowed calling the close() method of the zip entry writer
+  object multiple times.  Writing to a closed writer now always produces a
+  ValueError.
+
+- bpo-29998: Pickling and copying ImportError now preserves name and path
+  attributes.
+
+- bpo-29995: re.escape() now escapes only regex special characters.
+
+- bpo-29962: Add math.remainder operation, implementing remainder as
+  specified in IEEE 754.
+
+- bpo-29649: Improve struct.pack_into() exception messages for problems with
+  the buffer size and offset.  Patch by Andrew Nester.
+
+- bpo-29654: Support If-Modified-Since HTTP header (browser cache).  Patch
+  by Pierre Quentel.
+
+- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
+  Patch by Sanjay Sundaresan.
+
+- bpo-29953: Fixed memory leaks in the replace() method of datetime and time
+  objects when pass out of bound fold argument.
+
+- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
+  long runs of empty iterables.
+
+- bpo-10030: Sped up reading encrypted ZIP files by 2 times.
+
+- bpo-29204: Element.getiterator() and the html parameter of XMLParser()
+  were deprecated only in the documentation (since Python 3.2 and 3.4
+  correspondintly). Now using them emits a deprecation warning.
+
+- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
+  and wrong types.
+
+- bpo-25996: Added support of file descriptors in os.scandir() on Unix.
+  os.fwalk() is sped up by 2 times by using os.scandir().
+
+- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
+  exception at the very first of an iterable may swallow the exception or
+  make the program hang. Patch by Davin Potts and Xiang Zhang.
+
+- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
+  reference cycle to not keep objects alive longer than expected.
+
+- bpo-29901: The zipapp module now supports general path-like objects, not
+  just pathlib.Path.
+
+- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
+  the OS gives priority to errors such as EACCES over EEXIST.
+
+- bpo-29861: Release references to tasks, their arguments and their results
+  as soon as they are finished in multiprocessing.Pool.
+
+- bpo-19930: The mode argument of os.makedirs() no longer affects the file
+  permission bits of newly-created intermediate-level directories.
+
+- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
+  Patch by Christophe Zeitouny.
+
+- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
+
+- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
+  are not strings.  Patch by Michael Seifert.
+
+- bpo-8256: Fixed possible failing or crashing input() if attributes
+  "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
+  strings.
+
+- bpo-28692: Using non-integer value for selecting a plural form in gettext
+  is now deprecated.
+
+- bpo-26121: Use C library implementation for math functions erf() and
+  erfc().
+
+- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino)
+  using unsigned integers.
+
+- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
+  big intables (objects that have __int__) as elements.
+
+- bpo-29645: Speed up importing the webbrowser module.
+  webbrowser.register() is now thread-safe.
+
+- bpo-28231: The zipfile module now accepts path-like objects for external
+  paths.
+
+- bpo-26915: index() and count() methods of collections.abc.Sequence now
+  check identity before checking equality when do comparisons.
+
+- bpo-28682: Added support for bytes paths in os.fwalk().
+
+- bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant.
+  Patch by Nathaniel J. Smith.
+
+- bpo-29623: Allow use of path-like object as a single argument in
+  ConfigParser.read(). Patch by David Ellis.
+
+- bpo-9303: Migrate sqlite3 module to _v2 API.  Patch by Aviv Palivoda.
+
+- bpo-28963: Fix out of bound iteration in
+  asyncio.Future.remove_done_callback implemented in C.
+
+- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
+  before all pipes are closed.
+
+- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to
+  accept None argument as their pure Python implementation.
+
+- bpo-29703: Fix asyncio to support instantiation of new event loops in
+  child processes.
+
+- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
+  exception) to exception(s) raised in the dispatched methods. Patch by Petr
+  Motejlek.
+
+- bpo-7769: Method register_function() of
+  xmlrpc.server.SimpleXMLRPCDispatcher and its subclasses can now be used as
+  a decorator.
+
+- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
+
+- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
+  PathLike objects.  Patch by Sayan Chowdhury.
+
+- bpo-28518: Start a transaction implicitly before a DML statement. Patch by
+  Aviv Palivoda.
+
+- bpo-29742: get_extra_info() raises exception if get called on closed ssl
+  transport. Patch by Nikolay Kim.
+
+- bpo-16285: urllib.parse.quote is now based on RFC 3986 and hence includes
+  '~' in the set of characters that is not quoted by default. Patch by
+  Christian Theune and Ratnadeep Debnath.
+
+- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
+  longer affects a partial object after creation.
+
+- bpo-29110: Fix file object leak in aifc.open() when file is given as a
+  filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
+
+- bpo-22807: Add uuid.SafeUUID and uuid.UUID.is_safe to relay information
+  from the platform about whether generated UUIDs are generated with a
+  multiprocessing safe method.
+
+- bpo-29576: Improve some deprecations in importlib. Some deprecated methods
+  now emit DeprecationWarnings and have better descriptive messages.
+
+- bpo-29534: Fixed different behaviour of Decimal.from_float() for _decimal
+  and _pydecimal. Thanks Andrew Nester.
+
+- bpo-10379: locale.format_string now supports the 'monetary' keyword
+  argument, and locale.format is deprecated.
+
+- bpo-29851: importlib.reload() now raises ModuleNotFoundError if the module
+  lacks a spec.
+
+- bpo-28556: Various updates to typing module: typing.Counter,
+  typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
+  Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
+
+- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
+  3.6.0: check minimum and maximum years.
+
+- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
+
+- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
+  match object. Based on patch by WGH.
+
+- bpo-29377: Add WrapperDescriptorType, MethodWrapperType, and
+  MethodDescriptorType built-in types to types module. Original patch by
+  Manuel Krebber.
+
+- bpo-29218: Unused install_misc command is now removed.  It has been
+  documented as unused since 2000.  Patch by Eric N. Vander Weele.
+
+- bpo-29368: The extend() method is now called instead of the append()
+  method when unpickle collections.deque and other list-like objects. This
+  can speed up unpickling to 2 times.
+
+- bpo-29338: The help of a builtin or extension class now includes the
+  constructor signature if __text_signature__ is provided for the class.
+
+- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
+  to a stopped instead of terminated state (ex: when under ptrace).
+
+- bpo-29290: Fix a regression in argparse that help messages would wrap at
+  non-breaking spaces.
+
+- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
+
+- bpo-29197: Removed deprecated function ntpath.splitunc().
+
+- bpo-29210: Removed support of deprecated argument "exclude" in
+  tarfile.TarFile.add().
+
+- bpo-29219: Fixed infinite recursion in the repr of uninitialized
+  ctypes.CDLL instances.
+
+- bpo-29192: Removed deprecated features in the http.cookies module.
+
+- bpo-29193: A format string argument for string.Formatter.format() is now
+  positional-only.
+
+- bpo-29195: Removed support of deprecated undocumented keyword arguments in
+  methods of regular expression objects.
+
+- bpo-28969: Fixed race condition in C implementation of
+  functools.lru_cache. KeyError could be raised when cached function with
+  full cache was simultaneously called from different threads with the same
+  uncached arguments.
+
+- bpo-20804: The unittest.mock.sentinel attributes now preserve their
+  identity when they are copied or pickled.
+
+- bpo-29142: In urllib.request, suffixes in no_proxy environment variable
+  with leading dots could match related hostnames again (e.g. .b.c matches
+  a.b.c). Patch by Milan Oberkirch.
+
+- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
+  anymore. Patch written by Jiajun Huang.
+
+- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
+  context. Patch by Sam Breese.
+
+- bpo-28985: Update authorizer constants in sqlite3 module. Patch by
+  Dingyuan Wang.
+
+- bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows
+
+- bpo-13051: Fixed recursion errors in large or resized
+  curses.textpad.Textbox.  Based on patch by Tycho Andersen.
+
+- bpo-9770: curses.ascii predicates now work correctly with negative
+  integers.
+
+- bpo-28427: old keys should not remove new values from WeakValueDictionary
+  when collecting from another thread.
+
+- bpo-28923: Remove editor artifacts from Tix.py.
+
+- bpo-28871: Fixed a crash when deallocate deep ElementTree.
+
+- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
+  WeakValueDictionary.pop() when a GC collection happens in another thread.
+
+- bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence
+  that doesn't own its elements as limits.
+
+- bpo-16255: subprocess.Popen uses /system/bin/sh on Android as the shell,
+  instead of /bin/sh.
+
+- bpo-28779: multiprocessing.set_forkserver_preload() would crash the
+  forkserver process if a preloaded module instantiated some multiprocessing
+  objects such as locks.
+
+- bpo-26937: The chown() method of the tarfile.TarFile class does not fail
+  now when the grp module cannot be imported, as for example on Android
+  platforms.
+
+- bpo-28847: dbm.dumb now supports reading read-only files and no longer
+  writes the index file when it is not changed.  A deprecation warning is
+  now emitted if the index file is missed and recreated in the 'r' and 'w'
+  modes (will be an error in future Python releases).
+
+- bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
+  re.sub() replacement templates regular expressions now are errors.
+
+- bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call
+  warnings.showwarning() if it was overridden inside the context manager.
+
+- bpo-27172: To assist with upgrades from 2.7, the previously documented
+  deprecation of ``inspect.getfullargspec()`` has been reversed. This
+  decision may be revisited again after the Python 2.7 branch is no longer
+  officially supported.
+
+- bpo-28740: Add sys.getandroidapilevel(): return the build time API version
+  of Android as an integer. Function only available on Android.
+
+- bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
+  :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
+  Omar Sandoval.
+
+- bpo-28752: Restored the __reduce__() methods of datetime objects.
+
+- bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created
+  by re.compile(), become comparable (only x==y and x!=y operators). This
+  change should fix the issue #18383: don't duplicate warning filters when
+  the warnings module is reloaded (thing usually only done in unit tests).
+
+- bpo-20572: Remove the subprocess.Popen.wait endtime parameter.  It was
+  deprecated in 3.4 and undocumented prior to that.
+
+- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
+  from_buffer_copy() methods on abstract classes like Array.
+
+- bpo-28548: In the "http.server" module, parse the protocol version if
+  possible, to avoid using HTTP 0.9 in some error responses.
+
+- bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch
+  by Vajrasky Kok
+
+- bpo-28563: Fixed possible DoS and arbitrary code execution when handle
+  plural form selections in the gettext module.  The expression parser now
+  supports exact syntax supported by GNU gettext.
+
+- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
+  garbage collector is invoked in other thread.  Based on patch by Sebastian
+  Cufre.
+
+- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
+  given empty data twice.  Patch by Benjamin Fogle.
+
+- bpo-28549: Fixed segfault in curses's addch() with ncurses6.
+
+- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
+  file with compression before trying to open it without compression.
+  Otherwise it had 50% chance failed with ignore_zeros=True.
+
+- bpo-23262: The webbrowser module now supports Firefox 36+ and derived
+  browsers.  Based on patch by Oleg Broytman.
+
+- bpo-24241: The webbrowser in an X environment now prefers using the
+  default browser directly. Also, the webbrowser register() function now has
+  a documented 'preferred' argument, to specify browsers to be returned by
+  get() with no arguments. Patch by David Steele
+
+- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
+  by representing the scale as float value internally in Tk.  tkinter.IntVar
+  now works if float value is set to underlying Tk variable.
+
+- bpo-28255: calendar.TextCalendar.prweek() no longer prints a space after a
+  weeks's calendar.  calendar.TextCalendar.pryear() no longer prints
+  redundant newline after a year's calendar.  Based on patch by Xiang Zhang.
+
+- bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the
+  start of new line after printing a month's calendar.  Patch by Xiang
+  Zhang.
+
+- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
+  Based on patch by Kaarle Ritvanen.
+
+- bpo-28353: os.fwalk() no longer fails on broken links.
+
+- bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept
+  non-None value is passed to it.send(val).
+
+- bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix
+  for readability.
+
+- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
+  workaround to Tix library bug.
+
+- bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
+
+- bpo-25953: re.sub() now raises an error for invalid numerical group
+  reference in replacement template even if the pattern is not found in the
+  string.  Error message for invalid group reference now includes the group
+  index and the position of the reference. Based on patch by SilentGhost.
+
+- bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,... instead of
+  1, 10, 100,... for autoranging.
+
+- bpo-28115: Command-line interface of the zipfile module now uses argparse.
+  Added support of long options.
+
+- bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by
+  Mariatta Wijaya.
+
+- bpo-28448: Fix C implemented asyncio.Future didn't work on Windows.
+
+- bpo-23214: In the "io" module, the argument to BufferedReader and
+  BytesIO's read1() methods is now optional and can be -1, matching the
+  BufferedIOBase specification.
+
+- bpo-28480: Fix error building socket module when multithreading is
+  disabled.
+
+- bpo-28240: timeit: remove ``-c/--clock`` and ``-t/--time`` command line
+  options which were deprecated since Python 3.3.
+
+- bpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to
+  make benchmarks more reliable.
+
+- bpo-28240: timeit autorange now uses a single loop iteration if the
+  benchmark takes less than 10 seconds, instead of 10 iterations. "python3
+  -m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds instead of
+  40 seconds.
+
+- Distutils.sdist now looks for README and setup.py files with case
+  sensitivity. This behavior matches that found in Setuptools 6.0 and later.
+  See `setuptools 100 <https://github.com/pypa/setuptools/issues/100>`_ for
+  rationale.
+
+- bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned
+  Batchelder.
+
+- bpo-20766: Fix references leaked by pdb in the handling of SIGINT
+  handlers.
+
+- bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by
+  Eryk Sun.
+
+- bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
+
+- bpo-28380: unittest.mock Mock autospec functions now properly support
+  assert_called, assert_not_called, and assert_called_once.
+
+- bpo-28229: lzma module now supports pathlib.
+
+- bpo-28321: Fixed writing non-BMP characters with binary format in
+  plistlib.
+
+- bpo-28225: bz2 module now supports pathlib.  Initial patch by Ethan
+  Furman.
+
+- bpo-28227: gzip now supports pathlib.  Patch by Ethan Furman.
+
+- bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs.
+  Original patch by Oren Milman.
+
+- bpo-27358: Optimized merging var-keyword arguments and improved error
+  message when passing a non-mapping as a var-keyword argument.
+
+- bpo-28257: Improved error message when passing a non-iterable as a
+  var-positional argument.  Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
+
+- bpo-28322: Fixed possible crashes when unpickle itertools objects from
+  incorrect pickle data.  Based on patch by John Leitch.
+
+- bpo-28228: imghdr now supports pathlib.
+
+- bpo-28226: compileall now supports pathlib.
+
+- bpo-28314: Fix function declaration (C flags) for the getiterator() method
+  of xml.etree.ElementTree.Element.
+
+- bpo-28148: Stop using localtime() and gmtime() in the time module.
+  Introduced platform independent _PyTime_localtime API that is similar to
+  POSIX localtime_r, but available on all platforms.  Patch by Ed Schouten.
+
+- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
+  9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so
+  that they don't call itermonthdates() which can cause datetime.date
+  under/overflow.
+
+- bpo-28275: Fixed possible use after free in the decompress() methods of
+  the LZMADecompressor and BZ2Decompressor classes. Original patch by John
+  Leitch.
+
+- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
+  if pass invalid string-like object as a name.  Patch by Xiang Zhang.
+
+- bpo-18844: random.choices() now has k as a keyword-only argument to
+  improve the readability of common cases and come into line with the
+  signature used in other languages.
+
+- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
+  Patch by Madison May.
+
+- bpo-27611: Fixed support of default root window in the tkinter.tix module.
+  Added the master parameter in the DisplayStyle constructor.
+
+- bpo-27348: In the traceback module, restore the formatting of exception
+  messages like "Exception: None".  This fixes a regression introduced in
+  3.5a2.
+
+- bpo-25651: Allow falsy values to be used for msg parameter of subTest().
+
+- bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is
+  interrupted by a signal and a signal handler raises a Python exception.
+
+- bpo-28200: Fix memory leak on Windows in the os module (fix
+  path_converter() function).
+
+- bpo-25400: RobotFileParser now correctly returns default values for
+  crawl_delay and request_rate.  Initial patch by Peter Wirtz.
+
+- bpo-27932: Prevent memory leak in win32_ver().
+
+- Fix UnboundLocalError in socket._sendfile_use_sendfile.
+
+- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
+  os.stat().  Patch by Eryk Sun.
+
+- bpo-22493: Warning message emitted by using inline flags in the middle of
+  regular expression now contains a (truncated) regex pattern. Patch by Tim
+  Graham.
+
+- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
+  empty bytestring is passed.
+
+- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
+
+- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
+  Gergely Imreh and Markus Holtermann.
+
+- bpo-28114: Fix a crash in parse_envlist() when env contains byte strings.
+  Patch by Eryk Sun.
+
+- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
+  binascii.a2b_qp().
+
+- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
+  Kevin Conway.
+
+- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
+  Seth Michael Larson.
+
+- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
+  iceboy.
+
+- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
+
+- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
+
+- bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
+  Patch by Mark Williams.
+
+- bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests.
+
+- bpo-28368: Refuse monitoring processes if the child watcher has no loop
+  attached. Patch by Vincent Michel.
+
+- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
+  add_writer, etc.
+
+- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
+  Марк.
+
+- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
+
+- bpo-28372: Fix asyncio to support formatting of non-python coroutines.
+
+- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
+  Марк.
+
+- bpo-27972: Prohibit Tasks to await on themselves.
+
+- bpo-24142: Reading a corrupt config file left configparser in an invalid
+  state. Original patch by Florian Höch.
+
+- bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract
+  base classes to use keyword parameters in __init_subclass__. Patch by Nate
+  Soares.
+
+- bpo-25532: inspect.unwrap() will now only try to unwrap an object
+  sys.getrecursionlimit() times, to protect against objects which create a
+  new object on every attribute access.
+
+- bpo-30177: path.resolve(strict=False) no longer cuts the path after the
+  first element not present in the filesystem.  Patch by Antoine Pietri.
+
+Documentation
+-------------
+
+- bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and
+  ZeroMQSocketHandler examples and adapt them to Python 3.
+
+- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
+  documentation.
+
+- bpo-31128: Allow the pydoc server to bind to arbitrary hostnames.
+
+- bpo-30803: Clarify doc on truth value testing. Original patch by Peter
+  Thomassen.
+
+- bpo-30176: Add missing attribute related constants in curses
+  documentation.
+
+- bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are
+  now their respective type definitions, rather than the corresponding
+  builtin function entries. Use :ref:`bytes <func-bytes>` and
+  :ref:`bytearray <func-bytearray>` to reference the latter. In order to
+  ensure this and future cross-reference updates are applied automatically,
+  the daily documentation builds now disable the default output caching
+  features in Sphinx.
+
+- bpo-26985: Add missing info of code object in inspect documentation.
+
+- bpo-19824: Improve the documentation for, and links to, template strings
+  by emphasizing their utility for internationalization, and by clarifying
+  some usage constraints. (See also: bpo-20314, bpo-12518)
+
+- bpo-28929: Link the documentation to its source file on GitHub.
+
+- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
+  to aiosmtpd, a third-party asyncio-based replacement.
+
+- bpo-26355: Add canonical header link on each page to corresponding major
+  version of the documentation. Patch by Matthias Bussonnier.
+
+- bpo-29349: Fix Python 2 syntax in code for building the documentation.
+
+- bpo-23722: The data model reference and the porting section in the 3.6
+  What's New guide now cover the additional ``__classcell__`` handling
+  needed for custom metaclasses to fully support :pep:`487` and
+  zero-argument ``super()``.
+
+- bpo-28513: Documented command-line interface of zipfile.
+
+Tests
+-----
+
+- bpo-29639: test.support.HOST is now "localhost", a new HOSTv4 constant has
+  been added for your ``127.0.0.1`` needs, similar to the existing HOSTv6
+  constant.
+
+- bpo-31320: Silence traceback in test_ssl
+
+- bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols
+  for SSLContext.
+
+- bpo-25674: Remove sha256.tbs-internet.com ssl test
+
+- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
+  version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
+
+- bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the
+  test suite using --use=all / -u all, exclude tzdata since it makes
+  test_datetime too slow (15-20 min on some buildbots) which then times out
+  on some buildbots. Fix also regrtest command line parser to allow passing
+  -u extralargefile to run test_zipfile64.
+
+- bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()`
+  functions to the _testcapi module.
+
+- bpo-30357: test_thread: setUp() now uses support.threading_setup() and
+  support.threading_cleanup() to wait until threads complete to avoid random
+  side effects on following tests. Initial patch written by Grzegorz
+  Grzywacz.
+
+- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
+  test.support module. They now work when delete replaced attribute or item
+  inside the with statement.  The old value of the attribute or item (or
+  None if it doesn't exist) now will be assigned to the target of the "as"
+  clause, if there is one.
+
+- bpo-24932: Use proper command line parsing in _testembed
+
+- bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line
+  arguments.
+
+- bpo-28683: Fix the tests that bind() a unix socket and raise
+  PermissionError on Android for a non-root user.
+
+- bpo-26936: Fix the test_socket failures on Android - getservbyname(),
+  getservbyport() and getaddrinfo() are broken on some Android API levels.
+
+- bpo-28666: Now test.support.rmtree is able to remove unwritable or
+  unreadable directories.
+
+- bpo-23839: Various caches now are cleared before running every test file.
+
+- bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or
+  missing the effective gid.
+
+- bpo-28409: regrtest: fix the parser of command line arguments.
+
+- bpo-28217: Adds _testconsole module to test console input.
+
+- bpo-26939: Add the support.setswitchinterval() function to fix
+  test_functools hanging on the Android armv7 qemu emulator.
+
+Build
+-----
+
+- bpo-31354: Allow --with-lto to be used on all builds, not just `make
+  profile-opt`.
+
+- bpo-31370: Remove support for building --without-threads. This option is
+  not really useful anymore in the 21st century. Removing lots of
+  conditional paths allows us to simplify the code base, including in
+  difficult to maintain low-level internal code.
+
+- bpo-31341: Per :pep:`11`, support for the IRIX operating system was
+  removed.
+
+- bpo-30854: Fix compile error when compiling --without-threads. Patch by
+  Masayuki Yamamoto.
+
+- bpo-30687: Locate msbuild.exe on Windows when building rather than
+  vcvarsall.bat
+
+- bpo-20210: Support the *disabled* marker in Setup files. Extension modules
+  listed after this marker are not built at all, neither by the Makefile nor
+  by setup.py.
+
+- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C
+  ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
+  ``--with-assertions``.
+
+- bpo-28787: Fix out-of-tree builds of Python when configured with
+  ``--with--dtrace``.
+
+- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
+  ``make install`` and some other make targets when configured with
+  ``--enable-optimizations``.
+
+- bpo-23404: Don't regenerate generated files based on file modification
+  time anymore: the action is now explicit. Replace ``make touch`` with
+  ``make regen-all``.
+
+- bpo-29643: Fix ``--enable-optimization`` didn't work.
+
+- bpo-27593: sys.version and the platform module python_build(),
+  python_branch(), and python_revision() functions now use git information
+  rather than hg when building from a repo.
+
+- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
+
+- bpo-27659: Prohibit implicit C function declarations: use
+  ``-Werror=implicit-function-declaration`` when possible (GCC and Clang,
+  but it depends on the compiler version). Patch written by Chi Hsuan Yen.
+
+- bpo-29384: Remove old Be OS helper scripts.
+
+- bpo-26851: Set Android compilation and link flags.
+
+- bpo-28768: Fix implicit declaration of function _setmode. Patch by
+  Masayuki Yamamoto
+
+- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
+
+- bpo-23903: Added missed names to PC/python3.def.
+
+- bpo-28762: lockf() is available on Android API level 24, but the F_LOCK
+  macro is not defined in android-ndk-r13.
+
+- bpo-28538: Fix the compilation error that occurs because if_nameindex() is
+  available on Android API level 24, but the if_nameindex structure is not
+  defined.
+
+- bpo-20211: Do not add the directory for installing C header files and the
+  directory for installing object code libraries to the cross compilation
+  search paths. Original patch by Thomas Petazzoni.
+
+- bpo-28849: Do not define sys.implementation._multiarch on Android.
+
+- bpo-10656: Fix out-of-tree building on AIX.  Patch by Tristan Carel and
+  Michael Haubenwallner.
+
+- bpo-26359: Rename --with-optimiations to --enable-optimizations.
+
+- bpo-28444: Fix missing extensions modules when cross compiling.
+
+- bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
+
+- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
+
+- bpo-21124: Fix building the _struct module on Cygwin by passing ``NULL``
+  instead of ``&PyType_Type`` to PyVarObject_HEAD_INIT.  Patch by Masayuki
+  Yamamoto.
+
+- bpo-13756: Fix building extensions modules on Cygwin.  Patch by Roumen
+  Petrov, based on original patch by Jason Tishler.
+
+- bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does
+  not provide. Patch by Masayuki Yamamoto with review and rebase by Erik
+  Bray.
+
+- bpo-28258: Fixed build with Estonian locale (python-config and distclean
+  targets in Makefile).  Patch by Arfrever Frehtes Taifersar Arahesis.
+
+- bpo-26661: setup.py now detects system libffi with multiarch wrapper.
+
+- bpo-27979: A full copy of libffi is no longer bundled for use when
+  building _ctypes on non-OSX UNIX platforms.  An installed copy of libffi
+  is now required when building _ctypes on such platforms.
+
+- bpo-15819: Remove redundant include search directory option for building
+  outside the source tree.
+
+- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
+  Patch by Gareth Rees.
+
+Windows
+-------
+
+- bpo-31392: Update Windows build to use OpenSSL 1.1.0f
+
+- bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
+
+- bpo-31358: zlib is no longer bundled in the CPython source, instead it is
+  downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite.
+
+- bpo-31340: Change to building with MSVC v141 (included with Visual Studio
+  2017)
+
+- bpo-30581: os.cpu_count() now returns the correct number of processors on
+  Windows when the number of logical processors is greater than 64.
+
+- bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the
+  build.
+
+- bpo-30731: Add a missing xmlns to python.manifest so that it matches the
+  schema.
+
+- bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64
+  suffix. Contributed by Steve (Gadget) Barnes.
+
+- bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by
+  Steve Barnes.
+
+- bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by
+  Segev Finer.
+
+- bpo-30450: The build process on Windows no longer depends on Subversion,
+  instead pulling external code from GitHub via a Python script.  If Python
+  3.6 is not found on the system (via ``py -3.6``), NuGet is used to
+  download a copy of 32-bit Python.
+
+- bpo-29579: Removes readme.txt from the installer.
+
+- bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
+
+- bpo-28896: Deprecate WindowsRegistryFinder and disable it by default
+
+- bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
+
+- bpo-28402: Adds signed catalog files for stdlib on Windows.
+
+- bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk
+  Sun)
+
+- bpo-28251: Improvements to help manuals on Windows.
+
+- bpo-28110: launcher.msi has different product codes between 32-bit and
+  64-bit
+
+- bpo-28161: Opening CON for write access fails
+
+- bpo-28162: WindowsConsoleIO readall() fails if first line starts with
+  Ctrl+Z
+
+- bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
+
+- bpo-28164: _PyIO_get_console_type fails for various paths
+
+- bpo-28137: Renames Windows path file to ._pth
+
+- bpo-28138: Windows ._pth file should allow import site
+
+IDLE
+----
+
+- bpo-31493: IDLE code context -- fix code update and font update timers.
+  Canceling timers prevents a warning message when test_idle completes.
+
+- bpo-31488: IDLE - Update non-key options in former extension classes. When
+  applying configdialog changes, call .reload for each feature class. Change
+  ParenMatch so updated options affect existing instances attached to
+  existing editor windows.
+
+- bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace
+  strips more than blank spaces.  Multiline string literals are not skipped.
+
+- bpo-31480: IDLE - make tests pass with zzdummy extension disabled by
+  default.
+
+- bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk
+  update in the background in order to make live interaction and
+  experimentation with tkinter applications much easier.
+
+- bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an
+  int entry is not the same as deleting and inserting because int('') will
+  fail.
+
+- bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and
+  Help sections.
+
+- bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor.
+  Move some data and functions from the class to module level. Patch by
+  Cheryl Sabella.
+
+- bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
+
+- bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About
+  10 IDLE features were implemented as supposedly optional extensions. Their
+  different behavior could be confusing or worse for users and not good for
+  maintenance. Hence the conversion. The main difference for users is that
+  user configurable key bindings for builtin features are now handled
+  uniformly. Now, editing a binding in a keyset only affects its value in
+  the keyset. All bindings are defined together in the system-specific
+  default keysets in config-extensions.def. All custom keysets are saved as
+  a whole in config-extension.cfg.  All take effect as soon as one clicks
+  Apply or Ok. The affected events are '<<force-open-completions>>',
+  '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>',
+  '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and
+  '<<zoom-height>>'.  Any (global) customizations made before 3.6.3 will not
+  affect their keyset-specific customization after 3.6.3. and vice versa.
+  Initial patch by Charles Wohlganger.
+
+- bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by
+  Cheryl Sabella.
+
+- bpo-31001: Add tests for configdialog highlight tab.  Patch by Cheryl
+  Sabella.
+
+- bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog.  The
+  slightly modified tests continue to pass.  Patch by Cheryl Sabella.
+
+- bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by
+  Victor Stinner.
+
+- bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
+
+- bpo-19903: IDLE: Calltips use `inspect.signature` instead of
+  `inspect.getfullargspec`. This improves calltips for builtins converted to
+  use Argument Clinic. Patch by Louie Lu.
+
+- bpo-31083: IDLE - Add an outline of a TabPage class in configdialog.
+  Update existing classes to match outline. Initial patch by Cheryl Sabella.
+
+- bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly
+  modified tests continue to pass. Patch by Cheryl Sabella.
+
+- bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly
+  modified tests continue to pass. Fix General tests. Patch mostly by Cheryl
+  Sabella.
+
+- bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan
+  Reedy and Cheryl Sabella.
+
+- bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping
+  methods pertaining to each tab and the buttons will aid writing tests and
+  improving the tabs and will enable splitting the groups into classes.
+
+- bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance
+  tracers manages pairs consisting of a tk variable and a callback function.
+  When tracing is turned on, setting the variable calls the function.  Test
+  coverage for the new class is 100%.
+
+- bpo-31003: IDLE: Add more tests for General tab.
+
+- bpo-30993: IDLE - Improve configdialog font page and tests. In
+  configdialog: Document causal pathways in create_font_tab docstring.
+  Simplify some attribute names. Move set_samples calls to var_changed_font
+  (idea from Cheryl Sabella).  Move related functions to positions after the
+  create widgets function. In test_configdialog: Fix test_font_set so not
+  order dependent.  Fix renamed test_indent_scale so it tests the widget.
+  Adjust tests for movement of set_samples call.  Add tests for load
+  functions.  Put all font tests in one class and tab indent tests in
+  another.  Except for two lines, these tests completely cover the related
+  functions.
+
+- bpo-30981: IDLE -- Add more configdialog font page tests.
+
+- bpo-28523: IDLE: replace 'colour' with 'color' in configdialog.
+
+- bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from
+  46% to 96%. Patch by Louie Lu.
+
+- bpo-30934: Document coverage details for idlelib tests. Add section to
+  idlelib/idle-test/README.txt. Include check that branches are taken both
+  ways. Exclude IDLE-specific code that does not run during unit tests.
+
+- bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in
+  docstrings This will facilitate improving the dialog and splitting up the
+  class. Original patch by Cheryl Sabella.
+
+- bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by
+  Louie Lu.
+
+- bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
+
+- bpo-30851: IDLE: Remove unused variables in configdialog.  One is a
+  duplicate, one is set but cannot be altered by users. Patch by Cheryl
+  Sabella.
+
+- bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as
+  well as mouse. Initial patch by Louie Lu.
+
+- bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
+
+- bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in
+  config; test. * In config, put dump test code in a function; run it and
+  unittest in   'if __name__ == '__main__'. * Add class config.ConfigChanges
+  based on changes_class_v4.py on bpo issue. * Add class
+  test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise
+  configdialog to use ConfigChanges; see tracker msg297804. * Revise
+  test_configdialog to match configdialog changes. * Remove configdialog
+  functions unused or moved to ConfigChanges. Cheryl Sabella contributed
+  parts of the patch.
+
+- bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by
+  Cheryl Sabella.
+
+- bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more
+  tests. Patch by Cheryl Sabella.
+
+- bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens'
+  style to highlight both opener and closer. Make 'default' style, which is
+  not default, a synonym for 'opener'. Make time-delay work the same with
+  all styles. Add help for config dialog extensions tab, including help for
+  parenmatch. Add new tests.  Original patch by Charles Wohlganger.
+
+- bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
+
+- bpo-21519: IDLE's basic custom key entry dialog now detects duplicates
+  properly. Original patch by Saimadhav Heblikar.
+
+- bpo-29910: IDLE no longer deletes a character after commenting out a
+  region by a key shortcut.  Add ``return 'break'`` for this and other
+  potential conflicts between IDLE and default key bindings.
+
+- bpo-30728: Review and change idlelib.configdialog names. Lowercase method
+  and attribute names. Replace 'colour' with 'color', expand overly cryptic
+  names, delete unneeded underscores. Replace ``import *`` with specific
+  imports. Patches by Cheryl Sabella.
+
+- bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them
+  with tk. Add tests for all 3 validation functions. Original patch by G
+  Polo.  Tests added by Cheryl Sabella.
+
+- bpo-15786: Fix several problems with IDLE's autocompletion box. The
+  following should now work: clicking on selection box items; using the
+  scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no
+  longer happen. Patch by Louie Lu.
+
+- bpo-25514: Add doc subsubsection about IDLE failure to start. Popup
+  no-connection message directs users to this section.
+
+- bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and
+  Terry Jan Reedy.
+
+- bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by
+  Cheryl Sabella and Terry Jan Reedy.
+
+- bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to
+  100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
+
+- bpo-30303: Add _utest option to textview; add new tests. Increase coverage
+  to 100%. Patches by Louie Lu and Terry Jan Reedy.
+
+- bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
+
+- bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and
+  augment description of the configuration system.
+
+Tools/Demos
+-----------
+
+- bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared
+  builds now, too.  :pep:`523` introduced _PyEval_EvalFrameDefault which
+  inlines PyEval_EvalFrameEx on non-debug shared builds.  This broke the
+  ability to use py-bt, py-up, and a few other Python-specific gdb
+  integrations. The problem is fixed by only looking for
+  _PyEval_EvalFrameDefault frames in python-gdb.py.  Original patch by Bruno
+  "Polaco" Penteado.
+
+- bpo-29748: Added the slice index converter in Argument Clinic.
+
+- bpo-24037: Argument Clinic now uses the converter `bool(accept={int})`
+  rather than `int` for semantical booleans.  This avoids repeating the
+  default value for Python and C and will help in converting to `bool` in
+  future.
+
+- bpo-29367: python-gdb.py now supports also ``method-wrapper``
+  (``wrapperobject``) objects.
+
+- bpo-28023: Fix python-gdb.py didn't support new dict implementation.
+
+- bpo-15369: The pybench and pystone microbenchmark have been removed from
+  Tools. Please use the new Python benchmark suite
+  https://github.com/python/performance which is more reliable and includes
+  a portable version of pybench working on Python 2 and Python 3.
+
+- bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by
+  Stephen J. Turnbull.
+
+C API
+-----
+
+- bpo-31338: Added the ``Py_UNREACHABLE()`` macro for code paths which are
+  never expected to be reached.  This and a few other useful macros are now
+  documented in the C API manual.
+
+- bpo-30832: Remove own implementation for thread-local storage. CPython has
+  provided the own implementation for thread-local storage (TLS) on
+  Python/thread.c, it's used in the case which a platform has not supplied
+  native TLS.  However, currently all supported platforms (Windows and
+  pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS
+  macro with unconditional in any case.
+
+- bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the
+  second argument is NULL and the wchar_t\* string contains null characters.
+
+- bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(),
+  PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().
+
+- bpo-6532: The type of results of PyThread_start_new_thread() and
+  PyThread_get_thread_ident(), and the id parameter of
+  PyThreadState_SetAsyncExc() changed from "long" to "unsigned long".
+
+- bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with
+  a macro if Py_LIMITED_API is not set or set to the value between
+  0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.  Added
+  functions PySlice_Unpack() and PySlice_AdjustIndices().
+
+- bpo-29083: Fixed the declaration of some public API functions.
+  PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
+  limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
+  Py_BuildValue() were not available in limited API of version < 3.3 when
+  PY_SSIZE_T_CLEAN is defined.
+
+- bpo-28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8()
+  is now of type ``const char *`` rather of ``char *``.
+
+- bpo-29058: All stable API extensions added after Python 3.2 are now
+  available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
+  the minimum Python version supporting this API.
+
+- bpo-28822: The index parameters *start* and *end* of PyUnicode_FindChar()
+  are now adjusted to behave like ``str[start:end]``.
+
+- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
+
+- bpo-28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
+  PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
+  type ``const char *`` rather of ``char *``.
+
+- bpo-28748: Private variable _Py_PackageContext is now of type ``const char
+  *`` rather of ``char *``.
+
+- bpo-19569: Compiler warnings are now emitted if use most of deprecated
+  functions.
+
+- bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
+  PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
+  PyUnicode_AsEncodedUnicode().
+
+
+What's New in Python 3.6.6 final?
+=================================
+
+*Release date: 2018-06-27*
+
+There were no new changes in version 3.6.6.
+
+
+
+What's New in Python 3.6.6 release candidate 1?
+===============================================
+
+*Release date: 2018-06-11*
+
+Core and Builtins
+-----------------
+
+- bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow()
+  correctly
+
+- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
+  shutdown even when there was a custom handler set previously. Patch by
+  Philipp Kerling.
+
+- bpo-33622: Fixed a leak when the garbage collector fails to add an object
+  with the ``__del__`` method or referenced by it into the
+  :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
+  exception is set and preserves it.
+
+- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
+
+- bpo-33391: Fix a leak in set_symmetric_difference().
+
+- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
+
+- bpo-33231: Fix potential memory leak in ``normalizestring()``.
+
+- bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
+  or ``__aexit__()`` return non-awaitable object.
+
+- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
+  when copying from key-sharing dict.
+
+- bpo-33041: Fixed jumping when the function contains an ``async for`` loop.
+
+- bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in
+  socketmodule on Windows.
+
+- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
+  ctypes structured data type. Patch by Eryk Sun and Oren Milman.
+
+Library
+-------
+
+- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
+  Steve Weber.
+
+- bpo-33812: Datetime instance d with non-None tzinfo, but with
+  d.tzinfo.utcoffset(d) returning None is now treated as naive by the
+  astimezone() method.
+
+- bpo-30805: Avoid race condition with debug logging
+
+- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
+  operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
+  performed on :class:`mmap.mmap` objects.  Patch by Zackery Spytz.
+
+- bpo-32684: Fix gather to propagate cancellation of itself even with
+  return_exceptions.
+
+- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
+  asyncio.sslproto: start immediately the handshake instead of using
+  call_soon(). Previously, data_received() could be called before the
+  handshake started, causing the handshake to hang or fail.
+
+- bpo-31647: Fixed bug where calling write_eof() on a
+  _SelectorSocketTransport after it's already closed raises AttributeError.
+
+- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
+
+- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
+
+- bpo-11874: Use a better regex when breaking usage into wrappable parts.
+  Avoids bogus assertion errors from custom metavar strings.
+
+- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
+  that prevented the cache of parsed strings from clearing after finishing
+  the decoding. Based on patch by c-fos.
+
+- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
+  locations
+
+- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
+  Windows. Patch by Zvi Effron
+
+- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
+  Windows proactor event loop.
+
+- bpo-28556: Minor fixes in typing module: add annotations to
+  ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
+  ``Generic.__new__``.  Original PRs by Paulius Šarka and Chad Dombrova.
+
+- bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
+
+- bpo-33422: Fix trailing quotation marks getting deleted when looking up
+  byte/string literals on pydoc. Patch by Andrés Delfino.
+
+- bpo-33197: Update error message when constructing invalid
+  inspect.Parameters Patch by Dong-hee Na.
+
+- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
+  object when it is called with a single argument.
+
+- bpo-33329: Fix multiprocessing regression on newer glibcs
+
+- bpo-991266: Fix quoting of the ``Comment`` attribute of
+  :class:`http.cookies.SimpleCookie`.
+
+- bpo-33131: Upgrade bundled version of pip to 10.0.1.
+
+- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
+  object to a tree of tuples or lists with ``line_info=False`` and
+  ``col_info=True``.
+
+- bpo-33263: Fix FD leak in `_SelectorSocketTransport`  Patch by Vlad
+  Starostin.
+
+- bpo-33256: Fix display of ``<module>`` call in the html produced by
+  ``cgitb.html()``. Patch by Stéphane Blondon.
+
+- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
+  sequences consistently even when called from subclasses without a
+  ``getrandbits()`` implementation.
+
+- bpo-33224: Update difflib.mdiff() for :pep:`479`.  Convert an uncaught
+  StopIteration in a generator into a return-statement.
+
+- bpo-33209: End framing at the end of C implementation of
+  :func:`pickle.Pickler.dump`.
+
+- bpo-32861: The urllib.robotparser's ``__str__`` representation now
+  includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
+  Patch by Michael Lazar.
+
+- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
+  boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
+  Khatri.
+
+- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
+
+- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
+  threads when calling mmap.mmap(), os.urandom(), and random.seed().  Patch
+  by Nir Soffer.
+
+- bpo-27683: Fix a regression in :mod:`ipaddress` that result of
+  :meth:`hosts` is empty when the network is constructed by a tuple
+  containing an integer mask and only 1 bit left for addresses.
+
+- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
+  subprocess if another low descriptor is closed.
+
+- bpo-31908: Fix output of cover files for ``trace`` module command-line
+  tool. Previously emitted cover files only when ``--missing`` option was
+  used. Patch by Michael Selik.
+
+- bpo-31457: If nested log adapters are used, the inner ``process()``
+  methods are no longer omitted.
+
+- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`.  Patch by Segev Finer.
+
+- bpo-31238: pydoc: the stop() method of the private ServerThread class now
+  waits until DocServer.serve_until_quit() completes and then explicitly
+  sets its docserver attribute to None to break a reference cycle.
+
+Documentation
+-------------
+
+- bpo-33503: Fix broken pypi link
+
+- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
+
+- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
+
+- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
+  just any value.
+
+- bpo-33201: Modernize documentation for writing C extension types.
+
+- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
+  ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
+  missed in the document.
+
+- bpo-33126: Document PyBuffer_ToContiguous().
+
+- bpo-27212: Modify documentation for the :func:`islice` recipe to consume
+  initial values up to the start index.
+
+- bpo-28247: Update :mod:`zipapp` documentation to describe how to make
+  standalone applications.
+
+- bpo-18802: Documentation changes for ipaddress.  Patch by Jon Foster and
+  Berker Peksag.
+
+- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
+  implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
+
+- bpo-8243: Add a note about curses.addch and curses.addstr exception
+  behavior when writing outside a window, or pad.
+
+- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
+  flags for ssl.SSLContext.verify_mode.
+
+Tests
+-----
+
+- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
+  might be due to running on ZFS.
+
+- bpo-19417: Add test_bdb.py.
+
+Build
+-----
+
+- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
+  ``OPT``. This option emitted annoying warnings when building extension
+  modules written in C++.
+
+- bpo-33614: Ensures module definition files for the stable ABI on Windows
+  are correctly regenerated.
+
+- bpo-33522: Enable CI builds on Visual Studio Team Services at
+  https://python.visualstudio.com/cpython
+
+- bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing
+  warnings about function casts like casting to PyCFunction in method
+  definition lists.
+
+- bpo-33394: Enable the verbose build for extension modules, when GNU make
+  is passed macros on the command line.
+
+Windows
+-------
+
+- bpo-33184: Update Windows installer to OpenSSL 1.0.2o.
+
+macOS
+-----
+
+- bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o.
+
+IDLE
+----
+
+- bpo-33656: On Windows, add API call saying that tk scales for DPI. On
+  Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
+  unchanged, and a monitor resolution greater than 96 DPI, this should make
+  text and lines sharper.  It should otherwise have no effect.
+
+- bpo-33768: Clicking on a context line moves that line to the top of the
+  editor window.
+
+- bpo-33763: IDLE: Use read-only text widget for code context instead of
+  label widget.
+
+- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
+  and scrollbar slider moved text by a fixed number of pixels, resulting in
+  partial lines at the top of the editor box.  The change also applies to
+  the shell and grep output windows, but not to read-only text views.
+
+- bpo-33679: Enable theme-specific color configuration for Code Context. Use
+  the Highlights tab to see the setting for built-in themes or add settings
+  to custom themes.
+
+- bpo-33642: Display up to maxlines non-blank lines for Code Context. If
+  there is no current context, show a single blank line.
+
+- bpo-33628: IDLE: Cleanup codecontext.py and its test.
+
+- bpo-33564: IDLE's code context now recognizes async as a block opener.
+
+- bpo-29706: IDLE now colors async and await as keywords in 3.6. They become
+  full keywords in 3.7.
+
+- bpo-21474: Update word/identifier definition from ascii to unicode. In
+  text and entry boxes, this affects selection by double-click, movement
+  left/right by control-left/right, and deletion left/right by
+  control-BACKSPACE/DEL.
+
+- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
+  prefix cannot be paired with either 'r' or 'f'. Consistently color as much
+  of the prefix, starting at the right, as is valid. Revise and extend
+  colorizer test.
+
+- bpo-32831: Add docstrings and tests for codecontext.
+
+Tools/Demos
+-----------
+
+- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
+  docstrings and translatable strings, and rejects bytes literals and
+  f-string expressions.
+
+- bpo-31920: Fixed handling directories as arguments in the ``pygettext``
+  script. Based on patch by Oleg Krasnikov.
+
+- bpo-29673: Fix pystackv and pystack gdbinit macros.
+
+- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
+  automatic backup creation (files with ``~`` suffix).
+
+- bpo-31583: Fix 2to3 for using with --add-suffix option but without
+  --output-dir option for relative path to files in current directory.
+
+C API
+-----
+
+- bpo-32374: Document that m_traverse for multi-phase initialized modules
+  can be called with m_state=NULL, and add a sanity check
+
+
+What's New in Python 3.6.5 final?
+=================================
+
+*Release date: 2018-03-28*
+
+Tests
+-----
+
+- bpo-32872: Avoid regrtest compatibility issue with namespace packages.
+
+Build
+-----
+
+- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
+
+
+What's New in Python 3.6.5 release candidate 1?
+===============================================
+
+*Release date: 2018-03-13*
+
+Security
+--------
+
+- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
+
+- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
+  backtracking. These regexes formed potential DOS vectors (REDOS). They
+  have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
+  by Jamie Davis.
+
+Core and Builtins
+-----------------
+
+- bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
+
+- bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
+
+- bpo-32889: Update Valgrind suppression list to account for the rename of
+  ``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
+
+- bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step
+  over (next command) native coroutines. Patch by Pablo Galindo.
+
+- bpo-32685: Improve suggestion when the Python 2 form of print statement is
+  either present on the same line as the header of a compound statement or
+  else terminated by a semi-colon instead of a newline. Patch by Nitish
+  Chandra.
+
+- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
+  write out-of-bound errors when using customized decode error handlers.
+
+- bpo-26163: Improved frozenset() hash to create more distinct hash values
+  when faced with datasets containing many similar values.
+
+- bpo-27169: The ``__debug__`` constant is now optimized out at compile
+  time. This fixes also bpo-22091.
+
+- bpo-32329: ``sys.flags.hash_randomization`` is now properly set to 0 when
+  hash randomization is turned off by ``PYTHONHASHSEED=0``.
+
+- bpo-30416: The optimizer is now protected from spending much time doing
+  complex calculations and consuming much memory for creating large
+  constants in constant folding.
+
+- bpo-18533: ``repr()`` on a dict containing its own ``values()`` or
+  ``items()`` no longer raises ``RecursionError``; OrderedDict similarly.
+  Instead, use ``...``, as for other recursive structures.  Patch by Ben
+  North.
+
+- bpo-32028: Leading whitespace is now correctly ignored when generating
+  suggestions for converting Py2 print statements to Py3 builtin print
+  function calls. Patch by Sanyam Khurana.
+
+- bpo-32137: The repr of deeply nested dict now raises a RecursionError
+  instead of crashing due to a stack overflow.
+
+Library
+-------
+
+- bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
+  and ``**kwargs`` in function signatures.
+
+- bpo-31804: Avoid failing in multiprocessing.Process if the standard
+  streams are closed or None at exit.
+
+- bpo-33037: Skip sending/receiving data after SSL transport closing.
+
+- bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW.
+
+- bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
+
+- bpo-32969: Expose several missing constants in zlib and fix corresponding
+  documentation.
+
+- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
+  by Joffrey Fuhrer.
+
+- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
+
+- bpo-32922: dbm.open() now encodes filename with the filesystem encoding
+  rather than default encoding.
+
+- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
+  syscall exists or not.
+
+- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
+  file created in earlier command" to the more helpful "Must create and
+  upload files in one command".
+
+- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
+  :exc:`ValueError` instead of canceling the first scheduled function.
+  Patch by Cheryl Sabella.
+
+- bpo-32852: Make sure sys.argv remains as a list when running trace.
+
+- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
+  cancellation after notifying and cancelling a conditional lock. Patch by
+  Bar Harel.
+
+- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
+  (Contributed by Oren Milman)
+
+- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
+  only the last field is quoted.  Patch by Jake Davis.
+
+- bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version
+  Windows during run-time.
+
+- bpo-32777: Fix a rare but potential pre-exec child process deadlock in
+  subprocess on POSIX systems when marking file descriptors inheritable on
+  exec in the child process.  This bug appears to have been introduced in
+  3.4.
+
+- bpo-32647: The ctypes module used to depend on indirect linking for
+  dlopen. The shared extension is now explicitly linked against libdl on
+  platforms with dl.
+
+- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
+  and locking the same lock multiple times, without it being free. Patch by
+  Bar Harel.
+
+- bpo-32727: Do not include name field in SMTP envelope from address. Patch
+  by Stéphane Wirtel
+
+- bpo-27931: Fix email address header parsing error when the username is an
+  empty quoted string. Patch by Xiang Zhang.
+
+- bpo-32304: distutils' upload command no longer corrupts tar files ending
+  with a CR byte, and no longer tries to convert CR to CRLF in any of the
+  upload text fields.
+
+- bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware
+  address is encountered.
+
+- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
+  chunk is not found. Patch by Zackery Spytz.
+
+- bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the
+  byte string from the current locale encoding, rather than using
+  ASCII/surrogateescape in some cases.
+
+- bpo-32521: The nis module is now compatible with new libnsl and headers
+  location.
+
+- bpo-32473: Improve ABCMeta._dump_registry() output readability
+
+- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
+  library in nis module.
+
+- bpo-32228: Ensure that ``truncate()`` preserves the file position (as
+  reported by ``tell()``) after writes longer than the buffer size.
+
+- bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on
+  interpreter shutdown.
+
+- bpo-32185: The SSL module no longer sends IP addresses in SNI TLS
+  extension on platforms with OpenSSL 1.0.2+ or inet_pton.
+
+- bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id
+  (scope) to lower case for scoped IPv6 addresses in hostnames now.
+
+- bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary
+  compatible with CRT v140.
+
+- bpo-32255: A single empty field is now always quoted when written into a
+  CSV file. This allows to distinguish an empty row from a row consisting of
+  a single empty field. Patch by Licht Takeuchi.
+
+- bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on
+  platforms where ``chmod(..., follow_symlinks=False)`` is not supported.
+  Patch by Anthony Sottile.
+
+- bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link
+  list'.
+
+- bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
+
+- bpo-31900: The :func:`locale.localeconv` function now sets temporarily the
+  ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode
+  ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII
+  or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the
+  ``LC_CTYPE`` locale. This temporary change affects other threads. Same
+  change for the :meth:`str.format` method when formatting a number
+  (:class:`int`, :class:`float`, :class:`float` and subclasses) with the
+  ``n`` type (ex: ``'{:n}'.format(1234)``).
+
+- bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now
+  works even if the ``os`` module still is not imported.
+
+Documentation
+-------------
+
+- bpo-17232: Clarify docs for -O and -OO.  Patch by Terry Reedy.
+
+- bpo-32800: Update link to w3c doc for xml default namespaces.
+
+- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
+  method raises :exc:`AttributeError`.
+
+- bpo-32614: Modify RE examples in documentation to use raw strings to
+  prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
+  the deprecation.
+
+- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
+
+- bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and
+  their C-API counterparts regarding which type of events are received in
+  each function. Patch by Pablo Galindo Salgado.
+
+Tests
+-----
+
+- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
+  of ``KqueueSelector`` loop was not being closed.
+
+- bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built.
+
+- bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core
+  dump files when testing crashes. getrlimit() returns zero on success.
+
+- bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for
+  SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or
+  PROTOCOL_TLSv1_2 to make them pass on Debian.
+
+Build
+-----
+
+- bpo-32635: Fix segfault of the crypt module when libxcrypt is provided
+  instead of libcrypt at the system.
+
+Windows
+-------
+
+- bpo-33016: Fix potential use of uninitialized memory in
+  nt._getfinalpathname
+
+- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
+  directory is set to a UNC path.
+
+- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
+
+- bpo-32409: Ensures activate.bat can handle Unicode contents.
+
+- bpo-32457: Improves handling of denormalized executable path when
+  launching Python.
+
+- bpo-32370: Use the correct encoding for ipconfig output in the uuid
+  module. Patch by Segev Finer.
+
+- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
+  treating the ``PrintNameOffset`` field of the reparse data buffer as a
+  number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
+
+- bpo-32588: Create standalone _distutils_findvs module.
+
+macOS
+-----
+
+- bpo-32726: Provide an additional, more modern macOS installer variant that
+  supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied
+  third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The
+  10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8.
+
+IDLE
+----
+
+- bpo-32984: Set ``__file__`` while running a startup file.  Like Python,
+  IDLE optionally runs one startup file in the Shell window before
+  presenting the first interactive input prompt.  For IDLE, ``-s`` runs a
+  file named in environmental variable  :envvar:`IDLESTARTUP` or
+  :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``.  Python sets
+  ``__file__`` to the startup file name before running the file and unsets
+  it before the first prompt.  IDLE now does the same when run normally,
+  without the ``-n`` option.
+
+- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
+
+- bpo-32916: Change ``str`` to ``code`` in pyparse.
+
+- bpo-32905: Remove unused code in pyparse module.
+
+- bpo-32874: Add tests for pyparse.
+
+- bpo-32837: Using the system and place-dependent default encoding for
+  open() is a bad idea for IDLE's system and location-independent files.
+
+- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
+  test test_file_buttons() only looks at initial ascii-only lines, but
+  failed on systems where open() defaults to 'ascii' because readline()
+  internally reads and decodes far enough ahead to encounter a non-ascii
+  character in CREDITS.txt.
+
+- bpo-32765: Update configdialog General tab docstring to add new widgets to
+  the widget list.
+
+Tools/Demos
+-----------
+
+- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
+  pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
+  lib2to3 work when run from a zipfile.
+
+- bpo-32222: Fix pygettext not extracting docstrings for functions with type
+  annotated arguments. Patch by Toby Harradine.
+
+C API
+-----
+
+- bpo-29084: Undocumented C API for OrderedDict has been excluded from the
+  limited C API. It was added by mistake and actually never worked in the
+  limited C API.
+
+
+What's New in Python 3.6.4 final?
+=================================
+
+*Release date: 2017-12-18*
+
+There were no new code changes in version 3.6.4 since v3.6.4rc1.
+
+
+
+What's New in Python 3.6.4 release candidate 1?
+===============================================
+
+*Release date: 2017-12-05*
+
+Core and Builtins
+-----------------
+
+- bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code
+  object constructor based on freevars and cellvars, rather than needing to
+  be set correctly by the caller. This ensures it will be cleared
+  automatically when additional cell references are injected into a modified
+  code object and function.
+
+- bpo-31949: Fixed several issues in printing tracebacks
+  (PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now
+  suppresses printing tracebacks. Setting sys.tracebacklimit to None now
+  causes using the default limit. Setting sys.tracebacklimit to an integer
+  larger than LONG_MAX now means using the limit LONG_MAX rather than the
+  default limit. Fixed integer overflows in the case of more than 2**31
+  traceback items on Windows. Fixed output errors handling.
+
+- bpo-30696: Fix the interactive interpreter looping endlessly when no
+  memory.
+
+- bpo-20047: Bytearray methods partition() and rpartition() now accept only
+  bytes-like objects as separator, as documented.  In particular they now
+  raise TypeError rather of returning a bogus result when an integer is
+  passed as a separator.
+
+- bpo-31852: Fix a segmentation fault caused by a combination of the async
+  soft keyword and continuation lines.
+
+- bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of
+  ``__import__()`` or the ``__all__`` attribute of the module contain bytes
+  instances.
+
+- bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in
+  codecs.escape_decode() when decode an escaped non-ascii byte.
+
+- bpo-28603: Print the full context/cause chain of exceptions on interpreter
+  exit, even if an exception in the chain is unhashable or compares equal to
+  later ones. Patch by Zane Bitter.
+
+- bpo-31786: Fix timeout rounding in the select module to round correctly
+  negative timeouts between -1.0 and 0.0. The functions now block waiting
+  for events as expected. Previously, the call was incorrectly non-blocking.
+  Patch by Pablo Galindo.
+
+- bpo-31642: Restored blocking "from package import module" by setting
+  sys.modules["package.module"] to None.
+
+- bpo-31626: Fixed a bug in debug memory allocator.  There was a write to
+  freed memory after shrinking a memory block.
+
+- bpo-31619: Fixed a ValueError when convert a string with large number of
+  underscores to integer with binary base.
+
+- bpo-31592: Fixed an assertion failure in Python parser in case of a bad
+  `unicodedata.normalize()`. Patch by Oren Milman.
+
+- bpo-31588: Raise a `TypeError` with a helpful error message when class
+  creation fails due to a metaclass with a bad ``__prepare__()`` method.
+  Patch by Oren Milman.
+
+- bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad
+  ``__name__`` global. Patch by Oren Milman.
+
+- bpo-31505: Fix an assertion failure in `json`, in case
+  `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren
+  Milman.
+
+- bpo-31492: Fix assertion failures in case of failing to import from a
+  module with a bad ``__name__`` attribute, and in case of failing to access
+  an attribute of such a module. Patch by Oren Milman.
+
+- bpo-31490: Fix an assertion failure in `ctypes` class definition, in case
+  the class has an attribute whose name is specified in ``_anonymous_`` but
+  not in ``_fields_``. Patch by Oren Milman.
+
+- bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the
+  argument has a bad ``__abs__()`` method. Patch by Oren Milman.
+
+- bpo-31315: Fix an assertion failure in imp.create_dynamic(), when
+  spec.name is not a string. Patch by Oren Milman.
+
+- bpo-31311: Fix a crash in the ``__setstate__()`` method of
+  `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman.
+
+- bpo-31293: Fix crashes in true division and multiplication of a timedelta
+  object by a float with a bad as_integer_ratio() method. Patch by Oren
+  Milman.
+
+- bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the
+  return value of the received loader's get_source() has a bad splitlines()
+  method. Patch by Oren Milman.
+
+- bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be
+  raised by `_PySys_SetObjectId()`, for example when no memory.
+
+Library
+-------
+
+- bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying
+  instances of generic classes, improve interaction of ``__init_subclass__``
+  with generics. Original PRs by Ivan Levkivskyi.
+
+- bpo-27240: The header folding algorithm for the new email policies has
+  been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182.  In
+  particular, RFC2231 folding is now done correctly.
+
+- bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL
+  when getting the file size. Fixed hang of all threads with inaccessible
+  NFS server. Patch by Nir Soffer.
+
+- bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return
+  ``None`` when the value of property is ``VT_EMPTY``.  Initial patch by
+  Mark Mc Mahon.
+
+- bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the
+  :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>`
+  method. Initial patch by Robin Wellner.
+
+- bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception
+  message when it couldn't open or create an MSI file.  Initial patch by
+  William Tisäter.
+
+- bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n*
+  characters/bytes for non-negative *n*. This makes it compatible with
+  ``read()`` methods of other file-like objects.
+
+- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays.
+  Identical objects will be saved only once. Equal references will be load
+  as identical objects. Added support for saving and loading recursive data
+  structures.
+
+- bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError
+  pickleable.
+
+- bpo-32015: Fixed the looping of asyncio in the case of reconnection the
+  socket during waiting async read/write from/to the socket.
+
+- bpo-32011: Restored support of loading marshal files with the TYPE_INT64
+  code. These files can be produced in Python 2.7.
+
+- bpo-31970: Reduce performance overhead of asyncio debug mode.
+
+- bpo-9678: Fixed determining the MAC address in the uuid module: Using
+  ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and
+  OpenBSD. Based on patch by Takayuki Shimizukawa.
+
+- bpo-30057: Fix potential missed signal in signal.signal().
+
+- bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian
+  platforms. Patch by Jack O'Connor.
+
+- bpo-31927: Fixed compilation of the socket module on NetBSD 8.  Fixed
+  assertion failure or reading arbitrary data when parse a AF_BLUETOOTH
+  address on NetBSD and DragonFly BSD.
+
+- bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse()
+  when the size of types chtype or mmask_t is less than the size of C long.
+  curses.box() now accepts characters as arguments.  Based on patch by Steve
+  Fink.
+
+- bpo-31897: plistlib now catches more errors when read binary plists and
+  raises InvalidFileException instead of unexpected exceptions.
+
+- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
+  by Masayuki Yamamoto.
+
+- bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and
+  NetBSD. Fixed the comparison of the kqueue_event objects.
+
+- bpo-31891: Fixed building the curses module on NetBSD.
+
+- bpo-28416: Instances of pickle.Pickler subclass with the persistent_id()
+  method and pickle.Unpickler subclass with the persistent_load() method no
+  longer create reference cycles.
+
+- bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed
+  or None.
+
+- bpo-31457: If nested log adapters are used, the inner ``process()``
+  methods are no longer omitted.
+
+- bpo-31457: The ``manager`` property on LoggerAdapter objects is now
+  properly settable.
+
+- bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire()
+  and socket.socket.settimeout() to round correctly negative timeouts
+  between -1.0 and 0.0. The functions now block waiting for events as
+  expected. Previously, the call was incorrectly non-blocking. Patch by
+  Pablo Galindo.
+
+- bpo-28603: traceback: Fix a TypeError that occurred during printing of
+  exception tracebacks when either the current exception or an exception in
+  its context/cause chain is unhashable. Patch by Zane Bitter.
+
+- bpo-30058: Fixed buffer overflow in select.kqueue.control().
+
+- bpo-31770: Prevent a crash when calling the ``__init__()`` method of a
+  ``sqlite3.Cursor`` object more than once. Patch by Oren Milman.
+
+- bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII
+  characters. Now it uses ``-i`` regular expression local flag to avoid
+  non-ASCII characters.
+
+- bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the
+  ``Cursor`` object is uninitialized. Patch by Oren Milman.
+
+- bpo-31752: Fix possible crash in timedelta constructor called with custom
+  integers.
+
+- bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM
+  exceptions.
+
+- bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of
+  `Element.text` and `Element.tail`. Patch by Oren Milman.
+
+- bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get
+  pollers timeout
+
+- bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in
+  asyncio module. This method was previously modifying a wrong reference to
+  the protocol.
+
+- bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split()
+  when pass a string larger than 2 GiB.
+
+- bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo().
+
+- bpo-30806: Fix the string representation of a netrc object.
+
+- bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and
+  earlier.
+
+- bpo-25351: Avoid venv activate failures with undefined variables
+
+- bpo-25532: inspect.unwrap() will now only try to unwrap an object
+  sys.getrecursionlimit() times, to protect against objects which create a
+  new object on every attribute access.
+
+- bpo-30347: Stop crashes when concurrently iterate over itertools.groupby()
+  iterators.
+
+- bpo-31516: ``threading.current_thread()`` should not return a dummy thread
+  at shutdown.
+
+- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
+  bootstrapping has failed.
+
+- bpo-31482: ``random.seed()`` now works with bytes in version=1
+
+- bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for
+  arbitrary negative timeouts on all OSes where it can only be a
+  non-negative integer or -1. Patch by Riccardo Coccioli.
+
+- bpo-31310: multiprocessing's semaphore tracker should be launched again if
+  crashed.
+
+- bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and
+  other user interruptions. If it crashes, restart it when necessary.
+
+Documentation
+-------------
+
+- bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket
+  versionadded marker.
+
+- bpo-31537: Fix incorrect usage of ``get_history_length`` in readline
+  documentation example code. Patch by Brad Smith.
+
+- bpo-30085: The operator functions without double underscores are preferred
+  for clarity. The one with underscores are only kept for
+  back-compatibility.
+
+Tests
+-----
+
+- bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on
+  APFS.
+
+- bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5.
+  The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged
+  into the kernel 4.5.
+
+- bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the
+  names sample to always test the same files. It prevents false alarms when
+  hunting reference leaks.
+
+- bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()`
+  functions to the _testcapi module.
+
+Build
+-----
+
+- bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the
+  sysroot paths when cross-compiling.
+
+- bpo-31957: Fixes Windows SDK version detection when building for Windows.
+
+- bpo-31609: Fixes quotes in PCbuild/clean.bat
+
+- bpo-31934: Abort the build when building out of a not clean source tree.
+
+- bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when
+  there was more than one function and/or method in a .c file with the same
+  name.
+
+- bpo-28791: Update Windows builds to use SQLite 3.21.0.
+
+- bpo-28791: Update OS X installer to use SQLite 3.21.0.
+
+- bpo-22140: Prevent double substitution of prefix in python-config.sh.
+
+- bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing
+  changed.
+
+Windows
+-------
+
+- bpo-1102: Return ``None`` when ``View.Fetch()`` returns
+  ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by
+  Anthony Tuininga.
+
+- bpo-31944: Fixes Modify button in Apps and Features dialog.
+
+macOS
+-----
+
+- bpo-31392: Update macOS installer to use OpenSSL 1.0.2m
+
+IDLE
+----
+
+- bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event
+  handling is driven by IDLE's run loop, a confusing and distracting
+  queue.EMPTY traceback context is no longer added to tk event exception
+  tracebacks.  The traceback is now the same as when event handling is
+  driven by user code.  Patch based on a suggestion by Serhiy Storchaka.
+
+- bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet
+  in configdialog was replaced by ttk.Notebook.
+
+- bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch
+  mostly by Cheryl Sabella.
+
+- bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor
+  and output windows only see an empty last prompt line.  This simplifies
+  the code and fixes a minor bug when newline is inserted. Sys.ps1, if
+  present, is read on Shell start-up, but is not set or changed.
+
+- bpo-31860: The font sample in the IDLE configuration dialog is now
+  editable. Changes persist while IDLE remains open
+
+- bpo-31836: Test_code_module now passes if run after test_idle, which sets
+  ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not.
+  Test_code_module now properly tests both behaviors.  Ditto for ps2.
+
+- bpo-28603: Fix a TypeError that caused a shell restart when printing a
+  traceback that includes an exception that is unhashable. Patch by Zane
+  Bitter.
+
+- bpo-13802: Use non-Latin characters in the IDLE's Font settings sample.
+  Even if one selects a font that defines a limited subset of the unicode
+  Basic Multilingual Plane, tcl/tk will use other fonts that define a
+  character. The expanded example give users of non-Latin characters a
+  better idea of what they might see in IDLE's shell and editors. To make
+  room for the expanded sample, frames on the Font tab are re-arranged. The
+  Font/Tabs help explains a bit about the additions.
+
+- bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget
+  instead of an flist with a root widget opens the option of creating a
+  browser frame that is only part of a window.  Passing a full file name
+  instead of pieces assumed to come from a .py file opens the possibility of
+  browsing python files that do not end in .py.
+
+- bpo-31649: IDLE - Make _htest, _utest parameters keyword only.
+
+- bpo-31559: Remove test order dependence in idle_test.test_browser.
+
+- bpo-31459: Rename IDLE's module browser from Class Browser to Module
+  Browser. The original module-level class and method browser became a
+  module browser, with the addition of module-level functions, years ago.
+  Nested classes and functions were added yesterday.  For
+  back-compatibility, the virtual event <<open-class-browser>>, which
+  appears on the Keys tab of the Settings dialog, is not changed. Patch by
+  Cheryl Sabella.
+
+- bpo-31500: Default fonts now are scaled on HiDPI displays.
+
+- bpo-1612262: IDLE module browser now shows nested classes and functions.
+  Original patches for code and tests by Guilherme Polo and Cheryl Sabella,
+  respectively.
+
+Tools/Demos
+-----------
+
+- bpo-30722: Make redemo work with Python 3.6 and newer versions. Also,
+  remove the ``LOCALE`` option since it doesn't work with string patterns in
+  Python 3. Patch by Christoph Sarnowski.
+
+C API
+-----
+
+- bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in
+  a non-Python thread before PyEval_InitThreads(), only call
+  PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
+
+- bpo-31532: Fix memory corruption due to allocator mix in getpath.c between
+  Py_GetPath() and Py_SetPath()
+
+- bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and
+  `PyErr_NormalizeException()` does not use it anymore. This singleton is
+  persistent and its members being never cleared may cause a segfault during
+  finalization of the interpreter. See also issue #22898.
+
+
+What's New in Python 3.6.3 final?
+=================================
+
+*Release date: 2017-10-03*
+
+Library
+-------
+
+- bpo-31641: Re-allow arbitrary iterables in
+  `concurrent.futures.as_completed()`. Fixes regression in 3.6.3rc1.
+
+Build
+-----
+
+- bpo-31662: Fix typos in Windows ``uploadrelease.bat`` script. Fix Windows
+  Doc build issues in ``Doc/make.bat``.
+
+- bpo-31423: Fix building the PDF documentation with newer versions of
+  Sphinx.
+
+
+What's New in Python 3.6.3 release candidate 1?
+===============================================
+
+*Release date: 2017-09-18*
+
+Security
+--------
+
+- bpo-29781: SSLObject.version() now correctly returns None when handshake
+  over BIO has not been performed yet.
+
+- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
+  get security fixes.
+
+Core and Builtins
+-----------------
+
+- bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in
+  case the env argument has a bad keys() method. Patch by Oren Milman.
+
+- bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case
+  of an exception with a bad ``__module__`` attribute. Patch by Oren Milman.
+
+- bpo-31416: Fix assertion failures in case of a bad warnings.filters or
+  warnings.defaultaction. Patch by Oren Milman.
+
+- bpo-31411: Raise a TypeError instead of SystemError in case
+  warnings.onceregistry is not a dictionary. Patch by Oren Milman.
+
+- bpo-31373: Fix several possible instances of undefined behavior due to
+  floating-point demotions.
+
+- bpo-30465: Location information (``lineno`` and ``col_offset``) in
+  f-strings is now (mostly) correct.  This fixes tools like flake8 from
+  showing warnings on the wrong line (typically the first line of the file).
+
+- bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev().
+  GNU C libray plans to remove the functions from sys/types.h.
+
+- bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on
+  Windows, when the return value of ``pathname.replace('/','\\')`` isn't a
+  string. Patch by Oren Milman.
+
+- bpo-31271: Fix an assertion failure in the write() method of
+  `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch
+  by Oren Milman.
+
+- bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the
+  decoder's state is invalid. Patch by Oren Milman.
+
+- bpo-30721: ``print`` now shows correct usage hint for using Python 2
+  redirection syntax.  Patch by Sanyam Khurana.
+
+- bpo-31070: Fix a race condition in importlib _get_module_lock().
+
+- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
+  doesn't call ``PyObject_GC_UnTrack()``.
+
+- bpo-31071: Avoid masking original TypeError in call with * unpacking when
+  other arguments are passed.
+
+- bpo-30978: str.format_map() now passes key lookup exceptions through.
+  Previously any exception was replaced with a KeyError exception.
+
+- bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state.
+
+- bpo-30876: Relative import from unloaded package now reimports the package
+  instead of failing with SystemError.  Relative import from non-package now
+  fails with ImportError rather than SystemError.
+
+- bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from
+  signal handler, to avoid calling signal-unsafe functions. The tests I'm
+  adding here fail without the rest of the patch, on Linux and OS X. This
+  means our signal delivery logic had defects (some signals could be lost).
+
+- bpo-30765: Avoid blocking in pthread_mutex_lock() when
+  PyThread_acquire_lock() is asked not to block.
+
+- bpo-31161: Make sure the 'Missing parentheses' syntax error message is
+  only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters.
+
+- bpo-30814: Fixed a race condition when import a submodule from a package.
+
+- bpo-30597: ``print`` now shows expected input in custom error message when
+  used as a Python 2 statement. Patch by Sanyam Khurana.
+
+Library
+-------
+
+- bpo-31499: xml.etree: Fix a crash when a parser is part of a reference
+  cycle.
+
+- bpo-28556: typing.get_type_hints now finds the right globalns for classes
+  and modules by default (when no ``globalns`` was specified by the caller).
+
+- bpo-28556: Speed improvements to the ``typing`` module.  Original PRs by
+  Ivan Levkivskyi and Mitar.
+
+- bpo-31544: The C accelerator module of ElementTree ignored exceptions
+  raised when looking up TreeBuilder target methods in XMLParser().
+
+- bpo-31234: socket.create_connection() now fixes manually a reference
+  cycle: clear the variable storing the last exception on success.
+
+- bpo-31457: LoggerAdapter objects can now be nested.
+
+- bpo-31400: Improves SSL error handling to avoid losing error numbers.
+
+- bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a
+  context cannot be instantiated.
+
+- bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of
+  data. This fixes support for all bytes-like object. It is also more
+  efficient and avoids costly copies.
+
+- bpo-31178: Fix string concatenation bug in rare error path in the
+  subprocess module
+
+- bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up
+  to 10% faster.
+
+- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
+  partial characters for UTF-8 input (libexpat bug 115):
+  https://github.com/libexpat/libexpat/issues/115
+
+- bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
+
+- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to
+  have a non repr() based thread name by default when no thread_name_prefix
+  is supplied. They will now identify themselves as
+  "ThreadPoolExecutor-y_n".
+
+- bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash
+  functions such as md5 are not available in the linked OpenSSL library.  As
+  in some special FIPS-140 build environments.
+
+- bpo-27144: The ``map()`` and ``as_completed()`` iterators in
+  ``concurrent.futures`` now avoid keeping a reference to yielded objects.
+
+- bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer
+  types.
+
+- bpo-22536: The subprocess module now sets the filename when
+  FileNotFoundError is raised on POSIX systems due to the executable or cwd
+  not being found.
+
+- bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor
+  now breaks a reference cycle between an exception object and the WorkItem
+  object.
+
+- bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using
+  sys.exc_info() in code handling exceptions.
+
+- bpo-30102: The ssl and hashlib modules now call
+  OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
+  detects CPU features and enables optimizations on some CPU architectures
+  such as POWER8. Patch is based on research from Gustavo Serra Scalet.
+
+- bpo-31185: Fixed miscellaneous errors in asyncio speedup module.
+
+- bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu
+  classes. Call the parent destroy() method even if the used attribute
+  doesn't exist. The LabeledScale.destroy() method now also explicitly
+  clears label and scale attributes to help the garbage collector to destroy
+  all widgets.
+
+- bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for
+  classes whose name begins with an underscore. Patch by Shane Harvey.
+
+- bpo-31061: Fixed a crash when using asyncio and threads.
+
+- bpo-30502: Fix handling of long oids in ssl.  Based on patch by Christian
+  Heimes.
+
+- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
+  contains CR or LF. Patch by Dong-hee Na.
+
+- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader
+  in non-blocking mode if it succeeded to acquire the lock but the acquire
+  took longer than the timeout.
+
+- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
+  builtin functions.  Patch by Aaron Gallagher.
+
+- bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
+
+- bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across
+  instances of ``OptionMenu``.
+
+- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
+  thread completes, even if the thread was started by the same process which
+  created the queue.
+
+- bpo-29854: Fix segfault in readline when using readline's history-size
+  option.  Patch by Nir Soffer.
+
+- bpo-30319: socket.close() now ignores ECONNRESET error.
+
+- bpo-30828: Fix out of bounds write in
+  `asyncio.CFuture.remove_done_callback()`.
+
+- bpo-30807: signal.setitimer() may disable the timer when passed a tiny
+  value. Tiny values (such as 1e-6) are valid non-zero values for
+  setitimer(), which is specified as taking microsecond-resolution
+  intervals. However, on some platform, our conversion routine could convert
+  1e-6 into a zero interval, therefore disabling the timer instead of
+  (re-)scheduling it.
+
+- bpo-30441: Fix bug when modifying os.environ while iterating over it
+
+- bpo-30532: Fix email header value parser dropping folding white space in
+  certain cases.
+
+- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
+  with bytes-like argument.
+
+- bpo-30746: Prohibited the '=' character in environment variable names in
+  ``os.putenv()`` and ``os.spawn*()``.
+
+- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
+  They now always return bytes.
+
+Documentation
+-------------
+
+- bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and
+  ZeroMQSocketHandler examples and adapt them to Python 3.
+
+- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
+  documentation.
+
+- bpo-30803: Clarify doc on truth value testing. Original patch by Peter
+  Thomassen.
+
+Tests
+-----
+
+- bpo-31320: Silence traceback in test_ssl
+
+- bpo-25674: Remove sha256.tbs-internet.com ssl test
+
+- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
+  version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
+
+- bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the
+  test suite using --use=all / -u all, exclude tzdata since it makes
+  test_datetime too slow (15-20 min on some buildbots) which then times out
+  on some buildbots. Fix also regrtest command line parser to allow passing
+  -u extralargefile to run test_zipfile64.
+
+Build
+-----
+
+- bpo-30854: Fix compile error when compiling --without-threads. Patch by
+  Masayuki Yamamoto.
+
+Windows
+-------
+
+- bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
+
+- bpo-31340: Change to building with MSVC v141 (included with Visual Studio
+  2017)
+
+- bpo-30581: os.cpu_count() now returns the correct number of processors on
+  Windows when the number of logical processors is greater than 64.
+
+- bpo-30731: Add a missing xmlns to python.manifest so that it matches the
+  schema.
+
+IDLE
+----
+
+- bpo-31493: IDLE code context -- fix code update and font update timers.
+  Canceling timers prevents a warning message when test_idle completes.
+
+- bpo-31488: IDLE - Update non-key options in former extension classes. When
+  applying configdialog changes, call .reload for each feature class. Change
+  ParenMatch so updated options affect existing instances attached to
+  existing editor windows.
+
+- bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace
+  strips more than blank spaces.  Multiline string literals are not skipped.
+
+- bpo-31480: IDLE - make tests pass with zzdummy extension disabled by
+  default.
+
+- bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk
+  update in the background in order to make live interaction and
+  experimentation with tkinter applications much easier.
+
+- bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an
+  int entry is not the same as deleting and inserting because int('') will
+  fail.
+
+- bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and
+  Help sections.
+
+- bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor.
+  Move some data and functions from the class to module level. Patch by
+  Cheryl Sabella.
+
+- bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
+
+- bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About
+  10 IDLE features were implemented as supposedly optional extensions. Their
+  different behavior could be confusing or worse for users and not good for
+  maintenance. Hence the conversion. The main difference for users is that
+  user configurable key bindings for builtin features are now handled
+  uniformly. Now, editing a binding in a keyset only affects its value in
+  the keyset. All bindings are defined together in the system-specific
+  default keysets in config-extensions.def. All custom keysets are saved as
+  a whole in config-extension.cfg.  All take effect as soon as one clicks
+  Apply or Ok. The affected events are '<<force-open-completions>>',
+  '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>',
+  '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and
+  '<<zoom-height>>'.  Any (global) customizations made before 3.6.3 will not
+  affect their keyset-specific customization after 3.6.3. and vice versa.
+  Initial patch by Charles Wohlganger.
+
+- bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by
+  Cheryl Sabella.
+
+- bpo-31001: Add tests for configdialog highlight tab.  Patch by Cheryl
+  Sabella.
+
+- bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog.  The
+  slightly modified tests continue to pass.  Patch by Cheryl Sabella.
+
+- bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by
+  Victor Stinner.
+
+- bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
+
+- bpo-19903: IDLE: Calltips use `inspect.signature` instead of
+  `inspect.getfullargspec`. This improves calltips for builtins converted to
+  use Argument Clinic. Patch by Louie Lu.
+
+- bpo-31083: IDLE - Add an outline of a TabPage class in configdialog.
+  Update existing classes to match outline. Initial patch by Cheryl Sabella.
+
+- bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly
+  modified tests continue to pass. Patch by Cheryl Sabella.
+
+- bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly
+  modified tests continue to pass. Fix General tests. Patch mostly by Cheryl
+  Sabella.
+
+- bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan
+  Reedy and Cheryl Sabella.
+
+- bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping
+  methods pertaining to each tab and the buttons will aid writing tests and
+  improving the tabs and will enable splitting the groups into classes.
+
+- bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance
+  tracers manages pairs consisting of a tk variable and a callback function.
+  When tracing is turned on, setting the variable calls the function.  Test
+  coverage for the new class is 100%.
+
+- bpo-31003: IDLE: Add more tests for General tab.
+
+- bpo-30993: IDLE - Improve configdialog font page and tests. In
+  configdialog: Document causal pathways in create_font_tab docstring.
+  Simplify some attribute names. Move set_samples calls to var_changed_font
+  (idea from Cheryl Sabella).  Move related functions to positions after the
+  create widgets function. In test_configdialog: Fix test_font_set so not
+  order dependent.  Fix renamed test_indent_scale so it tests the widget.
+  Adjust tests for movement of set_samples call.  Add tests for load
+  functions.  Put all font tests in one class and tab indent tests in
+  another.  Except for two lines, these tests completely cover the related
+  functions.
+
+- bpo-30981: IDLE -- Add more configdialog font page tests.
+
+- bpo-28523: IDLE: replace 'colour' with 'color' in configdialog.
+
+- bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from
+  46% to 96%. Patch by Louie Lu.
+
+- bpo-30934: Document coverage details for idlelib tests. Add section to
+  idlelib/idle-test/README.txt. Include check that branches are taken both
+  ways. Exclude IDLE-specific code that does not run during unit tests.
+
+- bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in
+  docstrings This will facilitate improving the dialog and splitting up the
+  class. Original patch by Cheryl Sabella.
+
+- bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by
+  Louie Lu.
+
+- bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
+
+- bpo-30851: IDLE: Remove unused variables in configdialog.  One is a
+  duplicate, one is set but cannot be altered by users. Patch by Cheryl
+  Sabella.
+
+- bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as
+  well as mouse. Initial patch by Louie Lu.
+
+- bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
+
+- bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in
+  config; test. * In config, put dump test code in a function; run it and
+  unittest in   'if __name__ == '__main__'. * Add class config.ConfigChanges
+  based on changes_class_v4.py on bpo issue. * Add class
+  test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise
+  configdialog to use ConfigChanges; see tracker msg297804. * Revise
+  test_configdialog to match configdialog changes. * Remove configdialog
+  functions unused or moved to ConfigChanges. Cheryl Sabella contributed
+  parts of the patch.
+
+- bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by
+  Cheryl Sabella.
+
+- bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more
+  tests. Patch by Cheryl Sabella.
+
+- bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens'
+  style to highlight both opener and closer. Make 'default' style, which is
+  not default, a synonym for 'opener'. Make time-delay work the same with
+  all styles. Add help for config dialog extensions tab, including help for
+  parenmatch. Add new tests.  Original patch by Charles Wohlganger.
+
+- bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
+
+- bpo-21519: IDLE's basic custom key entry dialog now detects duplicates
+  properly. Original patch by Saimadhav Heblikar.
+
+- bpo-29910: IDLE no longer deletes a character after commenting out a
+  region by a key shortcut.  Add ``return 'break'`` for this and other
+  potential conflicts between IDLE and default key bindings.
+
+- bpo-30728: Review and change idlelib.configdialog names. Lowercase method
+  and attribute names. Replace 'colour' with 'color', expand overly cryptic
+  names, delete unneeded underscores. Replace ``import *`` with specific
+  imports. Patches by Cheryl Sabella.
+
+- bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them
+  with tk. Add tests for all 3 validation functions. Original patch by G
+  Polo.  Tests added by Cheryl Sabella.
+
+Tools/Demos
+-----------
+
+- bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared
+  builds now, too.  :pep:`523` introduced _PyEval_EvalFrameDefault which
+  inlines PyEval_EvalFrameEx on non-debug shared builds.  This broke the
+  ability to use py-bt, py-up, and a few other Python-specific gdb
+  integrations. The problem is fixed by only looking for
+  _PyEval_EvalFrameDefault frames in python-gdb.py.  Original patch by Bruno
+  "Polaco" Penteado.
+
+
+What's New in Python 3.6.2 final?
+=================================
+
+*Release date: 2017-07-17*
+
+No changes since release candidate 2
+
+
+
+What's New in Python 3.6.2 release candidate 2?
+===============================================
+
+*Release date: 2017-07-07*
+
+Security
+--------
+
+- bpo-30730: Prevent environment variables injection in subprocess on
+  Windows.  Prevent passing other environment variables and command
+  arguments.
+
+- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
+  security vulnerabilities including: CVE-2017-9233 (External entity
+  infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
+  CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
+  CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
+  CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
+  impact Python, since Python already gets entropy from the OS to set the
+  expat secret using ``XML_SetHashSalt()``.
+
+- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
+  example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
+  ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
+  authentication (``login@host``).
+
+
+What's New in Python 3.6.2 release candidate 1?
+===============================================
+
+*Release date: 2017-06-17*
+
+Core and Builtins
+-----------------
+
+- bpo-30682: Removed a too-strict assertion that failed for certain
+  f-strings, such as eval("f'\\\n'") and eval("f'\\\r'").
+
+- bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes
+
+- bpo-29104: Fixed parsing backslashes in f-strings.
+
+- bpo-27945: Fixed various segfaults with dict when input collections are
+  mutated during searching, inserting or comparing.  Based on patches by
+  Duane Griffin and Tim Mitchell.
+
+- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
+  non-interned attribute names.  Based on patch by Eryk Sun.
+
+- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the
+  middle of resuming a chain of nested 'yield from' or 'await' calls, it's
+  now correctly delivered to the innermost frame.
+
+- bpo-12414: sys.getsizeof() on a code object now returns the sizes which
+  includes the code struct and sizes of objects which it references. Patch
+  by Dong-hee Na.
+
+- bpo-29949: Fix memory usage regression of set and frozenset object.
+
+- bpo-29935: Fixed error messages in the index() method of tuple, list and
+  deque when pass indices of wrong type.
+
+- bpo-29859: Show correct error messages when any of the pthread_* calls in
+  thread_pthread.h fails.
+
+- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
+  :exc:`OverflowError`.
+
+- bpo-29600: Fix wrapping coroutine return values in StopIteration.
+
+- bpo-28856: Fix an oversight that %b format for bytes should support
+  objects follow the buffer protocol.
+
+- bpo-29714: Fix a regression that bytes format may fail when containing
+  zero bytes inside.
+
+- bpo-29478: If max_line_length=None is specified while using the Compat32
+  policy, it is no longer ignored.  Patch by Mircea Cosbuc.
+
+Library
+-------
+
+- bpo-30616: Functional API of enum allows to create empty enums. Patched by
+  Dong-hee Na
+
+- bpo-30038: Fix race condition between signal delivery and wakeup file
+  descriptor. Patch by Nathaniel Smith.
+
+- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.
+
+- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
+  reference cycle to not keep objects alive longer than expected.
+
+- bpo-30149: inspect.signature() now supports callables with
+  variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
+  Na.
+
+- bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases
+  when a package is only shipped with bytecodes. Patch by Alexandru
+  Ardelean.
+
+- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
+  Patch by Sanjay Sundaresan.
+
+- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
+  bytes instance with misplaced inline modifier.  Patch by Roy Williams.
+
+Security
+--------
+
+- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
+  CVE-2016-0718 and CVE-2016-4472. See
+  https://sourceforge.net/p/expat/bugs/537/ for more information.
+
+Library
+-------
+
+- bpo-24484: Avoid race condition in multiprocessing cleanup (#2159)
+
+- bpo-28994: The traceback no longer displayed for SystemExit raised in a
+  callback registered by atexit.
+
+- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
+  called.
+
+- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
+  support for ContextManager on all versions. Original PRs by Jelle Zijlstra
+  and Ivan Levkivskyi
+
+- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
+  implementation. Patch by Michaël Sghaïer.
+
+- bpo-29743: Closing transport during handshake process leaks open socket.
+  Patch by Nikolay Kim
+
+- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
+  Sornay.
+
+- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
+  EINVAL on stdin.write() if the child process is still running but closed
+  the pipe.
+
+- bpo-29822: inspect.isabstract() now works during __init_subclass__.  Patch
+  by Nate Soares.
+
+- bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract
+  base classes to use keyword parameters in __init_subclass__. Patch by Nate
+  Soares.
+
+- bpo-30557: faulthandler now correctly filters and displays exception codes
+  on Windows
+
+- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
+  handle IPv6 addresses.
+
+- bpo-29960: Preserve generator state when _random.Random.setstate() raises
+  an exception. Patch by Bryan Olson.
+
+- bpo-30414: multiprocessing.Queue._feed background running thread do not
+  break from main loop on exception.
+
+- bpo-30003: Fix handling escape characters in HZ codec.  Based on patch by
+  Ma Lin.
+
+- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
+  and *forkserver* start methods.
+
+- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
+  (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
+  This error occurs sometimes on SSL connections.
+
+- bpo-30375: Warnings emitted when compile a regular expression now always
+  point to the line in the user code.  Previously they could point into
+  inners of the re module if emitted from inside of groups or conditionals.
+
+- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
+  coroutine and the coroutine returned without any more ``await``.
+
+- bpo-30266: contextlib.AbstractContextManager now supports
+  anti-registration by setting __enter__ = None or __exit__ = None,
+  following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra.
+
+- bpo-30298: Weaken the condition of deprecation warnings for inline
+  modifiers. Now allowed several subsequential inline modifiers at the start
+  of the pattern (e.g. ``'(?i)(?s)...'``).  In verbose mode whitespaces and
+  comments now are allowed before and between inline modifiers (e.g. ``'(?x)
+  (?i) (?s)...'``).
+
+- bpo-29990: Fix range checking in GB18030 decoder.  Original patch by Ma
+  Lin.
+
+- bpo-26293: Change resulted because of zipfile breakage. (See also:
+  bpo-29094)
+
+- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
+  Misusing them could cause memory leaks or crashes.  Now scanner and
+  encoder objects are completely initialized in the __new__ methods.
+
+- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
+  when Ctrl-C is received.
+
+- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
+  WrapperDescriptorType, minor bug-fixes.  Original PRs by Jim
+  Fasarakis-Hilliard and Ivan Levkivskyi.
+
+- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
+
+- bpo-30070: Fixed leaks and crashes in errors handling in the parser
+  module.
+
+- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
+  readline() or __next__() respectively return non-sizeable object. Fixed
+  possible other errors caused by not checking results of PyObject_Size(),
+  PySequence_Size(), or PyMapping_Size().
+
+- bpo-30017: Allowed calling the close() method of the zip entry writer
+  object multiple times.  Writing to a closed writer now always produces a
+  ValueError.
+
+- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
+  is present.
+
+- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
+  Patch by Armin Rigo.
+
+- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
+  contextlib.contextmanager.  Patch by Siddharth Velankar.
+
+- bpo-29998: Pickling and copying ImportError now preserves name and path
+  attributes.
+
+- bpo-29953: Fixed memory leaks in the replace() method of datetime and time
+  objects when pass out of bound fold argument.
+
+- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
+  long runs of empty iterables.
+
+- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
+  and wrong types.
+
+- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
+  exception at the very first of an iterable may swallow the exception or
+  make the program hang. Patch by Davin Potts and Xiang Zhang.
+
+- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
+  the OS gives priority to errors such as EACCES over EEXIST.
+
+- bpo-29861: Release references to tasks, their arguments and their results
+  as soon as they are finished in multiprocessing.Pool.
+
+- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
+  Patch by Christophe Zeitouny.
+
+- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
+
+- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
+  are not strings.  Patch by Michael Seifert.
+
+- bpo-29742: get_extra_info() raises exception if get called on closed ssl
+  transport. Patch by Nikolay Kim.
+
+- bpo-8256: Fixed possible failing or crashing input() if attributes
+  "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
+  strings.
+
+- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
+  big intables (objects that have __int__) as elements.  Patch by Oren
+  Milman.
+
+- bpo-28231: The zipfile module now accepts path-like objects for external
+  paths.
+
+- bpo-26915: index() and count() methods of collections.abc.Sequence now
+  check identity before checking equality when do comparisons.
+
+- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
+  exception) to exception(s) raised in the dispatched methods. Patch by Petr
+  Motejlek.
+
+- bpo-30177: path.resolve(strict=False) no longer cuts the path after the
+  first element not present in the filesystem.  Patch by Antoine Pietri.
+
+IDLE
+----
+
+- bpo-15786: Fix several problems with IDLE's autocompletion box. The
+  following should now work: clicking on selection box items; using the
+  scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no
+  longer happen. Patch by Louie Lu.
+
+- bpo-25514: Add doc subsubsection about IDLE failure to start. Popup
+  no-connection message directs users to this section.
+
+- bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and
+  Terry Jan Reedy.
+
+- bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by
+  Cheryl Sabella and Terry Jan Reedy.
+
+- bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to
+  100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
+
+- bpo-30303: Add _utest option to textview; add new tests. Increase coverage
+  to 100%. Patches by Louie Lu and Terry Jan Reedy.
+
+C API
+-----
+
+- bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro
+  if Py_LIMITED_API is not set.
+
+Build
+-----
+
+- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C
+  ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
+  ``--with-assertions``.
+
+- bpo-28787: Fix out-of-tree builds of Python when configured with
+  ``--with--dtrace``.
+
+- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
+  ``make install`` and some other make targets when configured with
+  ``--enable-optimizations``.
+
+- bpo-23404: Don't regenerate generated files based on file modification
+  time anymore: the action is now explicit. Replace ``make touch`` with
+  ``make regen-all``.
+
+- bpo-29643: Fix ``--enable-optimization`` didn't work.
+
+Documentation
+-------------
+
+- bpo-30176: Add missing attribute related constants in curses
+  documentation.
+
+- bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are
+  now their respective type definitions, rather than the corresponding
+  builtin function entries. Use :ref:`bytes <func-bytes>` and
+  :ref:`bytearray <func-bytearray>` to reference the latter. In order to
+  ensure this and future cross-reference updates are applied automatically,
+  the daily documentation builds now disable the default output caching
+  features in Sphinx.
+
+- bpo-26985: Add missing info of code object in inspect documentation.
+
+Tools/Demos
+-----------
+
+- bpo-29367: python-gdb.py now supports also ``method-wrapper``
+  (``wrapperobject``) objects.
+
+Tests
+-----
+
+- bpo-30357: test_thread: setUp() now uses support.threading_setup() and
+  support.threading_cleanup() to wait until threads complete to avoid random
+  side effects on following tests. Initial patch written by Grzegorz
+  Grzywacz.
+
+- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
+  test.support module. They now work when delete replaced attribute or item
+  inside the with statement.  The old value of the attribute or item (or
+  None if it doesn't exist) now will be assigned to the target of the "as"
+  clause, if there is one.
+
+Windows
+-------
+
+- bpo-30687: Locate msbuild.exe on Windows when building rather than
+  vcvarsall.bat
+
+- bpo-30450: The build process on Windows no longer depends on Subversion,
+  instead pulling external code from GitHub via a Python script.  If Python
+  3.6 is not found on the system (via ``py -3.6``), NuGet is used to
+  download a copy of 32-bit Python.
+
+
+What's New in Python 3.6.1 final?
+=================================
+
+*Release date: 2017-03-21*
+
+Core and Builtins
+-----------------
+
+- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused
+  a regression by revealing an inconsistency in how sys.path is initialized
+  when executing ``__main__`` from a zipfile, directory, or other import
+  location. The interpreter now consistently avoids ever adding the import
+  location's parent directory to ``sys.path``, and ensures no other
+  ``sys.path`` entries are inadvertently modified when inserting the import
+  location named on the command line.
+
+Build
+-----
+
+- bpo-27593: fix format of git information used in sys.version
+
+- Fix incompatible comment in python.h
+
+
+What's New in Python 3.6.1 release candidate 1?
+===============================================
+
+*Release date: 2017-03-04*
+
+Core and Builtins
+-----------------
+
+- bpo-28893: Set correct __cause__ for errors about invalid awaitables
+  returned from __aiter__ and __anext__.
+
+- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra.  Patch by Brian
+  Coleman.
+
+- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It
+  should raise TypeError when kwargs is not a dict.  But it might cause segv
+  when args=NULL and kwargs is not a dict.
+
+- bpo-28598: Support __rmod__ for subclasses of str being called before
+  str.__mod__. Patch by Martijn Pieters.
+
+- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by
+  Matthieu Dartiailh.
+
+- bpo-29602: Fix incorrect handling of signed zeros in complex constructor
+  for complex subclasses and for inputs having a __complex__ method. Patch
+  by Serhiy Storchaka.
+
+- bpo-29347: Fixed possibly dereferencing undefined pointers when creating
+  weakref objects.
+
+- bpo-29438: Fixed use-after-free problem in key sharing dict.
+
+- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
+
+- bpo-29337: Fixed possible BytesWarning when compare the code objects.
+  Warnings could be emitted at compile time.
+
+- bpo-29327: Fixed a crash when pass the iterable keyword argument to
+  sorted().
+
+- bpo-29034: Fix memory leak and use-after-free in os module
+  (path_converter).
+
+- bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception.
+
+- bpo-28932: Do not include <sys/random.h> if it does not exist.
+
+- bpo-25677: Correct the positioning of the syntax error caret for indented
+  blocks. Based on patch by Michael Layzell.
+
+- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
+  form.
+
+- bpo-26919: On Android, operating system data is now always encoded/decoded
+  to/from UTF-8, instead of the locale encoding to avoid inconsistencies
+  with os.fsencode() and os.fsdecode() which are already using UTF-8.
+
+- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
+  bug triggerable by a monkey-patched len() function.
+
+- bpo-28739: f-string expressions are no longer accepted as docstrings and
+  by ast.literal_eval() even if they do not include expressions.
+
+- bpo-28512: Fixed setting the offset attribute of SyntaxError by
+  PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
+
+- bpo-28918: Fix the cross compilation of xxlimited when Python has been
+  built with Py_DEBUG defined.
+
+- bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict.
+  Improve speed of dict literal with constant keys up to 30%.
+
+Library
+-------
+
+- bpo-29169: Update zlib to 1.2.11.
+
+- bpo-29623: Allow use of path-like object as a single argument in
+  ConfigParser.read(). Patch by David Ellis.
+
+- bpo-28963: Fix out of bound iteration in
+  asyncio.Future.remove_done_callback implemented in C.
+
+- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
+  before all pipes are closed.
+
+- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to
+  accept None argument as their pure Python implementation.
+
+- bpo-29703: Fix asyncio to support instantiation of new event loops in
+  child processes.
+
+- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
+
+- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
+  PathLike objects.  Patch by Sayan Chowdhury.
+
+- bpo-28518: Start a transaction implicitly before a DML statement. Patch by
+  Aviv Palivoda.
+
+- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
+  longer affects a partial object after creation.
+
+- bpo-29110: Fix file object leak in aifc.open() when file is given as a
+  filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
+
+- bpo-28556: Various updates to typing module: typing.Counter,
+  typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
+  Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
+
+- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
+  3.6.0: check minimum and maximum years.
+
+- bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when
+  used with a rare combination of multiprocessing and custom codecs.
+
+- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
+
+- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
+  match object. Based on patch by WGH.
+
+- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
+  to a stopped instead of terminated state (ex: when under ptrace).
+
+- bpo-29290: Fix a regression in argparse that help messages would wrap at
+  non-breaking spaces.
+
+- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
+
+- bpo-29316: Restore the provisional status of typing module, add
+  corresponding note to documentation. Patch by Ivan L.
+
+- bpo-29219: Fixed infinite recursion in the repr of uninitialized
+  ctypes.CDLL instances.
+
+- bpo-29011: Fix an important omission by adding Deque to the typing module.
+
+- bpo-28969: Fixed race condition in C implementation of
+  functools.lru_cache. KeyError could be raised when cached function with
+  full cache was simultaneously called from different threads with the same
+  uncached arguments.
+
+- bpo-29142: In urllib.request, suffixes in no_proxy environment variable
+  with leading dots could match related hostnames again (e.g. .b.c matches
+  a.b.c). Patch by Milan Oberkirch.
+
+- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
+  anymore. Patch written by Jiajun Huang.
+
+- bpo-29203: functools.lru_cache() now respects :pep:`468` and preserves the
+  order of keyword arguments.  f(a=1, b=2) is now cached separately from
+  f(b=2, a=1) since both calls could potentially give different results.
+
+- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
+  context. Patch by Sam Breese.
+
+- bpo-29094: Offsets in a ZIP file created with extern file object and modes
+  "w" and "x" now are relative to the start of the file.
+
+- bpo-29085: Allow random.Random.seed() to use high quality OS randomness
+  rather than the pid and time.
+
+- bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a
+  negative input.  Patch by Brendan Donegan.
+
+- bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows
+
+- bpo-13051: Fixed recursion errors in large or resized
+  curses.textpad.Textbox.  Based on patch by Tycho Andersen.
+
+- bpo-29119: Fix weakrefs in the pure python version of
+  collections.OrderedDict move_to_end() method. Contributed by Andra
+  Bogildea.
+
+- bpo-9770: curses.ascii predicates now work correctly with negative
+  integers.
+
+- bpo-28427: old keys should not remove new values from WeakValueDictionary
+  when collecting from another thread.
+
+- bpo-28923: Remove editor artifacts from Tix.py.
+
+- bpo-29055: Neaten-up empty population error on random.choice() by
+  suppressing the upstream exception.
+
+- bpo-28871: Fixed a crash when deallocate deep ElementTree.
+
+- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
+  WeakValueDictionary.pop() when a GC collection happens in another thread.
+
+- bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence
+  that doesn't own its elements as limits.
+
+- bpo-28779: multiprocessing.set_forkserver_preload() would crash the
+  forkserver process if a preloaded module instantiated some multiprocessing
+  objects such as locks.
+
+- bpo-28847: dbm.dumb now supports reading read-only files and no longer
+  writes the index file when it is not changed.
+
+- bpo-26937: The chown() method of the tarfile.TarFile class does not fail
+  now when the grp module cannot be imported, as for example on Android
+  platforms.
+
+IDLE
+----
+
+- bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
+
+- bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and
+  augment description of the configuration system.
+
+Windows
+-------
+
+- bpo-29579: Removes readme.txt from the installer
+
+- bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev)
+
+- bpo-28164: Correctly handle special console filenames (patch by Eryk Sun)
+
+- bpo-29409: Implement :pep:`529` for io.FileIO (Patch by Eryk Sun)
+
+- bpo-29392: Prevent crash when passing invalid arguments into msvcrt
+  module.
+
+- bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
+
+- bpo-28896: Deprecate WindowsRegistryFinder and disable it by default.
+
+C API
+-----
+
+- bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if
+  Py_LIMITED_API is not set or set to the value between 0x03050400 and
+  0x03060000 (not including) or 0x03060100 or higher.
+
+- bpo-29083: Fixed the declaration of some public API functions.
+  PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
+  limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
+  Py_BuildValue() were not available in limited API of version < 3.3 when
+  PY_SSIZE_T_CLEAN is defined.
+
+- bpo-29058: All stable API extensions added after Python 3.2 are now
+  available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
+  the minimum Python version supporting this API.
+
+Documentation
+-------------
+
+- bpo-28929: Link the documentation to its source file on GitHub.
+
+- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
+  to aiosmtpd, a third-party asyncio-based replacement.
+
+- bpo-26355: Add canonical header link on each page to corresponding major
+  version of the documentation. Patch by Matthias Bussonnier.
+
+- bpo-29349: Fix Python 2 syntax in code for building the documentation.
+
+Tests
+-----
+
+- bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip
+  some tests of select.poll when running on macOS due to unresolved issues
+  with the underlying system poll function on some macOS versions.
+
+- bpo-29571: to match the behaviour of the ``re.LOCALE`` flag,
+  test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)``
+  to determine the candidate encoding for the test regex (allowing it to
+  correctly skip the test when the default locale encoding is a multi-byte
+  encoding)
+
+- bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line
+  arguments.
+
+- bpo-28683: Fix the tests that bind() a unix socket and raise
+  PermissionError on Android for a non-root user.
+
+- bpo-26939: Add the support.setswitchinterval() function to fix
+  test_functools hanging on the Android armv7 qemu emulator.
+
+Build
+-----
+
+- bpo-27593: sys.version and the platform module python_build(),
+  python_branch(), and python_revision() functions now use git information
+  rather than hg when building from a repo.
+
+- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
+
+- bpo-26851: Set Android compilation and link flags.
+
+- bpo-28768: Fix implicit declaration of function _setmode. Patch by
+  Masayuki Yamamoto
+
+- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
+
+- bpo-23903: Added missed names to PC/python3.def.
+
+- bpo-28762: lockf() is available on Android API level 24, but the F_LOCK
+  macro is not defined in android-ndk-r13.
+
+- bpo-28538: Fix the compilation error that occurs because if_nameindex() is
+  available on Android API level 24, but the if_nameindex structure is not
+  defined.
+
+- bpo-20211: Do not add the directory for installing C header files and the
+  directory for installing object code libraries to the cross compilation
+  search paths. Original patch by Thomas Petazzoni.
+
+- bpo-28849: Do not define sys.implementation._multiarch on Android.
+
+
+What's New in Python 3.6.0 final?
+=================================
+
+*Release date: 2016-12-23*
+
+No changes since release candidate 2
+
+
+
+What's New in Python 3.6.0 release candidate 2?
+===============================================
+
+*Release date: 2016-12-16*
+
+Core and Builtins
+-----------------
+
+- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
+  not convert combined table into split table. Patch written by INADA Naoki.
+
+- bpo-28990: Fix asyncio SSL hanging if connection is closed before
+  handshake is completed. (Patch by HoHo-Ho)
+
+Tools/Demos
+-----------
+
+- bpo-28770: Fix python-gdb.py for fastcalls.
+
+Windows
+-------
+
+- bpo-28896: Deprecate WindowsRegistryFinder.
+
+Build
+-----
+
+- bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition.
+
+
+What's New in Python 3.6.0 release candidate 1?
+===============================================
+
+*Release date: 2016-12-06*
+
+Core and Builtins
+-----------------
+
+- bpo-23722: Rather than silently producing a class that doesn't support
+  zero-argument ``super()`` in methods, failing to pass the new
+  ``__classcell__`` namespace entry up to ``type.__new__`` now results in a
+  ``DeprecationWarning`` and a class that supports zero-argument
+  ``super()``.
+
+- bpo-28797: Modifying the class __dict__ inside the __set_name__ method of
+  a descriptor that is used inside that class no longer prevents calling the
+  __set_name__ method of other descriptors.
+
+- bpo-28782: Fix a bug in the implementation ``yield from`` when checking if
+  the next instruction is YIELD_FROM. Regression introduced by WORDCODE
+  (issue #26647).
+
+Library
+-------
+
+- bpo-27030: Unknown escapes in re.sub() replacement template are allowed
+  again.  But they still are deprecated and will be disabled in 3.7.
+
+- bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call
+  warnings.showwarning() if it was overridden inside the context manager.
+
+- bpo-27172: To assist with upgrades from 2.7, the previously documented
+  deprecation of ``inspect.getfullargspec()`` has been reversed. This
+  decision may be revisited again after the Python 2.7 branch is no longer
+  officially supported.
+
+- bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
+  :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
+  Omar Sandoval.
+
+- bpo-24142: Reading a corrupt config file left configparser in an invalid
+  state. Original patch by Florian Höch.
+
+- bpo-28843: Fix asyncio C Task to handle exceptions __traceback__.
+
+C API
+-----
+
+- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
+
+Documentation
+-------------
+
+- bpo-23722: The data model reference and the porting section in the What's
+  New guide now cover the additional ``__classcell__`` handling needed for
+  custom metaclasses to fully support :pep:`487` and zero-argument
+  ``super()``.
+
+Tools/Demos
+-----------
+
+- bpo-28023: Fix python-gdb.py didn't support new dict implementation.
+
+
+What's New in Python 3.6.0 beta 4?
+==================================
+
+*Release date: 2016-11-21*
+
+Core and Builtins
+-----------------
+
+- bpo-28532: Show sys.version when -V option is supplied twice.
+
+- bpo-27100: The with-statement now checks for __enter__ before it checks
+  for __exit__. This gives less confusing error messages when both methods
+  are missing. Patch by Jonathan Ellington.
+
+- bpo-28746: Fix the set_inheritable() file descriptor method on platforms
+  that do not have the ioctl FIOCLEX and FIONCLEX commands.
+
+- bpo-26920: Fix not getting the locale's charset upon initializing the
+  interpreter, on platforms that do not have langinfo.
+
+- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
+  when decode astral characters.  Patch by Xiang Zhang.
+
+- bpo-19398: Extra slash no longer added to sys.path components in case of
+  empty compile-time PYTHONPATH components.
+
+- bpo-28665: Improve speed of the STORE_DEREF opcode by 40%.
+
+- bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch
+  by Xiang Zhang.
+
+- bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it
+  was agreed in the issue, __aiter__ returning an awaitable should result in
+  PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6.
+
+- bpo-26182: Fix a refleak in code that raises DeprecationWarning.
+
+- bpo-28721: Fix asynchronous generators aclose() and athrow() to handle
+  StopAsyncIteration propagation properly.
+
+Library
+-------
+
+- bpo-28752: Restored the __reduce__() methods of datetime objects.
+
+- bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created
+  by re.compile(), become comparable (only x==y and x!=y operators). This
+  change should fix the issue #18383: don't duplicate warning filters when
+  the warnings module is reloaded (thing usually only done in unit tests).
+
+- bpo-20572: The subprocess.Popen.wait method's undocumented endtime
+  parameter now raises a DeprecationWarning.
+
+- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
+  from_buffer_copy() methods on abstract classes like Array.
+
+- bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch
+  by Vajrasky Kok
+
+- bpo-28563: Fixed possible DoS and arbitrary code execution when handle
+  plural form selections in the gettext module.  The expression parser now
+  supports exact syntax supported by GNU gettext.
+
+- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
+  garbage collector is invoked in other thread.  Based on patch by Sebastian
+  Cufre.
+
+- bpo-28600: Optimize loop.call_soon.
+
+- bpo-28613: Fix get_event_loop() return the current loop if called from
+  coroutines/callbacks.
+
+- bpo-28634: Fix asyncio.isfuture() to support unittest.Mock.
+
+- bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw.
+
+- bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin
+  Mayfield.
+
+- bpo-28652: Make loop methods reject socket kinds they do not support.
+
+- bpo-28653: Fix a refleak in functools.lru_cache.
+
+- bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
+
+- bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519).
+
+- bpo-28720: Add collections.abc.AsyncGenerator.
+
+Documentation
+-------------
+
+- bpo-28513: Documented command-line interface of zipfile.
+
+Tests
+-----
+
+- bpo-28666: Now test.support.rmtree is able to remove unwritable or
+  unreadable directories.
+
+- bpo-23839: Various caches now are cleared before running every test file.
+
+Build
+-----
+
+- bpo-10656: Fix out-of-tree building on AIX.  Patch by Tristan Carel and
+  Michael Haubenwallner.
+
+- bpo-26359: Rename --with-optimiations to --enable-optimizations.
+
+- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
+  Patch by Gareth Rees.
+
+
+What's New in Python 3.6.0 beta 3?
+==================================
+
+*Release date: 2016-10-31*
+
+Core and Builtins
+-----------------
+
+- bpo-28128: Deprecation warning for invalid str and byte escape sequences
+  now prints better information about where the error occurs. Patch by
+  Serhiy Storchaka and Eric Smith.
+
+- bpo-28509: dict.update() no longer allocate unnecessary large memory.
+
+- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
+  build.
+
+- bpo-28517: Fixed of-by-one error in the peephole optimizer that caused
+  keeping unreachable code.
+
+- bpo-28214: Improved exception reporting for problematic __set_name__
+  attributes.
+
+- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
+  loss in PyTraceBack_Here().
+
+- bpo-28471: Fix "Python memory allocator called without holding the GIL"
+  crash in socket.setblocking.
+
+Library
+-------
+
+- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
+  given empty data twice.  Patch by Benjamin Fogle.
+
+- bpo-28549: Fixed segfault in curses's addch() with ncurses6.
+
+- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
+  file with compression before trying to open it without compression.
+  Otherwise it had 50% chance failed with ignore_zeros=True.
+
+- bpo-23262: The webbrowser module now supports Firefox 36+ and derived
+  browsers.  Based on patch by Oleg Broytman.
+
+- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
+  by representing the scale as float value internally in Tk.  tkinter.IntVar
+  now works if float value is set to underlying Tk variable.
+
+- bpo-18844: The various ways of specifying weights for random.choices() now
+  produce the same result sequences.
+
+- bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at
+  the start of new line after printing a month's calendar.  Patch by Xiang
+  Zhang.
+
+- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
+  Based on patch by Kaarle Ritvanen.
+
+- bpo-28353: os.fwalk() no longer fails on broken links.
+
+- bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept
+  non-None value is passed to it.send(val).
+
+- bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix
+  for readability.
+
+- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
+  workaround to Tix library bug.
+
+- bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
+
+- bpo-25953: re.sub() now raises an error for invalid numerical group
+  reference in replacement template even if the pattern is not found in the
+  string.  Error message for invalid group reference now includes the group
+  index and the position of the reference. Based on patch by SilentGhost.
+
+- bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by
+  Mariatta Wijaya.
+
+- bpo-28448: Fix C implemented asyncio.Future didn't work on Windows.
+
+- bpo-28480: Fix error building socket module when multithreading is
+  disabled.
+
+- bpo-24452: Make webbrowser support Chrome on Mac OS X.
+
+- bpo-20766: Fix references leaked by pdb in the handling of SIGINT
+  handlers.
+
+- bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future.
+
+- bpo-28500: Fix asyncio to handle async gens GC from another thread.
+
+- bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children
+  are done. Patch by Johannes Ebke.
+
+- bpo-26796: Don't configure the number of workers for default threadpool
+  executor. Initial patch by Hans Lawrenz.
+
+- bpo-28544: Implement asyncio.Task in C.
+
+Windows
+-------
+
+- bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
+
+Build
+-----
+
+- bpo-28444: Fix missing extensions modules when cross compiling.
+
+- bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
+
+- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
+
+Tests
+-----
+
+- bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or
+  missing the effective gid.
+
+- bpo-28409: regrtest: fix the parser of command line arguments.
+
+
+What's New in Python 3.6.0 beta 2?
+==================================
+
+*Release date: 2016-10-10*
+
+Core and Builtins
+-----------------
+
+- bpo-28183: Optimize and cleanup dict iteration.
+
+- bpo-26081: Added C implementation of asyncio.Future. Original patch by
+  Yury Selivanov.
+
+- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
+  Patch by Xiang Zhang.
+
+- bpo-28376: The type of long range iterator is now registered as Iterator.
+  Patch by Oren Milman.
+
+- bpo-28376: Creating instances of range_iterator by calling range_iterator
+  type now is deprecated.  Patch by Oren Milman.
+
+- bpo-28376: The constructor of range_iterator now checks that step is not
+  0. Patch by Oren Milman.
+
+- bpo-26906: Resolving special methods of uninitialized type now causes
+  implicit initialization of the type instead of a fail.
+
+- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
+  patch by Niklas Koep.
+
+- bpo-24098: Fixed possible crash when AST is changed in process of
+  compiling it.
+
+- bpo-28201: Dict reduces possibility of 2nd conflict in hash table when
+  hashes have same lower bits.
+
+- bpo-28350: String constants with null character no longer interned.
+
+- bpo-26617: Fix crash when GC runs during weakref callbacks.
+
+- bpo-27942: String constants now interned recursively in tuples and
+  frozensets.
+
+- bpo-21578: Fixed misleading error message when ImportError called with
+  invalid keyword args.
+
+- bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch
+  by Soumya Sharma.
+
+- bpo-28086: Single var-positional argument of tuple subtype was passed
+  unscathed to the C-defined function.  Now it is converted to exact tuple.
+
+- bpo-28214: Now __set_name__ is looked up on the class instead of the
+  instance.
+
+- bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
+  syscall fails with EPERM, for example when blocked by SECCOMP.
+
+- bpo-28192: Don't import readline in isolated mode.
+
+- Upgrade internal unicode databases to Unicode version 9.0.0.
+
+- bpo-28131: Fix a regression in zipimport's compile_source().  zipimport
+  should use the same optimization level as the interpreter.
+
+- bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
+  optimize memcpy().
+
+- bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a
+  "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.
+
+- bpo-26182: Raise DeprecationWarning when async and await keywords are used
+  as variable/attribute/class/function name.
+
+Library
+-------
+
+- bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by
+  Eryk Sun.
+
+- bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
+
+- bpo-26293: Fixed writing ZIP files that starts not from the start of the
+  file.  Offsets in ZIP file now are relative to the start of the archive in
+  conforming to the specification.
+
+- bpo-28380: unittest.mock Mock autospec functions now properly support
+  assert_called, assert_not_called, and assert_called_once.
+
+- bpo-27181: remove statistics.geometric_mean and defer until 3.7.
+
+- bpo-28229: lzma module now supports pathlib.
+
+- bpo-28321: Fixed writing non-BMP characters with binary format in
+  plistlib.
+
+- bpo-28225: bz2 module now supports pathlib.  Initial patch by Ethan
+  Furman.
+
+- bpo-28227: gzip now supports pathlib.  Patch by Ethan Furman.
+
+- bpo-27358: Optimized merging var-keyword arguments and improved error
+  message when passing a non-mapping as a var-keyword argument.
+
+- bpo-28257: Improved error message when passing a non-iterable as a
+  var-positional argument.  Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
+
+- bpo-28322: Fixed possible crashes when unpickle itertools objects from
+  incorrect pickle data.  Based on patch by John Leitch.
+
+- bpo-28228: imghdr now supports pathlib.
+
+- bpo-28226: compileall now supports pathlib.
+
+- bpo-28314: Fix function declaration (C flags) for the getiterator() method
+  of xml.etree.ElementTree.Element.
+
+- bpo-28148: Stop using localtime() and gmtime() in the time module.
+  Introduced platform independent _PyTime_localtime API that is similar to
+  POSIX localtime_r, but available on all platforms.  Patch by Ed Schouten.
+
+- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
+  9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so
+  that they don't call itermonthdates() which can cause datetime.date
+  under/overflow.
+
+- bpo-28275: Fixed possible use after free in the decompress() methods of
+  the LZMADecompressor and BZ2Decompressor classes. Original patch by John
+  Leitch.
+
+- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
+  if pass invalid string-like object as a name.  Patch by Xiang Zhang.
+
+- bpo-18844: random.choices() now has k as a keyword-only argument to
+  improve the readability of common cases and come into line with the
+  signature used in other languages.
+
+- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
+  Patch by Madison May.
+
+- bpo-27611: Fixed support of default root window in the tkinter.tix module.
+  Added the master parameter in the DisplayStyle constructor.
+
+- bpo-27348: In the traceback module, restore the formatting of exception
+  messages like "Exception: None".  This fixes a regression introduced in
+  3.5a2.
+
+- bpo-25651: Allow falsy values to be used for msg parameter of subTest().
+
+- bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is
+  interrupted by a signal and a signal handler raises a Python exception.
+
+- bpo-28200: Fix memory leak on Windows in the os module (fix
+  path_converter() function).
+
+- bpo-25400: RobotFileParser now correctly returns default values for
+  crawl_delay and request_rate.  Initial patch by Peter Wirtz.
+
+- bpo-27932: Prevent memory leak in win32_ver().
+
+- Fix UnboundLocalError in socket._sendfile_use_sendfile.
+
+- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
+  os.stat().  Patch by Eryk Sun.
+
+- bpo-22493: Warning message emitted by using inline flags in the middle of
+  regular expression now contains a (truncated) regex pattern. Patch by Tim
+  Graham.
+
+- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
+  empty bytestring is passed.
+
+- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
+
+- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
+  Gergely Imreh and Markus Holtermann.
+
+- bpo-28114: Fix a crash in parse_envlist() when env contains byte strings.
+  Patch by Eryk Sun.
+
+- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
+  binascii.a2b_qp().
+
+- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
+  Kevin Conway.
+
+- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
+  Seth Michael Larson.
+
+- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
+  iceboy.
+
+- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
+
+- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
+
+- bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
+  Patch by Mark Williams.
+
+- bpo-28368: Refuse monitoring processes if the child watcher has no loop
+  attached. Patch by Vincent Michel.
+
+- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
+  add_writer, etc.
+
+- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
+  Марк.
+
+- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
+
+- bpo-28372: Fix asyncio to support formatting of non-python coroutines.
+
+- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
+  Марк.
+
+- bpo-27972: Prohibit Tasks to await on themselves.
+
+Windows
+-------
+
+- bpo-28402: Adds signed catalog files for stdlib on Windows.
+
+- bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk
+  Sun)
+
+- bpo-28251: Improvements to help manuals on Windows.
+
+- bpo-28110: launcher.msi has different product codes between 32-bit and
+  64-bit
+
+- bpo-28161: Opening CON for write access fails
+
+- bpo-28162: WindowsConsoleIO readall() fails if first line starts with
+  Ctrl+Z
+
+- bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
+
+- bpo-28164: _PyIO_get_console_type fails for various paths
+
+- bpo-28137: Renames Windows path file to ._pth
+
+- bpo-28138: Windows ._pth file should allow import site
+
+C API
+-----
+
+- bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
+  PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
+  PyUnicode_AsEncodedUnicode().
+
+Build
+-----
+
+- bpo-28258: Fixed build with Estonian locale (python-config and distclean
+  targets in Makefile).  Patch by Arfrever Frehtes Taifersar Arahesis.
+
+- bpo-26661: setup.py now detects system libffi with multiarch wrapper.
+
+- bpo-15819: Remove redundant include search directory option for building
+  outside the source tree.
+
+Tests
+-----
+
+- bpo-28217: Adds _testconsole module to test console input.
+
+
+What's New in Python 3.6.0 beta 1?
+==================================
+
+*Release date: 2016-09-12*
+
+Core and Builtins
+-----------------
+
+- bpo-23722: The __class__ cell used by zero-argument super() is now
+  initialized from type.__new__ rather than __build_class__, so class
+  methods relying on that will now work correctly when called from metaclass
+  methods during class creation. Patch by Martin Teichmann.
+
+- bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is
+  compiled with NSMALLPOSINTS = 0.
+
+- bpo-27080: Implement formatting support for :pep:`515`.  Initial patch by
+  Chris Angelico.
+
+- bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput.
+  Patch by Jason Fried.
+
+- bpo-27948: In f-strings, only allow backslashes inside the braces (where
+  the expressions are).  This is a breaking change from the 3.6 alpha
+  releases, where backslashes are allowed anywhere in an f-string.  Also,
+  require that expressions inside f-strings be enclosed within literal
+  braces, and not escapes like ``f'\x7b"hi"\x7d'``.
+
+- bpo-28046: Remove platform-specific directories from sys.path.
+
+- bpo-28071: Add early-out for differencing from an empty set.
+
+- bpo-25758: Prevents zipimport from unnecessarily encoding a filename
+  (patch by Eryk Sun)
+
+- bpo-25856: The __module__ attribute of extension classes and functions now
+  is interned. This leads to more compact pickle data with protocol 4.
+
+- bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more
+  efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka,
+  reviewed by Serhiy Storchaka and Victor Stinner.
+
+- bpo-26331: Implement tokenizing support for :pep:`515`. Patch by Georg
+  Brandl.
+
+- bpo-27999: Make "global after use" a SyntaxError, and ditto for nonlocal.
+  Patch by Ivan Levkivskyi.
+
+- bpo-28003: Implement :pep:`525` -- Asynchronous Generators.
+
+- bpo-27985: Implement :pep:`526` -- Syntax for Variable Annotations. Patch
+  by Ivan Levkivskyi.
+
+- bpo-26058: Add a new private version to the builtin dict type, incremented
+  at each dictionary creation and at each dictionary change. Implementation
+  of the PEP 509.
+
+- bpo-27364: A backslash-character pair that is not a valid escape sequence
+  now generates a DeprecationWarning.  Patch by Emanuel Barry.
+
+- bpo-27350: `dict` implementation is changed like PyPy. It is more compact
+  and preserves insertion order. (Concept developed by Raymond Hettinger and
+  patch by Inada Naoki.)
+
+- bpo-27911: Remove unnecessary error checks in
+  ``exec_builtin_or_dynamic()``.
+
+- bpo-27078: Added BUILD_STRING opcode.  Optimized f-strings evaluation.
+
+- bpo-17884: Python now requires systems with inttypes.h and stdint.h
+
+- bpo-27961: Require platforms to support ``long long``. Python hasn't
+  compiled without ``long long`` for years, so this is basically a
+  formality.
+
+- bpo-27355: Removed support for Windows CE.  It was never finished, and
+  Windows CE is no longer a relevant platform for Python.
+
+- Implement :pep:`523`.
+
+- bpo-27870: A left shift of zero by a large integer no longer attempts to
+  allocate large amounts of memory.
+
+- bpo-25402: In int-to-decimal-string conversion, improve the estimate of
+  the intermediate memory required, and remove an unnecessarily strict
+  overflow check. Patch by Serhiy Storchaka.
+
+- bpo-27214: In long_invert, be more careful about modifying object returned
+  by long_add, and remove an unnecessary check for small longs. Thanks Oren
+  Milman for analysis and patch.
+
+- bpo-27506: Support passing the bytes/bytearray.translate() "delete"
+  argument by keyword.
+
+- bpo-27812: Properly clear out a generator's frame's backreference to the
+  generator to prevent crashes in frame.clear().
+
+- bpo-27811: Fix a crash when a coroutine that has not been awaited is
+  finalized with warnings-as-errors enabled.
+
+- bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after
+  use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes.
+
+- bpo-27792: The modulo operation applied to ``bool`` and other ``int``
+  subclasses now always returns an ``int``. Previously the return type
+  depended on the input values. Patch by Xiang Zhang.
+
+- bpo-26984: int() now always returns an instance of exact int.
+
+- bpo-25604: Fix a minor bug in integer true division; this bug could
+  potentially have caused off-by-one-ulp results on platforms with
+  unreliable ldexp implementations.
+
+- bpo-24254: Make class definition namespace ordered by default.
+
+- bpo-27662: Fix an overflow check in ``List_New``: the original code was
+  checking against ``Py_SIZE_MAX`` instead of the correct upper bound of
+  ``Py_SSIZE_T_MAX``. Patch by Xiang Zhang.
+
+- bpo-27782: Multi-phase extension module import now correctly allows the
+  ``m_methods`` field to be used to add module level functions to instances
+  of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.
+
+- bpo-27936: The round() function accepted a second None argument for some
+  types but not for others.  Fixed the inconsistency by accepting None for
+  all numeric types.
+
+- bpo-27487: Warn if a submodule argument to "python -m" or
+  runpy.run_module() is found in sys.modules after parent packages are
+  imported, but before the submodule is executed.
+
+- bpo-27157: Make only type() itself accept the one-argument form. Patch by
+  Eryk Sun and Emanuel Barry.
+
+- bpo-27558: Fix a SystemError in the implementation of "raise" statement.
+  In a brand new thread, raise a RuntimeError since there is no active
+  exception to reraise. Patch written by Xiang Zhang.
+
+- bpo-28008: Implement :pep:`530` -- asynchronous comprehensions.
+
+- bpo-27942: Fix memory leak in codeobject.c
+
+Library
+-------
+
+- bpo-28732: Fix crash in os.spawnv() with no elements in args
+
+- bpo-28485: Always raise ValueError for negative
+  compileall.compile_dir(workers=...) parameter, even when multithreading is
+  unavailable.
+
+- bpo-28037: Use sqlite3_get_autocommit() instead of setting
+  Connection->inTransaction manually.
+
+- bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all
+  platforms in the return values of time.localtime() and time.gmtime().
+
+- bpo-24454: Regular expression match object groups are now accessible using
+  __getitem__. "mo[x]" is equivalent to "mo.group(x)".
+
+- bpo-10740: sqlite3 no longer implicitly commit an open transaction before
+  DDL statements.
+
+- bpo-17941: Add a *module* parameter to collections.namedtuple().
+
+- bpo-22493: Inline flags now should be used only at the start of the
+  regular expression. Deprecation warning is emitted if uses them in the
+  middle of the regular expression.
+
+- bpo-26885: xmlrpc now supports unmarshalling additional data types used by
+  Apache XML-RPC implementation for numerics and None.
+
+- bpo-28070: Fixed parsing inline verbose flag in regular expressions.
+
+- bpo-19500: Add client-side SSL session resumption to the ssl module.
+
+- bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The
+  deprecation include manual creation of SSLSocket and certfile/keyfile (or
+  similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib.
+
+- bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2,
+  OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE,
+  OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5.
+
+- bpo-24693: Changed some RuntimeError's in the zipfile module to more
+  appropriate types. Improved some error messages and debugging output.
+
+- bpo-17909: ``json.load`` and ``json.loads`` now support binary input
+  encoded as UTF-8, UTF-16 or UTF-32. Patch by Serhiy Storchaka.
+
+- bpo-27137: the pure Python fallback implementation of
+  ``functools.partial`` now matches the behaviour of its accelerated C
+  counterpart for subclassing, pickling and text representation purposes.
+  Patch by Emanuel Barry and Serhiy Storchaka.
+
+- Fix possible integer overflows and crashes in the mmap module with unusual
+  usage patterns.
+
+- bpo-1703178: Fix the ability to pass the --link-objects option to the
+  distutils build_ext command.
+
+- bpo-28019: itertools.count() no longer rounds non-integer step in range
+  between 1.0 and 2.0 to 1.
+
+- bpo-18401: Pdb now supports the 'readrc' keyword argument to control
+  whether .pdbrc files should be read.  Patch by Martin Matusiak and Sam
+  Kimbrel.
+
+- bpo-25969: Update the lib2to3 grammar to handle the unpacking
+  generalizations added in 3.5.
+
+- bpo-14977: mailcap now respects the order of the lines in the mailcap
+  files ("first match"), as required by RFC 1542.  Patch by Michael Lazar.
+
+- bpo-28082: Convert re flag constants to IntFlag.
+
+- bpo-28025: Convert all ssl module constants to IntEnum and IntFlags.
+  SSLContext properties now return flags and enums.
+
+- bpo-23591: Add Flag, IntFlag, and auto() to enum module.
+
+- bpo-433028: Added support of modifier spans in regular expressions.
+
+- bpo-24594: Validates persist parameter when opening MSI database
+
+- bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes
+  (Patch by Duane Griffin.  Reviewed and approved by Stefan Behnel.)
+
+- bpo-28047: Fixed calculation of line length used for the base64 CTE in the
+  new email policies.
+
+- bpo-27576: Fix call order in OrderedDict.__init__().
+
+- email.generator.DecodedGenerator now supports the policy keyword.
+
+- bpo-28027: Remove undocumented modules from ``Lib/plat-*``: IN, CDROM,
+  DLFCN, TYPES, CDIO, and STROPTS.
+
+- bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by
+  Claude Paroz.
+
+- bpo-24277: The new email API is no longer provisional, and the docs have
+  been reorganized and rewritten to emphasize the new API.
+
+- bpo-22450: urllib now includes an ``Accept: */*`` header among the default
+  headers. This makes the results of REST API requests more consistent and
+  predictable especially when proxy servers are involved.
+
+- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
+  between runs given the same Grammar.txt input regardless of the hash
+  randomization setting.
+
+- bpo-28005: Allow ImportErrors in encoding implementation to propagate.
+
+- bpo-26667: Support path-like objects in importlib.util.
+
+- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
+  in the "ctypes" and "array" modules.
+
+- bpo-22233: Break email header lines *only* on the RFC specified CR and LF
+  characters, not on arbitrary unicode line breaks.  This also fixes a bug
+  in HTTP header parsing.
+
+- bpo-27331: The email.mime classes now all accept an optional policy
+  keyword.
+
+- bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
+
+- bpo-16113: Add SHA-3 and SHAKE support to hashlib module.
+
+- Eliminate a tautological-pointer-compare warning in _scproxy.c.
+
+- bpo-27776: The :func:`os.urandom` function does now block on Linux 3.17
+  and newer until the system urandom entropy pool is initialized to increase
+  the security. This change is part of the :pep:`524`.
+
+- bpo-27778: Expose the Linux ``getrandom()`` syscall as a new
+  :func:`os.getrandom` function. This change is part of the :pep:`524`.
+
+- bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name
+  fields in X.509 certs.
+
+- bpo-18844: Add random.choices().
+
+- bpo-25761: Improved error reporting about truncated pickle data in C
+  implementation of unpickler.  UnpicklingError is now raised instead of
+  AttributeError and ValueError in some cases.
+
+- bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib.
+
+- bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now
+  about 1.5--4 times faster.
+
+- bpo-25596: Optimized glob() and iglob() functions in the glob module; they
+  are now about 3--6 times faster.
+
+- bpo-27928: Add scrypt (password-based key derivation function) to hashlib
+  module (requires OpenSSL 1.1.0).
+
+- bpo-27850: Remove 3DES from ssl module's default cipher list to counter
+  measure sweet32 attack (CVE-2016-2183).
+
+- bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list.
+  (Required OpenSSL 1.1.0 or LibreSSL).
+
+- bpo-25387: Check return value of winsound.MessageBeep.
+
+- bpo-27866: Add SSLContext.get_ciphers() method to get a list of all
+  enabled ciphers.
+
+- bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module.
+
+- bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
+
+- bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound.  Based on a
+  patch by Tim Lesher.
+
+- bpo-11734: Add support for IEEE 754 half-precision floats to the struct
+  module. Based on a patch by Eli Stevens.
+
+- bpo-27919: Deprecated ``extra_path`` distribution option in distutils
+  packaging.
+
+- bpo-23229: Add new ``cmath`` constants: ``cmath.inf`` and ``cmath.nan`` to
+  match ``math.inf`` and ``math.nan``, and also ``cmath.infj`` and
+  ``cmath.nanj`` to match the format used by complex repr.
+
+- bpo-27842: The csv.DictReader now returns rows of type OrderedDict.
+  (Contributed by Steve Holden.)
+
+- Remove support for passing a file descriptor to os.access. It never worked
+  but previously didn't raise.
+
+- bpo-12885: Fix error when distutils encounters symlink.
+
+- bpo-27881: Fixed possible bugs when setting
+  sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
+
+- bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
+  creates not a cursor.  Patch by Xiang Zhang.
+
+- bpo-19884: Avoid spurious output on OS X with Gnu Readline.
+
+- bpo-27706: Restore deterministic behavior of random.Random().seed() for
+  string seeds using seeding version 1.  Allows sequences of calls to
+  random() to exactly match those obtained in Python 2. Patch by Nofar
+  Schnider.
+
+- bpo-10513: Fix a regression in Connection.commit().  Statements should not
+  be reset after a commit.
+
+- bpo-12319: Chunked transfer encoding support added to
+  http.client.HTTPConnection requests.  The
+  urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
+  header any more.  If a HTTP request has a file or iterable body, but no
+  Content-Length header, the library now falls back to use chunked
+  transfer-encoding.
+
+- A new version of typing.py from https://github.com/python/typing: -
+  Collection (only for 3.6) (Issue #27598) - Add FrozenSet to __all__
+  (upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove
+  the dict constraint in ForwardRef._eval_type (upstream #252)
+
+- bpo-27832: Make ``_normalize`` parameter to ``Fraction`` constructor
+  keyword-only, so that ``Fraction(2, 3, 4)`` now raises ``TypeError``.
+
+- bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of
+  negative exponent and negative base.
+
+- bpo-21718: cursor.description is now available for queries using CTEs.
+
+- bpo-27819: In distutils sdists, simply produce the "gztar" (gzipped tar
+  format) distributions on all platforms unless "formats" is supplied.
+
+- bpo-2466: posixpath.ismount now correctly recognizes mount points which
+  the user does not have permission to access.
+
+- bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH
+  for shared libraries.
+
+- bpo-27573: exit message for code.interact is now configurable.
+
+- bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to
+  Paulo Andrade and Petr Viktorin for the analysis and patch.
+
+- bpo-6766: Distributed reference counting added to multiprocessing to
+  support nesting of shared values / proxy objects.
+
+- bpo-21201: Improves readability of multiprocessing error message.  Thanks
+  to Wojciech Walczak for patch.
+
+- asyncio: Add set_protocol / get_protocol to Transports.
+
+- bpo-27456: asyncio: Set TCP_NODELAY by default.
+
+IDLE
+----
+
+- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
+  Serwy, updated by Bayard Randel.
+
+- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
+
+- bpo-27891: Consistently group and sort imports within idlelib modules.
+
+- bpo-17642: add larger font sizes for classroom projection.
+
+- Add version to title of IDLE help window.
+
+- bpo-25564: In section on IDLE -- console differences, mention that using
+  exec means that __builtins__ is defined for each statement.
+
+- bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from
+  being selected when no custom theme was defined.
+
+C API
+-----
+
+- bpo-26900: Excluded underscored names and other private API from limited
+  API.
+
+- bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() &
+  PyUnicode_FSDecoder().
+
+Tests
+-----
+
+- bpo-27427: Additional tests for the math module. Patch by Francisco Couzo.
+
+- bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor
+  libm implementation of tan.
+
+- bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by
+  Jeff Allen.
+
+- bpo-27787: Call gc.collect() before checking each test for "dangling
+  threads", since the dangling threads are weak references.
+
+Build
+-----
+
+- bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
+
+- bpo-27705: Update message in validate_ucrtbase.py
+
+- bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on
+  non-OSX UNIX platforms.
+
+- bpo-27983: Cause lack of llvm-profdata tool when using clang as required
+  for PGO linking to be a configure time error rather than make time when
+  ``--with-optimizations`` is enabled.  Also improve our ability to find the
+  llvm-profdata tool on MacOS and some Linuxes.
+
+- bpo-21590: Support for DTrace and SystemTap probes.
+
+- bpo-26307: The profile-opt build now applies PGO to the built-in modules.
+
+- bpo-26359: Add the --with-optimizations flag to turn on LTO and PGO build
+  support when available.
+
+- bpo-27917: Set platform triplets for Android builds.
+
+- bpo-25825: Update references to the $(LIBPL) installation path on AIX.
+  This path was changed in 3.2a4.
+
+- Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2.
+
+- bpo-21122: Fix LTO builds on OS X.
+
+- bpo-17128: Build OS X installer with a private copy of OpenSSL. Also
+  provide a sample Install Certificates command script to install a set of
+  root certificates from the third-party certifi module.
+
+Tools/Demos
+-----------
+
+- bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the
+  current "re" module, avoid invalid Python backslash escapes, and fix a bug
+  parsing escaped C quote signs.
+
+Windows
+-------
+
+- bpo-28065: Update xz dependency to 5.2.2 and build it from source.
+
+- bpo-25144: Ensures TargetDir is set before continuing with custom install.
+
+- bpo-1602: Windows console doesn't input or print Unicode (PEP 528)
+
+- bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529)
+
+- bpo-27731: Opt-out of MAX_PATH on Windows 10
+
+- bpo-6135: Adds encoding and errors parameters to subprocess.
+
+- bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec
+  lookup.
+
+- bpo-27982: The functions of the winsound module now accept keyword
+  arguments.
+
+- bpo-20366: Build full text search support into SQLite on Windows.
+
+- bpo-27756: Adds new icons for Python files and processes on Windows.
+  Designs by Cherry Wang.
+
+- bpo-27883: Update sqlite to 3.14.1.0 on Windows.
+
+
+What's New in Python 3.6.0 alpha 4?
+===================================
+
+*Release date: 2016-08-15*
+
+Core and Builtins
+-----------------
+
+- bpo-27704: Optimized creating bytes and bytearray from byte-like objects
+  and iterables. Speed up to 3 times for short objects.  Original patch by
+  Naoki Inada.
+
+- bpo-26823: Large sections of repeated lines in tracebacks are now
+  abbreviated as "[Previous line repeated {count} more times]" by the
+  builtin traceback rendering. Patch by Emanuel Barry.
+
+- bpo-27574: Decreased an overhead of parsing keyword arguments in functions
+  implemented with using Argument Clinic.
+
+- bpo-22557: Now importing already imported modules is up to 2.5 times
+  faster.
+
+- bpo-17596: Include <wincrypt.h> to help with Min GW building.
+
+- bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER
+  structure to avoid conflicting with the definition from Min GW.
+
+- bpo-27507: Add integer overflow check in bytearray.extend().  Patch by
+  Xiang Zhang.
+
+- bpo-27581: Don't rely on wrapping for overflow check in
+  PySequence_Tuple().  Patch by Xiang Zhang.
+
+- bpo-1621: Avoid signed integer overflow in list and tuple operations.
+  Patch by Xiang Zhang.
+
+- bpo-27419: Standard __import__() no longer look up "__import__" in globals
+  or builtins for importing submodules or "from import".  Fixed a crash if
+  raise a warning about unabling to resolve package from __spec__ or
+  __package__.
+
+- bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
+
+- bpo-27514: Make having too many statically nested blocks a SyntaxError
+  instead of SystemError.
+
+- bpo-27366: Implemented :pep:`487` (Simpler customization of class
+  creation). Upon subclassing, the __init_subclass__ classmethod is called
+  on the base class. Descriptors are initialized with __set_name__ after
+  class creation.
+
+Library
+-------
+
+- bpo-26027: Add :pep:`519`/__fspath__() support to the os and os.path
+  modules. Includes code from Jelle Zijlstra. (See also: bpo-27524)
+
+- bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi,
+  docs by Neil Girdhar.
+
+- bpo-25958: Support "anti-registration" of special methods from various
+  ABCs, like __hash__, __iter__ or __len__.  All these (and several more)
+  can be set to None in an implementation class and the behavior will be as
+  if the method is not defined at all. (Previously, this mechanism existed
+  only for __hash__, to make mutable classes unhashable.)  Code contributed
+  by Andrew Barnert and Ivan Levkivskyi.
+
+- bpo-16764: Support keyword arguments to zlib.decompress().  Patch by Xiang
+  Zhang.
+
+- bpo-27736: Prevent segfault after interpreter re-initialization due to ref
+  count problem introduced in code for Issue #27038 in 3.6.0a3. Patch by
+  Xiang Zhang.
+
+- bpo-25628: The *verbose* and *rename* parameters for
+  collections.namedtuple are now keyword-only.
+
+- bpo-12345: Add mathematical constant tau to math and cmath. See also
+  :pep:`628`.
+
+- bpo-26823: traceback.StackSummary.format now abbreviates large sections of
+  repeated lines as "[Previous line repeated {count} more times]" (this
+  change then further affects other traceback display operations in the
+  module). Patch by Emanuel Barry.
+
+- bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the
+  ability to specify a thread name prefix.
+
+- bpo-27181: Add geometric_mean and harmonic_mean to statistics module.
+
+- bpo-27573: code.interact now prints an message when exiting.
+
+- bpo-6422: Add autorange method to timeit.Timer objects.
+
+- bpo-27773: Correct some memory management errors server_hostname in
+  _ssl.wrap_socket().
+
+- bpo-26750: unittest.mock.create_autospec() now works properly for
+  subclasses of property() and other data descriptors.  Removes the never
+  publicly used, never documented unittest.mock.DescriptorTypes tuple.
+
+- bpo-26754: Undocumented support of general bytes-like objects as path in
+  compile() and similar functions is now deprecated.
+
+- bpo-26800: Undocumented support of general bytes-like objects as paths in
+  os functions is now deprecated.
+
+- bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code
+  bases.
+
+- bpo-27661: Added tzinfo keyword argument to datetime.combine.
+
+- In the curses module, raise an error if window.getstr() or window.instr()
+  is passed a negative value.
+
+- bpo-27783: Fix possible usage of uninitialized memory in
+  operator.methodcaller.
+
+- bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
+
+- bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
+
+- bpo-27758: Fix possible integer overflow in the _csv module for large
+  record lengths.
+
+- bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
+  HTTP_PROXY variable when REQUEST_METHOD environment is set, which
+  indicates that the script is in CGI mode.
+
+- bpo-7063: Remove dead code from the "array" module's slice handling. Patch
+  by Chuck.
+
+- bpo-27656: Do not assume sched.h defines any SCHED_* constants.
+
+- bpo-27130: In the "zlib" module, fix handling of large buffers (typically
+  4 GiB) when compressing and decompressing.  Previously, inputs were
+  limited to 4 GiB, and compression and decompression operations did not
+  properly handle results of 4 GiB.
+
+- bpo-24773: Implemented :pep:`495` (Local Time Disambiguation).
+
+- Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select
+  module.
+
+- bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select
+  module.
+
+- bpo-1621: Avoid signed int negation overflow in the "audioop" module.
+
+- bpo-27533: Release GIL in nt._isdir
+
+- bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original
+  patch by Alexandre Vassalotti.
+
+- bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
+
+- bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method
+  that raised an exception. Patch by Xiang Zhang.
+
+IDLE
+----
+
+- bpo-27714: text_textview and test_autocomplete now pass when re-run in the
+  same process.  This occurs when test_idle fails when run with the -w
+  option but without -jn.  Fix warning from test_config.
+
+- bpo-27621: Put query response validation error messages in the query box
+  itself instead of in a separate messagebox.  Redo tests to match. Add Mac
+  OSX refinements. Original patch by Mark Roseman.
+
+- bpo-27620: Escape key now closes Query box as cancelled.
+
+- bpo-27609: IDLE: tab after initial whitespace should tab, not
+  autocomplete. This fixes problem with writing docstrings at least twice
+  indented.
+
+- bpo-27609: Explicitly return None when there are also non-None returns. In
+  a few cases, reverse a condition and eliminate a return.
+
+- bpo-25507: IDLE no longer runs buggy code because of its tkinter imports.
+  Users must include the same imports required to run directly in Python.
+
+- bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the
+  default key set depend on the platform. Add tests for the changes to the
+  config module.
+
+- bpo-27452: add line counter and crc to IDLE configHandler test dump.
+
+Tests
+-----
+
+- bpo-25805: Skip a test in test_pkgutil as needed that doesn't work when
+  ``__name__ == __main__``. Patch by SilentGhost.
+
+- bpo-27472: Add test.support.unix_shell as the path to the default shell.
+
+- bpo-27369: In test_pyexpat, avoid testing an error message detail that
+  changed in Expat 2.2.0.
+
+- bpo-27594: Prevent assertion error when running test_ast with coverage
+  enabled: ensure code object has a valid first line number. Patch suggested
+  by Ivan Levkivskyi.
+
+Windows
+-------
+
+- bpo-27647: Update bundled Tcl/Tk to 8.6.6.
+
+- bpo-27610: Adds :pep:`514` metadata to Windows installer
+
+- bpo-27469: Adds a shell extension to the launcher so that drag and drop
+  works correctly.
+
+- bpo-27309: Enables proper Windows styles in python[w].exe manifest.
+
+Build
+-----
+
+- bpo-27713: Suppress spurious build warnings when updating importlib's
+  bootstrap files. Patch by Xiang Zhang
+
+- bpo-25825: Correct the references to Modules/python.exp, which is required
+  on AIX.  The references were accidentally changed in 3.5.0a1.
+
+- bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi
+  Hsuan Yen.
+
+- bpo-27641: The configure script now inserts comments into the makefile to
+  prevent the pgen and _freeze_importlib executables from being
+  cross-compiled.
+
+- bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be
+  used for file generation during the build.
+
+- bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update
+  FreedBSD version checks for the original ctype UTF-8 workaround.
+
+
+What's New in Python 3.6.0 alpha 3?
+===================================
+
+*Release date: 2016-07-11*
+
+Core and Builtins
+-----------------
+
+- bpo-27473: Fixed possible integer overflow in bytes and bytearray
+  concatenations. Patch by Xiang Zhang.
+
+- bpo-23034: The output of a special Python build with defined COUNT_ALLOCS,
+  SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by  default.  It
+  can be re-enabled using the "-X showalloccount" option.  It now outputs to
+  stderr instead of stdout.
+
+- bpo-27443: __length_hint__() of bytearray iterators no longer return a
+  negative integer for a resized bytearray.
+
+- bpo-27007: The fromhex() class methods of bytes and bytearray subclasses
+  now return an instance of corresponding subclass.
+
+Library
+-------
+
+- bpo-26844: Fix error message for imp.find_module() to refer to 'path'
+  instead of 'name'. Patch by Lev Maximov.
+
+- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
+  error about unclean EOF.
+
+- bpo-27466: Change time format returned by http.cookie.time2netscape,
+  confirming the netscape cookie format and making it consistent with
+  documentation.
+
+- bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm
+  behavior: creating a database in 'r' and 'w' modes and modifying a
+  database in 'r' mode.
+
+- bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to
+  implement BufferedIOBase. In particular, the write() method no longer does
+  partial writes.
+
+- bpo-22115: Added methods trace_add, trace_remove and trace_info in the
+  tkinter.Variable class.  They replace old methods trace_variable, trace,
+  trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not
+  work in future versions of Tcl.  Fixed old tracing methods:
+  trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now
+  always returns a list of pairs of strings, tracing in the "u" mode now
+  works.
+
+- bpo-26243: Only the level argument to zlib.compress() is keyword argument
+  now.  The first argument is positional-only.
+
+- bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle
+  Zijlstra.
+
+- bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of
+  __fspath__() to be either str or bytes.
+
+- bpo-18726: All optional parameters of the dump(), dumps(), load() and
+  loads() functions and JSONEncoder and JSONDecoder class constructors in
+  the json module are now keyword-only.
+
+- bpo-27319: Methods selection_set(), selection_add(), selection_remove()
+  and selection_toggle() of ttk.TreeView now allow passing multiple items as
+  multiple arguments instead of passing them as a tuple.  Deprecated
+  undocumented ability of calling the selection() method with arguments.
+
+- bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and
+  ispunct().
+
+- bpo-27294: Numerical state in the repr for Tkinter event objects is now
+  represented as a combination of known flags.
+
+- bpo-27177: Match objects in the re module now support index-like objects
+  as group indices.  Based on patches by Jeroen Demeyer and Xiang Zhang.
+
+- bpo-26754: Some functions (compile() etc) accepted a filename argument
+  encoded as an iterable of integers. Now only strings and byte-like objects
+  are accepted.
+
+- bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by
+  Daniel Stokes.
+
+- bpo-27048: Prevents distutils failing on Windows when environment
+  variables contain non-ASCII characters
+
+- bpo-27330: Fixed possible leaks in the ctypes module.
+
+- bpo-27238: Got rid of bare excepts in the turtle module.  Original patch
+  by Jelle Zijlstra.
+
+- bpo-27122: When an exception is raised within the context being managed by
+  a contextlib.ExitStack() and one of the exit stack generators catches and
+  raises it in a chain, do not re-raise the original exception when exiting,
+  let the new chained one through.  This avoids the :pep:`479` bug described
+  in issue25782.
+
+Security
+--------
+
+- bpo-27278: Fix os.urandom() implementation using getrandom() on Linux.
+  Truncate size to INT_MAX and loop until we collected enough random bytes,
+  instead of casting a directly Py_ssize_t to int.
+
+Library
+-------
+
+- bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement.
+  Initial patch by Alex LordThorsen.
+
+- bpo-26386: Fixed ttk.TreeView selection operations with item id's
+  containing spaces.
+
+- bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one
+  set by the env var PAGER).
+
+Security
+--------
+
+- bpo-22636: Avoid shell injection problems with ctypes.util.find_library().
+
+Library
+-------
+
+- bpo-16182: Fix various functions in the "readline" module to use the
+  locale encoding, and fix get_begidx() and get_endidx() to return code
+  point indexes.
+
+- bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
+
+IDLE
+----
+
+- bpo-27477: IDLE search dialogs now use ttk widgets.
+
+- bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the
+  default key set depend on the platform. Add tests for the changes to the
+  config module.
+
+- bpo-27452: make command line "idle-test> python test_help.py" work.
+  __file__ is relative when python is started in the file's directory.
+
+- bpo-27452: add line counter and crc to IDLE configHandler test dump.
+
+- bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets.
+  Module had subclasses SectionName, ModuleName, and HelpSource, which are
+  used to get information from users by configdialog and file =>Load Module.
+  Each subclass has itw own validity checks.  Using ModuleName allows users
+  to edit bad module names instead of starting over. Add tests and delete
+  the two files combined into the new one.
+
+- bpo-27372: Test_idle no longer changes the locale.
+
+- bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
+
+- bpo-27245: IDLE: Cleanly delete custom themes and key bindings.
+  Previously, when IDLE was started from a console or by import, a cascade
+  of warnings was emitted. Patch by Serhiy Storchaka.
+
+- bpo-24137: Run IDLE, test_idle, and htest with tkinter default root
+  disabled.  Fix code and tests that fail with this restriction.  Fix htests
+  to not create a second and redundant root and mainloop.
+
+- bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import.
+
+C API
+-----
+
+- bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
+  an iterable of integers. Now only strings and byte-like objects are
+  accepted.
+
+Build
+-----
+
+- bpo-28066: Fix the logic that searches build directories for generated
+  include files when building outside the source tree.
+
+- bpo-27442: Expose the Android API level that python was built against, in
+  sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'.
+
+- bpo-27434: The interpreter that runs the cross-build, found in PATH, must
+  now be of the same feature version (e.g. 3.6) as the source being built.
+
+- bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
+
+- bpo-23968: Rename the platform directory from plat-$(MACHDEP) to
+  plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from
+  config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install
+  the platform specific _sysconfigdata module into the platform directory
+  and rename it to include the ABIFLAGS.
+
+- Don't use largefile support for GNU/Hurd.
+
+Tools/Demos
+-----------
+
+- bpo-27332: Fixed the type of the first argument of module-level functions
+  generated by Argument Clinic.  Patch by Petr Viktorin.
+
+- bpo-27418: Fixed Tools/importbench/importbench.py.
+
+Documentation
+-------------
+
+- bpo-19489: Moved the search box from the sidebar to the header and footer
+  of each page. Patch by Ammar Askar.
+
+- bpo-27285: Update documentation to reflect the deprecation of ``pyvenv``
+  and normalize on the term "virtual environment". Patch by Steve Piercy.
+
+Tests
+-----
+
+- bpo-27027: Added test.support.is_android that is True when this is an
+  Android build.
+
+
+What's New in Python 3.6.0 alpha 2?
+===================================
+
+*Release date: 2016-06-13*
+
+Core and Builtins
+-----------------
+
+- bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes.
+  Patch by Demur Rumed.
+
+- bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch
+  by Dave Sawyer.
+
+- bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode.  Calling
+  function with generalized unpacking (PEP 448) and conflicting keyword
+  names could cause undefined behavior.
+
+- bpo-27140: Added BUILD_CONST_KEY_MAP opcode.
+
+- bpo-27186: Add support for os.PathLike objects to open() (part of
+  :pep:`519`).
+
+- bpo-27066: Fixed SystemError if a custom opener (for open()) returns a
+  negative number without setting an exception.
+
+- bpo-26983: float() now always return an instance of exact float. The
+  deprecation warning is emitted if __float__ returns an instance of a
+  strict subclass of float.  In a future versions of Python this can be an
+  error.
+
+- bpo-27097: Python interpreter is now about 7% faster due to optimized
+  instruction decoding.  Based on patch by Demur Rumed.
+
+- bpo-26647: Python interpreter now uses 16-bit wordcode instead of
+  bytecode. Patch by Demur Rumed.
+
+- bpo-23275: Allow assigning to an empty target list in round brackets: () =
+  iterable.
+
+- bpo-27243: Update the __aiter__ protocol: instead of returning an
+  awaitable that resolves to an asynchronous iterator, the asynchronous
+  iterator should be returned directly.  Doing the former will trigger a
+  PendingDeprecationWarning.
+
+Library
+-------
+
+- Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants
+  exposed on the API which are not implemented on GNU/Hurd. They would not
+  work at runtime anyway.
+
+- bpo-27025: Generated names for Tkinter widgets are now more meaningful and
+  recognizable.
+
+- bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and
+  functools.partial objects.
+
+- bpo-27294: Improved repr for Tkinter event objects.
+
+- bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch
+  by Gareth Rees.
+
+Security
+--------
+
+- bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
+
+- Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by
+  Team Oststrom.
+
+Library
+-------
+
+- bpo-21386: Implement missing IPv4Address.is_global property.  It was
+  documented since 07a5610bae9d.  Initial patch by Roger Luethi.
+
+- bpo-27029: Removed deprecated support of universal newlines mode from
+  ZipFile.open().
+
+- bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
+  regular expressions now are errors.  The re.LOCALE flag now can be used
+  only with bytes patterns.
+
+- bpo-27186: Add os.PathLike support to DirEntry (part of :pep:`519`).
+  Initial patch by Jelle Zijlstra.
+
+- bpo-20900: distutils register command now decodes HTTP responses
+  correctly.  Initial patch by ingrid.
+
+- bpo-27186: Add os.PathLike support to pathlib, removing its provisional
+  status (part of PEP 519). Initial patch by Dusty Phillips.
+
+- bpo-27186: Add support for os.PathLike objects to os.fsencode() and
+  os.fsdecode() (part of :pep:`519`).
+
+- bpo-27186: Introduce os.PathLike and os.fspath() (part of :pep:`519`).
+
+- A new version of typing.py provides several new classes and features:
+  @overload outside stubs, Reversible, DefaultDict, Text, ContextManager,
+  Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some
+  of the new features are not yet implemented in mypy or other static
+  analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable,
+  AsyncIterator) have been added (in fact they made it into 3.5.1 but were
+  never mentioned).
+
+- bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
+  sending a message body for 205 Reset Content.  Also, don't send Content
+  header fields in responses that don't have a body.  Patch by Susumu
+  Koshiba.
+
+- bpo-21313: Fix the "platform" module to tolerate when sys.version contains
+  truncated build information.
+
+Security
+--------
+
+- bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
+  ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
+  entropy pool is not initialized yet. Patch written by Colm Buckley.
+
+Library
+-------
+
+- bpo-23883: Added missing APIs to __all__ to match the documented APIs for
+  the following modules: cgi, mailbox, mimetypes, plistlib and smtpd.
+  Patches by Jacek Kołodziej.
+
+- bpo-27164: In the zlib module, allow decompressing raw Deflate streams
+  with a predefined zdict.  Based on patch by Xiang Zhang.
+
+- bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
+  write data to the client.  Previously it could do partial writes and
+  truncate data.  Also, wsgiref.handler.ServerHandler can now handle stdout
+  doing partial writes, but this is deprecated.
+
+- bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig.
+
+- bpo-19611: :mod:`inspect` now reports the implicit ``.0`` parameters
+  generated by the compiler for comprehension and generator expression
+  scopes as if they were positional-only parameters called ``implicit0``.
+  Patch by Jelle Zijlstra.
+
+- bpo-26809: Add ``__all__`` to :mod:`string`.  Patch by Emanuel Barry.
+
+- bpo-26373: subprocess.Popen.communicate now correctly ignores
+  BrokenPipeError when the child process dies before .communicate() is
+  called in more/all circumstances.
+
+- signal, socket, and ssl module IntEnum constant name lookups now return a
+  consistent name for values having multiple names.  Ex: signal.Signals(6)
+  now refers to itself as signal.SIGALRM rather than flipping between that
+  and signal.SIGIOT based on the interpreter's hash randomization seed.
+
+- bpo-27167: Clarify the subprocess.CalledProcessError error message text
+  when the child process died due to a signal.
+
+- bpo-25931: Don't define socketserver.Forking* names on platforms such as
+  Windows that do not support os.fork().
+
+- bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch
+  by Claudiu Popa.
+
+- bpo-26526: Replace custom parse tree validation in the parser module with
+  a simple DFA validator.
+
+- bpo-27114: Fix SSLContext._load_windows_store_certs fails with
+  PermissionError
+
+- bpo-18383: Avoid creating duplicate filters when using filterwarnings and
+  simplefilter. Based on patch by Alex Shkop.
+
+- bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type.
+
+- bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning
+  if the child process is still running.
+
+- bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to
+  deserialize a lot of small objects.
+
+- bpo-21271: New keyword only parameters in reset_mock call.
+
+IDLE
+----
+
+- bpo-5124: Paste with text selected now replaces the selection on X11. This
+  matches how paste works on Windows, Mac, most modern Linux apps, and ttk
+  widgets. Original patch by Serhiy Storchaka.
+
+- bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed,
+  minimal tests are added to cover changes.
+
+- bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now
+  unneeded tk version tests and code for older versions. Add test for IDLE
+  syntax colorizer.
+
+- bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed.
+
+- bpo-27262: move Aqua unbinding code, which enable context menus, to
+  macosx.
+
+- bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is
+  a private implementation of test.test_idle and tool for maintainers.
+
+- bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These
+  persisted after other warnings were suppressed in #20567. Apply Serhiy
+  Storchaka's update_idletasks solution to four test files. Record this
+  additional advice in idle_test/README.txt
+
+- bpo-20567: Revise idle_test/README.txt with advice about avoiding tk
+  warning messages from tests.  Apply advice to several IDLE tests.
+
+- bpo-24225: Update idlelib/README.txt with new file names and event
+  handlers.
+
+- bpo-27156: Remove obsolete code not used by IDLE.
+
+- bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move
+  code for configuring text widget colors to a new function.
+
+- bpo-24225: Rename many `idlelib/*.py` and `idle_test/test_*.py` files.
+  Edit files to replace old names with new names when the old name referred
+  to the module rather than the class it contained. See the issue and IDLE
+  section in What's New in 3.6 for more.
+
+- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
+  on Linux prevented the configuration dialog from opening.
+
+- bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav
+  Heblikar.
+
+- bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav
+  Heblikar.
+
+- bpo-18410: Add test for IDLE's search dialog. Original patch by Westley
+  Martínez.
+
+- bpo-21703: Add test for undo delegator.  Patch mostly by Saimadhav
+  Heblikar .
+
+- bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
+
+- bpo-23977: Add more asserts to test_delegator.
+
+Documentation
+-------------
+
+- bpo-16484: Change the default PYTHONDOCS URL to "https:", and fix the
+  resulting links to use lowercase.  Patch by Sean Rodman, test by Kaushik
+  Nadikuditi.
+
+- bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5.
+
+- bpo-22558: Add remaining doc links to source code for Python-coded
+  modules. Patch by Yoni Lavi.
+
+Tests
+-----
+
+- bpo-25285: regrtest now uses subprocesses when the -j1 command line option
+  is used: each test file runs in a fresh child process. Before, the -j1
+  option was ignored.
+
+- bpo-25285: Tools/buildbot/test.bat script now uses -j1 by default to run
+  each test file in fresh child process.
+
+Windows
+-------
+
+- bpo-27064: The py.exe launcher now defaults to Python 3. The Windows
+  launcher ``py.exe`` no longer prefers an installed Python 2 version over
+  Python 3 by default when used interactively.
+
+Build
+-----
+
+- bpo-27229: Fix the cross-compiling pgen rule for in-tree builds.  Patch by
+  Xavier de Gaye.
+
+- bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with
+  OpenSSL 1.0.2h.
+
+Windows
+-------
+
+- bpo-17500: Remove unused and outdated icons. (See also:
+  https://github.com/python/pythondotorg/issues/945)
+
+C API
+-----
+
+- bpo-27186: Add the PyOS_FSPath() function (part of :pep:`519`).
+
+- bpo-26282: PyArg_ParseTupleAndKeywords() now supports positional-only
+  parameters.
+
+Tools/Demos
+-----------
+
+- bpo-26282: Argument Clinic now supports positional-only and keyword
+  parameters in the same function.
+
+
+What's New in Python 3.6.0 alpha 1?
+===================================
+
+*Release date: 2016-05-16*
+
+Core and Builtins
+-----------------
+
+- bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by
+  Xavier de Gaye.
+
+- bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
+  format unit.
+
+- bpo-26991: Fix possible refleak when creating a function with annotations.
+
+- bpo-27039: Fixed bytearray.remove() for values greater than 127.  Based on
+  patch by Joe Jevnik.
+
+- bpo-23640: int.from_bytes() no longer bypasses constructors for
+  subclasses.
+
+- bpo-27005: Optimized the float.fromhex() class method for exact float. It
+  is now 2 times faster.
+
+- bpo-18531: Single var-keyword argument of dict subtype was passed
+  unscathed to the C-defined function.  Now it is converted to exact dict.
+
+- bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL
+  pointer.
+
+- bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for
+  interpolation unintentionally added with move to Python 3. Behavior no
+  longer does any interpolation in .pypirc files, matching behavior in
+  Python 2.7 and Setuptools 19.0.
+
+- bpo-26249: Memory functions of the :c:func:`PyMem_Malloc` domain
+  (:c:data:`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc allocator
+  <pymalloc>` rather than system :c:func:`malloc`. Applications calling
+  :c:func:`PyMem_Malloc` without holding the GIL can now crash: use
+  ``PYTHONMALLOC=debug`` environment variable to validate the usage of
+  memory allocators in your application.
+
+- bpo-26802: Optimize function calls only using unpacking like
+  ``func(*tuple)`` (no other positional argument, no keyword): avoid copying
+  the tuple. Patch written by Joe Jevnik.
+
+- bpo-26659: Make the builtin slice type support cycle collection.
+
+- bpo-26718: super.__init__ no longer leaks memory if called multiple times.
+  NOTE: A direct call of super.__init__ is not endorsed!
+
+- bpo-27138: Fix the doc comment for FileFinder.find_spec().
+
+- bpo-27147: Mention :pep:`420` in the importlib docs.
+
+- bpo-25339: PYTHONIOENCODING now has priority over locale in setting the
+  error handler for stdin and stdout.
+
+- bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes
+  are generic sequence iterators, iterators of str, bytes, bytearray, list,
+  tuple, set, frozenset, dict, OrderedDict, corresponding views and
+  os.scandir() iterator.
+
+- bpo-26574: Optimize ``bytes.replace(b'', b'.')`` and
+  ``bytearray.replace(b'', b'.')``. Patch written by Josh Snider.
+
+- bpo-26581: If coding cookie is specified multiple times on a line in
+  Python source code file, only the first one is taken to account.
+
+- bpo-19711: Add tests for reloading namespace packages.
+
+- bpo-21099: Switch applicable importlib tests to use :pep:`451` API.
+
+- bpo-26563: Debug hooks on Python memory allocators now raise a fatal error
+  if functions of the :c:func:`PyMem_Malloc` family are called without
+  holding the GIL.
+
+- bpo-26564: On error, the debug hooks on Python memory allocators now use
+  the :mod:`tracemalloc` module to get the traceback where a memory block
+  was allocated.
+
+- bpo-26558: The debug hooks on Python memory allocator
+  :c:func:`PyObject_Malloc` now detect when functions are called without
+  holding the GIL.
+
+- bpo-26516: Add :envvar:`PYTHONMALLOC` environment variable to set the
+  Python memory allocators and/or install debug hooks.
+
+- bpo-26516: The :c:func:`PyMem_SetupDebugHooks` function can now also be
+  used on Python compiled in release mode.
+
+- bpo-26516: The :envvar:`PYTHONMALLOCSTATS` environment variable can now
+  also be used on Python compiled in release mode. It now has no effect if
+  set to an empty string.
+
+- bpo-26516: In debug mode, debug hooks are now also installed on Python
+  memory allocators when Python is configured without pymalloc.
+
+- bpo-26464: Fix str.translate() when string is ASCII and first replacements
+  removes character, but next replacement uses a non-ASCII character or a
+  string longer than 1 character. Regression introduced in Python 3.5.0.
+
+- bpo-22836: Ensure exception reports from PyErr_Display() and
+  PyErr_WriteUnraisable() are sensible even when formatting them produces
+  secondary errors.  This affects the reports produced by
+  sys.__excepthook__() and when __del__() raises an exception.
+
+- bpo-26302: Correct behavior to reject comma as a legal character for
+  cookie names.
+
+- bpo-26136: Upgrade the warning when a generator raises StopIteration from
+  PendingDeprecationWarning to DeprecationWarning.  Patch by Anish Shah.
+
+- bpo-26204: The compiler now ignores all constant statements: bytes, str,
+  int, float, complex, name constants (None, False, True), Ellipsis and
+  ast.Constant; not only str and int. For example, ``1.0`` is now ignored in
+  ``def f(): 1.0``.
+
+- bpo-4806: Avoid masking the original TypeError exception when using star
+  (``*``) unpacking in function calls.  Based on patch by Hagen Fürstenau
+  and Daniel Urban.
+
+- bpo-26146: Add a new kind of AST node: ``ast.Constant``. It can be used by
+  external AST optimizers, but the compiler does not emit directly such
+  node.
+
+- bpo-23601: Sped-up allocation of dict key objects by using Python's small
+  object allocator.  (Contributed by Julian Taylor.)
+
+- bpo-18018: Import raises ImportError instead of SystemError if a relative
+  import is attempted without a known parent package.
+
+- bpo-25843: When compiling code, don't merge constants if they are equal
+  but have a different types. For example, ``f1, f2 = lambda: 1, lambda:
+  1.0`` is now correctly compiled to two different functions: ``f1()``
+  returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``float``), even if
+  ``1`` and ``1.0`` are equal.
+
+- bpo-26107: The format of the ``co_lnotab`` attribute of code objects
+  changes to support negative line number delta.
+
+- bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get
+  the current Python thread state, but don't issue a fatal error if it is
+  NULL. This new function must be used instead of accessing directly the
+  _PyThreadState_Current variable.  The variable is no more exposed since
+  Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
+  compiler issues.
+
+- bpo-25791: If __package__ != __spec__.parent or if neither __package__ or
+  __spec__ are defined then ImportWarning is raised.
+
+- bpo-22995: [UPDATE] Comment out the one of the pickleability tests in
+  _PyObject_GetState() due to regressions observed in Cython-based projects.
+
+- bpo-25961: Disallowed null characters in the type name.
+
+- bpo-25973: Fix segfault when an invalid nonlocal statement binds a name
+  starting with two underscores.
+
+- bpo-22995: Instances of extension types with a state that aren't
+  subclasses of list or dict and haven't implemented any pickle-related
+  methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or
+  __getstate__), can no longer be pickled.  Including memoryview.
+
+- bpo-20440: Massive replacing unsafe attribute setting code with special
+  macro Py_SETREF.
+
+- bpo-25766: Special method __bytes__() now works in str subclasses.
+
+- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
+  This allows sys.getsize() to work correctly with their subclasses with
+  __slots__ defined.
+
+- bpo-25709: Fixed problem with in-place string concatenation and utf-8
+  cache.
+
+- bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of
+  120 on failure to flush buffered streams.
+
+- bpo-25485: telnetlib.Telnet is now a context manager.
+
+- bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside
+  __getattr__.
+
+- bpo-24731: Fixed crash on converting objects with special methods
+  __bytes__, __trunc__, and __float__ returning instances of subclasses of
+  bytes, int, and float to subclasses of bytes, int, and float
+  correspondingly.
+
+- bpo-25630: Fix a possible segfault during argument parsing in functions
+  that accept filesystem paths.
+
+- bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess
+  internals regarding how fds_to_pass were passed to the child.  The bug had
+  no actual impact as subprocess.py already avoided it.
+
+- bpo-25388: Fixed tokenizer crash when processing undecodable source code
+  with a null byte.
+
+- bpo-25462: The hash of the key now is calculated only once in most
+  operations in C implementation of OrderedDict.
+
+- bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now
+  rejects builtin types with not defined __new__.
+
+- bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec()
+  and eval() are passed bytes-like objects.  These objects are not
+  necessarily terminated by a null byte, but the functions assumed they
+  were.
+
+- bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node
+  when compiling AST from Python objects.
+
+- bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
+  was mutated by direct calls of dict methods.
+
+- bpo-25449: Iterating OrderedDict with keys with unstable hash now raises
+  KeyError in C implementations as well as in Python implementation.
+
+- bpo-25395: Fixed crash when highly nested OrderedDict structures were
+  garbage collected.
+
+- bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now
+  between 2x and 3.5x faster.
+
+- bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter
+  API. Formatting is now between 2.5 and 5 times faster.
+
+- bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new
+  recursion limit is too low depending at the current recursion depth.
+  Modify also the "lower-water mark" formula to make it monotonic. This mark
+  is used to decide when the overflowed flag of the thread state is reset.
+
+- bpo-24402: Fix input() to prompt to the redirected stdout when
+  sys.stdout.fileno() fails.
+
+- bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API.
+  Formatting is now up to 2 times faster.
+
+- bpo-24806: Prevent builtin types that are not allowed to be subclassed
+  from being subclassed through multiple inheritance.
+
+- bpo-25301: The UTF-8 decoder is now up to 15 times as fast for error
+  handlers: ``ignore``, ``replace`` and ``surrogateescape``.
+
+- bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
+
+- bpo-25267: The UTF-8 encoder is now up to 75 times as fast for error
+  handlers: ``ignore``, ``replace``, ``surrogateescape``, ``surrogatepass``.
+  Patch co-written with Serhiy Storchaka.
+
+- bpo-25280: Import trace messages emitted in verbose (-v) mode are no
+  longer formatted twice.
+
+- bpo-25227: Optimize ASCII and latin1 encoders with the ``surrogateescape``
+  error handler: the encoders are now up to 3 times as fast. Initial patch
+  written by Serhiy Storchaka.
+
+- bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
+  function instead of the getentropy() function. The getentropy() function
+  is blocking to generate very good quality entropy, os.urandom() doesn't
+  need such high-quality entropy.
+
+- bpo-9232: Modify Python's grammar to allow trailing commas in the argument
+  list of a function declaration.  For example, "def f(\*, a = 3,): pass" is
+  now legal. Patch from Mark Dickinson.
+
+- bpo-24965: Implement :pep:`498` "Literal String Interpolation". This
+  allows you to embed expressions inside f-strings, which are converted to
+  normal strings at run time. Given x=3, then f'value={x}' == 'value=3'.
+  Patch by Eric V. Smith.
+
+- bpo-26478: Fix semantic bugs when using binary operators with dictionary
+  views and tuples.
+
+- bpo-26171: Fix possible integer overflow and heap corruption in
+  zipimporter.get_data().
+
+- bpo-25660: Fix TAB key behaviour in REPL with readline.
+
+- bpo-26288: Optimize PyLong_AsDouble.
+
+- bpo-26289: Optimize floor and modulo division for single-digit longs.
+  Microbenchmarks show 2-2.5x improvement.  Built-in 'divmod' function is
+  now also ~10% faster. (See also: bpo-26315)
+
+- bpo-25887: Raise a RuntimeError when a coroutine object is awaited more
+  than once.
+
+Library
+-------
+
+- bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
+  SELinux and fails with EACCESS. The function now falls back to fcntl().
+  Patch written by Michał Bednarski.
+
+- bpo-27014: Fix infinite recursion using typing.py.  Thanks to Kalle Tuure!
+
+- bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar()
+  and tk_bindForTraversal().
+
+- bpo-14132: Fix urllib.request redirect handling when the target only has a
+  query string.  Original fix by Ján Janech.
+
+- bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes
+  found in redirect target URLs.  Some servers send Location header fields
+  with non-ASCII bytes, but "http.client" requires the request target to be
+  ASCII-encodable, otherwise a UnicodeEncodeError is raised.  Based on patch
+  by Christian Heimes.
+
+- bpo-27033: The default value of the decode_data parameter for
+  smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.
+
+- bpo-27034: Removed deprecated class asynchat.fifo.
+
+- bpo-26870: Added readline.set_auto_history(), which can stop entries being
+  automatically added to the history list.  Based on patch by Tyler
+  Crompton.
+
+- bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP
+  file, as well as for extracting data.  Patch by Thomas Kluyver.
+
+- bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
+  contributed by Chi Hsuan Yen.
+
+- bpo-22274: In the subprocess module, allow stderr to be redirected to
+  stdout even when stdout is not redirected.  Patch by Akira Li.
+
+- bpo-26807: mock_open 'files' no longer error on readline at end of file.
+  Patch from Yolanda Robla.
+
+- bpo-25745: Fixed leaking a userptr in curses panel destructor.
+
+- bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper
+  in statistics.pvariance.
+
+- bpo-26002: Use bisect in statistics.median instead of a linear search.
+  Patch by Upendra Kuma.
+
+- bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics
+  module. Patch by Stefan Krah.
+
+- bpo-26996: Add secrets module as described in :pep:`506`.
+
+- bpo-26881: The modulefinder module now supports extended opcode arguments.
+
+- bpo-23815: Fixed crashes related to directly created instances of types in
+  _tkinter and curses.panel modules.
+
+- bpo-17765: weakref.ref() no longer silently ignores keyword arguments.
+  Patch by Georg Brandl.
+
+- bpo-26873: xmlrpc now raises ResponseError on unsupported type tags
+  instead of silently return incorrect result.
+
+- bpo-26915: The __contains__ methods in the collections ABCs now check for
+  identity before checking equality.  This better matches the behavior of
+  the concrete classes, allows sensible handling of NaNs, and makes it
+  easier to reason about container invariants.
+
+- bpo-26711: Fixed the comparison of plistlib.Data with other types.
+
+- bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only
+  occurs on SunOS when the ctypes implementation searches for the `crle`
+  program.  Patch by Xiang Zhang.  Tested on SunOS by Kees Bos.
+
+- bpo-26864: In urllib.request, change the proxy bypass host checking
+  against no_proxy to be case-insensitive, and to not match unrelated host
+  names that happen to have a bypassed hostname as a suffix.  Patch by Xiang
+  Zhang.
+
+- bpo-24902: Print server URL on http.server startup.  Initial patch by
+  Felix Kaiser.
+
+- bpo-25788: fileinput.hook_encoded() now supports an "errors" argument for
+  passing to open.  Original patch by Joseph Hackman.
+
+- bpo-26634: recursive_repr() now sets __qualname__ of wrapper.  Patch by
+  Xiang Zhang.
+
+- bpo-26804: urllib.request will prefer lower_case proxy environment
+  variables over UPPER_CASE or Mixed_Case ones. Patch contributed by
+  Hans-Peter Jansen.
+
+- bpo-26837: assertSequenceEqual() now correctly outputs non-stringified
+  differing items (like bytes in the -b mode).  This affects
+  assertListEqual() and assertTupleEqual().
+
+- bpo-26041: Remove "will be removed in Python 3.7" from deprecation
+  messages of platform.dist() and platform.linux_distribution(). Patch by
+  Kumaripaba Miyurusara Athukorala.
+
+- bpo-26822: itemgetter, attrgetter and methodcaller objects no longer
+  silently ignore keyword arguments.
+
+- bpo-26733: Disassembling a class now disassembles class and static
+  methods. Patch by Xiang Zhang.
+
+- bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
+  :exc:`AttributeError` instead of :exc:`NameError`. Patch written by
+  Emanuel Barry.
+
+- bpo-24838: tarfile's ustar and gnu formats now correctly calculate name
+  and link field limits for multibyte character encodings like utf-8.
+
+Security
+--------
+
+- bpo-26657: Fix directory traversal vulnerability with http.server on
+  Windows.  This fixes a regression that was introduced in 3.3.4rc1 and
+  3.4.0rc1.  Based on patch by Philipp Hagemeister.
+
+Library
+-------
+
+- bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8.  Patch by
+  Anthony Sottile.
+
+- bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows.
+
+- bpo-26404: Add context manager to socketserver.  Patch by Aviv Palivoda.
+
+- bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
+  more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
+  1024 bytes per call.
+
+- bpo-26585: Eliminate http.server._quote_html() and use
+  html.escape(quote=False).  Patch by Xiang Zhang.
+
+- bpo-26685: Raise OSError if closing a socket fails.
+
+- bpo-16329: Add .webm to mimetypes.types_map.  Patch by Giampaolo Rodola'.
+
+- bpo-13952: Add .csv to mimetypes.types_map.  Patch by Geoff Wilson.
+
+- bpo-26587: the site module now allows .pth files to specify files to be
+  added to sys.path (e.g. zip files).
+
+- bpo-25609: Introduce contextlib.AbstractContextManager and
+  typing.ContextManager.
+
+- bpo-26709: Fixed Y2038 problem in loading binary PLists.
+
+- bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our
+  own SIGWINCH handler.  Patch by Eric Price.
+
+- bpo-25951: Change SSLSocket.sendall() to return None, as explicitly
+  documented for plain socket objects.  Patch by Aviv Palivoda.
+
+- bpo-26586: In http.server, respond with "413 Request header fields too
+  large" if there are too many header fields to parse, rather than killing
+  the connection and raising an unhandled exception.  Patch by Xiang Zhang.
+
+- bpo-26676: Added missing XMLPullParser to ElementTree.__all__.
+
+- bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable()
+  to always return False.
+
+- bpo-26492: Exhausted iterator of array.array now conforms with the
+  behavior of iterators of other mutable sequences: it lefts exhausted even
+  if iterated array is extended.
+
+- bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages
+  (module splitted into multiple directories) for the package parameter.
+
+- bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of
+  tuple (changeset 3603bae63c13 only works for classes) so we need to
+  implement __ne__ ourselves.  Patch by Andrew Plummer.
+
+- bpo-26644: Raise ValueError rather than SystemError when a negative length
+  is passed to SSLSocket.recv() or read().
+
+- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
+  instead of up to 1024.
+
+- bpo-26616: Fixed a bug in datetime.astimezone() method.
+
+- bpo-26637: The :mod:`importlib` module now emits an :exc:`ImportError`
+  rather than a :exc:`TypeError` if :func:`__import__` is tried during the
+  Python shutdown process but :data:`sys.path` is already cleared (set to
+  ``None``).
+
+- bpo-21925: :func:`warnings.formatwarning` now catches exceptions when
+  calling :func:`linecache.getline` and
+  :func:`tracemalloc.get_object_traceback` to be able to log
+  :exc:`ResourceWarning` emitted late during the Python shutdown process.
+
+- bpo-23848: On Windows, faulthandler.enable() now also installs an
+  exception handler to dump the traceback of all Python threads on any
+  Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
+
+- bpo-26530: Add C functions :c:func:`_PyTraceMalloc_Track` and
+  :c:func:`_PyTraceMalloc_Untrack` to track memory blocks using the
+  :mod:`tracemalloc` module. Add :c:func:`_PyTraceMalloc_GetTraceback` to
+  get the traceback of an object.
+
+- bpo-26588: The _tracemalloc now supports tracing memory allocations of
+  multiple address spaces (domains).
+
+- bpo-24266: Ctrl+C during Readline history search now cancels the search
+  mode when compiled with Readline 7.
+
+- bpo-26590: Implement a safe finalizer for the _socket.socket type. It now
+  releases the GIL to close the socket.
+
+- bpo-18787: spwd.getspnam() now raises a PermissionError if the user
+  doesn't have privileges.
+
+- bpo-26560: Avoid potential ValueError in BaseHandler.start_response.
+  Initial patch by Peter Inglesby.
+
+- bpo-26567: Add a new function :c:func:`PyErr_ResourceWarning` function to
+  pass the destroyed object. Add a *source* attribute to
+  :class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses
+  tracemalloc to get the traceback where source object was allocated.
+
+Security
+--------
+
+- bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is
+  empty. Patch by Baji.
+
+Library
+-------
+
+- bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
+  to support importing packages.
+
+- bpo-26499: Account for remaining Content-Length in HTTPResponse.readline()
+  and read1(). Based on patch by Silent Ghost. Also document that
+  HTTPResponse now supports these methods.
+
+- bpo-25320: Handle sockets in directories unittest discovery is scanning.
+  Patch from Victor van den Elzen.
+
+- bpo-16181: cookiejar.http2time() now returns None if year is higher than
+  datetime.MAXYEAR.
+
+- bpo-26513: Fixes platform module detection of Windows Server
+
+- bpo-23718: Fixed parsing time in week 0 before Jan 1.  Original patch by
+  Tamás Bence Gedai.
+
+- bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods
+  to unittest.mock. Patch written by Amit Saha.
+
+- bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise
+  NotImplementedError instead of ImportError.
+
+- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
+
+- bpo-15068: Got rid of excessive buffering in fileinput. The bufsize
+  parameter is now deprecated and ignored.
+
+- bpo-19475: Added an optional argument timespec to the datetime isoformat()
+  method to choose the precision of the time component.
+
+- bpo-2202: Fix UnboundLocalError in
+  AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu
+  Dupuy.
+
+- bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy().
+  Optimized copying and deepcopying bytearrays, NotImplemented, slices,
+  short lists, tuples, dicts, sets.
+
+- bpo-25718: Fixed pickling and copying the accumulate() iterator with total
+  is None.
+
+- bpo-26475: Fixed debugging output for regular expressions with the (?x)
+  flag.
+
+- bpo-26482: Allowed pickling recursive dequeues.
+
+- bpo-26335: Make mmap.write() return the number of bytes written like other
+  write methods.  Patch by Jakub Stasiak.
+
+- bpo-26457: Fixed the subnets() methods in IP network classes for the case
+  when resulting prefix length is equal to maximal prefix length. Based on
+  patch by Xiang Zhang.
+
+- bpo-26385: Remove the file if the internal open() call in
+  NamedTemporaryFile() fails. Patch by Silent Ghost.
+
+- bpo-26402: Fix XML-RPC client to retry when the server shuts down a
+  persistent connection.  This was a regression related to the new
+  http.client.RemoteDisconnected exception in 3.5.0a4.
+
+- bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with
+  adobe=True.  Patch by Swati Jaiswal.
+
+- bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
+
+- bpo-26367: importlib.__import__() raises ImportError like
+  builtins.__import__() when ``level`` is specified but without an
+  accompanying package specified.
+
+- bpo-26309: In the "socketserver" module, shut down the request (closing
+  the connected socket) when verify_request() returns false.  Patch by Aviv
+  Palivoda.
+
+- bpo-23430: Change the socketserver module to only catch exceptions raised
+  from a request handler that are derived from Exception (instead of
+  BaseException). Therefore SystemExit and KeyboardInterrupt no longer
+  trigger the handle_error() method, and will now to stop a single-threaded
+  server.
+
+Security
+--------
+
+- bpo-25939: On Windows open the cert store readonly in
+  ssl.enum_certificates.
+
+Library
+-------
+
+- bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
+
+- bpo-25994: Added the close() method and the support of the context manager
+  protocol for the os.scandir() iterator.
+
+- bpo-23992: multiprocessing: make MapResult not fail-fast upon exception.
+
+- bpo-26243: Support keyword arguments to zlib.compress().  Patch by Aviv
+  Palivoda.
+
+- bpo-26117: The os.scandir() iterator now closes file descriptor not only
+  when the iteration is finished, but when it was failed with error.
+
+- bpo-25949: __dict__ for an OrderedDict instance is now created only when
+  needed.
+
+- bpo-25911: Restored support of bytes paths in os.walk() on Windows.
+
+- bpo-26045: Add UTF-8 suggestion to error message when posting a
+  non-Latin-1 string with http.client.
+
+- bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir().
+  Patch by Thomas Kluyver.
+
+- bpo-12923: Reset FancyURLopener's redirect counter even if there is an
+  exception. Based on patches by Brian Brazil and Daniel Rocco.
+
+- bpo-25945: Fixed a crash when unpickle the functools.partial object with
+  wrong state. Fixed a leak in failed functools.partial constructor. "args"
+  and "keywords" attributes of functools.partial have now always types tuple
+  and dict correspondingly.
+
+- bpo-26202: copy.deepcopy() now correctly copies range() objects with
+  non-atomic attributes.
+
+- bpo-23076: Path.glob() now raises a ValueError if it's called with an
+  invalid pattern. Patch by Thomas Nyberg.
+
+- bpo-19883: Fixed possible integer overflows in zipimport.
+
+- bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and
+  gethostbyname_ex() functions of the socket module now decode the hostname
+  from the ANSI code page rather than UTF-8.
+
+- bpo-26099: The site module now writes an error into stderr if
+  sitecustomize module can be imported but executing the module raise an
+  ImportError. Same change for usercustomize.
+
+- bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8
+  encoding.
+
+- bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
+
+- bpo-16620: Fixed AttributeError in msilib.Directory.glob().
+
+- bpo-26013: Added compatibility with broken protocol 2 pickles created in
+  old Python 3 versions (3.4.3 and lower).
+
+- bpo-26129: Deprecated accepting non-integers in grp.getgrgid().
+
+- bpo-25850: Use cross-compilation by default for 64-bit Windows.
+
+- bpo-25822: Add docstrings to the fields of urllib.parse results. Patch
+  contributed by Swati Jaiswal.
+
+- bpo-22642: Convert trace module option parsing mechanism to argparse.
+  Patch contributed by SilentGhost.
+
+- bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing
+  before $() vars.
+
+- bpo-26069: Remove the deprecated apis in the trace module.
+
+- bpo-22138: Fix mock.patch behavior when patching descriptors. Restore
+  original values after patching. Patch contributed by Sean McCully.
+
+- bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
+  option if it is safe to do so.
+
+- bpo-26012: Don't traverse into symlinks for ``**`` pattern in
+  pathlib.Path.[r]glob().
+
+- bpo-24120: Ignore PermissionError when traversing a tree with
+  pathlib.Path.[r]glob(). Patch by Ulrich Petri.
+
+- bpo-21815: Accept ] characters in the data portion of imap responses, in
+  order to handle the flags with square brackets accepted and produced by
+  servers such as gmail.
+
+- bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer
+  attribute (restores backward compatibility).
+
+- bpo-25971: Optimized creating Fractions from floats by 2 times and from
+  Decimals by 3 times.
+
+- bpo-25802: Document as deprecated the remaining implementations of
+  importlib.abc.Loader.load_module().
+
+- bpo-25928: Add Decimal.as_integer_ratio().
+
+- bpo-25447: Copying the lru_cache() wrapper object now always works,
+  independently from the type of the wrapped object (by returning the
+  original object unchanged).
+
+- bpo-25768: Have the functions in compileall return booleans instead of
+  ints and add proper documentation and tests for the return values.
+
+- bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
+
+- bpo-25860: os.fwalk() no longer skips remaining directories when error
+  occurs. Original patch by Samson Lee.
+
+- bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
+
+- bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster.
+
+- bpo-25873: Optimized iterating ElementTree.  Iterating elements
+  Element.iter() is now 40% faster, iterating text Element.itertext() is now
+  up to 2.5 times faster.
+
+- bpo-25902: Fixed various refcount issues in ElementTree iteration.
+
+- bpo-22227: The TarFile iterator is reimplemented using generator. This
+  implementation is simpler that using class.
+
+- bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster.
+  Optimized ElementTree parsing; it is now 10% faster.
+
+- bpo-25761: Improved detecting errors in broken pickle data.
+
+- bpo-25717: Restore the previous behaviour of tolerating most fstat()
+  errors when opening files.  This was a regression in 3.5a1, and stopped
+  anonymous temporary files from working in special cases.
+
+- bpo-24903: Fix regression in number of arguments compileall accepts when
+  '-d' is specified.  The check on the number of arguments has been dropped
+  completely as it never worked correctly anyway.
+
+- bpo-25764: In the subprocess module, preserve any exception caused by
+  fork() failure when preexec_fn is used.
+
+- bpo-25771: Tweak the exception message for importlib.util.resolve_name()
+  when 'package' isn't specified but necessary.
+
+- bpo-6478: _strptime's regexp cache now is reset after changing timezone
+  with time.tzset().
+
+- bpo-14285: When executing a package with the "python -m package" option,
+  and package initialization fails, a proper traceback is now reported.  The
+  "runpy" module now lets exceptions from package initialization pass back
+  to the caller, rather than raising ImportError.
+
+- bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message
+  ". . . is a package and cannot be directly executed" if the package could
+  not even be initialized (e.g. due to a bad ``*.pyc`` file).
+
+- bpo-25177: Fixed problem with the mean of very small and very large
+  numbers. As a side effect, statistics.mean and statistics.variance should
+  be significantly faster.
+
+- bpo-25718: Fixed copying object with state with boolean value is false.
+
+- bpo-10131: Fixed deep copying of minidom documents.  Based on patch by
+  Marian Ganisin.
+
+- bpo-7990: dir() on ElementTree.Element now lists properties: "tag",
+  "text", "tail" and "attrib".  Original patch by Santoso Wijaya.
+
+- bpo-25725: Fixed a reference leak in pickle.loads() when unpickling
+  invalid data including tuple instructions.
+
+- bpo-25663: In the Readline completer, avoid listing duplicate global
+  names, and search the global namespace before searching builtins.
+
+- bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
+
+- bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
+
+- bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
+
+- bpo-25624: ZipFile now always writes a ZIP_STORED header for directory
+  entries.  Patch by Dingyuan Wang.
+
+- bpo-25626: Change three zlib functions to accept sizes that fit in
+  Py_ssize_t, but internally cap those sizes to UINT_MAX.  This resolves a
+  regression in 3.5 where GzipFile.read() failed to read chunks larger than
+  2 or 4 GiB.  The change affects the zlib.Decompress.decompress()
+  max_length parameter, the zlib.decompress() bufsize parameter, and the
+  zlib.Decompress.flush() length parameter.
+
+- bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
+  when the OS gives priority to errors such as EACCES over EEXIST.
+
+- bpo-25593: Change semantics of EventLoop.stop() in asyncio.
+
+- bpo-6973: When we know a subprocess.Popen process has died, do not allow
+  the send_signal(), terminate(), or kill() methods to do anything as they
+  could potentially signal a different process.
+
+- bpo-23883: Added missing APIs to __all__ to match the documented APIs for
+  the following modules: calendar, csv, enum, fileinput, ftplib, logging,
+  optparse, tarfile, threading and wave.  Also added a
+  test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S.
+  M. Rodrigues and Joel Taddei.
+
+- bpo-25590: In the Readline completer, only call getattr() once per
+  attribute.  Also complete names of attributes such as properties and slots
+  which are listed by dir() but not yet created on an instance.
+
+- bpo-25498: Fix a crash when garbage-collecting ctypes objects created by
+  wrapping a memoryview.  This was a regression made in 3.5a1.  Based on
+  patch by Eryksun.
+
+- bpo-25584: Added "escape" to the __all__ list in the glob module.
+
+- bpo-25584: Fixed recursive glob() with patterns starting with ``**``.
+
+- bpo-25446: Fix regression in smtplib's AUTH LOGIN support.
+
+- bpo-18010: Fix the pydoc web server's module search function to handle
+  exceptions from importing packages.
+
+- bpo-25554: Got rid of circular references in regular expression parsing.
+
+- bpo-18973: Command-line interface of the calendar module now uses argparse
+  instead of optparse.
+
+- bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at
+  the end if the FileInput was opened with binary mode. Patch by Ryosuke
+  Ito.
+
+- bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties.
+  Original patch by John Mark Vandenberg.
+
+- bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
+
+- bpo-21827: Fixed textwrap.dedent() for the case when largest common
+  whitespace is a substring of smallest leading whitespace. Based on patch
+  by Robert Li.
+
+- bpo-25447: The lru_cache() wrapper objects now can be copied and pickled
+  (by returning the original object unchanged).
+
+- bpo-25390: typing: Don't crash on Union[str, Pattern].
+
+- bpo-25441: asyncio: Raise error from drain() when socket is closed.
+
+- bpo-25410: Cleaned up and fixed minor bugs in C implementation of
+  OrderedDict.
+
+- bpo-25411: Improved Unicode support in SMTPHandler through better use of
+  the email package. Thanks to user simon04 for the patch.
+
+- Move the imp module from a PendingDeprecationWarning to
+  DeprecationWarning.
+
+- bpo-25407: Remove mentions of the formatter module being removed in Python
+  3.6.
+
+- bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
+  that caused segmentation fault or hang in iterating after moving several
+  items to the start of ordered dict.
+
+- bpo-25382: pickletools.dis() now outputs implicit memo index for the
+  MEMOIZE opcode.
+
+- bpo-25357: Add an optional newline parameter to binascii.b2a_base64().
+  base64.b64encode() uses it to avoid a memory copy.
+
+- bpo-24164: Objects that need calling ``__new__`` with keyword arguments,
+  can now be pickled using pickle protocols older than protocol version 4.
+
+- bpo-25364: zipfile now works in threads disabled builds.
+
+- bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both
+  decode_data and enable_SMTPUTF8 are set to true.
+
+- bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate
+  extensions.  Patch by Nikolay Bogoychev.
+
+- bpo-25316: distutils raises OSError instead of DistutilsPlatformError when
+  MSVC is not installed.
+
+- bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in
+  pickletools.opcodes.
+
+- bpo-23972: Updates asyncio datagram create method allowing reuseport and
+  reuseaddr socket options to be set prior to binding the socket. Mirroring
+  the existing asyncio create_server method the reuseaddr option for
+  datagram sockets defaults to True if the O/S is 'posix' (except if the
+  platform is Cygwin). Patch by Chris Laws.
+
+- bpo-25304: Add asyncio.run_coroutine_threadsafe().  This lets you submit a
+  coroutine to a loop from another thread, returning a
+  concurrent.futures.Future.  By Vincent Michel.
+
+- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
+  first question mark (?) rather than the last. Patch from Xiang Zhang.
+
+- bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query
+  part of the URL as if it were a path. Patch from Xiang Zhang.
+
+- bpo-25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not
+  supported. Check if it is supported, it may not be supported on OpenBSD
+  for example.
+
+- bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong
+  results in some cases.
+
+- bpo-25203: Failed readline.set_completer_delims() no longer left the
+  module in inconsistent state.
+
+- bpo-25011: rlcompleter now omits private and special attribute names
+  unless the prefix starts with underscores.
+
+- bpo-25209: rlcompleter now can add a space or a colon after completed
+  keyword.
+
+- bpo-22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'.
+
+- bpo-23517: fromtimestamp() and utcfromtimestamp() methods of
+  datetime.datetime now round microseconds to nearest with ties going to
+  nearest even integer (ROUND_HALF_EVEN), as round(float), instead of
+  rounding towards -Infinity (ROUND_FLOOR).
+
+- bpo-23552: Timeit now warns when there is substantial (4x) variance
+  between best and worst times. Patch from Serhiy Storchaka.
+
+- bpo-24633: site-packages/README -> README.txt.
+
+- bpo-24879: help() and pydoc can now list named tuple fields in the order
+  they were defined rather than alphabetically.  The ordering is determined
+  by the _fields attribute if present.
+
+- bpo-24874: Improve speed of itertools.cycle() and make its pickle more
+  compact.
+
+- Fix crash in itertools.cycle.__setstate__() when the first argument wasn't
+  a list.
+
+- bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by
+  Martin Panter.
+
+- bpo-24360: Improve __repr__ of argparse.Namespace() for invalid
+  identifiers.  Patch by Matthias Bussonnier.
+
+- bpo-23426: run_setup was broken in distutils. Patch from Alexander
+  Belopolsky.
+
+- bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.
+
+- bpo-2091: open() accepted a 'U' mode string containing '+', but 'U' can
+  only be used with 'r'. Patch from Jeff Balogh and John O'Connor.
+
+- bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence.
+
+- bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
+  Patch from Nicola Palumbo and Laurent De Buyst.
+
+- bpo-24426: Fast searching optimization in regular expressions now works
+  for patterns that starts with capturing groups.  Fast searching
+  optimization now can't be disabled at compile time.
+
+- bpo-23661: unittest.mock side_effects can now be exceptions again. This
+  was a regression vs Python 3.4. Patch from Ignacio Rossi
+
+- bpo-13248: Remove deprecated inspect.getmoduleinfo function.
+
+- bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
+
+- bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating
+  ssl.SSLContext.
+
+- bpo-25569: Fix memory leak in SSLSocket.getpeercert().
+
+- bpo-25471: Sockets returned from accept() shouldn't appear to be
+  nonblocking.
+
+- bpo-25319: When threading.Event is reinitialized, the underlying condition
+  should use a regular lock rather than a recursive lock.
+
+- Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu
+  Davis.
+
+- bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк
+  Коренберг.
+
+- bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
+  versions 10.5 or higher.  Original patch by A. Jesse Jiryu Davis.
+
+- bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
+  current versions of OpenBSD and NetBSD.  Patch by A. Jesse Jiryu Davis.
+
+- bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input.
+  Patch by Jack O'Connor.
+
+- bpo-27040: Add loop.get_exception_handler method
+
+- bpo-27041: asyncio: Add loop.create_future method
+
+IDLE
+----
+
+- bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav
+  Heblikar.
+
+- In the 'IDLE-console differences' section of the IDLE doc, clarify how
+  running with IDLE affects sys.modules and the standard streams.
+
+- bpo-25507: fix incorrect change in IOBinding that prevented printing.
+  Augment IOBinding htest to include all major IOBinding functions.
+
+- bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
+  MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode
+  CREDITS.txt to utf-8 and open it with 'utf-8'.
+
+- bpo-15348: Stop the debugger engine (normally in a user process) before
+  closing the debugger window (running in the IDLE process). This prevents
+  the RuntimeErrors that were being caught and ignored.
+
+- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
+  debugger is active (15347); b) closing the debugger with the [X] button
+  (15348); and c) activating the debugger when already active (24455). The
+  patch by Mark Roseman does this by making two changes. 1. Suspend and
+  resume the gui.interaction method with the tcl vwait mechanism intended
+  for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
+  any existing interaction to terminate first.
+
+- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
+  to make it clearer that the program referred to is the currently running
+  user program, not IDLE itself.
+
+- bpo-24750: Improve the appearance of the IDLE editor window status bar.
+  Patch by Mark Roseman.
+
+- bpo-25313: Change the handling of new built-in text color themes to better
+  address the compatibility problem introduced by the addition of IDLE Dark.
+  Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
+
+- bpo-24782: Extension configuration is now a tab in the IDLE Preferences
+  dialog rather than a separate dialog.  The former tabs are now a sorted
+  list.  Patch by Mark Roseman.
+
+- bpo-22726: Re-activate the config dialog help button with some content
+  about the other buttons and the new IDLE Dark theme.
+
+- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
+  more or less IDLE Classic inverted, with a cobalt blue background.
+  Strings, comments, keywords, ... are still green, red, orange, ... . To
+  use it with IDLEs released before November 2015, hit the 'Save as New
+  Custom Theme' button and enter a new name, such as 'Custom Dark'.  The
+  custom theme will work with any IDLE release, and can be modified.
+
+- bpo-25224: README.txt is now an idlelib index for IDLE developers and
+  curious users. The previous user content is now in the IDLE doc chapter.
+  'IDLE' now means 'Integrated Development and Learning Environment'.
+
+- bpo-24820: Users can now set breakpoint colors in Settings -> Custom
+  Highlighting. Original patch by Mark Roseman.
+
+- bpo-24972: Inactive selection background now matches active selection
+  background, as configured by users, on all systems.  Found items are now
+  always highlighted on Windows.  Initial patch by Mark Roseman.
+
+- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
+  by a tk regression.  Initial patch by Mark Roseman.
+
+- bpo-24988: Idle ScrolledList context menus (used in debugger) now work on
+  Mac Aqua. Patch by Mark Roseman.
+
+- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
+  Mark Roseman.
+
+- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
+  OSX, make them a 'sheet'.  Patch by Mark Roseman.
+
+- bpo-25198: Enhance the initial html viewer now used for Idle Help.
+  Properly indent fixed-pitch text (patch by Mark Roseman). Give code
+  snippet a very Sphinx-like light blueish-gray background. Re-use initial
+  width and height set by users for shell and editor. When the Table of
+  Contents (TOC) menu is used, put the section header at the top of the
+  screen.
+
+- bpo-25225: Condense and rewrite Idle doc section on text colors.
+
+- bpo-21995: Explain some differences between IDLE and console Python.
+
+- bpo-22820: Explain need for *print* when running file from Idle editor.
+
+- bpo-25224: Doc: augment Idle feature list and no-subprocess section.
+
+- bpo-25219: Update doc for Idle command line options. Some were missing and
+  notes were not correct.
+
+- bpo-24861: Most of idlelib is private and subject to change. Use
+  idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
+
+- bpo-25199: Idle: add synchronization comments for future maintainers.
+
+- bpo-16893: Replace help.txt with help.html for Idle doc display. The new
+  idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
+  better than help.txt and will better document Idle as released. The
+  tkinter html viewer that works for this file was written by Rose Roseman.
+  The now unused EditorWindow.HelpDialog class and helt.txt file are
+  deprecated.
+
+- bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
+
+- bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
+
+Documentation
+-------------
+
+- bpo-26736: Used HTTPS for external links in the documentation if possible.
+
+- bpo-6953: Rework the Readline module documentation to group related
+  functions together, and add more details such as what underlying Readline
+  functions and variables are accessed.
+
+- bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
+
+- bpo-24952: Clarify the default size argument of stack_size() in the
+  "threading" and "_thread" modules. Patch from Mattip.
+
+- bpo-26014: Update 3.x packaging documentation: * "See also" links to the
+  new docs are now provided in the legacy pages * links to setuptools
+  documentation have been updated
+
+Tests
+-----
+
+- bpo-21916: Added tests for the turtle module.  Patch by ingrid, Gregory
+  Loyse and Jelle Zijlstra.
+
+- bpo-26295: When using "python3 -m test --testdir=TESTDIR", regrtest
+  doesn't add "test." prefix to test module names.
+
+- bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
+  was untested.
+
+- bpo-26015: Added new tests for pickling iterators of mutable sequences.
+
+- bpo-26325: Added test.support.check_no_resource_warning() to check that no
+  ResourceWarning is emitted.
+
+- bpo-25940: Changed test_ssl to use its internal local server more.  This
+  avoids relying on svn.python.org, which recently changed root certificate.
+
+- bpo-25616: Tests for OrderedDict are extracted from test_collections into
+  separate file test_ordered_dict.
+
+- bpo-25449: Added tests for OrderedDict subclasses.
+
+- bpo-25188: Add -P/--pgo to test.regrtest to suppress error output when
+  running the test suite for the purposes of a PGO build. Initial patch by
+  Alecsandru Patrascu.
+
+- bpo-22806: Add ``python -m test --list-tests`` command to list tests.
+
+- bpo-18174: ``python -m test --huntrleaks ...`` now also checks for leak of
+  file descriptors. Patch written by Richard Oudkerk.
+
+- bpo-25260: Fix ``python -m test --coverage`` on Windows. Remove the list
+  of ignored directories.
+
+- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass
+  along to regrtest.py.  Previously there was a limit of 9.
+
+- bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files
+  cannot be written.
+
+Build
+-----
+
+- bpo-21277: Don't try to link _ctypes with a ffi_convenience library.
+
+- bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier
+  de Gaye.
+
+- bpo-26932: Fixed support of RTLD_* constants defined as enum values, not
+  via macros (in particular on Android).  Patch by Chi Hsuan Yen.
+
+- bpo-22359: Disable the rules for running _freeze_importlib and pgen when
+  cross-compiling.  The output of these programs is normally saved with the
+  source code anyway, and is still regenerated when doing a native build.
+  Patch by Xavier de Gaye.
+
+- bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except
+  on Mac OS X. Patch written by Chi Hsuan Yen.
+
+- bpo-25702: A --with-lto configure option has been added that will enable
+  link time optimizations at build time during a make profile-opt. Some
+  compilers and toolchains are known to not produce stable code when using
+  LTO, be sure to test things thoroughly before relying on it. It can
+  provide a few % speed up over profile-opt alone.
+
+- bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old
+  versions.
+
+- bpo-17603: Avoid error about nonexistent fileblocks.o file by using a
+  lower-level check for st_blocks in struct stat.
+
+- bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern
+  Thiel.
+
+- bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
+
+- bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to
+  ``PCbuild\build.bat`` for building with Profile-Guided Optimization.  The
+  old ``PCbuild\build_pgo.bat`` script is removed.
+
+- bpo-25827: Add support for building with ICC to ``configure``, including a
+  new ``--with-icc`` flag.
+
+- bpo-25696: Fix installation of Python on UNIX with make -j9.
+
+- bpo-24986: It is now possible to build Python on Windows without errors
+  when external libraries are not available.
+
+- bpo-24421: Compile Modules/_math.c once, before building extensions.
+  Previously it could fail to compile properly if the math and cmath builds
+  were concurrent.
+
+- bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with
+  OpenSSL 1.0.2g.
+
+- bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
+
+- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
+
+- bpo-24324: Do not enable unreachable code warnings when using gcc as the
+  option does not work correctly in older versions of gcc and has been
+  silently removed as of gcc-4.5.
+
+Windows
+-------
+
+- bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
+
+- bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases
+  that don't include the contents of the include directory (that is, 1.0.2e
+  and later).
+
+- bpo-26071: bdist_wininst created binaries fail to start and find 32bit
+  Python
+
+- bpo-26073: Update the list of magic numbers in launcher
+
+- bpo-26065: Excludes venv from library when generating embeddable distro.
+
+- bpo-25022: Removed very outdated PC/example_nt/ directory.
+
+Tools/Demos
+-----------
+
+- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
+  is loaded, but get C types on demand. The C types can change if
+  python-gdb.py is loaded before the Python executable. Patch written by
+  Thomas Ilsche.
+
+- bpo-26271: Fix the Freeze tool to properly use flags passed through
+  configure. Patch by Daniel Shaulov.
+
+- bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py.
+  Patch by Guo Ci Teo.
+
+- bpo-26316: Fix variable name typo in Argument Clinic.
+
+- bpo-25440: Fix output of python-config --extension-suffix.
+
+- bpo-25154: The pyvenv script has been deprecated in favour of `python3 -m
+  venv`.
+
+C API
+-----
+
+- bpo-26312: SystemError is now raised in all programming bugs with using
+  PyArg_ParseTupleAndKeywords().  RuntimeError did raised before in some
+  programming bugs.
+
+- bpo-26198: ValueError is now raised instead of TypeError on buffer
+  overflow in parsing "es#" and "et#" format units.  SystemError is now
+  raised instead of TypeError on programmatical error in parsing format
+  string.
+
+
+What's New in Python 3.5.5 final?
+=================================
+
+*Release date: 2018-02-04*
+
+There were no new changes in version 3.5.5.
+
+
+
+What's New in Python 3.5.5 release candidate 1?
+===============================================
+
+*Release date: 2018-01-23*
+
+Security
+--------
+
+- bpo-32551: The ``sys.path[0]`` initialization change for bpo-29139 caused
+  a regression by revealing an inconsistency in how sys.path is initialized
+  when executing ``__main__`` from a zipfile, directory, or other import
+  location. This is considered a potential security issue, as it may lead to
+  privileged processes unexpectedly loading code from user controlled
+  directories in situations where that was not previously the case. The
+  interpreter now consistently avoids ever adding the import location's
+  parent directory to ``sys.path``, and ensures no other ``sys.path``
+  entries are inadvertently modified when inserting the import location
+  named on the command line. (Originally reported as bpo-29723 against
+  Python 3.6rc1, but it was missed at the time that the then upcoming Python
+  3.5.4 release would also be affected)
+
+- bpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape,
+  CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by
+  Miro Hrončok.
+
+- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
+  get security fixes.
+
+Core and Builtins
+-----------------
+
+- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
+  doesn't call ``PyObject_GC_UnTrack()``.
+
+Library
+-------
+
+- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays.
+  Identical objects will be saved only once. Equal references will be load
+  as identical objects. Added support for saving and loading recursive data
+  structures.
+
+- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
+  partial characters for UTF-8 input (libexpat bug 115):
+  https://github.com/libexpat/libexpat/issues/115
+
+
+What's New in Python 3.5.4 final?
+=================================
+
+*Release date: 2017-08-07*
+
+Library
+-------
+
+- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
+  contains CR or LF. Patch by Dong-hee Na.
+
+
+What's New in Python 3.5.4 release candidate 1?
+===============================================
+
+*Release date: 2017-07-23*
+
+Security
+--------
+
+- bpo-30730: Prevent environment variables injection in subprocess on
+  Windows.  Prevent passing other environment variables and command
+  arguments.
+
+- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
+  security vulnerabilities including: CVE-2017-9233 (External entity
+  infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
+  CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
+  CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
+  CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
+  impact Python, since Python already gets entropy from the OS to set the
+  expat secret using ``XML_SetHashSalt()``.
+
+- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
+  example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
+  ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
+  authentication (``login@host``).
+
+- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
+  CVE-2016-0718 and CVE-2016-4472. See
+  https://sourceforge.net/p/expat/bugs/537/ for more information.
+
+Core and Builtins
+-----------------
+
+- bpo-30876: Relative import from unloaded package now reimports the package
+  instead of failing with SystemError.  Relative import from non-package now
+  fails with ImportError rather than SystemError.
+
+- bpo-30765: Avoid blocking in pthread_mutex_lock() when
+  PyThread_acquire_lock() is asked not to block.
+
+- bpo-27945: Fixed various segfaults with dict when input collections are
+  mutated during searching, inserting or comparing.  Based on patches by
+  Duane Griffin and Tim Mitchell.
+
+- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
+  non-interned attribute names.  Based on patch by Eryk Sun.
+
+- bpo-29935: Fixed error messages in the index() method of tuple, list and
+  deque when pass indices of wrong type.
+
+- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
+  :exc:`OverflowError`.
+
+- bpo-29600: Fix wrapping coroutine return values in StopIteration.
+
+- bpo-29537: Restore runtime compatibility with bytecode files generated by
+  CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems
+  that could be caused by the malformed variant of the
+  BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr
+  Viktorin, Serhiy Storchaka, and Nick Coghlan.
+
+- bpo-28598: Support __rmod__ for subclasses of str being called before
+  str.__mod__. Patch by Martijn Pieters.
+
+- bpo-29602: Fix incorrect handling of signed zeros in complex constructor
+  for complex subclasses and for inputs having a __complex__ method. Patch
+  by Serhiy Storchaka.
+
+- bpo-29347: Fixed possibly dereferencing undefined pointers when creating
+  weakref objects.
+
+- bpo-29438: Fixed use-after-free problem in key sharing dict.
+
+- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
+
+- bpo-29337: Fixed possible BytesWarning when compare the code objects.
+  Warnings could be emitted at compile time.
+
+- bpo-29478: If max_line_length=None is specified while using the Compat32
+  policy, it is no longer ignored.  Patch by Mircea Cosbuc.
+
+Library
+-------
+
+- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
+  builtin functions.  Patch by Aaron Gallagher.
+
+- bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
+
+- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
+  thread completes, even if the thread was started by the same process which
+  created the queue.
+
+- bpo-29854: Fix segfault in readline when using readline's history-size
+  option.  Patch by Nir Soffer.
+
+- bpo-30807: signal.setitimer() may disable the timer when passed a tiny
+  value. Tiny values (such as 1e-6) are valid non-zero values for
+  setitimer(), which is specified as taking microsecond-resolution
+  intervals. However, on some platform, our conversion routine could convert
+  1e-6 into a zero interval, therefore disabling the timer instead of
+  (re-)scheduling it.
+
+- bpo-30441: Fix bug when modifying os.environ while iterating over it
+
+- bpo-30532: Fix email header value parser dropping folding white space in
+  certain cases.
+
+- bpo-29169: Update zlib to 1.2.11.
+
+- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
+  with bytes-like argument.
+
+- bpo-30746: Prohibited the '=' character in environment variable names in
+  ``os.putenv()`` and ``os.spawn*()``.
+
+- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
+  They now always return bytes.
+
+- bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases
+  when a package is only shipped with bytecodes. Patch by Alexandru
+  Ardelean.
+
+- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
+  reference cycle to not keep objects alive longer than expected.
+
+- bpo-30149: inspect.signature() now supports callables with
+  variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
+  Na.
+
+- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
+  Patch by Sanjay Sundaresan.
+
+- bpo-24484: Avoid race condition in multiprocessing cleanup.
+
+- bpo-28994: The traceback no longer displayed for SystemExit raised in a
+  callback registered by atexit.
+
+- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
+  called.
+
+- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
+  support for ContextManager on all versions. Original PRs by Jelle Zijlstra
+  and Ivan Levkivskyi
+
+- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
+  implementation. Patch by Michaël Sghaïer.
+
+- bpo-29743: Closing transport during handshake process leaks open socket.
+  Patch by Nikolay Kim
+
+- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
+  Sornay.
+
+- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
+  EINVAL on stdin.write() if the child process is still running but closed
+  the pipe.
+
+- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
+  handle IPv6 addresses.
+
+- bpo-29960: Preserve generator state when _random.Random.setstate() raises
+  an exception. Patch by Bryan Olson.
+
+- bpo-30414: multiprocessing.Queue._feed background running thread do not
+  break from main loop on exception.
+
+- bpo-30003: Fix handling escape characters in HZ codec.  Based on patch by
+  Ma Lin.
+
+- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
+  and *forkserver* start methods.
+
+- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
+  (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
+  This error occurs sometimes on SSL connections.
+
+- bpo-30375: Warnings emitted when compile a regular expression now always
+  point to the line in the user code.  Previously they could point into
+  inners of the re module if emitted from inside of groups or conditionals.
+
+- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
+  coroutine and the coroutine returned without any more ``await``.
+
+- bpo-29990: Fix range checking in GB18030 decoder.  Original patch by Ma
+  Lin.
+
+- bpo-26293: Change resulted because of zipfile breakage. (See also:
+  bpo-29094)
+
+- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
+  Misusing them could cause memory leaks or crashes.  Now scanner and
+  encoder objects are completely initialized in the __new__ methods.
+
+- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
+  when Ctrl-C is received.
+
+- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
+  WrapperDescriptorType, minor bug-fixes.  Original PRs by Jim
+  Fasarakis-Hilliard and Ivan Levkivskyi.
+
+- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
+
+- bpo-30070: Fixed leaks and crashes in errors handling in the parser
+  module.
+
+- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
+  readline() or __next__() respectively return non-sizeable object. Fixed
+  possible other errors caused by not checking results of PyObject_Size(),
+  PySequence_Size(), or PyMapping_Size().
+
+- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
+  is present.
+
+- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
+  Patch by Armin Rigo.
+
+- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
+  contextlib.contextmanager.  Patch by Siddharth Velankar.
+
+- bpo-29998: Pickling and copying ImportError now preserves name and path
+  attributes.
+
+- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
+  long runs of empty iterables.
+
+- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
+  and wrong types.
+
+- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
+  exception at the very first of an iterable may swallow the exception or
+  make the program hang. Patch by Davin Potts and Xiang Zhang.
+
+- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
+  the OS gives priority to errors such as EACCES over EEXIST.
+
+- bpo-29861: Release references to tasks, their arguments and their results
+  as soon as they are finished in multiprocessing.Pool.
+
+- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
+  Patch by Christophe Zeitouny.
+
+- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
+
+- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
+  are not strings.  Patch by Michael Seifert.
+
+- bpo-29742: get_extra_info() raises exception if get called on closed ssl
+  transport. Patch by Nikolay Kim.
+
+- bpo-8256: Fixed possible failing or crashing input() if attributes
+  "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
+  strings.
+
+- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
+  big intables (objects that have __int__) as elements.  Patch by Oren
+  Milman.
+
+- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
+  exception) to exception(s) raised in the dispatched methods. Patch by Petr
+  Motejlek.
+
+- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
+  before all pipes are closed.
+
+- bpo-29703: Fix asyncio to support instantiation of new event loops in
+  child processes.
+
+- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
+
+- bpo-29110: Fix file object leak in aifc.open() when file is given as a
+  filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
+
+- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
+  anymore. Patch written by Jiajun Huang.
+
+- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
+  longer affects a partial object after creation.
+
+- bpo-28556: Various updates to typing module: typing.Counter,
+  typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
+  Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
+
+- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
+  3.6.0: check minimum and maximum years.
+
+- bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when
+  used with a rare combination of multiprocessing and custom codecs.
+
+- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
+
+- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
+  match object. Based on patch by WGH.
+
+- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
+  to a stopped instead of terminated state (ex: when under ptrace).
+
+- bpo-29290: Fix a regression in argparse that help messages would wrap at
+  non-breaking spaces.
+
+- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
+
+- bpo-29011: Fix an important omission by adding Deque to the typing module.
+
+- bpo-29219: Fixed infinite recursion in the repr of uninitialized
+  ctypes.CDLL instances.
+
+- bpo-28969: Fixed race condition in C implementation of
+  functools.lru_cache. KeyError could be raised when cached function with
+  full cache was simultaneously called from different threads with the same
+  uncached arguments.
+
+- bpo-29142: In urllib.request, suffixes in no_proxy environment variable
+  with leading dots could match related hostnames again (e.g. .b.c matches
+  a.b.c). Patch by Milan Oberkirch.
+
+Documentation
+-------------
+
+- bpo-30176: Add missing attribute related constants in curses
+  documentation.
+
+- bpo-26985: Add missing info of code object in inspect documentation.
+
+- bpo-28929: Link the documentation to its source file on GitHub.
+
+- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
+  to aiosmtpd, a third-party asyncio-based replacement.
+
+- bpo-26355: Add canonical header link on each page to corresponding major
+  version of the documentation. Patch by Matthias Bussonnier.
+
+- bpo-29349: Fix Python 2 syntax in code for building the documentation.
+
+Tests
+-----
+
+- bpo-30822: Fix regrtest command line parser to allow passing -u
+  extralargefile to run test_zipfile64.
+
+- bpo-30383: regrtest: Enhance regrtest and backport features from the
+  master branch. Add options: --coverage, --testdir, --list-tests (list test
+  files, don't run them), --list-cases (list test identifiers, don't run
+  them, :issue:`30523`), --matchfile (load a list of test filters from a
+  text file, :issue:`30540`), --slowest (alias to --slow). Enhance output:
+  add timestamp, test result, currently running tests, "Tests result: xxx"
+  summary with total duration, etc. Fix reference leak hunting in regrtest,
+  --huntrleaks: regrtest now warms up caches, create explicitly all internal
+  singletons which are created on demand to prevent false positives when
+  checking for reference leaks. (:issue:`30675`).
+
+- bpo-30357: test_thread: setUp() now uses support.threading_setup() and
+  support.threading_cleanup() to wait until threads complete to avoid random
+  side effects on following tests. Initial patch written by Grzegorz
+  Grzywacz.
+
+- bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip
+  some tests of select.poll when running on macOS due to unresolved issues
+  with the underlying system poll function on some macOS versions.
+
+- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
+  test.support module. They now work when delete replaced attribute or item
+  inside the with statement.  The old value of the attribute or item (or
+  None if it doesn't exist) now will be assigned to the target of the "as"
+  clause, if there is one.
+
+- bpo-29571: to match the behaviour of the ``re.LOCALE`` flag,
+  test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)``
+  to determine the candidate encoding for the test regex (allowing it to
+  correctly skip the test when the default locale encoding is a multi-byte
+  encoding)
+
+Build
+-----
+
+- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
+  ``make install`` and some other make targets when configured with
+  ``--enable-optimizations``.
+
+- bpo-23404: Don't regenerate generated files based on file modification
+  time anymore: the action is now explicit. Replace ``make touch`` with
+  ``make regen-all``.
+
+- bpo-29643: Fix ``--enable-optimization`` didn't work.
+
+Windows
+-------
+
+- bpo-30687: Locate msbuild.exe on Windows when building rather than
+  vcvarsall.bat
+
+- bpo-29392: Prevent crash when passing invalid arguments into msvcrt
+  module.
+
+C API
+-----
+
+- bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if
+  Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not
+  including) or 0x03060100 or higher.
+
+- bpo-29083: Fixed the declaration of some public API functions.
+  PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
+  limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
+  Py_BuildValue() were not available in limited API of version < 3.3 when
+  PY_SSIZE_T_CLEAN is defined.
+
+
+What's New in Python 3.5.3 final?
+=================================
+
+*Release date: 2017-01-17*
+
+There were no code changes between 3.5.3rc1 and 3.5.3 final.
+
+
+
+What's New in Python 3.5.3 release candidate 1?
+===============================================
+
+*Release date: 2017-01-02*
+
+Core and Builtins
+-----------------
+
+- bpo-29073: bytearray formatting no longer truncates on first null byte.
+
+- bpo-28932: Do not include <sys/random.h> if it does not exist.
+
+- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
+  not convert combined table into split table.
+
+- bpo-25677: Correct the positioning of the syntax error caret for indented
+  blocks. Based on patch by Michael Layzell.
+
+- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
+  form.
+
+- bpo-28512: Fixed setting the offset attribute of SyntaxError by
+  PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
+
+- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
+  bug caused by a monkey-patched len() function.
+
+- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
+  when decode astral characters.  Patch by Xiang Zhang.
+
+- bpo-19398: Extra slash no longer added to sys.path components in case of
+  empty compile-time PYTHONPATH components.
+
+- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
+  build.
+
+- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
+  loss in PyTraceBack_Here().
+
+- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
+  Patch by Xiang Zhang.
+
+- bpo-28376: The type of long range iterator is now registered as Iterator.
+  Patch by Oren Milman.
+
+- bpo-28376: The constructor of range_iterator now checks that step is not
+  0. Patch by Oren Milman.
+
+- bpo-26906: Resolving special methods of uninitialized type now causes
+  implicit initialization of the type instead of a fail.
+
+- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
+  patch by Niklas Koep.
+
+- bpo-24098: Fixed possible crash when AST is changed in process of
+  compiling it.
+
+- bpo-28350: String constants with null character no longer interned.
+
+- bpo-26617: Fix crash when GC runs during weakref callbacks.
+
+- bpo-27942: String constants now interned recursively in tuples and
+  frozensets.
+
+- bpo-21578: Fixed misleading error message when ImportError called with
+  invalid keyword args.
+
+- bpo-28203: Fix incorrect type in error message from ``complex(1.0,
+  {2:3})``. Patch by Soumya Sharma.
+
+- bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
+  syscall fails with EPERM, for example when blocked by SECCOMP.
+
+- bpo-28131: Fix a regression in zipimport's compile_source().  zipimport
+  should use the same optimization level as the interpreter.
+
+- bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is
+  compiled with NSMALLPOSINTS = 0.
+
+- bpo-25758: Prevents zipimport from unnecessarily encoding a filename
+  (patch by Eryk Sun)
+
+- bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by
+  Xiang Zhang)
+
+- bpo-27812: Properly clear out a generator's frame's backreference to the
+  generator to prevent crashes in frame.clear().
+
+- bpo-27811: Fix a crash when a coroutine that has not been awaited is
+  finalized with warnings-as-errors enabled.
+
+- bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after
+  use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes.
+
+- bpo-26020: set literal evaluation order did not match documented
+  behaviour.
+
+- bpo-27782: Multi-phase extension module import now correctly allows the
+  ``m_methods`` field to be used to add module level functions to instances
+  of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.
+
+- bpo-27936: The round() function accepted a second None argument for some
+  types but not for others.  Fixed the inconsistency by accepting None for
+  all numeric types.
+
+- bpo-27487: Warn if a submodule argument to "python -m" or
+  runpy.run_module() is found in sys.modules after parent packages are
+  imported, but before the submodule is executed.
+
+- bpo-27558: Fix a SystemError in the implementation of "raise" statement.
+  In a brand new thread, raise a RuntimeError since there is no active
+  exception to reraise. Patch written by Xiang Zhang.
+
+- bpo-27419: Standard __import__() no longer look up "__import__" in globals
+  or builtins for importing submodules or "from import".  Fixed handling an
+  error of non-string package name.
+
+- bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
+
+- bpo-27514: Make having too many statically nested blocks a SyntaxError
+  instead of SystemError.
+
+- bpo-27473: Fixed possible integer overflow in bytes and bytearray
+  concatenations. Patch by Xiang Zhang.
+
+- bpo-27507: Add integer overflow check in bytearray.extend().  Patch by
+  Xiang Zhang.
+
+- bpo-27581: Don't rely on wrapping for overflow check in
+  PySequence_Tuple().  Patch by Xiang Zhang.
+
+- bpo-27443: __length_hint__() of bytearray iterators no longer return a
+  negative integer for a resized bytearray.
+
+- bpo-27942: Fix memory leak in codeobject.c
+
+Library
+-------
+
+- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
+  context. Patch by Sam Breese.
+
+- bpo-29094: Offsets in a ZIP file created with extern file object and modes
+  "w" and "x" now are relative to the start of the file.
+
+- bpo-13051: Fixed recursion errors in large or resized
+  curses.textpad.Textbox.  Based on patch by Tycho Andersen.
+
+- bpo-29119: Fix weakrefs in the pure python version of
+  collections.OrderedDict move_to_end() method. Contributed by Andra
+  Bogildea.
+
+- bpo-9770: curses.ascii predicates now work correctly with negative
+  integers.
+
+- bpo-28427: old keys should not remove new values from WeakValueDictionary
+  when collecting from another thread.
+
+- bpo-28923: Remove editor artifacts from Tix.py.
+
+- bpo-28871: Fixed a crash when deallocate deep ElementTree.
+
+- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
+  WeakValueDictionary.pop() when a GC collection happens in another thread.
+
+- bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that
+  doesn't own its elements as limits.
+
+- bpo-28779: multiprocessing.set_forkserver_preload() would crash the
+  forkserver process if a preloaded module instantiated some multiprocessing
+  objects such as locks.
+
+- bpo-28847: dbm.dumb now supports reading read-only files and no longer
+  writes the index file when it is not changed.
+
+- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
+  from_buffer_copy() methods on abstract classes like Array.
+
+- bpo-28732: Fix crash in os.spawnv() with no elements in args
+
+- bpo-28485: Always raise ValueError for negative
+  compileall.compile_dir(workers=...) parameter, even when multithreading is
+  unavailable.
+
+- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
+  garbage collector is invoked in other thread.  Based on patch by Sebastian
+  Cufre.
+
+- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
+  given empty data twice.  Patch by Benjamin Fogle.
+
+- bpo-28549: Fixed segfault in curses's addch() with ncurses6.
+
+- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
+  file with compression before trying to open it without compression.
+  Otherwise it had 50% chance failed with ignore_zeros=True.
+
+- bpo-23262: The webbrowser module now supports Firefox 36+ and derived
+  browsers.  Based on patch by Oleg Broytman.
+
+- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
+  by representing the scale as float value internally in Tk.  tkinter.IntVar
+  now works if float value is set to underlying Tk variable.
+
+- bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at
+  the start of new line after printing a month's calendar.  Patch by Xiang
+  Zhang.
+
+- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
+  Based on patch by Kaarle Ritvanen.
+
+- bpo-28353: os.fwalk() no longer fails on broken links.
+
+- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
+  workaround to Tix library bug.
+
+- bpo-28488: shutil.make_archive() no longer add entry "./" to ZIP archive.
+
+- bpo-24452: Make webbrowser support Chrome on Mac OS X.
+
+- bpo-20766: Fix references leaked by pdb in the handling of SIGINT
+  handlers.
+
+- bpo-26293: Fixed writing ZIP files that starts not from the start of the
+  file.  Offsets in ZIP file now are relative to the start of the archive in
+  conforming to the specification.
+
+- bpo-28321: Fixed writing non-BMP characters with binary format in
+  plistlib.
+
+- bpo-28322: Fixed possible crashes when unpickle itertools objects from
+  incorrect pickle data.  Based on patch by John Leitch.
+
+- Fix possible integer overflows and crashes in the mmap module with unusual
+  usage patterns.
+
+- bpo-1703178: Fix the ability to pass the --link-objects option to the
+  distutils build_ext command.
+
+- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
+  9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so
+  that they don't call itermonthdates() which can cause datetime.date
+  under/overflow.
+
+- bpo-28275: Fixed possible use after free in the decompress() methods of
+  the LZMADecompressor and BZ2Decompressor classes. Original patch by John
+  Leitch.
+
+- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
+  if pass invalid string-like object as a name.  Patch by Xiang Zhang.
+
+- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
+  Patch by Madison May.
+
+- bpo-27611: Fixed support of default root window in the tkinter.tix module.
+
+- bpo-27348: In the traceback module, restore the formatting of exception
+  messages like "Exception: None".  This fixes a regression introduced in
+  3.5a2.
+
+- bpo-25651: Allow falsy values to be used for msg parameter of subTest().
+
+- bpo-27932: Prevent memory leak in win32_ver().
+
+- Fix UnboundLocalError in socket._sendfile_use_sendfile.
+
+- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
+  os.stat().  Patch by Eryk Sun.
+
+- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
+  empty bytestring is passed.
+
+- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
+
+- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
+  Gergely Imreh and Markus Holtermann.
+
+- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
+  binascii.a2b_qp().
+
+- bpo-19003: m email.generator now replaces only ``\r`` and/or ``\n`` line
+  endings, per the RFC, instead of all unicode line endings.
+
+- bpo-28019: itertools.count() no longer rounds non-integer step in range
+  between 1.0 and 2.0 to 1.
+
+- bpo-25969: Update the lib2to3 grammar to handle the unpacking
+  generalizations added in 3.5.
+
+- bpo-14977: mailcap now respects the order of the lines in the mailcap
+  files ("first match"), as required by RFC 1542.  Patch by Michael Lazar.
+
+- bpo-24594: Validates persist parameter when opening MSI database
+
+- bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes
+  (Patch by Duane Griffin.  Reviewed and approved by Stefan Behnel.)
+
+- bpo-28047: Fixed calculation of line length used for the base64 CTE in the
+  new email policies.
+
+- bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by
+  Claude Paroz.
+
+- bpo-22450: urllib now includes an ``Accept: */*`` header among the default
+  headers. This makes the results of REST API requests more consistent and
+  predictable especially when proxy servers are involved.
+
+- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
+  between runs given the same Grammar.txt input regardless of the hash
+  randomization setting.
+
+- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
+  in the "ctypes" and "array" modules.
+
+- bpo-22233: Break email header lines *only* on the RFC specified CR and LF
+  characters, not on arbitrary unicode line breaks.  This also fixes a bug
+  in HTTP header parsing.
+
+- bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
+
+- bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name
+  fields in X.509 certs.
+
+- bpo-27850: Remove 3DES from ssl module's default cipher list to counter
+  measure sweet32 attack (CVE-2016-2183).
+
+- bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list.
+  (Required OpenSSL 1.1.0 or LibreSSL).
+
+- bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
+
+- Remove support for passing a file descriptor to os.access. It never worked
+  but previously didn't raise.
+
+- bpo-12885: Fix error when distutils encounters symlink.
+
+- bpo-27881: Fixed possible bugs when setting
+  sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
+
+- bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
+  creates not a cursor.  Patch by Xiang Zhang.
+
+- bpo-19884: Avoid spurious output on OS X with Gnu Readline.
+
+- bpo-27706: Restore deterministic behavior of random.Random().seed() for
+  string seeds using seeding version 1.  Allows sequences of calls to
+  random() to exactly match those obtained in Python 2. Patch by Nofar
+  Schnider.
+
+- bpo-10513: Fix a regression in Connection.commit().  Statements should not
+  be reset after a commit.
+
+- A new version of typing.py from https://github.com/python/typing:
+  Collection (only for 3.6) (Issue #27598). Add FrozenSet to __all__
+  (upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the
+  dict constraint in ForwardRef._eval_type (upstream #252).
+
+- bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of
+  negative exponent and negative base.
+
+- bpo-21718: cursor.description is now available for queries using CTEs.
+
+- bpo-2466: posixpath.ismount now correctly recognizes mount points which
+  the user does not have permission to access.
+
+- bpo-27773: Correct some memory management errors server_hostname in
+  _ssl.wrap_socket().
+
+- bpo-26750: unittest.mock.create_autospec() now works properly for
+  subclasses of property() and other data descriptors.
+
+- In the curses module, raise an error if window.getstr() or window.instr()
+  is passed a negative value.
+
+- bpo-27783: Fix possible usage of uninitialized memory in
+  operator.methodcaller.
+
+- bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
+
+- bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
+
+- bpo-27758: Fix possible integer overflow in the _csv module for large
+  record lengths.
+
+- bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
+  HTTP_PROXY variable when REQUEST_METHOD environment is set, which
+  indicates that the script is in CGI mode.
+
+- bpo-27656: Do not assume sched.h defines any SCHED_* constants.
+
+- bpo-27130: In the "zlib" module, fix handling of large buffers (typically
+  4 GiB) when compressing and decompressing.  Previously, inputs were
+  limited to 4 GiB, and compression and decompression operations did not
+  properly handle results of 4 GiB.
+
+- bpo-27533: Release GIL in nt._isdir
+
+- bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original
+  patch by Alexandre Vassalotti.
+
+- bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
+
+- bpo-26844: Fix error message for imp.find_module() to refer to 'path'
+  instead of 'name'. Patch by Lev Maximov.
+
+- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
+  error about unclean EOF.
+
+- bpo-27466: Change time format returned by http.cookie.time2netscape,
+  confirming the netscape cookie format and making it consistent with
+  documentation.
+
+- bpo-26664: Fix activate.fish by removing mis-use of ``$``.
+
+- bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong
+  mode no longer break tracing, trace_vinfo() now always returns a list of
+  pairs of strings, tracing in the "u" mode now works.
+
+- Fix a scoping issue in importlib.util.LazyLoader which triggered an
+  UnboundLocalError when lazy-loading a module that was already put into
+  sys.modules.
+
+- bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and
+  ispunct().
+
+- bpo-26754: Some functions (compile() etc) accepted a filename argument
+  encoded as an iterable of integers. Now only strings and byte-like objects
+  are accepted.
+
+- bpo-27048: Prevents distutils failing on Windows when environment
+  variables contain non-ASCII characters
+
+- bpo-27330: Fixed possible leaks in the ctypes module.
+
+- bpo-27238: Got rid of bare excepts in the turtle module.  Original patch
+  by Jelle Zijlstra.
+
+- bpo-27122: When an exception is raised within the context being managed by
+  a contextlib.ExitStack() and one of the exit stack generators catches and
+  raises it in a chain, do not re-raise the original exception when exiting,
+  let the new chained one through.  This avoids the :pep:`479` bug described
+  in issue25782.
+
+Security
+--------
+
+- bpo-27278: Fix os.urandom() implementation using getrandom() on Linux.
+  Truncate size to INT_MAX and loop until we collected enough random bytes,
+  instead of casting a directly Py_ssize_t to int.
+
+Library
+-------
+
+- bpo-26386: Fixed ttk.TreeView selection operations with item id's
+  containing spaces.
+
+Security
+--------
+
+- bpo-22636: Avoid shell injection problems with ctypes.util.find_library().
+
+Library
+-------
+
+- bpo-16182: Fix various functions in the "readline" module to use the
+  locale encoding, and fix get_begidx() and get_endidx() to return code
+  point indexes.
+
+- bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
+
+- bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to
+  Paulo Andrade and Petr Viktorin for the analysis and patch.
+
+- bpo-21201: Improves readability of multiprocessing error message.  Thanks
+  to Wojciech Walczak for patch.
+
+- bpo-27456: asyncio: Set TCP_NODELAY by default.
+
+- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
+  Kevin Conway.
+
+- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
+  Seth Michael Larson.
+
+- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
+  iceboy.
+
+- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
+
+- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
+
+- bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
+  Patch by Mark Williams.
+
+- bpo-28368: Refuse monitoring processes if the child watcher has no loop
+  attached. Patch by Vincent Michel.
+
+- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
+  add_writer, etc.
+
+- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
+  Марк.
+
+- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
+
+- bpo-28372: Fix asyncio to support formatting of non-python coroutines.
+
+- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
+  Марк.
+
+- bpo-27972: Prohibit Tasks to await on themselves.
+
+- bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children
+  are done. Patch by Johannes Ebke.
+
+- bpo-26796: Don't configure the number of workers for default threadpool
+  executor. Initial patch by Hans Lawrenz.
+
+- bpo-28600: Optimize loop.call_soon().
+
+- bpo-28613: Fix get_event_loop() return the current loop if called from
+  coroutines/callbacks.
+
+- bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin
+  Mayfield.
+
+- bpo-28652: Make loop methods reject socket kinds they do not support.
+
+- bpo-28653: Fix a refleak in functools.lru_cache.
+
+- bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
+
+- bpo-24142: Reading a corrupt config file left the parser in an invalid
+  state.  Original patch by Florian Höch.
+
+- bpo-28990: Fix SSL hanging if connection is closed before handshake
+  completed. (Patch by HoHo-Ho)
+
+IDLE
+----
+
+- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
+  Serwy, updated by Bayard Randel.
+
+- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
+
+- Add version to title of IDLE help window.
+
+- bpo-25564: In section on IDLE -- console differences, mention that using
+  exec means that __builtins__ is defined for each statement.
+
+- bpo-27714: text_textview and test_autocomplete now pass when re-run in the
+  same process.  This occurs when test_idle fails when run with the -w
+  option but without -jn.  Fix warning from test_config.
+
+- bpo-25507: IDLE no longer runs buggy code because of its tkinter imports.
+  Users must include the same imports required to run directly in Python.
+
+- bpo-27452: add line counter and crc to IDLE configHandler test dump.
+
+- bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
+
+- bpo-27245: IDLE: Cleanly delete custom themes and key bindings.
+  Previously, when IDLE was started from a console or by import, a cascade
+  of warnings was emitted. Patch by Serhiy Storchaka.
+
+C API
+-----
+
+- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
+
+- bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
+  an iterable of integers. Now only strings and bytes-like objects are
+  accepted.
+
+Documentation
+-------------
+
+- bpo-28513: Documented command-line interface of zipfile.
+
+Tests
+-----
+
+- bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command
+  line arguments.
+
+- bpo-28666: Now test.support.rmtree is able to remove unwritable or
+  unreadable directories.
+
+- bpo-23839: Various caches now are cleared before running every test file.
+
+- bpo-28409: regrtest: fix the parser of command line arguments.
+
+- bpo-27787: Call gc.collect() before checking each test for "dangling
+  threads", since the dangling threads are weak references.
+
+- bpo-27369: In test_pyexpat, avoid testing an error message detail that
+  changed in Expat 2.2.0.
+
+Tools/Demos
+-----------
+
+- bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the
+  current "re" module, avoid invalid Python backslash escapes, and fix a bug
+  parsing escaped C quote signs.
+
+- bpo-27332: Fixed the type of the first argument of module-level functions
+  generated by Argument Clinic.  Patch by Petr Viktorin.
+
+- bpo-27418: Fixed Tools/importbench/importbench.py.
+
+Windows
+-------
+
+- bpo-28251: Improvements to help manuals on Windows.
+
+- bpo-28110: launcher.msi has different product codes between 32-bit and
+  64-bit
+
+- bpo-25144: Ensures TargetDir is set before continuing with custom install.
+
+- bpo-27469: Adds a shell extension to the launcher so that drag and drop
+  works correctly.
+
+- bpo-27309: Enabled proper Windows styles in python[w].exe manifest.
+
+Build
+-----
+
+- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
+
+- bpo-23903: Added missed names to PC/python3.def.
+
+- bpo-10656: Fix out-of-tree building on AIX.  Patch by Tristan Carel and
+  Michael Haubenwallner.
+
+- bpo-26359: Rename --with-optimiations to --enable-optimizations.
+
+- bpo-28444: Fix missing extensions modules when cross compiling.
+
+- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
+
+- bpo-28258: Fixed build with Estonian locale (python-config and distclean
+  targets in Makefile).  Patch by Arfrever Frehtes Taifersar Arahesis.
+
+- bpo-26661: setup.py now detects system libffi with multiarch wrapper.
+
+- bpo-28066: Fix the logic that searches build directories for generated
+  include files when building outside the source tree.
+
+- bpo-15819: Remove redundant include search directory option for building
+  outside the source tree.
+
+- bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
+
+- bpo-27705: Update message in validate_ucrtbase.py
+
+- bpo-27983: Cause lack of llvm-profdata tool when using clang as required
+  for PGO linking to be a configure time error rather than make time when
+  --with-optimizations is enabled.  Also improve our ability to find the
+  llvm-profdata tool on MacOS and some Linuxes.
+
+- bpo-26307: The profile-opt build now applies PGO to the built-in modules.
+
+- bpo-26359: Add the --with-optimizations configure flag.
+
+- bpo-27713: Suppress spurious build warnings when updating importlib's
+  bootstrap files. Patch by Xiang Zhang
+
+- bpo-25825: Correct the references to Modules/python.exp and ld_so_aix,
+  which are required on AIX.  This updates references to an installation
+  path that was changed in 3.2a4, and undoes changed references to the build
+  tree that were made in 3.5.0a1.
+
+- bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi
+  Hsuan Yen.
+
+- bpo-27641: The configure script now inserts comments into the makefile to
+  prevent the pgen and _freeze_importlib executables from being
+  cross-compiled.
+
+- bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be
+  used for file generation during the build.
+
+- bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update
+  FreedBSD version checks for the original ctype UTF-8 workaround.
+
+- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
+  Patch by Gareth Rees.
+
+
+What's New in Python 3.5.2 final?
+=================================
+
+*Release date: 2016-06-26*
+
+Core and Builtins
+-----------------
+
+- bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
+
+Tests
+-----
+
+- bpo-26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test.
+
+IDLE
+----
+
+- bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.
+
+
+What's New in Python 3.5.2 release candidate 1?
+===============================================
+
+*Release date: 2016-06-12*
+
+Core and Builtins
+-----------------
+
+- bpo-27066: Fixed SystemError if a custom opener (for open()) returns a
+  negative number without setting an exception.
+
+- bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by
+  Xavier de Gaye.
+
+- bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
+  format unit.
+
+- bpo-26991: Fix possible refleak when creating a function with annotations.
+
+- bpo-27039: Fixed bytearray.remove() for values greater than 127.  Patch by
+  Joe Jevnik.
+
+- bpo-23640: int.from_bytes() no longer bypasses constructors for
+  subclasses.
+
+- bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL
+  pointer.
+
+- bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for
+  interpolation unintentionally added with move to Python 3. Behavior no
+  longer does any interpolation in .pypirc files, matching behavior in
+  Python 2.7 and Setuptools 19.0.
+
+- bpo-26659: Make the builtin slice type support cycle collection.
+
+- bpo-26718: super.__init__ no longer leaks memory if called multiple times.
+  NOTE: A direct call of super.__init__ is not endorsed!
+
+- bpo-25339: PYTHONIOENCODING now has priority over locale in setting the
+  error handler for stdin and stdout.
+
+- bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes
+  are generic sequence iterators, iterators of str, bytes, bytearray, list,
+  tuple, set, frozenset, dict, OrderedDict, corresponding views and
+  os.scandir() iterator.
+
+- bpo-26581: If coding cookie is specified multiple times on a line in
+  Python source code file, only the first one is taken to account.
+
+- bpo-26464: Fix str.translate() when string is ASCII and first replacements
+  removes character, but next replacement uses a non-ASCII character or a
+  string longer than 1 character. Regression introduced in Python 3.5.0.
+
+- bpo-22836: Ensure exception reports from PyErr_Display() and
+  PyErr_WriteUnraisable() are sensible even when formatting them produces
+  secondary errors.  This affects the reports produced by
+  sys.__excepthook__() and when __del__() raises an exception.
+
+- bpo-26302: Correct behavior to reject comma as a legal character for
+  cookie names.
+
+- bpo-4806: Avoid masking the original TypeError exception when using star
+  (``*``) unpacking in function calls.  Based on patch by Hagen Fürstenau
+  and Daniel Urban.
+
+- bpo-27138: Fix the doc comment for FileFinder.find_spec().
+
+- bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get
+  the current Python thread state, but don't issue a fatal error if it is
+  NULL. This new function must be used instead of accessing directly the
+  _PyThreadState_Current variable.  The variable is no more exposed since
+  Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
+  compiler issues.
+
+- bpo-26194: Deque.insert() gave odd results for bounded deques that had
+  reached their maximum size.  Now an IndexError will be raised when
+  attempting to insert into a full deque.
+
+- bpo-25843: When compiling code, don't merge constants if they are equal
+  but have a different types. For example, ``f1, f2 = lambda: 1, lambda:
+  1.0`` is now correctly compiled to two different functions: ``f1()``
+  returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``int``), even if
+  ``1`` and ``1.0`` are equal.
+
+- bpo-22995: [UPDATE] Comment out the one of the pickleability tests in
+  _PyObject_GetState() due to regressions observed in Cython-based projects.
+
+- bpo-25961: Disallowed null characters in the type name.
+
+- bpo-25973: Fix segfault when an invalid nonlocal statement binds a name
+  starting with two underscores.
+
+- bpo-22995: Instances of extension types with a state that aren't
+  subclasses of list or dict and haven't implemented any pickle-related
+  methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or
+  __getstate__), can no longer be pickled.  Including memoryview.
+
+- bpo-20440: Massive replacing unsafe attribute setting code with special
+  macro Py_SETREF.
+
+- bpo-25766: Special method __bytes__() now works in str subclasses.
+
+- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
+  This allows sys.getsize() to work correctly with their subclasses with
+  __slots__ defined.
+
+- bpo-25709: Fixed problem with in-place string concatenation and utf-8
+  cache.
+
+- bpo-27147: Mention :pep:`420` in the importlib docs.
+
+- bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside
+  __getattr__.
+
+- bpo-24731: Fixed crash on converting objects with special methods
+  __bytes__, __trunc__, and __float__ returning instances of subclasses of
+  bytes, int, and float to subclasses of bytes, int, and float
+  correspondingly.
+
+- bpo-26478: Fix semantic bugs when using binary operators with dictionary
+  views and tuples.
+
+- bpo-26171: Fix possible integer overflow and heap corruption in
+  zipimporter.get_data().
+
+- bpo-25660: Fix TAB key behaviour in REPL with readline.
+
+- bpo-25887: Raise a RuntimeError when a coroutine object is awaited more
+  than once.
+
+- bpo-27243: Update the __aiter__ protocol: instead of returning an
+  awaitable that resolves to an asynchronous iterator, the asynchronous
+  iterator should be returned directly.  Doing the former will trigger a
+  PendingDeprecationWarning.
+
+Security
+--------
+
+- bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
+
+- Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by
+  Team Oststrom
+
+Library
+-------
+
+- bpo-21386: Implement missing IPv4Address.is_global property.  It was
+  documented since 07a5610bae9d.  Initial patch by Roger Luethi.
+
+- bpo-20900: distutils register command now decodes HTTP responses
+  correctly.  Initial patch by ingrid.
+
+- A new version of typing.py provides several new classes and features:
+  @overload outside stubs, Reversible, DefaultDict, Text, ContextManager,
+  Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some
+  of the new features are not yet implemented in mypy or other static
+  analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable,
+  AsyncIterator) have been added (in fact they made it into 3.5.1 but were
+  never mentioned).
+
+- bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
+  sending a message body for 205 Reset Content.  Also, don't send Content
+  header fields in responses that don't have a body.  Patch by Susumu
+  Koshiba.
+
+- bpo-21313: Fix the "platform" module to tolerate when sys.version contains
+  truncated build information.
+
+Security
+--------
+
+- bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
+  ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
+  entropy pool is not initialized yet. Patch written by Colm Buckley.
+
+Library
+-------
+
+- bpo-27164: In the zlib module, allow decompressing raw Deflate streams
+  with a predefined zdict.  Based on patch by Xiang Zhang.
+
+- bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
+  write data to the client.  Previously it could do partial writes and
+  truncate data.  Also, wsgiref.handler.ServerHandler can now handle stdout
+  doing partial writes, but this is deprecated.
+
+- bpo-26809: Add ``__all__`` to :mod:`string`.  Patch by Emanuel Barry.
+
+- bpo-26373: subprocess.Popen.communicate now correctly ignores
+  BrokenPipeError when the child process dies before .communicate() is
+  called in more/all circumstances.
+
+- bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch
+  by Claudiu Popa.
+
+- bpo-27114: Fix SSLContext._load_windows_store_certs fails with
+  PermissionError
+
+- bpo-18383: Avoid creating duplicate filters when using filterwarnings and
+  simplefilter. Based on patch by Alex Shkop.
+
+- bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
+  SELinux and fails with EACCESS. The function now falls back to fcntl().
+  Patch written by Michał Bednarski.
+
+- bpo-27014: Fix infinite recursion using typing.py.  Thanks to Kalle Tuure!
+
+- bpo-14132: Fix urllib.request redirect handling when the target only has a
+  query string.  Original fix by Ján Janech.
+
+- bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes
+  found in redirect target URLs.  Some servers send Location header fields
+  with non-ASCII bytes, but "http.client" requires the request target to be
+  ASCII-encodable, otherwise a UnicodeEncodeError is raised.  Based on patch
+  by Christian Heimes.
+
+- bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
+  contributed by Chi Hsuan Yen.
+
+- bpo-22274: In the subprocess module, allow stderr to be redirected to
+  stdout even when stdout is not redirected.  Patch by Akira Li.
+
+- bpo-26807: mock_open 'files' no longer error on readline at end of file.
+  Patch from Yolanda Robla.
+
+- bpo-25745: Fixed leaking a userptr in curses panel destructor.
+
+- bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper
+  in statistics.pvariance.
+
+- bpo-26881: The modulefinder module now supports extended opcode arguments.
+
+- bpo-23815: Fixed crashes related to directly created instances of types in
+  _tkinter and curses.panel modules.
+
+- bpo-17765: weakref.ref() no longer silently ignores keyword arguments.
+  Patch by Georg Brandl.
+
+- bpo-26873: xmlrpc now raises ResponseError on unsupported type tags
+  instead of silently return incorrect result.
+
+- bpo-26711: Fixed the comparison of plistlib.Data with other types.
+
+- bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only
+  occurs on SunOS when the ctypes implementation searches for the `crle`
+  program.  Patch by Xiang Zhang.  Tested on SunOS by Kees Bos.
+
+- bpo-26864: In urllib.request, change the proxy bypass host checking
+  against no_proxy to be case-insensitive, and to not match unrelated host
+  names that happen to have a bypassed hostname as a suffix.  Patch by Xiang
+  Zhang.
+
+- bpo-26634: recursive_repr() now sets __qualname__ of wrapper.  Patch by
+  Xiang Zhang.
+
+- bpo-26804: urllib.request will prefer lower_case proxy environment
+  variables over UPPER_CASE or Mixed_Case ones. Patch contributed by
+  Hans-Peter Jansen.
+
+- bpo-26837: assertSequenceEqual() now correctly outputs non-stringified
+  differing items (like bytes in the -b mode).  This affects
+  assertListEqual() and assertTupleEqual().
+
+- bpo-26041: Remove "will be removed in Python 3.7" from deprecation
+  messages of platform.dist() and platform.linux_distribution(). Patch by
+  Kumaripaba Miyurusara Athukorala.
+
+- bpo-26822: itemgetter, attrgetter and methodcaller objects no longer
+  silently ignore keyword arguments.
+
+- bpo-26733: Disassembling a class now disassembles class and static
+  methods. Patch by Xiang Zhang.
+
+- bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
+  :exc:`AttributeError` instead of :exc:`NameError`. Patch written by
+  Emanuel Barry.
+
+- bpo-24838: tarfile's ustar and gnu formats now correctly calculate name
+  and link field limits for multibyte character encodings like utf-8.
+
+Security
+--------
+
+- bpo-26657: Fix directory traversal vulnerability with http.server on
+  Windows.  This fixes a regression that was introduced in 3.3.4rc1 and
+  3.4.0rc1.  Based on patch by Philipp Hagemeister.
+
+Library
+-------
+
+- bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8.  Patch by
+  Anthony Sottile.
+
+- bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
+  more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
+  1024 bytes per call.
+
+- bpo-16329: Add .webm to mimetypes.types_map.  Patch by Giampaolo Rodola'.
+
+- bpo-13952: Add .csv to mimetypes.types_map.  Patch by Geoff Wilson.
+
+- bpo-26709: Fixed Y2038 problem in loading binary PLists.
+
+- bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our
+  own SIGWINCH handler.  Patch by Eric Price.
+
+- bpo-26586: In http.server, respond with "413 Request header fields too
+  large" if there are too many header fields to parse, rather than killing
+  the connection and raising an unhandled exception.  Patch by Xiang Zhang.
+
+- bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable()
+  to always return False.
+
+- bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of
+  tuple (changeset 3603bae63c13 only works for classes) so we need to
+  implement __ne__ ourselves.  Patch by Andrew Plummer.
+
+- bpo-26644: Raise ValueError rather than SystemError when a negative length
+  is passed to SSLSocket.recv() or read().
+
+- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
+  instead of up to 1024.
+
+- bpo-26616: Fixed a bug in datetime.astimezone() method.
+
+- bpo-21925: :func:`warnings.formatwarning` now catches exceptions on
+  ``linecache.getline(...)`` to be able to log :exc:`ResourceWarning`
+  emitted late during the Python shutdown process.
+
+- bpo-24266: Ctrl+C during Readline history search now cancels the search
+  mode when compiled with Readline 7.
+
+- bpo-26560: Avoid potential ValueError in BaseHandler.start_response.
+  Initial patch by Peter Inglesby.
+
+Security
+--------
+
+- bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is
+  empty. Patch by Baji.
+
+Library
+-------
+
+- bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
+  to support importing packages.
+
+- bpo-26499: Account for remaining Content-Length in HTTPResponse.readline()
+  and read1(). Based on patch by Silent Ghost. Also document that
+  HTTPResponse now supports these methods.
+
+- bpo-25320: Handle sockets in directories unittest discovery is scanning.
+  Patch from Victor van den Elzen.
+
+- bpo-16181: cookiejar.http2time() now returns None if year is higher than
+  datetime.MAXYEAR.
+
+- bpo-26513: Fixes platform module detection of Windows Server
+
+- bpo-23718: Fixed parsing time in week 0 before Jan 1.  Original patch by
+  Tamás Bence Gedai.
+
+- bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise
+  NotImplementedError instead of ImportError.
+
+- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
+
+- bpo-15068: Got rid of excessive buffering in the fileinput module. The
+  bufsize parameter is no longer used.
+
+- bpo-2202: Fix UnboundLocalError in
+  AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu
+  Dupuy.
+
+- bpo-25718: Fixed pickling and copying the accumulate() iterator with total
+  is None.
+
+- bpo-26475: Fixed debugging output for regular expressions with the (?x)
+  flag.
+
+- bpo-26457: Fixed the subnets() methods in IP network classes for the case
+  when resulting prefix length is equal to maximal prefix length. Based on
+  patch by Xiang Zhang.
+
+- bpo-26385: Remove the file if the internal open() call in
+  NamedTemporaryFile() fails. Patch by Silent Ghost.
+
+- bpo-26402: Fix XML-RPC client to retry when the server shuts down a
+  persistent connection.  This was a regression related to the new
+  http.client.RemoteDisconnected exception in 3.5.0a4.
+
+- bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with
+  adobe=True.  Patch by Swati Jaiswal.
+
+- bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
+
+- bpo-26367: importlib.__import__() raises SystemError like
+  builtins.__import__() when ``level`` is specified but without an
+  accompanying package specified.
+
+- bpo-26309: In the "socketserver" module, shut down the request (closing
+  the connected socket) when verify_request() returns false.  Patch by Aviv
+  Palivoda.
+
+Security
+--------
+
+- bpo-25939: On Windows open the cert store readonly in
+  ssl.enum_certificates.
+
+Library
+-------
+
+- bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
+
+- bpo-26117: The os.scandir() iterator now closes file descriptor not only
+  when the iteration is finished, but when it was failed with error.
+
+- bpo-25911: Restored support of bytes paths in os.walk() on Windows.
+
+- bpo-26045: Add UTF-8 suggestion to error message when posting a
+  non-Latin-1 string with http.client.
+
+- bpo-12923: Reset FancyURLopener's redirect counter even if there is an
+  exception. Based on patches by Brian Brazil and Daniel Rocco.
+
+- bpo-25945: Fixed a crash when unpickle the functools.partial object with
+  wrong state. Fixed a leak in failed functools.partial constructor. "args"
+  and "keywords" attributes of functools.partial have now always types tuple
+  and dict correspondingly.
+
+- bpo-26202: copy.deepcopy() now correctly copies range() objects with
+  non-atomic attributes.
+
+- bpo-23076: Path.glob() now raises a ValueError if it's called with an
+  invalid pattern. Patch by Thomas Nyberg.
+
+- bpo-19883: Fixed possible integer overflows in zipimport.
+
+- bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and
+  gethostbyname_ex() functions of the socket module now decode the hostname
+  from the ANSI code page rather than UTF-8.
+
+- bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8
+  encoding.
+
+- bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
+
+- bpo-16620: Fixed AttributeError in msilib.Directory.glob().
+
+- bpo-26013: Added compatibility with broken protocol 2 pickles created in
+  old Python 3 versions (3.4.3 and lower).
+
+- bpo-25850: Use cross-compilation by default for 64-bit Windows.
+
+- bpo-17633: Improve zipimport's support for namespace packages.
+
+- bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing
+  before $() vars.
+
+- bpo-22138: Fix mock.patch behavior when patching descriptors. Restore
+  original values after patching. Patch contributed by Sean McCully.
+
+- bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
+  option if it is safe to do so.
+
+- bpo-26012: Don't traverse into symlinks for ``**`` pattern in
+  pathlib.Path.[r]glob().
+
+- bpo-24120: Ignore PermissionError when traversing a tree with
+  pathlib.Path.[r]glob(). Patch by Ulrich Petri.
+
+- bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer
+  attribute (restores backward compatibility).
+
+- bpo-25447: Copying the lru_cache() wrapper object now always works,
+  independently from the type of the wrapped object (by returning the
+  original object unchanged).
+
+- bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
+
+- bpo-25860: os.fwalk() no longer skips remaining directories when error
+  occurs. Original patch by Samson Lee.
+
+- bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
+
+- bpo-25902: Fixed various refcount issues in ElementTree iteration.
+
+- bpo-25717: Restore the previous behaviour of tolerating most fstat()
+  errors when opening files.  This was a regression in 3.5a1, and stopped
+  anonymous temporary files from working in special cases.
+
+- bpo-24903: Fix regression in number of arguments compileall accepts when
+  '-d' is specified.  The check on the number of arguments has been dropped
+  completely as it never worked correctly anyway.
+
+- bpo-25764: In the subprocess module, preserve any exception caused by
+  fork() failure when preexec_fn is used.
+
+- bpo-6478: _strptime's regexp cache now is reset after changing timezone
+  with time.tzset().
+
+- bpo-14285: When executing a package with the "python -m package" option,
+  and package initialization fails, a proper traceback is now reported.  The
+  "runpy" module now lets exceptions from package initialization pass back
+  to the caller, rather than raising ImportError.
+
+- bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message
+  ". . . is a package and cannot be directly executed" if the package could
+  not even be initialized (e.g. due to a bad ``*.pyc`` file).
+
+- bpo-25177: Fixed problem with the mean of very small and very large
+  numbers. As a side effect, statistics.mean and statistics.variance should
+  be significantly faster.
+
+- bpo-25718: Fixed copying object with state with boolean value is false.
+
+- bpo-10131: Fixed deep copying of minidom documents.  Based on patch by
+  Marian Ganisin.
+
+- bpo-25725: Fixed a reference leak in pickle.loads() when unpickling
+  invalid data including tuple instructions.
+
+- bpo-25663: In the Readline completer, avoid listing duplicate global
+  names, and search the global namespace before searching builtins.
+
+- bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
+
+- bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
+
+- bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
+
+- bpo-25624: ZipFile now always writes a ZIP_STORED header for directory
+  entries.  Patch by Dingyuan Wang.
+
+- Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu
+  Davis.
+
+- bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк
+  Коренберг.
+
+- bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
+  versions 10.5 or higher.  Original patch by A. Jesse Jiryu Davis.
+
+- bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
+  current versions of OpenBSD and NetBSD.  Patch by A. Jesse Jiryu Davis.
+
+- bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input.
+  Patch by Jack O'Connor.
+
+- bpo-27040: Add loop.get_exception_handler method
+
+- bpo-27041: asyncio: Add loop.create_future method
+
+- bpo-27223: asyncio: Fix _read_ready and _write_ready to respect
+  _conn_lost. Patch by Łukasz Langa.
+
+- bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by
+  David Coles.
+
+IDLE
+----
+
+- bpo-5124: Paste with text selected now replaces the selection on X11. This
+  matches how paste works on Windows, Mac, most modern Linux apps, and ttk
+  widgets. Original patch by Serhiy Storchaka.
+
+- bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is
+  a private implementation of test.test_idle and tool for maintainers.
+
+- bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These
+  persisted after other warnings were suppressed in #20567. Apply Serhiy
+  Storchaka's update_idletasks solution to four test files. Record this
+  additional advice in idle_test/README.txt
+
+- bpo-20567: Revise idle_test/README.txt with advice about avoiding tk
+  warning messages from tests.  Apply advice to several IDLE tests.
+
+- bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move
+  code for configuring text widget colors to a new function.
+
+- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
+  on Linux prevented the configuration dialog from opening.
+
+- bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav
+  Heblikar.
+
+- bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav
+  Heblikar.
+
+- bpo-18410: Add test for IDLE's search dialog. Original patch by Westley
+  Martínez.
+
+- bpo-21703: Add test for IDLE's undo delegator. Original patch by Saimadhav
+  Heblikar .
+
+- bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
+
+- bpo-23977: Add more asserts to test_delegator.
+
+- bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav
+  Heblikar.
+
+- In the 'IDLE-console differences' section of the IDLE doc, clarify how
+  running with IDLE affects sys.modules and the standard streams.
+
+- bpo-25507: fix incorrect change in IOBinding that prevented printing.
+  Augment IOBinding htest to include all major IOBinding functions.
+
+- bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
+  MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode
+  CREDITS.txt to utf-8 and open it with 'utf-8'.
+
+Documentation
+-------------
+
+- bpo-19489: Moved the search box from the sidebar to the header and footer
+  of each page. Patch by Ammar Askar.
+
+- bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5.
+
+- bpo-26736: Used HTTPS for external links in the documentation if possible.
+
+- bpo-6953: Rework the Readline module documentation to group related
+  functions together, and add more details such as what underlying Readline
+  functions and variables are accessed.
+
+- bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
+
+- bpo-25500: Fix documentation to not claim that __import__ is searched for
+  in the global scope.
+
+- bpo-26014: Update 3.x packaging documentation: * "See also" links to the
+  new docs are now provided in the legacy pages * links to setuptools
+  documentation have been updated
+
+Tests
+-----
+
+- bpo-21916: Added tests for the turtle module.  Patch by ingrid, Gregory
+  Loyse and Jelle Zijlstra.
+
+- bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
+  was untested.
+
+- bpo-26015: Added new tests for pickling iterators of mutable sequences.
+
+- bpo-26325: Added test.support.check_no_resource_warning() to check that no
+  ResourceWarning is emitted.
+
+- bpo-25940: Changed test_ssl to use self-signed.pythontest.net.  This
+  avoids relying on svn.python.org, which recently changed root certificate.
+
+- bpo-25616: Tests for OrderedDict are extracted from test_collections into
+  separate file test_ordered_dict.
+
+- bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files
+  cannot be written.
+
+Build
+-----
+
+- bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier
+  de Gaye.
+
+- bpo-22359: Disable the rules for running _freeze_importlib and pgen when
+  cross-compiling.  The output of these programs is normally saved with the
+  source code anyway, and is still regenerated when doing a native build.
+  Patch by Xavier de Gaye.
+
+- bpo-27229: Fix the cross-compiling pgen rule for in-tree builds.  Patch by
+  Xavier de Gaye.
+
+- bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except
+  on Mac OS X. Patch written by Xavier de Gaye.
+
+- bpo-25702: A --with-lto configure option has been added that will enable
+  link time optimizations at build time during a make profile-opt. Some
+  compilers and toolchains are known to not produce stable code when using
+  LTO, be sure to test things thoroughly before relying on it. It can
+  provide a few % speed up over profile-opt alone.
+
+- bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old
+  versions.
+
+- bpo-17603: Avoid error about nonexistent fileblocks.o file by using a
+  lower-level check for st_blocks in struct stat.
+
+- bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern
+  Thiel.
+
+- bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
+
+- bpo-24421: Compile Modules/_math.c once, before building extensions.
+  Previously it could fail to compile properly if the math and cmath builds
+  were concurrent.
+
+- bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to
+  ``PCbuild\build.bat`` for building with Profile-Guided Optimization.  The
+  old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls
+  ``PCbuild\build.bat --pgo %*``.
+
+- bpo-25827: Add support for building with ICC to ``configure``, including a
+  new ``--with-icc`` flag.
+
+- bpo-25696: Fix installation of Python on UNIX with make -j9.
+
+- bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with
+  OpenSSL 1.0.2h.
+
+- bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
+
+- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
+
+- bpo-24324: Do not enable unreachable code warnings when using gcc as the
+  option does not work correctly in older versions of gcc and has been
+  silently removed as of gcc-4.5.
+
+Windows
+-------
+
+- bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
+
+- bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases
+  that don't include the contents of the include directory (that is, 1.0.2e
+  and later).
+
+- bpo-26071: bdist_wininst created binaries fail to start and find 32bit
+  Python
+
+- bpo-26073: Update the list of magic numbers in launcher
+
+- bpo-26065: Excludes venv from library when generating embeddable distro.
+
+Tools/Demos
+-----------
+
+- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
+  is loaded, but get C types on demand. The C types can change if
+  python-gdb.py is loaded before the Python executable. Patch written by
+  Thomas Ilsche.
+
+- bpo-26271: Fix the Freeze tool to properly use flags passed through
+  configure. Patch by Daniel Shaulov.
+
+- bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py.
+  Patch by Guo Ci Teo.
+
+- bpo-26316: Fix variable name typo in Argument Clinic.
+
+Windows
+-------
+
+- bpo-17500: Remove unused and outdated icons. (See also:
+  https://github.com/python/pythondotorg/issues/945)
+
+
+What's New in Python 3.5.1 final?
+=================================
+
+*Release date: 2015-12-06*
+
+Core and Builtins
+-----------------
+
+- bpo-25709: Fixed problem with in-place string concatenation and utf-8
+  cache.
+
+Windows
+-------
+
+- bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect
+  logic for launcher detection.
+
+
+What's New in Python 3.5.1 release candidate 1?
+===============================================
+
+*Release date: 2015-11-22*
+
+Core and Builtins
+-----------------
+
+- bpo-25630: Fix a possible segfault during argument parsing in functions
+  that accept filesystem paths.
+
+- bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess
+  internals regarding how fds_to_pass were passed to the child.  The bug had
+  no actual impact as subprocess.py already avoided it.
+
+- bpo-25388: Fixed tokenizer crash when processing undecodable source code
+  with a null byte.
+
+- bpo-25462: The hash of the key now is calculated only once in most
+  operations in C implementation of OrderedDict.
+
+- bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now
+  rejects builtin types with not defined __new__.
+
+- bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node
+  when compiling AST from Python objects.
+
+- bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec()
+  and eval() are passed bytes-like objects.  These objects are not
+  necessarily terminated by a null byte, but the functions assumed they
+  were.
+
+- bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
+  was mutated by direct calls of dict methods.
+
+- bpo-25449: Iterating OrderedDict with keys with unstable hash now raises
+  KeyError in C implementations as well as in Python implementation.
+
+- bpo-25395: Fixed crash when highly nested OrderedDict structures were
+  garbage collected.
+
+- bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new
+  recursion limit is too low depending at the current recursion depth.
+  Modify also the "lower-water mark" formula to make it monotonic. This mark
+  is used to decide when the overflowed flag of the thread state is reset.
+
+- bpo-24402: Fix input() to prompt to the redirected stdout when
+  sys.stdout.fileno() fails.
+
+- bpo-24806: Prevent builtin types that are not allowed to be subclassed
+  from being subclassed through multiple inheritance.
+
+- bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
+
+- bpo-25280: Import trace messages emitted in verbose (-v) mode are no
+  longer formatted twice.
+
+- bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
+  function instead of the getentropy() function. The getentropy() function
+  is blocking to generate very good quality entropy, os.urandom() doesn't
+  need such high-quality entropy.
+
+- bpo-25182: The stdprinter (used as sys.stderr before the io module is
+  imported at startup) now uses the backslashreplace error handler.
+
+- bpo-25131: Make the line number and column offset of set/dict literals and
+  comprehensions correspond to the opening brace.
+
+- bpo-25150: Hide the private _Py_atomic_xxx symbols from the public
+  Python.h header to fix a compilation error with OpenMP.
+  PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI
+  incompatibilities.
+
+Library
+-------
+
+- bpo-25626: Change three zlib functions to accept sizes that fit in
+  Py_ssize_t, but internally cap those sizes to UINT_MAX.  This resolves a
+  regression in 3.5 where GzipFile.read() failed to read chunks larger than
+  2 or 4 GiB.  The change affects the zlib.Decompress.decompress()
+  max_length parameter, the zlib.decompress() bufsize parameter, and the
+  zlib.Decompress.flush() length parameter.
+
+- bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
+  when the OS gives priority to errors such as EACCES over EEXIST.
+
+- bpo-25593: Change semantics of EventLoop.stop() in asyncio.
+
+- bpo-6973: When we know a subprocess.Popen process has died, do not allow
+  the send_signal(), terminate(), or kill() methods to do anything as they
+  could potentially signal a different process.
+
+- bpo-25590: In the Readline completer, only call getattr() once per
+  attribute.
+
+- bpo-25498: Fix a crash when garbage-collecting ctypes objects created by
+  wrapping a memoryview.  This was a regression made in 3.5a1.  Based on
+  patch by Eryksun.
+
+- bpo-25584: Added "escape" to the __all__ list in the glob module.
+
+- bpo-25584: Fixed recursive glob() with patterns starting with ``**``.
+
+- bpo-25446: Fix regression in smtplib's AUTH LOGIN support.
+
+- bpo-18010: Fix the pydoc web server's module search function to handle
+  exceptions from importing packages.
+
+- bpo-25554: Got rid of circular references in regular expression parsing.
+
+- bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at
+  the end if the FileInput was opened with binary mode. Patch by Ryosuke
+  Ito.
+
+- bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties.
+  Original patch by John Mark Vandenberg.
+
+- bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
+
+- bpo-21827: Fixed textwrap.dedent() for the case when largest common
+  whitespace is a substring of smallest leading whitespace. Based on patch
+  by Robert Li.
+
+- bpo-25447: The lru_cache() wrapper objects now can be copied and pickled
+  (by returning the original object unchanged).
+
+- bpo-25390: typing: Don't crash on Union[str, Pattern].
+
+- bpo-25441: asyncio: Raise error from drain() when socket is closed.
+
+- bpo-25410: Cleaned up and fixed minor bugs in C implementation of
+  OrderedDict.
+
+- bpo-25411: Improved Unicode support in SMTPHandler through better use of
+  the email package. Thanks to user simon04 for the patch.
+
+- bpo-25407: Remove mentions of the formatter module being removed in Python
+  3.6.
+
+- bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
+  that caused segmentation fault or hang in iterating after moving several
+  items to the start of ordered dict.
+
+- bpo-25364: zipfile now works in threads disabled builds.
+
+- bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both
+  decode_data and enable_SMTPUTF8 are set to true.
+
+- bpo-25316: distutils raises OSError instead of DistutilsPlatformError when
+  MSVC is not installed.
+
+- bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in
+  pickletools.opcodes.
+
+- bpo-23972: Updates asyncio datagram create method allowing reuseport and
+  reuseaddr socket options to be set prior to binding the socket. Mirroring
+  the existing asyncio create_server method the reuseaddr option for
+  datagram sockets defaults to True if the O/S is 'posix' (except if the
+  platform is Cygwin). Patch by Chris Laws.
+
+- bpo-25304: Add asyncio.run_coroutine_threadsafe().  This lets you submit a
+  coroutine to a loop from another thread, returning a
+  concurrent.futures.Future.  By Vincent Michel.
+
+- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
+  first question mark (?) rather than the last. Patch from Xiang Zhang.
+
+- bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query
+  part of the URL as if it were a path. Patch from Xiang Zhang.
+
+- bpo-24483: C implementation of functools.lru_cache() now calculates key's
+  hash only once.
+
+- bpo-22958: Constructor and update method of weakref.WeakValueDictionary
+  now accept the self and the dict keyword arguments.
+
+- bpo-22609: Constructor of collections.UserDict now accepts the self
+  keyword argument.
+
+- bpo-25111: Fixed comparison of traceback.FrameSummary.
+
+- bpo-25262: Added support for BINBYTES8 opcode in Python implementation of
+  unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
+  opcodes no longer silently ignored on 32-bit platforms in C
+  implementation.
+
+- bpo-25034: Fix string.Formatter problem with auto-numbering and nested
+  format_specs. Patch by Anthon van der Neut.
+
+- bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be
+  more understandable and correct.
+
+- bpo-25203: Failed readline.set_completer_delims() no longer left the
+  module in inconsistent state.
+
+- bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong
+  results in some cases.
+
+- bpo-23329: Allow the ssl module to be built with older versions of
+  LibreSSL.
+
+- Prevent overflow in _Unpickler_Read.
+
+- bpo-25047: The XML encoding declaration written by Element Tree now
+  respects the letter case given by the user. This restores the ability to
+  write encoding names in uppercase like "UTF-8", which worked in Python 2.
+
+- bpo-25135: Make deque_clear() safer by emptying the deque before clearing.
+  This helps avoid possible reentrancy issues.
+
+- bpo-19143: platform module now reads Windows version from kernel32.dll to
+  avoid compatibility shims.
+
+- bpo-25092: Fix datetime.strftime() failure when errno was already set to
+  EINVAL.
+
+- bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods
+  of datetime.datetime: microseconds are now rounded to nearest with ties
+  going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding
+  towards minus infinity (ROUND_FLOOR). It's important that these methods
+  use the same rounding mode than datetime.timedelta to keep the property:
+  (datetime(1970,1,1) + timedelta(seconds=t)) ==
+  datetime.utcfromtimestamp(t). It also the rounding mode used by
+  round(float) for example.
+
+- bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on
+  Windows to support date after year 2038. It was a regression introduced in
+  Python 3.5.0.
+
+- bpo-25108: Omitted internal frames in traceback functions print_stack(),
+  format_stack(), and extract_stack() called without arguments.
+
+- bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
+
+- bpo-24684: socket.socket.getaddrinfo() now calls
+  PyUnicode_AsEncodedString() instead of calling the encode() method of the
+  host, to handle correctly custom string with an encode() method which
+  doesn't return a byte string. The encoder of the IDNA codec is now called
+  directly instead of calling the encode() method of the string.
+
+- bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode.
+
+- bpo-24857: Comparing call_args to a long sequence now correctly returns a
+  boolean result instead of raising an exception.  Patch by A Kaptur.
+
+- bpo-23144: Make sure that HTMLParser.feed() returns all the data, even
+  when convert_charrefs is True.
+
+- bpo-24982: shutil.make_archive() with the "zip" format now adds entries
+  for directories (including empty directories) in ZIP file.
+
+- bpo-25019: Fixed a crash caused by setting non-string key of expat parser.
+  Based on patch by John Leitch.
+
+- bpo-16180: Exit pdb if file has syntax error, instead of trapping user in
+  an infinite loop.  Patch by Xavier de Gaye.
+
+- bpo-24891: Fix a race condition at Python startup if the file descriptor
+  of stdin (0), stdout (1) or stderr (2) is closed while Python is creating
+  sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set
+  to None if the creation of the object failed, instead of raising an
+  OSError exception. Initial patch written by Marco Paolini.
+
+- bpo-24992: Fix error handling and a race condition (related to garbage
+  collection) in collections.OrderedDict constructor.
+
+- bpo-24881: Fixed setting binary mode in Python implementation of FileIO on
+  Windows and Cygwin.  Patch from Akira Li.
+
+- bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
+
+- bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating
+  ssl.SSLContext.
+
+- bpo-25569: Fix memory leak in SSLSocket.getpeercert().
+
+- bpo-25471: Sockets returned from accept() shouldn't appear to be
+  nonblocking.
+
+- bpo-25319: When threading.Event is reinitialized, the underlying condition
+  should use a regular lock rather than a recursive lock.
+
+- bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch
+  from Berker Peksag.
+
+- bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
+  header in part headers. Patch written by Peter Landry and reviewed by
+  Pierre Quentel.
+
+- bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and
+  Bryce Darling.
+
+- bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.
+
+- bpo-21159: Improve message in
+  configparser.InterpolationMissingOptionError. Patch from Łukasz Langa.
+
+- bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch
+  from Ilia Kurenkov.
+
+- bpo-23572: Fixed functools.singledispatch on classes with falsy
+  metaclasses.  Patch by Ethan Furman.
+
+- asyncio: ensure_future() now accepts awaitable objects.
+
+IDLE
+----
+
+- bpo-15348: Stop the debugger engine (normally in a user process) before
+  closing the debugger window (running in the IDLE process). This prevents
+  the RuntimeErrors that were being caught and ignored.
+
+- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
+  debugger is active (15347); b) closing the debugger with the [X] button
+  (15348); and c) activating the debugger when already active (24455). The
+  patch by Mark Roseman does this by making two changes. 1. Suspend and
+  resume the gui.interaction method with the tcl vwait mechanism intended
+  for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
+  any existing interaction to terminate first.
+
+- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
+  to make it clearer that the program referred to is the currently running
+  user program, not IDLE itself.
+
+- bpo-24750: Improve the appearance of the IDLE editor window status bar.
+  Patch by Mark Roseman.
+
+- bpo-25313: Change the handling of new built-in text color themes to better
+  address the compatibility problem introduced by the addition of IDLE Dark.
+  Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
+
+- bpo-24782: Extension configuration is now a tab in the IDLE Preferences
+  dialog rather than a separate dialog.  The former tabs are now a sorted
+  list.  Patch by Mark Roseman.
+
+- bpo-22726: Re-activate the config dialog help button with some content
+  about the other buttons and the new IDLE Dark theme.
+
+- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
+  more or less IDLE Classic inverted, with a cobalt blue background.
+  Strings, comments, keywords, ... are still green, red, orange, ... . To
+  use it with IDLEs released before November 2015, hit the 'Save as New
+  Custom Theme' button and enter a new name, such as 'Custom Dark'.  The
+  custom theme will work with any IDLE release, and can be modified.
+
+- bpo-25224: README.txt is now an idlelib index for IDLE developers and
+  curious users. The previous user content is now in the IDLE doc chapter.
+  'IDLE' now means 'Integrated Development and Learning Environment'.
+
+- bpo-24820: Users can now set breakpoint colors in Settings -> Custom
+  Highlighting. Original patch by Mark Roseman.
+
+- bpo-24972: Inactive selection background now matches active selection
+  background, as configured by users, on all systems.  Found items are now
+  always highlighted on Windows.  Initial patch by Mark Roseman.
+
+- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
+  by a tk regression.  Initial patch by Mark Roseman.
+
+- bpo-24988: Idle ScrolledList context menus (used in debugger) now work on
+  Mac Aqua. Patch by Mark Roseman.
+
+- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
+  Mark Roseman.
+
+- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
+  OSX, make them a 'sheet'.  Patch by Mark Roseman.
+
+- bpo-25198: Enhance the initial html viewer now used for Idle Help.
+  Properly indent fixed-pitch text (patch by Mark Roseman). Give code
+  snippet a very Sphinx-like light blueish-gray background. Re-use initial
+  width and height set by users for shell and editor. When the Table of
+  Contents (TOC) menu is used, put the section header at the top of the
+  screen.
+
+- bpo-25225: Condense and rewrite Idle doc section on text colors.
+
+- bpo-21995: Explain some differences between IDLE and console Python.
+
+- bpo-22820: Explain need for *print* when running file from Idle editor.
+
+- bpo-25224: Doc: augment Idle feature list and no-subprocess section.
+
+- bpo-25219: Update doc for Idle command line options. Some were missing and
+  notes were not correct.
+
+- bpo-24861: Most of idlelib is private and subject to change. Use
+  idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
+
+- bpo-25199: Idle: add synchronization comments for future maintainers.
+
+- bpo-16893: Replace help.txt with help.html for Idle doc display. The new
+  idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
+  better than help.txt and will better document Idle as released. The
+  tkinter html viewer that works for this file was written by Mark Roseman.
+  The now unused EditorWindow.HelpDialog class and helt.txt file are
+  deprecated.
+
+- bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
+
+- bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
+
+Documentation
+-------------
+
+- bpo-22558: Add remaining doc links to source code for Python-coded
+  modules. Patch by Yoni Lavi.
+
+- bpo-12067: Rewrite Comparisons section in the Expressions chapter of the
+  language reference. Some of the details of comparing mixed types were
+  incorrect or ambiguous. NotImplemented is only relevant at a lower level
+  than the Expressions chapter. Added details of comparing range() objects,
+  and default behaviour and consistency suggestions for user-defined
+  classes. Patch from Andy Maier.
+
+- bpo-24952: Clarify the default size argument of stack_size() in the
+  "threading" and "_thread" modules. Patch from Mattip.
+
+- bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch
+  from Zbigniew Jędrzejewski-Szmek.
+
+- bpo-24808: Update the types of some PyTypeObject fields.  Patch by Joseph
+  Weston.
+
+- bpo-22812: Fix unittest discovery examples. Patch from Pam McA'Nulty.
+
+Tests
+-----
+
+- bpo-25449: Added tests for OrderedDict subclasses.
+
+- bpo-25099: Make test_compileall not fail when an entry on sys.path cannot
+  be written to (commonly seen in administrative installs on Windows).
+
+- bpo-23919: Prevents assert dialogs appearing in the test suite.
+
+- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass
+  along to regrtest.py.  Previously there was a limit of 9.
+
+Build
+-----
+
+- bpo-24915: Add LLVM support for PGO builds and use the test suite to
+  generate the profile data. Initial patch by Alecsandru Patrascu of Intel.
+
+- bpo-24910: Windows MSIs now have unique display names.
+
+- bpo-24986: It is now possible to build Python on Windows without errors
+  when external libraries are not available.
+
+Windows
+-------
+
+- bpo-25450: Updates shortcuts to start Python in installation directory.
+
+- bpo-25164: Changes default all-users install directory to match per-user
+  directory.
+
+- bpo-25143: Improves installer error messages for unsupported platforms.
+
+- bpo-25163: Display correct directory in installer when using non-default
+  settings.
+
+- bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build
+
+- bpo-25089: Adds logging to installer for case where launcher is not
+  selected on upgrade.
+
+- bpo-25165: Windows uninstallation should not remove launcher if other
+  versions remain
+
+- bpo-25112: py.exe launcher is missing icons
+
+- bpo-25102: Windows installer does not precompile for -O or -OO.
+
+- bpo-25081: Makes Back button in installer go back to upgrade page when
+  upgrading.
+
+- bpo-25091: Increases font size of the installer.
+
+- bpo-25126: Clarifies that the non-web installer will download some
+  components.
+
+- bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC
+  virtualization.
+
+- bpo-25022: Removed very outdated PC/example_nt/ directory.
+
+Tools/Demos
+-----------
+
+- bpo-25440: Fix output of python-config --extension-suffix.
+
+
+What's New in Python 3.5.0 final?
+=================================
+
+*Release date: 2015-09-13*
+
+Build
+-----
+
+- bpo-25071: Windows installer should not require TargetDir parameter when
+  installing quietly.
+
+
+What's New in Python 3.5.0 release candidate 4?
+===============================================
+
+*Release date: 2015-09-09*
+
+Library
+-------
+
+- bpo-25029: Fixes MemoryError in test_strptime.
+
+Build
+-----
+
+- bpo-25027: Reverts partial-static build options and adds vcruntime140.dll
+  to Windows installation.
+
+
+What's New in Python 3.5.0 release candidate 3?
+===============================================
+
+*Release date: 2015-09-07*
+
+Core and Builtins
+-----------------
+
+- bpo-24305: Prevent import subsystem stack frames from being counted by the
+  warnings.warn(stacklevel=) parameter.
+
+- bpo-24912: Prevent __class__ assignment to immutable built-in objects.
+
+- bpo-24975: Fix AST compilation for :pep:`448` syntax.
+
+Library
+-------
+
+- bpo-24917: time_strftime() buffer over-read.
+
+- bpo-24748: To resolve a compatibility problem found with py2exe and
+  pywin32, imp.load_dynamic() once again ignores previously loaded modules
+  to support Python modules replacing themselves with extension modules.
+  Patch by Petr Viktorin.
+
+- bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable)
+  would return True once, then False on subsequent calls.
+
+- bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is
+  set beyond size.  Based on patch by John Leitch.
+
+- bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and
+  Bryce Darling.
+
+
+What's New in Python 3.5.0 release candidate 2?
+===============================================
+
+*Release date: 2015-08-25*
+
+Core and Builtins
+-----------------
+
+- bpo-24769: Interpreter now starts properly when dynamic loading is
+  disabled.  Patch by Petr Viktorin.
+
+- bpo-21167: NAN operations are now handled correctly when python is
+  compiled with ICC even if -fp-model strict is not specified.
+
+- bpo-24492: A "package" lacking a __name__ attribute when trying to perform
+  a ``from .. import ...`` statement will trigger an ImportError instead of
+  an AttributeError.
+
+Library
+-------
+
+- bpo-24847: Removes vcruntime140.dll dependency from Tcl/Tk.
+
+- bpo-24839: platform._syscmd_ver raises DeprecationWarning
+
+- bpo-24867: Fix Task.get_stack() for 'async def' coroutines
+
+
+What's New in Python 3.5.0 release candidate 1?
+===============================================
+
+*Release date: 2015-08-09*
+
+Core and Builtins
+-----------------
+
+- bpo-24667: Resize odict in all cases that the underlying dict resizes.
+
+Library
+-------
+
+- bpo-24824: Signatures of codecs.encode() and codecs.decode() now are
+  compatible with pydoc.
+
+- bpo-24634: Importing uuid should not try to load libc on Windows
+
+- bpo-24798: _msvccompiler.py doesn't properly support manifests
+
+- bpo-4395: Better testing and documentation of binary operators. Patch by
+  Martin Panter.
+
+- bpo-23973: Update typing.py from GitHub repo.
+
+- bpo-23004: mock_open() now reads binary data correctly when the type of
+  read_data is bytes.  Initial patch by Aaron Hill.
+
+- bpo-23888: Handle fractional time in cookie expiry. Patch by ssh.
+
+- bpo-23652: Make it possible to compile the select module against the libc
+  headers from the Linux Standard Base, which do not include some EPOLL
+  macros.  Patch by Matt Frank.
+
+- bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry
+  Shachnev.
+
+- bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch
+  from Craig Holmquist.
+
+- bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch
+  written by Matthieu Gautier.
+
+- bpo-23254: Document how to close the TCPServer listening socket. Patch
+  from Martin Panter.
+
+- bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11.
+
+- bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.
+
+- bpo-24791: Fix grammar regression for call syntax: 'g(\*a or b)'.
+
+IDLE
+----
+
+- bpo-23672: Allow Idle to edit and run files with astral chars in name.
+  Patch by Mohd Sanad Zaki Rizvi.
+
+- bpo-24745: Idle editor default font. Switch from Courier to
+  platform-sensitive TkFixedFont.  This should not affect current customized
+  font selections.  If there is a problem, edit
+  $HOME/.idlerc/config-main.cfg and remove 'fontxxx' entries from [Editor
+  Window].  Patch by Mark Roseman.
+
+- bpo-21192: Idle editor. When a file is run, put its name in the restart
+  bar. Do not print false prompts. Original patch by Adnan Umer.
+
+- bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.
+
+Documentation
+-------------
+
+- bpo-24129: Clarify the reference documentation for name resolution. This
+  includes removing the assumption that readers will be familiar with the
+  name resolution scheme Python used prior to the introduction of lexical
+  scoping for function namespaces. Patch by Ivan Levkivskyi.
+
+- bpo-20769: Improve reload() docs. Patch by Dorian Pula.
+
+- bpo-23589: Remove duplicate sentence from the FAQ.  Patch by Yongzhi Pan.
+
+- bpo-24729: Correct IO tutorial to match implementation regarding encoding
+  parameter to open function.
+
+Tests
+-----
+
+- bpo-24751: When running regrtest with the ``-w`` command line option, a
+  test run is no longer marked as a failure if all tests succeed when
+  re-run.
+
+
+What's New in Python 3.5.0 beta 4?
+==================================
+
+*Release date: 2015-07-26*
+
+Core and Builtins
+-----------------
+
+- bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind()
+  for single-byte argument on Linux.
+
+- bpo-24569: Make :pep:`448` dictionary evaluation more consistent.
+
+- bpo-24583: Fix crash when set is mutated while being updated.
+
+- bpo-24407: Fix crash when dict is mutated while being updated.
+
+- bpo-24619: New approach for tokenizing async/await. As a consequence, it
+  is now possible to have one-line 'async def foo(): await ..' functions.
+
+- bpo-24687: Plug refleak on SyntaxError in function parameters annotations.
+
+- bpo-15944: memoryview: Allow arbitrary formats when casting to bytes.
+  Patch by Martin Panter.
+
+Library
+-------
+
+- bpo-23441: rcompleter now prints a tab character instead of displaying
+  possible completions for an empty word.  Initial patch by Martin Sekera.
+
+- bpo-24683: Fixed crashes in _json functions called with arguments of
+  inappropriate type.
+
+- bpo-21697: shutil.copytree() now correctly handles symbolic links that
+  point to directories.  Patch by Eduardo Seabra and Thomas Kluyver.
+
+- bpo-14373: Fixed segmentation fault when gc.collect() is called during
+  constructing lru_cache (C implementation).
+
+- bpo-24695: Fix a regression in traceback.print_exception().  If
+  exc_traceback is None we shouldn't print a traceback header like described
+  in the documentation.
+
+- bpo-24620: Random.setstate() now validates the value of state last
+  element.
+
+- bpo-22485: Fixed an issue that caused `inspect.getsource` to return
+  incorrect results on nested functions.
+
+- bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero.
+
+- bpo-24580: Symbolic group references to open group in re patterns now are
+  explicitly forbidden as well as numeric group references.
+
+- bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes.
+
+- bpo-24631: Fixed regression in the timeit module with multiline setup.
+
+- bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
+  Patch from Nicola Palumbo and Laurent De Buyst.
+
+- bpo-23661: unittest.mock side_effects can now be exceptions again. This
+  was a regression vs Python 3.4. Patch from Ignacio Rossi
+
+- bpo-24608: chunk.Chunk.read() now always returns bytes, not str.
+
+- bpo-18684: Fixed reading out of the buffer in the re module.
+
+- bpo-24259: tarfile now raises a ReadError if an archive is truncated
+  inside a data segment.
+
+- bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional
+  initial-response argument to the SMTP AUTH command.
+
+- bpo-24669: Fix inspect.getsource() for 'async def' functions. Patch by Kai
+  Groner.
+
+- bpo-24688: ast.get_docstring() for 'async def' functions.
+
+Build
+-----
+
+- bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL
+  1.0.2d.
+
+
+What's New in Python 3.5.0 beta 3?
+==================================
+
+*Release date: 2015-07-05*
+
+Core and Builtins
+-----------------
+
+- bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray
+  object now always allocates place for trailing null byte and it's buffer
+  now is always null-terminated.
+
+- Upgrade to Unicode 8.0.0.
+
+- bpo-24345: Add Py_tp_finalize slot for the stable ABI.
+
+- bpo-24400: Introduce a distinct type for :pep:`492` coroutines; add
+  types.CoroutineType, inspect.getcoroutinestate,
+  inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag;
+  sys.set_coroutine_wrapper works only for 'async def' coroutines;
+  inspect.iscoroutine no longer uses collections.abc.Coroutine, it's
+  intended to test for pure 'async def' coroutines only; add new opcode:
+  GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be
+  instance of collections.abc.Generator; collections.abc.Awaitable and
+  collections.abc.Coroutine can no longer be used to detect generator-based
+  coroutines--use inspect.isawaitable instead.
+
+- bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines.
+  Contributed by Benno Leslie and Yury Selivanov.
+
+- bpo-19235: Add new RecursionError exception. Patch by Georg Brandl.
+
+Library
+-------
+
+- bpo-21750: mock_open.read_data can now be read from each instance, as it
+  could in Python 3.3.
+
+- bpo-24552: Fix use after free in an error case of the _pickle module.
+
+- bpo-24514: tarfile now tolerates number fields consisting of only
+  whitespace.
+
+- bpo-19176: Fixed doctype() related bugs in C implementation of
+  ElementTree. A deprecation warning no longer issued by XMLParser subclass
+  with default doctype() method.  Direct call of doctype() now issues a
+  warning.  Parser's doctype() now is not called if target's doctype() is
+  called.  Based on patch by Martin Panter.
+
+- bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize
+  for tab-indented blocks.
+
+- bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm()
+  functions of the audioop module.
+
+- bpo-24336: The contextmanager decorator now works with functions with
+  keyword arguments called "func" and "self".  Patch by Martin Panter.
+
+- bpo-24522: Fix possible integer overflow in json accelerator module.
+
+- bpo-24489: ensure a previously set C errno doesn't disturb cmath.polar().
+
+- bpo-24408: Fixed AttributeError in measure() and metrics() methods of
+  tkinter.Font.
+
+- bpo-14373: C implementation of functools.lru_cache() now can be used with
+  methods.
+
+- bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL.
+
+- bpo-24348: Drop superfluous incref/decref.
+
+- bpo-24359: Check for changed OrderedDict size during iteration.
+
+- bpo-24368: Support keyword arguments in OrderedDict methods.
+
+- bpo-24362: Simplify the C OrderedDict fast nodes resize logic.
+
+- bpo-24377: Fix a ref leak in OrderedDict.__repr__.
+
+- bpo-24369: Defend against key-changes during iteration.
+
+Tests
+-----
+
+- bpo-24373: _testmultiphase and xxlimited now use tp_traverse and
+  tp_finalize to avoid reference leaks encountered when combining tp_dealloc
+  with PyType_FromSpec (see issue #16690 for details)
+
+Documentation
+-------------
+
+- bpo-24458: Update documentation to cover multi-phase initialization for
+  extension modules (PEP 489). Patch by Petr Viktorin.
+
+- bpo-24351: Clarify what is meant by "identifier" in the context of
+  string.Template instances.
+
+Build
+-----
+
+- bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL
+  1.0.2c.
+
+
+What's New in Python 3.5.0 beta 2?
+==================================
+
+*Release date: 2015-05-31*
+
+Core and Builtins
+-----------------
+
+- bpo-24284: The startswith and endswith methods of the str class no longer
+  return True when finding the empty string and the indexes are completely
+  out of range.
+
+- bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
+  PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
+  to check for and handle errors correctly.
+
+- bpo-24328: Fix importing one character extension modules.
+
+- bpo-11205: In dictionary displays, evaluate the key before the value.
+
+- bpo-24285: Fixed regression that prevented importing extension modules
+  from inside packages. Patch by Petr Viktorin.
+
+Library
+-------
+
+- bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs.
+
+- bpo-24270: Add math.isclose() and cmath.isclose() functions as per
+  :pep:`485`. Contributed by Chris Barker and Tal Einat.
+
+- bpo-5633: Fixed timeit when the statement is a string and the setup is
+  not.
+
+- bpo-24326: Fixed audioop.ratecv() with non-default weightB argument.
+  Original patch by David Moore.
+
+- bpo-16991: Add a C implementation of OrderedDict.
+
+- bpo-23934: Fix inspect.signature to fail correctly for builtin types
+  lacking signature information.  Initial patch by James Powell.
+
+
+What's New in Python 3.5.0 beta 1?
+==================================
+
+*Release date: 2015-05-24*
+
+Core and Builtins
+-----------------
+
+- bpo-24276: Fixed optimization of property descriptor getter.
+
+- bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by
+  Petr Viktorin.
+
+- bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup
+  for generating sys.path on Windows.
+
+- bpo-24257: Fixed system error in the comparison of faked
+  types.SimpleNamespace.
+
+- bpo-22939: Fixed integer overflow in iterator object.  Patch by Clement
+  Rouault.
+
+- bpo-23985: Fix a possible buffer overrun when deleting a slice from the
+  front of a bytearray and then appending some other bytes data.
+
+- bpo-24102: Fixed exception type checking in standard error handlers.
+
+- bpo-15027: The UTF-32 encoder is now 3x to 7x faster.
+
+- bpo-23290: Optimize set_merge() for cases where the target is empty.
+  (Contributed by Serhiy Storchaka.)
+
+- bpo-2292: PEP 448: Additional Unpacking Generalizations.
+
+- bpo-24096: Make warnings.warn_explicit more robust against mutation of the
+  warnings.filters list.
+
+- bpo-23996: Avoid a crash when a delegated generator raises an unnormalized
+  StopIteration exception.  Patch by Stefan Behnel.
+
+- bpo-23910: Optimize property() getter calls.  Patch by Joe Jevnik.
+
+- bpo-23911: Move path-based importlib bootstrap code to a separate frozen
+  module.
+
+- bpo-24192: Fix namespace package imports.
+
+- bpo-24022: Fix tokenizer crash when processing undecodable source code.
+
+- bpo-9951: Added a hex() method to bytes, bytearray, and memoryview.
+
+- bpo-22906: PEP 479: Change StopIteration handling inside generators.
+
+- bpo-24017: PEP 492: Coroutines with async and await syntax.
+
+Library
+-------
+
+- bpo-14373: Added C implementation of functools.lru_cache().  Based on
+  patches by Matt Joiner and Alexey Kachayev.
+
+- bpo-24230: The tempfile module now accepts bytes for prefix, suffix and
+  dir parameters and returns bytes in such situations (matching the os
+  module APIs).
+
+- bpo-22189: collections.UserString now supports __getnewargs__(),
+  __rmod__(), casefold(), format_map(), isprintable(), and maketrans().
+  Patch by Joe Jevnik.
+
+- bpo-24244: Prevents termination when an invalid format string is
+  encountered on Windows in strftime.
+
+- bpo-23973: PEP 484: Add the typing module.
+
+- bpo-23086: The collections.abc.Sequence() abstract base class added
+  *start* and *stop* parameters to the index() mixin. Patch by Devin
+  Jeanpierre.
+
+- bpo-20035: Replaced the ``tkinter._fix`` module used for setting up the
+  Tcl/Tk environment on Windows with a private function in the ``_tkinter``
+  module that makes no permanent changes to the environment.
+
+- bpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked
+  cursor type.
+
+- bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and
+  assertWarnsRegex() assertments now check the type of the first argument to
+  prevent possible user error.  Based on patch by Daniel Wagner-Hall.
+
+- bpo-9858: Add missing method stubs to _io.RawIOBase.  Patch by Laura
+  Rupprecht.
+
+- bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator
+  module now support pickling.  Added readable and evaluable repr for these
+  objects. Based on patch by Josh Rosenberg.
+
+- bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when
+  a directory with the chosen name already exists on Windows as well as on
+  Unix. tempfile.mkstemp() now fails early if parent directory is not valid
+  (not exists or is a file) on Windows.
+
+- bpo-23780: Improved error message in os.path.join() with single argument.
+
+- bpo-6598: Increased time precision and random number range in
+  email.utils.make_msgid() to strengthen the uniqueness of the message ID.
+
+- bpo-24091: Fixed various crashes in corner cases in C implementation of
+  ElementTree.
+
+- bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad
+  argument instead of a ValueError with a bogus FCI error number. Patch by
+  Jeffrey Armstrong.
+
+- bpo-13866: *quote_via* argument added to urllib.parse.urlencode.
+
+- bpo-20098: New mangle_from policy option for email, default True for
+  compat32, but False for all other policies.
+
+- bpo-24211: The email library now supports RFC 6532: it can generate
+  headers using utf-8 instead of encoded words.
+
+- bpo-16314: Added support for the LZMA compression in distutils.
+
+- bpo-21804: poplib now supports RFC 6856 (UTF8).
+
+- bpo-18682: Optimized pprint functions for builtin scalar types.
+
+- bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8).
+
+- bpo-23488: Random generator objects now consume 2x less memory on 64-bit.
+
+- bpo-1322: platform.dist() and platform.linux_distribution() functions are
+  now deprecated.  Initial patch by Vajrasky Kok.
+
+- bpo-22486: Added the math.gcd() function.  The fractions.gcd() function
+  now is deprecated.  Based on patch by Mark Dickinson.
+
+- bpo-24064: Property() docstrings are now writeable. (Patch by Berker
+  Peksag.)
+
+- bpo-22681: Added support for the koi8_t encoding.
+
+- bpo-22682: Added support for the kz1048 encoding.
+
+- bpo-23796: peek and read1 methods of BufferedReader now raise ValueError
+  if they called on a closed object. Patch by John Hergenroeder.
+
+- bpo-21795: smtpd now supports the 8BITMIME extension whenever the new
+  *decode_data* constructor argument is set to False.
+
+- bpo-24155: optimize heapq.heapify() for better cache performance when
+  heapifying large lists.
+
+- bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855
+  (utf8/internationalized email) and automatically encodes non-ASCII
+  usernames and passwords to UTF8.
+
+- bpo-20274: When calling a _sqlite.Connection, it now complains if passed
+  any keyword arguments.  Previously it silently ignored them.
+
+- bpo-20274: Remove ignored and erroneous "kwargs" parameters from three
+  METH_VARARGS methods on _sqlite.Connection.
+
+- bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and
+  assertWarnsRegex() checks now emits a deprecation warning when callable is
+  None or keyword arguments except msg is passed in the context manager
+  mode.
+
+- bpo-24018: Add a collections.abc.Generator abstract base class.
+  Contributed by Stefan Behnel.
+
+- bpo-23880: Tkinter's getint() and getdouble() now support Tcl_Obj.
+  Tkinter's getdouble() now supports any numbers (in particular int).
+
+- bpo-22619: Added negative limit support in the traceback module. Based on
+  patch by Dmitry Kazakov.
+
+- bpo-24094: Fix possible crash in json.encode with poorly behaved dict
+  subclasses.
+
+- bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes.
+  Patch written by William Orr.
+
+- bpo-17445: add difflib.diff_bytes() to support comparison of byte strings
+  (fixes a regression from Python 2).
+
+- bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor
+  doesn't exist. Patch by Claudiu Popa.
+
+- bpo-23008: Fixed resolving attributes with boolean value is False in
+  pydoc.
+
+- Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't increment
+  unfinished tasks (this bug was introduced when JoinableQueue was merged
+  with Queue).
+
+- bpo-23908: os functions now reject paths with embedded null character on
+  Windows instead of silently truncating them.
+
+- bpo-23728: binascii.crc_hqx() could return an integer outside of the range
+  0-0xffff for empty data.
+
+- bpo-23887: urllib.error.HTTPError now has a proper repr() representation.
+  Patch by Berker Peksag.
+
+- asyncio: New event loop APIs: set_task_factory() and get_task_factory().
+
+- asyncio: async() function is deprecated in favour of ensure_future().
+
+- bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore
+  support new 'async with' syntax.  Contributed by Yury Selivanov.
+
+- bpo-24179: Support 'async for' for asyncio.StreamReader. Contributed by
+  Yury Selivanov.
+
+- bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc.
+  Contributed by Yury Selivanov.
+
+- bpo-22547: Implement informative __repr__ for inspect.BoundArguments.
+  Contributed by Yury Selivanov.
+
+- bpo-24190: Implement inspect.BoundArgument.apply_defaults() method.
+  Contributed by Yury Selivanov.
+
+- bpo-20691: Add 'follow_wrapped' argument to
+  inspect.Signature.from_callable() and inspect.signature(). Contributed by
+  Yury Selivanov.
+
+- bpo-24248: Deprecate inspect.Signature.from_function() and
+  inspect.Signature.from_builtin().
+
+- bpo-23898: Fix inspect.classify_class_attrs() to support attributes with
+  overloaded __eq__ and __bool__.  Patch by Mike Bayer.
+
+- bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around
+  bound methods.
+
+IDLE
+----
+
+- bpo-23184: remove unused names and imports in idlelib. Initial patch by Al
+  Sweigart.
+
+Tests
+-----
+
+- bpo-21520: test_zipfile no longer fails if the word 'bad' appears anywhere
+  in the name of the current directory.
+
+- bpo-9517: Move script_helper into the support package. Patch by Christie
+  Wilson.
+
+Documentation
+-------------
+
+- bpo-22155: Add File Handlers subsection with createfilehandler to tkinter
+  doc.  Remove obsolete example from FAQ.  Patch by Martin Panter.
+
+- bpo-24029: Document the name binding behavior for submodule imports.
+
+- bpo-24077: Fix typo in man page for -I command option: -s, not -S
+
+Tools/Demos
+-----------
+
+- bpo-24000: Improved Argument Clinic's mapping of converters to legacy
+  "format units". Updated the documentation to match.
+
+- bpo-24001: Argument Clinic converters now use accept={type} instead of
+  types={'type'} to specify the types the converter accepts.
+
+- bpo-23330: h2py now supports arbitrary filenames in #include.
+
+- bpo-24031: make patchcheck now supports git checkouts, too.
+
+
+What's New in Python 3.5.0 alpha 4?
+===================================
+
+*Release date: 2015-04-19*
+
+Core and Builtins
+-----------------
+
+- bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now
+  include the architecture triplet in the extension name, to make it easy to
+  test builds for different ABIs in the same working tree.  Under OS X, the
+  extension name now includes :pep:`3149`-style information.
+
+- bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch
+  courtesy of Joe Jevnik.
+
+- bpo-23731: Implement :pep:`488`: removal of .pyo files.
+
+- bpo-23726: Don't enable GC for user subclasses of non-GC types that don't
+  add any new fields.  Patch by Eugene Toder.
+
+- bpo-23309: Avoid a deadlock at shutdown if a daemon thread is aborted
+  while it is holding a lock to a buffered I/O object, and the main thread
+  tries to use the same I/O object (typically stdout or stderr).  A fatal
+  error is emitted instead.
+
+- bpo-22977: Fixed formatting Windows error messages on Wine. Patch by
+  Martin Panter.
+
+- bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on
+  non-integer input.
+
+- bpo-24044: Fix possible null pointer dereference in list.sort in out of
+  memory conditions.
+
+- bpo-21354: PyCFunction_New function is exposed by python DLL again.
+
+Library
+-------
+
+- bpo-23840: tokenize.open() now closes the temporary binary file on error
+  to fix a resource warning.
+
+- bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output.
+
+- bpo-7159: urllib.request now supports sending auth credentials
+  automatically after the first 401.  This enhancement is a superset of the
+  enhancement from issue #19494 and supersedes that change.
+
+- bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch
+  by Demian Brecht.
+
+- bpo-4254: Adds _curses.update_lines_cols().  Patch by Arnon Yaari
+
+- bpo-19933: Provide default argument for ndigits in round. Patch by
+  Vajrasky Kok.
+
+- bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and
+  tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith.
+
+- bpo-23342: Add a subprocess.run() function than returns a CalledProcess
+  instance for a more consistent API than the existing call* functions.
+
+- bpo-21217: inspect.getsourcelines() now tries to compute the start and end
+  lines from the code object, fixing an issue when a lambda function is used
+  as decorator argument. Patch by Thomas Ballinger and Allison Kaptur.
+
+- bpo-24521: Fix possible integer overflows in the pickle module.
+
+- bpo-22931: Allow '[' and ']' in cookie values.
+
+- The keywords attribute of functools.partial is now always a dictionary.
+
+- bpo-23811: Add missing newline to the PyCompileError error message. Patch
+  by Alex Shkop.
+
+- bpo-21116: Avoid blowing memory when allocating a multiprocessing shared
+  array that's larger than 50% of the available RAM.  Patch by Médéric
+  Boquien.
+
+- bpo-22982: Improve BOM handling when seeking to multiple positions of a
+  writable text file.
+
+- bpo-23464: Removed deprecated asyncio JoinableQueue.
+
+- bpo-23529: Limit the size of decompressed data when reading from GzipFile,
+  BZ2File or LZMAFile.  This defeats denial of service attacks using
+  compressed bombs (i.e. compressed payloads which decompress to a huge
+  size).  Patch by Martin Panter and Nikolaus Rath.
+
+- bpo-21859: Added Python implementation of io.FileIO.
+
+- bpo-23865: close() methods in multiple modules now are idempotent and more
+  robust at shutdown. If they need to release multiple resources, all are
+  released even if errors occur.
+
+- bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not
+  available. Patch by Davin Potts.
+
+- bpo-10838: The subprocess now module includes SubprocessError and
+  TimeoutError in its list of exported names for the users wild enough to
+  use ``from subprocess import *``.
+
+- bpo-23411: Added DefragResult, ParseResult, SplitResult,
+  DefragResultBytes, ParseResultBytes, and SplitResultBytes to
+  urllib.parse.__all__. Patch by Martin Panter.
+
+- bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if
+  the FTP connection failed to fix a ResourceWarning.
+
+- bpo-23853: :meth:`socket.socket.sendall` does no more reset the socket
+  timeout each time data is sent successfully. The socket timeout is now the
+  maximum total duration to send all data.
+
+- bpo-22721: An order of multiline pprint output of set or dict containing
+  orderable and non-orderable elements no longer depends on iteration order
+  of set or dict.
+
+- bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always
+  returns bool. tkinter.BooleanVar now validates input values (accepted
+  bool, int, str, and Tcl_Obj).  tkinter.BooleanVar.get() now always returns
+  bool.
+
+- bpo-10590: xml.sax.parseString() now supports string argument.
+
+- bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by
+  Makoto Kato.
+
+- bpo-15582: inspect.getdoc() now follows inheritance chains.
+
+- bpo-2175: SAX parsers now support a character stream of InputSource
+  object.
+
+- bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and
+  arbitrary precision integers added in Tcl 8.5.
+
+- bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the
+  result of sendto() instead of the C int type.
+
+- bpo-23618: :meth:`socket.socket.connect` now waits until the connection
+  completes instead of raising :exc:`InterruptedError` if the connection is
+  interrupted by signals, signal handlers don't raise an exception and the
+  socket is blocking or has a timeout. :meth:`socket.socket.connect` still
+  raise :exc:`InterruptedError` for non-blocking sockets.
+
+- bpo-21526: Tkinter now supports new boolean type in Tcl 8.5.
+
+- bpo-23836: Fix the faulthandler module to handle reentrant calls to its
+  signal handlers.
+
+- bpo-23838: linecache now clears the cache and returns an empty result on
+  MemoryError.
+
+- bpo-10395: Added os.path.commonpath(). Implemented in posixpath and
+  ntpath. Based on patch by Rafik Draoui.
+
+- bpo-23611: Serializing more "lookupable" objects (such as unbound methods
+  or nested classes) now are supported with pickle protocols < 4.
+
+- bpo-13583: sqlite3.Row now supports slice indexing.
+
+- bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings.  Fixed
+  ambiguous reverse mappings.  Added many new mappings.  Import mapping is
+  no longer applied to modules already mapped with full name mapping.
+
+- bpo-23485: select.select() is now retried automatically with the
+  recomputed timeout when interrupted by a signal, except if the signal
+  handler raises an exception. This change is part of the :pep:`475`.
+
+- bpo-23752: When built from an existing file descriptor, io.FileIO() now
+  only calls fstat() once. Before fstat() was called twice, which was not
+  necessary.
+
+- bpo-23704: collections.deque() objects now support __add__, __mul__, and
+  __imul__().
+
+- bpo-23171: csv.Writer.writerow() now supports arbitrary iterables.
+
+- bpo-23745: The new email header parser now handles duplicate MIME
+  parameter names without error, similar to how get_param behaves.
+
+- bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus
+  infinity (-inf) instead of rounding towards zero.
+
+- bpo-23310: Fix MagicMock's initializer to work with __methods__, just like
+  configure_mock().  Patch by Kasia Jachim.
+
+Build
+-----
+
+- bpo-23817: FreeBSD now uses "1.0" in the SOVERSION as other operating
+  systems, instead of just "1".
+
+- bpo-23501: Argument Clinic now generates code into separate files by
+  default.
+
+Tests
+-----
+
+- bpo-23799: Added test.support.start_threads() for running and cleaning up
+  multiple threads.
+
+- bpo-22390: test.regrtest now emits a warning if temporary files or
+  directories are left after running a test.
+
+Tools/Demos
+-----------
+
+- bpo-18128: pygettext now uses standard +NNNN format in the
+  POT-Creation-Date header.
+
+- bpo-23935: Argument Clinic's understanding of format units accepting
+  bytes, bytearrays, and buffers is now consistent with both the
+  documentation and the implementation.
+
+- bpo-23944: Argument Clinic now wraps long impl prototypes at column 78.
+
+- bpo-20586: Argument Clinic now ensures that functions without docstrings
+  have signatures.
+
+- bpo-23492: Argument Clinic now generates argument parsing code with
+  PyArg_Parse instead of PyArg_ParseTuple if possible.
+
+- bpo-23500: Argument Clinic is now smarter about generating the "#ifndef"
+  (empty) definition of the methoddef macro: it's only generated once, even
+  if Argument Clinic processes the same symbol multiple times, and it's
+  emitted at the end of all processing rather than immediately after the
+  first use.
+
+C API
+-----
+
+- bpo-23998: PyImport_ReInitLock() now checks for lock allocation error
+
+
+What's New in Python 3.5.0 alpha 3?
+===================================
+
+*Release date: 2015-03-28*
+
+Core and Builtins
+-----------------
+
+- bpo-23573: Increased performance of string search operations (str.find,
+  str.index, str.count, the in operator, str.split, str.partition) with
+  arguments of different kinds (UCS1, UCS2, UCS4).
+
+- bpo-23753: Python doesn't support anymore platforms without stat() or
+  fstat(), these functions are always required.
+
+- bpo-23681: The -b option now affects comparisons of bytes with int.
+
+- bpo-23632: Memoryviews now allow tuple indexing (including for
+  multi-dimensional memoryviews).
+
+- bpo-23192: Fixed generator lambdas.  Patch by Bruno Cauet.
+
+- bpo-23629: Fix the default __sizeof__ implementation for variable-sized
+  objects.
+
+Library
+-------
+
+- bpo-14260: The groupindex attribute of regular expression pattern object
+  now is non-modifiable mapping.
+
+- bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This
+  mimics the behavior of the standard unix pagers, and prevents pipepager
+  from shutting down while the pager itself is still running.
+
+- bpo-23775: pprint() of OrderedDict now outputs the same representation as
+  repr().
+
+- bpo-23765: Removed IsBadStringPtr calls in ctypes
+
+- bpo-22364: Improved some re error messages using regex for hints.
+
+- bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes.
+
+- bpo-21717: The zipfile.ZipFile.open function now supports 'x' (exclusive
+  creation) mode.
+
+- bpo-21802: The reader in BufferedRWPair now is closed even when closing
+  writer failed in BufferedRWPair.close().
+
+- bpo-23622: Unknown escapes in regular expressions that consist of ``'\'``
+  and ASCII letter now raise a deprecation warning and will be forbidden in
+  Python 3.6.
+
+- bpo-23671: string.Template now allows specifying the "self" parameter as a
+  keyword argument.  string.Formatter now allows specifying the "self" and
+  the "format_string" parameters as keyword arguments.
+
+- bpo-23502: The pprint module now supports mapping proxies.
+
+- bpo-17530: pprint now wraps long bytes objects and bytearrays.
+
+- bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid
+  of quadratic complexity in breaking long words.
+
+- bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and
+  supports copying of instances of classes whose __new__ method takes
+  keyword-only arguments.
+
+- bpo-23491: Added a zipapp module to support creating executable zip file
+  archives of Python code. Registered ".pyz" and ".pyzw" extensions on
+  Windows for these archives (PEP 441).
+
+- bpo-23657: Avoid explicit checks for str in zipapp, adding support for
+  pathlib.Path objects as arguments.
+
+- bpo-23688: Added support of arbitrary bytes-like objects and avoided
+  unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch
+  by Wolfgang Maier.
+
+- bpo-23252: Added support for writing ZIP files to unseekable streams.
+
+- bpo-23647: Increase imaplib's MAXLINE to accommodate modern mailbox sizes.
+
+- bpo-23539: If body is None, http.client.HTTPConnection.request now sets
+  Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors
+  from some web servers.
+
+- bpo-22351: The nntplib.NNTP constructor no longer leaves the connection
+  and socket open until the garbage collector cleans them up.  Patch by
+  Martin Panter.
+
+- bpo-23704: collections.deque() objects now support methods for index(),
+  insert(), and copy().  This allows deques to be registered as a
+  MutableSequence and it improves their substitutability for lists.
+
+- bpo-23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are
+  now retried when interrupted by a signal not in the *sigset* parameter, if
+  the signal handler does not raise an exception. signal.sigtimedwait()
+  recomputes the timeout with a monotonic clock when it is retried.
+
+- bpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and
+  codecs, that accepted only read-only bytes-like object now accept writable
+  bytes-like object too.
+
+- bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now
+  retried with the recomputed delay, except if the signal handler raises an
+  exception (PEP 475).
+
+- bpo-23136: _strptime now uniformly handles all days in week 0, including
+  Dec 30 of previous year.  Based on patch by Jim Carroll.
+
+- bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to
+  NamedTemporaryFile instance.  Patch by Bohuslav Kabrda.
+
+- bpo-22903: The fake test case created by unittest.loader when it fails
+  importing a test module is now picklable.
+
+- bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if
+  available, syscall introduced in the Linux kernel 3.17. It is more
+  reliable and more secure, because it avoids the need of a file descriptor
+  and waits until the kernel has enough entropy.
+
+- bpo-2211: Updated the implementation of the http.cookies.Morsel class.
+  Setting attributes key, value and coded_value directly now is deprecated.
+  update() and setdefault() now transform and check keys.  Comparing for
+  equality now takes into account attributes key, value and coded_value.
+  copy() now returns a Morsel, not a dict.  repr() now contains all
+  attributes. Optimized checking keys and quoting values.  Added new tests.
+  Original patch by Demian Brecht.
+
+- bpo-18983: Allow selection of output units in timeit. Patch by Julian
+  Gindi.
+
+- bpo-23631: Fix traceback.format_list when a traceback has been mutated.
+
+- bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan
+  Lövdahl.
+
+- bpo-2052: Add charset parameter to HtmlDiff.make_file().
+
+- bpo-23668: Support os.truncate and os.ftruncate on Windows.
+
+- bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar.
+  Patch by Demian Brecht.
+
+- bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now
+  handle exceptions raised by an iterator.  Patch by Alon Diamant and Davin
+  Potts.
+
+- bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.
+
+- bpo-23566: enable(), register(), dump_traceback() and
+  dump_traceback_later() functions of faulthandler now accept file
+  descriptors. Patch by Wei Wu.
+
+- bpo-22928: Disabled HTTP header injections in http.client. Original patch
+  by Demian Brecht.
+
+- bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with
+  imp.reload(). Patch by Thomas Kluyver.
+
+- bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The
+  usage of os.scandir() reduces the number of calls to os.stat(). Initial
+  patch written by Ben Hoyt.
+
+Build
+-----
+
+- bpo-23585: make patchcheck will ensure the interpreter is built.
+
+Tests
+-----
+
+- bpo-23583: Added tests for standard IO streams in IDLE.
+
+- bpo-22289: Prevent test_urllib2net failures due to ftp connection timeout.
+
+Tools/Demos
+-----------
+
+- bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better
+  compatible with regular files (in particular it now supports the context
+  management protocol).
+
+
+What's New in Python 3.5.0 alpha 2?
+===================================
+
+*Release date: 2015-03-09*
+
+Core and Builtins
+-----------------
+
+- bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError
+  if a function returns a result and raises an exception. The SystemError is
+  chained to the previous exception.
+
+Library
+-------
+
+- bpo-22524: New os.scandir() function, part of the :pep:`471`:
+  "os.scandir() function -- a better and faster directory iterator". Patch
+  written by Ben Hoyt.
+
+- bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address.
+
+- bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not
+  as stringified enum.  Patch by Demian Brecht.
+
+- bpo-23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST
+  flag on certificate stores when it is available.
+
+- bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the
+  SSL layer but the underlying connection hasn't been closed.
+
+- bpo-23504: Added an __all__ to the types module.
+
+- bpo-23563: Optimized utility functions in urllib.parse.
+
+- bpo-7830: Flatten nested functools.partial.
+
+- bpo-20204: Added the __module__ attribute to _tkinter classes.
+
+- bpo-19980: Improved help() for non-recognized strings.  help('') now shows
+  the help on str.  help('help') now shows the help on help(). Original
+  patch by Mark Lawrence.
+
+- bpo-23521: Corrected pure python implementation of timedelta division.
+  Eliminated OverflowError from ``timedelta * float`` for some floats;
+  Corrected rounding in timedelta true division.
+
+- bpo-21619: Popen objects no longer leave a zombie after exit in the with
+  statement if the pipe was broken.  Patch by Martin Panter.
+
+- bpo-22936: Make it possible to show local variables in tracebacks for both
+  the traceback module and unittest.
+
+- bpo-15955: Add an option to limit the output size in bz2.decompress().
+  Patch by Nikolaus Rath.
+
+- bpo-6639: Module-level turtle functions no longer raise TclError after
+  closing the window.
+
+- bpo-814253: Group references and conditional group references now work in
+  lookbehind assertions in regular expressions. (See also: bpo-9179)
+
+- bpo-23215: Multibyte codecs with custom error handlers that ignores errors
+  consumed too much memory and raised SystemError or MemoryError. Original
+  patch by Aleksi Torhamo.
+
+- bpo-5700: io.FileIO() called flush() after closing the file. flush() was
+  not called in close() if closefd=False.
+
+- bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding
+  differs from file system encoding (e.g. on Mac OS).
+
+- bpo-23481: Remove RC4 from the SSL module's default cipher list.
+
+- bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty
+  docstrings.
+
+- bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb
+  module. Original patch by Claudiu Popa.
+
+- bpo-23239: ssl.match_hostname() now supports matching of IP addresses.
+
+- bpo-23146: Fix mishandling of absolute Windows paths with forward slashes
+  in pathlib.
+
+- bpo-23096: Pickle representation of floats with protocol 0 now is the same
+  for both Python and C implementations.
+
+- bpo-19105: pprint now more efficiently uses free space at the right.
+
+- bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by
+  Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.
+
+- bpo-21717: tarfile.open() now supports 'x' (exclusive creation) mode.
+
+- bpo-23344: marshal.dumps() is now 20-25% faster on average.
+
+- bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on
+  average.
+
+- bpo-23421: Fixed compression in tarfile CLI.  Patch by wdv4758h.
+
+- bpo-23367: Fix possible overflows in the unicodedata module.
+
+- bpo-23361: Fix possible overflow in Windows subprocess creation code.
+
+- logging.handlers.QueueListener now takes a respect_handler_level keyword
+  argument which, if set to True, will pass messages to handlers taking
+  handler levels into account.
+
+- bpo-19705: turtledemo now has a visual sorting algorithm demo.  Original
+  patch from Jason Yeo.
+
+- bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the
+  entire preamble to a multipart body.
+
+Build
+-----
+
+- bpo-23445: pydebug builds now use "gcc -Og" where possible, to make the
+  resulting executable faster.
+
+- bpo-23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a.
+
+C API
+-----
+
+- bpo-20204: Deprecation warning is now raised for builtin types without the
+  __module__ attribute.
+
+Windows
+-------
+
+- bpo-23465: Implement :pep:`486` - Make the Python Launcher aware of
+  virtual environments. Patch by Paul Moore.
+
+- bpo-23437: Make user scripts directory versioned on Windows. Patch by Paul
+  Moore.
+
+
+What's New in Python 3.5.0 alpha 1?
+===================================
+
+*Release date: 2015-02-08*
+
+Core and Builtins
+-----------------
+
+- bpo-23285: PEP 475 - EINTR handling.
+
+- bpo-22735: Fix many edge cases (including crashes) involving custom mro()
+  implementations.
+
+- bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer()
+  and PyObject_AsWriteBuffer().
+
+- bpo-21295: Revert some changes (issue #16795) to AST line numbers and
+  column offsets that constituted a regression.
+
+- bpo-22986: Allow changing an object's __class__ between a dynamic type and
+  static type in some cases.
+
+- bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
+  PyUnicode_EncodeCodePage() now raise an exception if the object is not a
+  Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case
+  on platforms other than Windows. Patch written by Campbell Barton.
+
+- bpo-21408: The default __ne__() now returns NotImplemented if __eq__()
+  returned NotImplemented.  Original patch by Martin Panter.
+
+- bpo-23321: Fixed a crash in str.decode() when error handler returned
+  replacement string longer than malformed input data.
+
+- bpo-22286: The "backslashreplace" error handlers now works with decoding
+  and translating.
+
+- bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup
+  overhead on Windows.
+
+- bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for
+  atomic memory access if available. Patch written by Vitor de Lima and
+  Gustavo Temple.
+
+- bpo-20284: %-interpolation (aka printf) formatting added for bytes and
+  bytearray.
+
+- bpo-23048: Fix jumping out of an infinite while loop in the pdb.
+
+- bpo-20335: bytes constructor now raises TypeError when encoding or errors
+  is specified with non-string argument.  Based on patch by Renaud Blanch.
+
+- bpo-22834: If the current working directory ends up being set to a
+  non-existent directory then import will no longer raise FileNotFoundError.
+
+- bpo-22869: Move the interpreter startup & shutdown code to a new dedicated
+  pylifecycle.c module
+
+- bpo-22847: Improve method cache efficiency.
+
+- bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff
+  bytes on a 32-bit platform.
+
+- bpo-22653: Fix an assertion failure in debug mode when doing a reentrant
+  dict insertion in debug mode.
+
+- bpo-22643: Fix integer overflow in Unicode case operations (upper, lower,
+  title, swapcase, casefold).
+
+- bpo-17636: Circular imports involving relative imports are now supported.
+
+- bpo-22604: Fix assertion error in debug mode when dividing a complex
+  number by (nan+0j).
+
+- bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path
+  are set to None.
+
+- bpo-16518: Use 'bytes-like object required' in error messages that
+  previously used the far more cryptic "'x' does not support the buffer
+  protocol.
+
+- bpo-22470: Fixed integer overflow issues in "backslashreplace",
+  "xmlcharrefreplace", and "surrogatepass" error handlers.
+
+- bpo-22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the
+  common case that the second argument has metaclass `type`.
+
+- bpo-18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format`
+  but accepting a `va_list` argument.
+
+- bpo-22520: Fix overflow checking when generating the repr of a unicode
+  object.
+
+- bpo-22519: Fix overflow checking in PyBytes_Repr.
+
+- bpo-22518: Fix integer overflow issues in latin-1 encoding.
+
+- bpo-16324: _charset parameter of MIMEText now also accepts
+  email.charset.Charset instances. Initial patch by Claude Paroz.
+
+- bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch
+  by Claudiu Popa.
+
+- bpo-18554: os.__all__ includes posix functions.
+
+- bpo-21391: Use os.path.abspath in the shutil module.
+
+- bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an
+  if-block if there is no else-clause.  Original patch by Eugene Toder.
+
+- bpo-22215: Now ValueError is raised instead of TypeError when str or bytes
+  argument contains not permitted null character or byte.
+
+- bpo-22258: Fix the internal function set_inheritable() on Illumos. This
+  platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails
+  with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable()
+  now falls back to the slower ``fcntl()`` (``F_GETFD`` and then
+  ``F_SETFD``).
+
+- bpo-21389: Displaying the __qualname__ of the underlying function in the
+  repr of a bound method.
+
+- bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM
+  and returns -1 (error) on integer overflow.
+
+- bpo-20184: Argument Clinic based signature introspection added for 30 of
+  the builtin functions.
+
+- bpo-22116: C functions and methods (of the 'builtin_function_or_method'
+  type) can now be weakref'ed.  Patch by Wei Wu.
+
+- bpo-22077: Improve index error messages for bytearrays, bytes, lists, and
+  tuples by adding 'or slices'. Added ', not <typename>' for bytearrays.
+  Original patch by Claudiu Popa.
+
+- bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal
+  Einat.
+
+- bpo-22082: Clear interned strings in slotdefs.
+
+- Upgrade Unicode database to Unicode 7.0.0.
+
+- bpo-21897: Fix a crash with the f_locals attribute with closure variables
+  when frame.clear() has been called.
+
+- bpo-21205: Add a new ``__qualname__`` attribute to generator, the
+  qualified name, and use it in the representation of a generator
+  (``repr(gen)``). The default name of the generator (``__name__``
+  attribute) is now get from the function instead of the code. Use
+  ``gen.gi_code.co_name`` to get the name of the code.
+
+- bpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser
+  now attempts to generate more meaningful (or at least more search engine
+  friendly) error messages when "exec" and "print" are used as statements.
+
+- bpo-21642: In the conditional if-else expression, allow an integer written
+  with no space between itself and the ``else`` keyword (e.g. ``True if
+  42else False``) to be valid syntax.
+
+- bpo-21523: Fix over-pessimistic computation of the stack effect of some
+  opcodes in the compiler.  This also fixes a quadratic compilation time
+  issue noticeable when compiling code with a large number of "and" and "or"
+  operators.
+
+- bpo-21418: Fix a crash in the builtin function super() when called without
+  argument and without current frame (ex: embedded Python).
+
+- bpo-21425: Fix flushing of standard streams in the interactive
+  interpreter.
+
+- bpo-21435: In rare cases, when running finalizers on objects in cyclic
+  trash a bad pointer dereference could occur due to a subtle flaw in
+  internal iteration logic.
+
+- bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the
+  first argument has a reference count of 1.  Patch by Nikolaus Rath.
+
+- bpo-20355: -W command line options now have higher priority than the
+  PYTHONWARNINGS environment variable.  Patch by Arfrever.
+
+- bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.
+
+- bpo-20904: Support setting FPU precision on m68k.
+
+- bpo-21209: Fix sending tuples to custom generator objects with the yield
+  from syntax.
+
+- bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b
+  is negative. Patch by Josh Rosenberg.
+
+- bpo-21176: PEP 465: Add the '@' operator for matrix multiplication.
+
+- bpo-21134: Fix segfault when str is called on an uninitialized
+  UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.
+
+- bpo-19537: Fix PyUnicode_DATA() alignment under m68k.  Patch by Andreas
+  Schwab.
+
+- bpo-20929: Add a type cast to avoid shifting a negative number.
+
+- bpo-20731: Properly position in source code files even if they are opened
+  in text mode. Patch by Serhiy Storchaka.
+
+- bpo-20637: Key-sharing now also works for instance dictionaries of
+  subclasses.  Patch by Peter Ingebretson.
+
+- bpo-8297: Attributes missing from modules now include the module name in
+  the error text.  Original patch by ysj.ray.
+
+- bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input.
+
+- bpo-19655: The ASDL parser - used by the build process to generate code
+  for managing the Python AST in C - was rewritten. The new parser is self
+  contained and does not require to carry long the spark.py parser-generator
+  library; spark.py was removed from the source base.
+
+- bpo-12546: Allow ``\x00`` to be used as a fill character when using str,
+  int, float, and complex __format__ methods.
+
+- bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.
+
+- bpo-13598: Modify string.Formatter to support auto-numbering of
+  replacement fields. It now matches the behavior of str.format() in this
+  regard. Patches by Phil Elson and Ramchandra Apte.
+
+- bpo-8931: Make alternate formatting ('#') for type 'c' raise an exception.
+  In versions prior to 3.5, '#' with 'c' had no effect. Now specifying it is
+  an error. Patch by Torsten Landschoff.
+
+- bpo-23165: Perform overflow checks before allocating memory in the
+  _Py_char2wchar function.
+
+Library
+-------
+
+- bpo-23399: pyvenv creates relative symlinks where possible.
+
+- bpo-20289: cgi.FieldStorage() now supports the context management
+  protocol.
+
+- bpo-13128: Print response headers for CONNECT requests when debuglevel >
+  0. Patch by Demian Brecht.
+
+- bpo-15381: Optimized io.BytesIO to make less allocations and copyings.
+
+- bpo-22818: Splitting on a pattern that could match an empty string now
+  raises a warning.  Patterns that can only match empty strings are now
+  rejected.
+
+- bpo-23099: Closing io.BytesIO with exported buffer is rejected now to
+  prevent corrupting exported buffer.
+
+- bpo-23326: Removed __ne__ implementations.  Since fixing default __ne__
+  implementation in issue #21408 they are redundant.
+
+- bpo-23363: Fix possible overflow in itertools.permutations.
+
+- bpo-23364: Fix possible overflow in itertools.product.
+
+- bpo-23366: Fixed possible integer overflow in itertools.combinations.
+
+- bpo-23369: Fixed possible integer overflow in
+  _json.encode_basestring_ascii.
+
+- bpo-23353: Fix the exception handling of generators in
+  PyEval_EvalFrameEx(). At entry, save or swap the exception state even if
+  PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception
+  state is now always restored or swapped, not only if why is WHY_YIELD or
+  WHY_RETURN. Patch co-written with Antoine Pitrou.
+
+- bpo-14099: Restored support of writing ZIP files to tellable but
+  non-seekable streams.
+
+- bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is
+  threadsafe now.
+
+- bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError.
+
+- bpo-18518: timeit now rejects statements which can't be compiled outside a
+  function or a loop (e.g. "return" or "break").
+
+- bpo-23094: Fixed readline with frames in Python implementation of pickle.
+
+- bpo-23268: Fixed bugs in the comparison of ipaddress classes.
+
+- bpo-21408: Removed incorrect implementations of __ne__() which didn't
+  returned NotImplemented if __eq__() returned NotImplemented.  The default
+  __ne__() now works correctly.
+
+- bpo-19996: :class:`email.feedparser.FeedParser` now handles (malformed)
+  headers with no key rather than assuming the body has started.
+
+- bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the
+  ssl module.
+
+- bpo-23133: Pickling of ipaddress objects now produces more compact and
+  portable representation.
+
+- bpo-23248: Update ssl error codes from latest OpenSSL git master.
+
+- bpo-23266: Much faster implementation of ipaddress.collapse_addresses()
+  when there are many non-consecutive addresses.
+
+- bpo-23098: 64-bit dev_t is now supported in the os module.
+
+- bpo-21817: When an exception is raised in a task submitted to a
+  ProcessPoolExecutor, the remote traceback is now displayed in the parent
+  process.  Patch by Claudiu Popa.
+
+- bpo-15955: Add an option to limit output size when decompressing LZMA
+  data.  Patch by Nikolaus Rath and Martin Panter.
+
+- bpo-23250: In the http.cookies module, capitalize "HttpOnly" and "Secure"
+  as they are written in the standard.
+
+- bpo-23063: In the distutils' check command, fix parsing of reST with code
+  or code-block directives.
+
+- bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if
+  the selector is closed. And selectors.BaseSelector.close() now clears its
+  internal reference to the selector mapping to break a reference cycle.
+  Initial patch written by Martin Richard. (See also: bpo-23225)
+
+- bpo-17911: Provide a way to seed the linecache for a PEP-302 module
+  without actually loading the code.
+
+- bpo-17911: Provide a new object API for traceback, including the ability
+  to not lookup lines at all until the traceback is actually rendered,
+  without any trace of the original objects being kept alive.
+
+- bpo-19777: Provide a home() classmethod on Path objects.  Contributed by
+  Victor Salgado and Mayank Tripathi.
+
+- bpo-23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the
+  default case of ``ensure_ascii=True``.  Patch by Naoki Inada.
+
+- bpo-23185: Add math.inf and math.nan constants.
+
+- bpo-23186: Add ssl.SSLObject.shared_ciphers() and
+  ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
+  handshake.
+
+- bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8.
+
+- bpo-23132: Improve performance and introspection support of comparison
+  methods created by functool.total_ordering.
+
+- bpo-19776: Add an expanduser() method on Path objects.
+
+- bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and
+  fragment when it redirects to add a trailing slash.
+
+- bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
+  HTTPStatus.NOT_FOUND). Patch by Demian Brecht.
+
+- bpo-23093: In the io, module allow more operations to work on detached
+  streams.
+
+- bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol
+  version.
+
+- bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(),
+  instead of reading /dev/urandom, to get pseudo-random bytes.
+
+- bpo-19104: pprint now produces evaluable output for wrapped strings.
+
+- bpo-23071: Added missing names to codecs.__all__.  Patch by Martin Panter.
+
+- bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
+  opcode if possible.
+
+- bpo-15513: Added a __sizeof__ implementation for pickle classes.
+
+- bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can
+  produce more compact result and no longer produces invalid output if input
+  data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.
+
+- bpo-22095: Fixed HTTPConnection.set_tunnel with default port.  The port
+  value in the host header was set to "None".  Patch by Demian Brecht.
+
+- bpo-23016: A warning no longer produces an AttributeError when the program
+  is run with pythonw.exe.
+
+- bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception
+  handler assumed that OSError objects always have a 'winerror' attribute.
+  That is not the case, so the exception handler itself raised
+  AttributeError when run on Linux (and, presumably, any other non-Windows
+  OS). Patch by Greg Ward.
+
+- bpo-1218234: Fix inspect.getsource() to load updated source of reloaded
+  module. Initial patch by Berker Peksag.
+
+- bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa.
+
+- bpo-23009: Make sure selectors.EpollSelector.select() works when no FD is
+  registered.
+
+- bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the
+  context's check_hostname attribute over the *check_hostname* parameter.
+
+- bpo-22696: Add function :func:`sys.is_finalizing` to know about
+  interpreter shutdown.
+
+- bpo-16043: Add a default limit for the amount of data
+  xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753.
+
+- bpo-14099: ZipFile.open() no longer reopen the underlying file.  Objects
+  returned by ZipFile.open() can now operate independently of the ZipFile
+  even if the ZipFile was created by passing in a file-like object as the
+  first argument to the constructor.
+
+- bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked
+  to compile a source file containing multiple dots in the source file name.
+
+- bpo-21971: Update turtledemo doc and add module to the index.
+
+- bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails.
+  Original patch by Martin Panter.
+
+- bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or
+  re.ASCII. It was newer worked.
+
+- bpo-22902: The "ip" command is now used on Linux to determine MAC address
+  in uuid.getnode().  Pach by Bruno Cauet.
+
+- bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor.
+
+- bpo-22389: Add contextlib.redirect_stderr().
+
+- bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The
+  availability of the function is checked during the compilation. Patch
+  written by Bernard Spil.
+
+- bpo-22915: SAX parser now supports files opened with file descriptor or
+  bytes path.
+
+- bpo-22609: Constructors and update methods of mapping classes in the
+  collections module now accept the self keyword argument.
+
+- bpo-22940: Add readline.append_history_file.
+
+- bpo-19676: Added the "namereplace" error handler.
+
+- bpo-22788: Add *context* parameter to logging.handlers.HTTPHandler.
+
+- bpo-22921: Allow SSLContext to take the *hostname* parameter even if
+  OpenSSL doesn't support SNI.
+
+- bpo-22894: TestCase.subTest() would cause the test suite to be stopped
+  when in failfast mode, even in the absence of failures.
+
+- bpo-22796: HTTP cookie parsing is now stricter, in order to protect
+  against potential injection attacks.
+
+- bpo-22370: Windows detection in pathlib is now more robust.
+
+- bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by
+  Ludovic.Gasc.
+
+- bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej
+  Cepl.
+
+- bpo-22578: Added attributes to the re.error class.
+
+- bpo-22849: Fix possible double free in the io.TextIOWrapper constructor.
+
+- bpo-12728: Different Unicode characters having the same uppercase but
+  different lowercase are now matched in case-insensitive regular
+  expressions.
+
+- bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian
+  platforms.
+
+- bpo-21650: Add an `--sort-keys` option to json.tool CLI.
+
+- bpo-22824: Updated reprlib output format for sets to use set literals.
+  Patch contributed by Berker Peksag.
+
+- bpo-22824: Updated reprlib output format for arrays to display empty
+  arrays without an unnecessary empty list.  Suggested by Serhiy Storchaka.
+
+- bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on
+  patch by Martin Panter.
+
+- bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat.
+  Based on patch by Aivars Kalvāns.
+
+- bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments.
+
+- bpo-22417: Verify certificates by default in httplib (PEP 476).
+
+- bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2
+  and above. Patch by Tim Graham.
+
+- bpo-22776: Brought excluded code into the scope of a try block in
+  SysLogHandler.emit().
+
+- bpo-22665: Add missing get_terminal_size and SameFileError to
+  shutil.__all__.
+
+- bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by
+  Matt Chaput.
+
+- bpo-17381: Fixed handling of case-insensitive ranges in regular
+  expressions.
+
+- bpo-22410: Module level functions in the re module now cache compiled
+  locale-dependent regular expressions taking into account the locale.
+
+- bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now
+  return False when the underlying stat call raises NotADirectoryError.
+
+- bpo-8876: distutils now falls back to copying files when hard linking
+  doesn't work. This allows use with special filesystems such as VirtualBox
+  shared folders.
+
+- bpo-22217: Implemented reprs of classes in the zipfile module.
+
+- bpo-22457: Honour load_tests in the start_dir of discovery.
+
+- bpo-18216: gettext now raises an error when a .mo file has an unsupported
+  major version number.  Patch by Aaron Hill.
+
+- bpo-13918: Provide a locale.delocalize() function which can remove
+  locale-specific number formatting from a string representing a number,
+  without then converting it to a specific type.  Patch by Cédric Krier.
+
+- bpo-22676: Make the pickling of global objects which don't have a
+  __module__ attribute less slow.
+
+- bpo-18853: Fixed ResourceWarning in shlex.__nain__.
+
+- bpo-9351: Defaults set with set_defaults on an argparse subparser are no
+  longer ignored when also set on the parent parser.
+
+- bpo-7559: unittest test loading ImportErrors are reported as import errors
+  with their import exception rather than as attribute errors after the
+  import has already failed.
+
+- bpo-19746: Make it possible to examine the errors from unittest discovery
+  without executing the test suite. The new `errors` attribute on TestLoader
+  exposes these non-fatal errors encountered during discovery.
+
+- bpo-21991: Make email.headerregistry's header 'params' attributes be
+  read-only (MappingProxyType).  Previously the dictionary was modifiable
+  but a new one was created on each access of the attribute.
+
+- bpo-22638: SSLv3 is now disabled throughout the standard library. It can
+  still be enabled by instantiating a SSLContext manually.
+
+- bpo-22641: In asyncio, the default SSL context for client connections is
+  now created using ssl.create_default_context(), for stronger security.
+
+- bpo-17401: Include closefd in io.FileIO repr.
+
+- bpo-21338: Add silent mode for compileall. quiet parameters of
+  compile_{dir, file, path} functions now have a multilevel value. Also, -q
+  option of the CLI now have a multilevel value. Patch by Thomas Kluyver.
+
+- bpo-20152: Convert the array and cmath modules to Argument Clinic.
+
+- bpo-18643: Add socket.socketpair() on Windows.
+
+- bpo-22435: Fix a file descriptor leak when socketserver bind fails.
+
+- bpo-13096: Fixed segfault in CTypes POINTER handling of large values.
+
+- bpo-11694: Raise ConversionError in xdrlib as documented.  Patch by Filip
+  Gruszczyński and Claudiu Popa.
+
+- bpo-19380: Optimized parsing of regular expressions.
+
+- bpo-1519638: Now unmatched groups are replaced with empty strings in
+  re.sub() and re.subn().
+
+- bpo-18615: sndhdr.what/whathdr now return a namedtuple.
+
+- bpo-22462: Fix pyexpat's creation of a dummy frame to make it appear in
+  exception tracebacks.
+
+- bpo-21965: Add support for in-memory SSL to the ssl module.  Patch by
+  Geert Jansen.
+
+- bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with
+  an iterator alive.
+
+- bpo-11866: Eliminated race condition in the computation of names for new
+  threads.
+
+- bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is
+  mutated while iterating.  Patch by Olivier Grisel.
+
+- bpo-11271: concurrent.futures.Executor.map() now takes a *chunksize*
+  argument to allow batching of tasks in child processes and improve
+  performance of ProcessPoolExecutor.  Patch by Dan O'Reilly.
+
+- bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with
+  more helpful error message for unsupported or mismatched types of
+  arguments.
+
+- bpo-22219: The zipfile module CLI now adds entries for directories
+  (including empty directories) in ZIP file.
+
+- bpo-22449: In the ssl.SSLContext.load_default_certs, consult the
+  environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.
+
+- bpo-22508: The email.__version__ variable has been removed; the email code
+  is no longer shipped separately from the stdlib, and __version__ hasn't
+  been updated in several releases.
+
+- bpo-20076: Added non derived UTF-8 aliases to locale aliases table.
+
+- bpo-20079: Added locales supported in glibc 2.18 to locale alias table.
+
+- bpo-20218: Added convenience methods read_text/write_text and read_bytes/
+  write_bytes to pathlib.Path objects.
+
+- bpo-22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor
+  os.posix_fallocate() because their prototypes in system headers are wrong.
+
+- bpo-22517: When an io.BufferedRWPair object is deallocated, clear its
+  weakrefs.
+
+- bpo-22437: Number of capturing groups in regular expression is no longer
+  limited by 100.
+
+- bpo-17442: InteractiveInterpreter now displays the full chained traceback
+  in its showtraceback method, to match the built in interactive
+  interpreter.
+
+- bpo-23392: Added tests for marshal C API that works with FILE*.
+
+- bpo-10510: distutils register and upload methods now use HTML standards
+  compliant CRLF line endings.
+
+- bpo-9850: Fixed macpath.join() for empty first component.  Patch by Oleg
+  Oshmyan.
+
+- bpo-5309: distutils' build and build_ext commands now accept a ``-j``
+  option to enable parallel building of extension modules.
+
+- bpo-22448: Improve canceled timer handles cleanup to prevent unbound
+  memory usage. Patch by Joshua Moore-Oliva.
+
+- bpo-22427: TemporaryDirectory no longer attempts to clean up twice when
+  used in the with statement in generator.
+
+- bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in
+  regular expressions.
+
+- bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS
+  directory attributes.
+
+- bpo-21866: ZipFile.close() no longer writes ZIP64 central directory
+  records if allowZip64 is false.
+
+- bpo-22278: Fix urljoin problem with relative urls, a regression observed
+  after changes to issue22118 were submitted.
+
+- bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re
+  module. Removed trailing spaces in debugging output.
+
+- bpo-22423: Unhandled exception in thread no longer causes unhandled
+  AttributeError when sys.stderr is None.
+
+- bpo-21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line
+  buffering, rather than block buffering.  Patch by Akira Li.
+
+- bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a
+  method.
+
+- bpo-21079: Fix email.message.EmailMessage.is_attachment to return the
+  correct result when the header has parameters as well as a value.
+
+- bpo-22247: Add NNTPError to nntplib.__all__.
+
+- bpo-22366: urllib.request.urlopen will accept a context object
+  (SSLContext) as an argument which will then be used for HTTPS connection.
+  Patch by Alex Gaynor.
+
+- bpo-4180: The warnings registries are now reset when the filters are
+  modified.
+
+- bpo-22419: Limit the length of incoming HTTP request in wsgiref server to
+  65536 bytes and send a 414 error code for higher lengths. Patch
+  contributed by Devin Cook.
+
+- Lax cookie parsing in http.cookies could be a security issue when combined
+  with non-standard cookie handling in some Web browsers.  Reported by
+  Sergey Bobrov.
+
+- bpo-20537: logging methods now accept an exception instance as well as a
+  Boolean value or exception tuple. Thanks to Yury Selivanov for the patch.
+
+- bpo-22384: An exception in Tkinter callback no longer crashes the program
+  when it is run with pythonw.exe.
+
+- bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X.
+
+- bpo-21147: sqlite3 now raises an exception if the request contains a null
+  character instead of truncating it.  Based on patch by Victor Stinner.
+
+- bpo-13968: The glob module now supports recursive search in subdirectories
+  using the ``**`` pattern.
+
+- bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with
+  empty string or tuple argument.
+
+- bpo-21951: Tkinter now most likely raises MemoryError instead of crash if
+  the memory allocation fails.
+
+- bpo-22338: Fix a crash in the json module on memory allocation failure.
+
+- bpo-12410: imaplib.IMAP4 now supports the context management protocol.
+  Original patch by Tarek Ziadé.
+
+- bpo-21270: We now override tuple methods in mock.call objects so that they
+  can be used as normal call attributes.
+
+- bpo-16662: load_tests() is now unconditionally run when it is present in a
+  package's __init__.py.  TestLoader.loadTestsFromModule() still accepts
+  use_load_tests, but it is deprecated and ignored.  A new keyword-only
+  attribute `pattern` is added and documented.  Patch given by Robert
+  Collins, tweaked by Barry Warsaw.
+
+- bpo-22226: First letter no longer is stripped from the "status" key in the
+  result of Treeview.heading().
+
+- bpo-19524: Fixed resource leak in the HTTP connection when an invalid
+  response is received.  Patch by Martin Panter.
+
+- bpo-20421: Add a .version() method to SSL sockets exposing the actual
+  protocol version in use.
+
+- bpo-19546: configparser exceptions no longer expose implementation
+  details. Chained KeyErrors are removed, which leads to cleaner tracebacks.
+  Patch by Claudiu Popa.
+
+- bpo-22051: turtledemo no longer reloads examples to re-run them.
+  Initialization of variables and gui setup should be done in main(), which
+  is called each time a demo is run, but not on import.
+
+- bpo-21933: Turtledemo users can change the code font size with a menu
+  selection or control(command) '-' or '+' or control-mousewheel. Original
+  patch by Lita Cho.
+
+- bpo-21597: The separator between the turtledemo text pane and the drawing
+  canvas can now be grabbed and dragged with a mouse.  The code text pane
+  can be widened to easily view or copy the full width of the text.  The
+  canvas can be widened on small screens.  Original patches by Jan Kanis and
+  Lita Cho.
+
+- bpo-18132: Turtledemo buttons no longer disappear when the window is
+  shrunk.  Original patches by Jan Kanis and Lita Cho.
+
+- bpo-22043: time.monotonic() is now always available.
+  ``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket
+  operations now use a monotonic clock, instead of the system clock, when a
+  timeout is used.
+
+- bpo-21527: Add a default number of workers to ThreadPoolExecutor equal to
+  5 times the number of CPUs.  Patch by Claudiu Popa.
+
+- bpo-22216: smtplib now resets its state more completely after a quit.  The
+  most obvious consequence of the previous behavior was a STARTTLS failure
+  during a connect/starttls/quit/connect/starttls sequence.
+
+- bpo-22098: ctypes' BigEndianStructure and LittleEndianStructure now define
+  an empty __slots__ so that subclasses don't always get an instance dict.
+  Patch by Claudiu Popa.
+
+- bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait()
+  caused by mutation of the waiters queue without holding the lock.  Patch
+  by Doug Zongker.
+
+- bpo-22287: On UNIX, _PyTime_gettimeofday() now uses
+  clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now
+  depends on the librt library on Solaris and on Linux (only with glibc
+  older than 2.17).
+
+- bpo-22182: Use e.args to unpack exceptions correctly in
+  distutils.file_util.move_file. Patch by Claudiu Popa.
+
+- The webbrowser module now uses subprocess's start_new_session=True rather
+  than a potentially risky preexec_fn=os.setsid call.
+
+- bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file
+  descriptor is in blocking mode.
+
+- bpo-16808: inspect.stack() now returns a named tuple instead of a tuple.
+  Patch by Daniel Shahaf.
+
+- bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode.
+
+- bpo-2527: Add a *globals* argument to timeit functions, in order to
+  override the globals namespace in which the timed code is executed. Patch
+  by Ben Roberts.
+
+- bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the
+  resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by
+  Demian Brecht.
+
+- bpo-21549: Added the "members" parameter to TarFile.list().
+
+- bpo-19628: Allow compileall recursion depth to be specified with a -r
+  option.
+
+- bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows.
+
+- bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter.
+
+- bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names.
+
+- bpo-15381: Optimized line reading in io.BytesIO.
+
+- bpo-8797: Raise HTTPError on failed Basic Authentication immediately.
+  Initial patch by Sam Bull.
+
+- bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in
+  the mailbox module.
+
+- bpo-21448: Changed FeedParser feed() to avoid O(N**2) behavior when
+  parsing long line. Original patch by Raymond Hettinger.
+
+- bpo-22184: The functools LRU Cache decorator factory now gives an earlier
+  and clearer error message when the user forgets the required parameters.
+
+- bpo-17923: glob() patterns ending with a slash no longer match non-dirs on
+  AIX.  Based on patch by Delhallt.
+
+- bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.
+
+- bpo-22176: Update the ctypes module's libffi to v3.1.  This release adds
+  support for the Linux AArch64 and POWERPC ELF ABIv2 little endian
+  architectures.
+
+- bpo-5411: Added support for the "xztar" format in the shutil module.
+
+- bpo-21121: Don't force 3rd party C extensions to be built with
+  -Werror=declaration-after-statement.
+
+- bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular
+  when unpickling pickled sqlite3.Row).  sqlite3.Row is now initialized in
+  the __new__() method.
+
+- bpo-20170: Convert posixmodule to use Argument Clinic.
+
+- bpo-21539: Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic
+  `mkdir -p` and `os.makedirs()` functionality.  When true, ignore
+  FileExistsErrors.  Patch by Berker Peksag.
+
+- bpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in
+  particular for numeric IPs).
+
+- bpo-21047: set the default value for the *convert_charrefs* argument of
+  HTMLParser to True.  Patch by Berker Peksag.
+
+- Add an __all__ to html.entities.
+
+- bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error,
+  and the HTMLParserError exception have been removed.
+
+- bpo-22085: Dropped support of Tk 8.3 in Tkinter.
+
+- bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In
+  particular this allows initializing images from binary data.
+
+- bpo-22003: When initialized from a bytes object, io.BytesIO() now defers
+  making a copy until it is mutated, improving performance and memory use on
+  some use cases. Patch by David Wilson.
+
+- bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A
+  side effect is that Python depends to the WinSock library.
+
+- bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get
+  and set the blocking mode of a file descriptor (False if the O_NONBLOCK
+  flag is set, True otherwise). These functions are not available on
+  Windows.
+
+- bpo-17172: Make turtledemo start as active on OS X even when run with
+  subprocess. Patch by Lita Cho.
+
+- bpo-21704: Fix build error for _multiprocessing when semaphores are not
+  available. Patch by Arfrever Frehtes Taifersar Arahesis.
+
+- bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch
+  by Vajrasky Kok.
+
+- Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError
+  on closed socket. repr(socket.socket) already works fine.
+
+- bpo-22033: Reprs of most Python implemented classes now contain actual
+  class name instead of hardcoded one.
+
+- bpo-21947: The dis module can now disassemble generator-iterator objects
+  based on their gi_code attribute. Patch by Clement Rouault.
+
+- bpo-16133: The asynchat.async_chat.handle_read() method now ignores
+  BlockingIOError exceptions.
+
+- bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom
+  Flanagan.
+
+- bpo-19884: readline: Disable the meta modifier key if stdout is not a
+  terminal to not write the ANSI sequence ``"\033[1034h"`` into stdout. This
+  sequence is used on some terminal (ex: TERM=xterm-256color") to enable
+  support of 8 bit characters.
+
+- bpo-4350: Removed a number of out-of-dated and non-working for a long time
+  Tkinter methods.
+
+- bpo-6167: Scrollbar.activate() now returns the name of active element if
+  the argument is not specified.  Scrollbar.set() now always accepts only 2
+  arguments.
+
+- bpo-15275: Clean up and speed up the ntpath module.
+
+- bpo-21888: plistlib's load() and loads() now work if the fmt parameter is
+  specified.
+
+- bpo-22032: __qualname__ instead of __name__ is now always used to format
+  fully qualified class names of Python implemented classes.
+
+- bpo-22031: Reprs now always use hexadecimal format with the "0x" prefix
+  when contain an id in form " at 0x...".
+
+- bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a
+  ValueError on ``fstat()`` failure.
+
+- bpo-21044: tarfile.open() now handles fileobj with an integer 'name'
+  attribute.  Based on patch by Antoine Pietri.
+
+- bpo-21966: Respect -q command-line option when code module is ran.
+
+- bpo-19076: Don't pass the redundant 'file' argument to self.error().
+
+- bpo-16382: Improve exception message of warnings.warn() for bad category.
+  Initial patch by Phil Elson.
+
+- bpo-21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of
+  :c:type:`int` for the size to support reading more than 2 GB at once. On
+  Windows, the size is truncated to INT_MAX. As any call to os.read(), the
+  OS may read less bytes than the number of requested bytes.
+
+- bpo-21942: Fixed source file viewing in pydoc's server mode on Windows.
+
+- bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError
+  if the number of received bytes is negative.
+
+- bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn't
+  get a bytes string
+
+- bpo-21707: Add missing kwonlyargcount argument to
+  ModuleFinder.replace_paths_in_code().
+
+- bpo-20639: calling Path.with_suffix('') allows removing the suffix again.
+  Patch by July Tikhonov.
+
+- bpo-21714: Disallow the construction of invalid paths using
+  Path.with_name().  Original patch by Antony Lee.
+
+- bpo-15014: Added 'auth' method to smtplib to make implementing auth
+  mechanisms simpler, and used it internally in the login method.
+
+- bpo-21151: Fixed a segfault in the winreg module when ``None`` is passed
+  as a ``REG_BINARY`` value to SetValueEx.  Patch by John Ehresman.
+
+- bpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before,
+  it ignored I/O errors if at least the first C call read() succeed.
+
+- bpo-5800: headers parameter of wsgiref.headers.Headers is now optional.
+  Initial patch by Pablo Torres Navarrete and SilentGhost.
+
+- bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB.
+
+- bpo-21679: Prevent extraneous fstat() calls during open().  Patch by
+  Bohuslav Kabrda.
+
+- bpo-21863: cProfile now displays the module name of C extension functions,
+  in addition to their own name.
+
+- bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper
+  object is destroyed. The destructor now closes the file if needed. The
+  close() method can now be called twice: the second call does nothing.
+
+- bpo-21858: Better handling of Python exceptions in the sqlite3 module.
+
+- bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is
+  discarded after parsing, so the input file isn't unexpectedly closed.
+
+- bpo-20295: imghdr now recognizes OpenEXR format images.
+
+- bpo-21729: Used the "with" statement in the dbm.dumb module to ensure
+  files closing. Patch by Claudiu Popa.
+
+- bpo-21491: socketserver: Fix a race condition in child processes reaping.
+
+- bpo-21719: Added the ``st_file_attributes`` field to os.stat_result on
+  Windows.
+
+- bpo-21832: Require named tuple inputs to be exact strings.
+
+- bpo-21722: The distutils "upload" command now exits with a non-zero return
+  code when uploading fails.  Patch by Martin Dengler.
+
+- bpo-21723: asyncio.Queue: support any type of number (ex: float) for the
+  maximum size. Patch written by Vajrasky Kok.
+
+- bpo-21711: support for "site-python" directories has now been removed from
+  the site module (it was deprecated in 3.4).
+
+- bpo-17552: new socket.sendfile() method allowing a file to be sent over a
+  socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo
+  Rodola'.
+
+- bpo-18039: dbm.dump.open() now always creates a new database when the flag
+  has the value 'n'.  Patch by Claudiu Popa.
+
+- bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop.
+  run_forever() and run_until_complete() methods of asyncio.BaseEventLoop
+  now raise an exception if the event loop was closed.
+
+- bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths
+  before checking for a CGI script at that path.
+
+- bpo-21310: Fixed possible resource leak in failed open().
+
+- bpo-21256: Printout of keyword args should be in deterministic order in a
+  mock function call. This will help to write better doctests.
+
+- bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods.
+
+- bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a
+  valid file.
+
+- bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.
+
+- bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods
+  that use 'self' in the example code is generated correctly.
+
+- bpo-21463: In urllib.request, fix pruning of the FTP cache.
+
+- bpo-21618: The subprocess module could fail to close open fds that were
+  inherited by the calling process and already higher than POSIX resource
+  limits would otherwise allow.  On systems with a functioning /proc/self/fd
+  or /dev/fd interface the max is now ignored and all fds are closed.
+
+- bpo-20383: Introduce importlib.util.module_from_spec() as the preferred
+  way to create a new module.
+
+- bpo-21552: Fixed possible integer overflow of too long string lengths in
+  the tkinter module on 64-bit platforms.
+
+- bpo-14315: The zipfile module now ignores extra fields in the central
+  directory that are too short to be parsed instead of letting a
+  struct.unpack error bubble up as this "bad data" appears in many real
+  world zip files in the wild and is ignored by other zip tools.
+
+- bpo-13742: Added "key" and "reverse" parameters to heapq.merge(). (First
+  draft of patch contributed by Simon Sapin.)
+
+- bpo-21402: tkinter.ttk now works when default root window is not set.
+
+- bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by
+  default.
+
+- bpo-10203: sqlite3.Row now truly supports sequence protocol.  In
+  particular it supports reverse() and negative indices.  Original patch by
+  Claudiu Popa.
+
+- bpo-18807: If copying (no symlinks) specified for a venv, then the python
+  interpreter aliases (python, python3) are now created by copying rather
+  than symlinking.
+
+- bpo-20197: Added support for the WebP image type in the imghdr module.
+  Patch by Fabrice Aneche and Claudiu Popa.
+
+- bpo-21513: Speedup some properties of IP addresses (IPv4Address,
+  IPv6Address) such as .is_private or .is_multicast.
+
+- bpo-21137: Improve the repr for threading.Lock() and its variants by
+  showing the "locked" or "unlocked" status.  Patch by Berker Peksag.
+
+- bpo-21538: The plistlib module now supports loading of binary plist files
+  when reference or offset size is not a power of two.
+
+- bpo-21455: Add a default backlog to socket.listen().
+
+- bpo-21525: Most Tkinter methods which accepted tuples now accept lists
+  too.
+
+- bpo-22166: With the assistance of a new internal _codecs._forget_codec
+  helping function, test_codecs now clears the encoding caches to avoid the
+  appearance of a reference leak
+
+- bpo-22236: Tkinter tests now don't reuse default root window.  New root
+  window is created for every test class.
+
+- bpo-10744: Fix :pep:`3118` format strings on ctypes objects with a
+  nontrivial shape.
+
+- bpo-20826: Optimize ipaddress.collapse_addresses().
+
+- bpo-21487: Optimize ipaddress.summarize_address_range() and
+  ipaddress.{IPv4Network,IPv6Network}.subnets().
+
+- bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and
+  ipaddress.IPv6Network.
+
+- bpo-13916: Disallowed the surrogatepass error handler for non UTF-\*
+  encodings.
+
+- bpo-20998: Fixed re.fullmatch() of repeated single character pattern with
+  ignore case. Original patch by Matthew Barnett.
+
+- bpo-21075: fileinput.FileInput now reads bytes from standard stream if
+  binary mode is specified.  Patch by Sam Kimbrel.
+
+- bpo-19775: Add a samefile() method to pathlib Path objects.  Initial patch
+  by Vajrasky Kok.
+
+- bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and
+  friends).
+
+- bpo-21398: Fix a unicode error in the pydoc pager when the documentation
+  contains characters not encodable to the stdout encoding.
+
+- bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an
+  (address, netmask) tuple argument, so as to easily construct network
+  objects from existing addresses.
+
+- bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a
+  staticmethod.
+
+- bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to
+  make fewer tuple comparisons.
+
+- bpo-21396: Fix TextIOWrapper(..., write_through=True) to not force a
+  flush() on the underlying binary stream.  Patch by akira.
+
+- bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman
+
+- bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In
+  porting to Argument Clinic, the first two arguments were reversed.
+
+- bpo-21407: _decimal: The module now supports function signatures.
+
+- bpo-10650: Remove the non-standard 'watchexp' parameter from the
+  Decimal.quantize() method in the Python version.  It had never been
+  present in the C version.
+
+- bpo-21469: Reduced the risk of false positives in robotparser by checking
+  to make sure that robots.txt has been read or does not exist prior to
+  returning True in can_fetch().
+
+- bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives
+  an early failure if the link is deleted during iteration.
+
+- bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg.
+
+- bpo-21101: Eliminate double hashing in the C speed-up code for
+  collections.Counter().
+
+- bpo-21321: itertools.islice() now releases the reference to the source
+  iterator when the slice is exhausted.  Patch by Anton Afanasyev.
+
+- bpo-21057: TextIOWrapper now allows the underlying binary stream's read()
+  or read1() method to return an arbitrary bytes-like object (such as a
+  memoryview). Patch by Nikolaus Rath.
+
+- bpo-20951: SSLSocket.send() now raises either SSLWantReadError or
+  SSLWantWriteError on a non-blocking socket if the operation would block.
+  Previously, it would return 0.  Patch by Nikolaus Rath.
+
+- bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__
+  cheap inheritance hack.
+
+- bpo-9815: assertRaises now tries to clear references to local variables in
+  the exception's traceback.
+
+- bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string
+  in the UTC timezone (as specified in RFC 5280), not the local timezone.
+
+- bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it
+  raises a TypeError.
+
+- bpo-19385: Make operations on a closed dbm.dumb database always raise the
+  same exception.
+
+- bpo-21207: Detect when the os.urandom cached fd has been closed or
+  replaced, and open it anew.
+
+- bpo-21291: subprocess's Popen.wait() is now thread safe so that multiple
+  threads may be calling wait() or poll() on a Popen instance at the same
+  time without losing the Popen.returncode value.
+
+- bpo-21127: Path objects can now be instantiated from str subclass
+  instances (such as ``numpy.str_``).
+
+- bpo-15002: urllib.response object to use _TemporaryFileWrapper (and
+  _TemporaryFileCloser) facility. Provides a better way to handle file
+  descriptor close. Patch contributed by Christian Theune.
+
+- bpo-12220: mindom now raises a custom ValueError indicating it doesn't
+  support spaces in URIs instead of letting a 'split' ValueError bubble up.
+
+- bpo-21068: The ssl.PROTOCOL* constants are now enum members.
+
+- bpo-21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd.
+
+- bpo-21262: New method assert_not_called for Mock. It raises AssertionError
+  if the mock has been called.
+
+- bpo-21238: New keyword argument `unsafe` to Mock. It raises
+  `AttributeError` incase of an attribute startswith assert or assret.
+
+- bpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not
+  PROTOCOL_SSLv3, for maximum compatibility.
+
+- bpo-21239: patch.stopall() didn't work deterministically when the same
+  name was patched more than once.
+
+- bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies.
+  Thanks to Jure Koren for the patch.
+
+- bpo-21222: Passing name keyword argument to mock.create_autospec now
+  works.
+
+- bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.
+
+- bpo-17498: Some SMTP servers disconnect after certain errors, violating
+  strict RFC conformance.  Instead of losing the error code when we issue
+  the subsequent RSET, smtplib now returns the error code and defers raising
+  the SMTPServerDisconnected error until the next command is issued.
+
+- bpo-17826: setting an iterable side_effect on a mock function created by
+  create_autospec now works. Patch by Kushal Das.
+
+- bpo-7776: Fix ``Host:`` header and reconnection when using
+  http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath.
+
+- bpo-20968: unittest.mock.MagicMock now supports division. Patch by
+  Johannes Baiter.
+
+- bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a
+  negative second parameter. Bug reported by Guido Vranken. (See also:
+  CVE-2014-4616)
+
+- bpo-21169: getpass now handles non-ascii characters that the input stream
+  encoding cannot encode by re-encoding using the replace error handler.
+
+- bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by
+  Berker Peksag.
+
+- bpo-20539: Improved math.factorial error message for large positive inputs
+  and changed exception type (OverflowError -> ValueError) for large
+  negative inputs.
+
+- bpo-21172: isinstance check relaxed from dict to collections.Mapping.
+
+- bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError
+  if path and sock are specified at the same time.
+
+- bpo-21136: Avoid unnecessary normalization of Fractions resulting from
+  power and other operations.  Patch by Raymond Hettinger.
+
+- bpo-17621: Introduce importlib.util.LazyLoader.
+
+- bpo-21076: signal module constants were turned into enums. Patch by
+  Giampaolo Rodola'.
+
+- bpo-20636: Improved the repr of Tkinter widgets.
+
+- bpo-19505: The items, keys, and values views of OrderedDict now support
+  reverse iteration using reversed().
+
+- bpo-21149: Improved thread-safety in logging cleanup during interpreter
+  shutdown. Thanks to Devin Jeanpierre for the patch.
+
+- bpo-21058: Fix a leak of file descriptor in
+  :func:`tempfile.NamedTemporaryFile`, close the file descriptor if
+  :func:`io.open` fails
+
+- bpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing.
+
+- bpo-21013: Enhance ssl.create_default_context() when used for server side
+  sockets to provide better security by default.
+
+- bpo-20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a
+  TypeError if the second argument is not a string or compiled regex.
+
+- bpo-20633: Replace relative import by absolute import.
+
+- bpo-20980: Stop wrapping exception when using ThreadPool.
+
+- bpo-21082: In os.makedirs, do not set the process-wide umask. Note this
+  changes behavior of makedirs when exist_ok=True.
+
+- bpo-20990: Fix issues found by pyflakes for multiprocessing.
+
+- bpo-21015: SSL contexts will now automatically select an elliptic curve
+  for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to
+  "prime256v1".
+
+- bpo-21000: Improve the command-line interface of json.tool.
+
+- bpo-20995: Enhance default ciphers used by the ssl module to enable better
+  security and prioritize perfect forward secrecy.
+
+- bpo-20884: Don't assume that __file__ is defined on importlib.__init__.
+
+- bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests.
+
+- bpo-20627: xmlrpc.client.ServerProxy is now a context manager.
+
+- bpo-19165: The formatter module now raises DeprecationWarning instead of
+  PendingDeprecationWarning.
+
+- bpo-13936: Remove the ability of datetime.time instances to be considered
+  false in boolean contexts.
+
+- bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by
+  Giampaolo Rodola'.
+
+- bpo-19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale),
+  :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the
+  ``surrogateescape`` error handler, instead of the ``strict`` error
+  handler.
+
+- bpo-20574: Implement incremental decoder for cp65001 code (Windows code
+  page 65001, Microsoft UTF-8).
+
+- bpo-20879: Delay the initialization of encoding and decoding tables for
+  base32, ascii85 and base85 codecs in the base64 module, and delay the
+  initialization of the unquote_to_bytes() table of the urllib.parse module,
+  to not waste memory if these modules are not used.
+
+- bpo-19157: Include the broadcast address in the usuable hosts for IPv6 in
+  ipaddress.
+
+- bpo-11599: When an external command (e.g. compiler) fails, distutils now
+  prints out the whole command line (instead of just the command name) if
+  the environment variable DISTUTILS_DEBUG is set.
+
+- bpo-4931: distutils should not produce unhelpful "error: None" messages
+  anymore. distutils.util.grok_environment_error is kept but doc-deprecated.
+
+- bpo-20875: Prevent possible gzip "'read' is not defined" NameError. Patch
+  by Claudiu Popa.
+
+- bpo-11558: ``email.message.Message.attach`` now returns a more useful
+  error message if ``attach`` is called on a message for which
+  ``is_multipart`` is False.
+
+- bpo-20283: RE pattern methods now accept the string keyword parameters as
+  documented. The pattern and source keyword parameters are left as
+  deprecated aliases.
+
+- bpo-20778: Fix modulefinder to work with bytecode-only modules.
+
+- bpo-20791: copy.copy() now doesn't make a copy when the input is a bytes
+  object. Initial patch by Peter Otten.
+
+- bpo-19748: On AIX, time.mktime() now raises an OverflowError for year
+  outsize range [1902; 2037].
+
+- bpo-19573: inspect.signature: Use enum for parameter kind constants.
+
+- bpo-20726: inspect.signature: Make Signature and Parameter picklable.
+
+- bpo-17373: Add inspect.Signature.from_callable method.
+
+- bpo-20378: Improve repr of inspect.Signature and inspect.Parameter.
+
+- bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for
+  missing keyword-only arguments. Patch by Jeremiah Lowin.
+
+- bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3
+  arguments are missing. Patch by Jeremiah Lowin.
+
+- bpo-6676: Ensure a meaningful exception is raised when attempting to parse
+  more than one XML document per pyexpat xmlparser instance. (Original
+  patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with suggested
+  wording by David Gutteridge)
+
+- bpo-21117: Fix inspect.signature to better support functools.partial. Due
+  to the specifics of functools.partial implementation,
+  positional-or-keyword arguments passed as keyword arguments become
+  keyword-only.
+
+- bpo-20334: inspect.Signature and inspect.Parameter are now hashable.
+  Thanks to Antony Lee for bug reports and suggestions.
+
+- bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite
+  instead of raising ValueError if it finds no tests
+
+- bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from
+  implementation in CPythons prior to 3.4.1.
+
+- asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream
+  issue #163).
+
+- bpo-21311: Avoid exception in _osx_support with non-standard compiler
+  configurations. Patch by John Szakmeister.
+
+- bpo-11571: Ensure that the turtle window becomes the topmost window when
+  launched on OS X.
+
+- bpo-21801: Validate that __signature__ is None or an instance of
+  Signature.
+
+- bpo-21923: Prevent AttributeError in
+  distutils.sysconfig.customize_compiler due to possible uninitialized
+  _config_vars.
+
+- bpo-21323: Fix http.server to again handle scripts in CGI subdirectories,
+  broken by the fix for security issue #19435.  Patch by Zach Byrne.
+
+- bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly
+  on 64-bit Windows.
+
+- bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection.
+  Removed use of hard-coded MSS as it's an optimization that's no longer
+  needed with Nagle disabled.
+
+IDLE
+----
+
+- bpo-20577: Configuration of the max line length for the FormatParagraph
+  extension has been moved from the General tab of the Idle preferences
+  dialog to the FormatParagraph tab of the Config Extensions dialog. Patch
+  by Tal Einat.
+
+- bpo-16893: Update Idle doc chapter to match current Idle and add new
+  information.
+
+- bpo-3068: Add Idle extension configuration dialog to Options menu. Changes
+  are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal
+  Einat.
+
+- bpo-16233: A module browser (File : Class Browser, Alt+C) requires an
+  editor window with a filename.  When Class Browser is requested otherwise,
+  from a shell, output window, or 'Untitled' editor, Idle no longer displays
+  an error box. It now pops up an Open Module box (Alt+M). If a valid name
+  is entered and a module is opened, a corresponding browser is also opened.
+
+- bpo-4832: Save As to type Python files automatically adds .py to the name
+  you enter (even if your system does not display it).  Some systems
+  automatically add .txt when type is Text files.
+
+- bpo-21986: Code objects are not normally pickled by the pickle module. To
+  match this, they are no longer pickled when running under Idle.
+
+- bpo-17390: Adjust Editor window title; remove 'Python', move version to
+  end.
+
+- bpo-14105: Idle debugger breakpoints no longer disappear when inserting or
+  deleting lines.
+
+- bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on
+  the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita
+  Cho.
+
+- bpo-21765: Add support for non-ascii identifiers to HyperParser.
+
+- bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav
+  Heblikar.
+
+- bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster.
+
+- bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.
+
+- bpo-21686: add unittest for HyperParser. Original patch by Saimadhav
+  Heblikar.
+
+- bpo-12387: Add missing upper(lower)case versions of default Windows key
+  bindings for Idle so Caps Lock does not disable them. Patch by Roger
+  Serwy.
+
+- bpo-21695: Closing a Find-in-files output window while the search is still
+  in progress no longer closes Idle.
+
+- bpo-18910: Add unittest for textView. Patch by Phil Webster.
+
+- bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar.
+
+- bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster.
+
+- bpo-21477: htest.py - Improve framework, complete set of tests. Patches by
+  Saimadhav Heblikar
+
+- bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin
+  consolidating and improving human-validated tests of Idle. Change other
+  files as needed to work with htest.  Running the module as __main__ runs
+  all tests.
+
+- bpo-21139: Change default paragraph width to 72, the :pep:`8`
+  recommendation.
+
+- bpo-21284: Paragraph reformat test passes after user changes reformat
+  width.
+
+- bpo-17654: Ensure IDLE menus are customized properly on OS X for
+  non-framework builds and for all variants of Tk.
+
+- bpo-23180: Rename IDLE "Windows" menu item to "Window". Patch by Al
+  Sweigart.
+
+Build
+-----
+
+- bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the
+  configure script.
+
+- bpo-22935: Allow the ssl module to be compiled if openssl doesn't support
+  SSL 3.
+
+- bpo-22592: Drop support of the Borland C compiler to build Python. The
+  distutils module still supports it to build extensions.
+
+- bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler
+  (MS-DOS port of GCC).
+
+- bpo-16537: Check whether self.extensions is empty in setup.py. Patch by
+  Jonathan Hosmer.
+
+- bpo-22359: Remove incorrect uses of recursive make.  Patch by Jonas
+  Wagner.
+
+- bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and
+  above.  Patch by Zachary Turner.
+
+- bpo-18093: the programs that embed the CPython runtime are now in a
+  separate "Programs" directory, rather than being kept in the Modules
+  directory.
+
+- bpo-15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/
+  now display special message when and only when there are failures.
+
+- bpo-21141: The Windows build process no longer attempts to find Perl,
+  instead relying on OpenSSL source being configured and ready to build.
+  The ``PCbuild\build_ssl.py`` script has been re-written and re-named to
+  ``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source
+  for both 32 and 64 bit platforms.  OpenSSL sources obtained from
+  svn.python.org will always be pre-configured and ready to build.
+
+- bpo-21037: Add a build option to enable AddressSanitizer support.
+
+- bpo-19962: The Windows build process now creates "python.bat" in the root
+  of the source tree, which passes all arguments through to the most
+  recently built interpreter.
+
+- bpo-21285: Refactor and fix curses configure check to always search in a
+  ncursesw directory.
+
+- bpo-15234: For BerkelyDB and Sqlite, only add the found library and
+  include directories if they aren't already being searched. This avoids an
+  explicit runtime library dependency.
+
+- bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates
+  Include/opcode.h from Lib/opcode.py if the latter gets any change.
+
+- bpo-20644: OS X installer build support for documentation build changes in
+  3.4.1: assume externally supplied sphinx-build is available in /usr/bin.
+
+- bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds.
+
+- bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build
+  solution.
+
+- bpo-17095: Fix Modules/Setup *shared* support.
+
+- bpo-21811: Anticipated fixes to support OS X versions > 10.9.
+
+- bpo-21166: Prevent possible segfaults and other random failures of python
+  --generate-posix-vars in pybuilddir.txt build target.
+
+- bpo-18096: Fix library order returned by python-config.
+
+- bpo-17219: Add library build dir for Python extension cross-builds.
+
+- bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015),
+  which will be used for the official release.
+
+- bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib
+
+- bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer.
+
+C API
+-----
+
+- bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(),
+  bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf().
+  All functions now raise BufferError in that case.
+
+- bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity
+  tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation
+  flag.  Previously the function reported false negatives for corner cases.
+
+- bpo-22079: PyType_Ready() now checks that statically allocated type has no
+  dynamically allocated bases.
+
+- bpo-22453: Removed non-documented macro PyObject_REPR().
+
+- bpo-18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`,
+  rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document
+  these functions.
+
+- bpo-21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(),
+  PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using
+  ``calloc()`` instead of ``malloc()`` for large objects which is faster and
+  use less memory.
+
+- bpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to
+  match what importlib does; this affects _frozen_importlib as well as any
+  module loaded using imp.init_frozen().
+
+Documentation
+-------------
+
+- bpo-19548: Update the codecs module documentation to better cover the
+  distinction between text encodings and other codecs, together with other
+  clarifications. Patch by Martin Panter.
+
+- bpo-22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to
+  create a venv for generating the documentation, e.g., ``make html
+  PYTHON=venv/bin/python3``.
+
+- bpo-21514: The documentation of the json module now refers to new JSON RFC
+  7159 instead of obsoleted RFC 4627.
+
+- bpo-21777: The binary sequence methods on bytes and bytearray are now
+  documented explicitly, rather than assuming users will be able to derive
+  the expected behaviour from the behaviour of the corresponding str
+  methods.
+
+- bpo-6916: undocument deprecated asynchat.fifo class.
+
+- bpo-17386: Expanded functionality of the ``Doc/make.bat`` script to make
+  it much more comparable to ``Doc/Makefile``.
+
+- bpo-21312: Update the thread_foobar.h template file to include newer
+  threading APIs. Patch by Jack McCracken.
+
+- bpo-21043: Remove the recommendation for specific CA organizations and to
+  mention the ability to load the OS certificates.
+
+- bpo-20765: Add missing documentation for PurePath.with_name() and
+  PurePath.with_suffix().
+
+- bpo-19407: New package installation and distribution guides based on the
+  Python Packaging Authority tools. Existing guides have been retained as
+  legacy links from the distutils docs, as they still contain some required
+  reference material for tool developers that isn't recorded anywhere else.
+
+- bpo-19697: Document cases where __main__.__spec__ is None.
+
+Tests
+-----
+
+- bpo-18982: Add tests for CLI of the calendar module.
+
+- bpo-19548: Added some additional checks to test_codecs to ensure that
+  statements in the updated documentation remain accurate. Patch by Martin
+  Panter.
+
+- bpo-22838: All test_re tests now work with unittest test discovery.
+
+- bpo-22173: Update lib2to3 tests to use unittest test discovery.
+
+- bpo-16000: Convert test_curses to use unittest.
+
+- bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not
+  present. Patch by Remi Pointel.
+
+- bpo-20746: Fix test_pdb to run in refleak mode (-R).  Patch by Xavier de
+  Gaye.
+
+- bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now
+  uses unittest test discovery to find its tests.
+
+- bpo-22104: regrtest.py no longer holds a reference to the suite of tests
+  loaded from test modules that don't define test_main().
+
+- bpo-22111: Assorted cleanups in test_imaplib.  Patch by Milan Oberkirch.
+
+- bpo-22002: Added ``load_package_tests`` function to test.support and used
+  it to implement/augment test discovery in test_asyncio, test_email,
+  test_importlib, test_json, and test_tools.
+
+- bpo-21976: Fix test_ssl to accept LibreSSL version strings.  Thanks to
+  William Orr.
+
+- bpo-21918: Converted test_tools from a module to a package containing
+  separate test files for each tested script.
+
+- bpo-9554: Use modern unittest features in test_argparse. Initial patch by
+  Denver Coneybeare and Radu Voicilas.
+
+- bpo-20155: Changed HTTP method names in failing tests in test_httpservers
+  so that packet filtering software (specifically Windows Base Filtering
+  Engine) does not interfere with the transaction semantics expected by the
+  tests.
+
+- bpo-19493: Refactored the ctypes test package to skip tests explicitly
+  rather than silently.
+
+- bpo-18492: All resources are now allowed when tests are not run by
+  regrtest.py.
+
+- bpo-21634: Fix pystone micro-benchmark: use floor division instead of true
+  division to benchmark integers instead of floating point numbers. Set
+  pystone version to 1.2. Patch written by Lennart Regebro.
+
+- bpo-21605: Added tests for Tkinter images.
+
+- bpo-21493: Added test for ntpath.expanduser().  Original patch by Claudiu
+  Popa.
+
+- bpo-19925: Added tests for the spwd module. Original patch by Vajrasky
+  Kok.
+
+- bpo-21522: Added Tkinter tests for Listbox.itemconfigure(),
+  PanedWindow.paneconfigure(), and Menu.entryconfigure().
+
+- bpo-17756: Fix test_code test when run from the installed location.
+
+- bpo-17752: Fix distutils tests when run from the installed location.
+
+- bpo-18604: Consolidated checks for GUI availability.  All platforms now at
+  least check whether Tk can be instantiated when the GUI resource is
+  requested.
+
+- bpo-21275: Fix a socket test on KFreeBSD.
+
+- bpo-21223: Pass test_site/test_startup_imports when some of the extensions
+  are built as builtins.
+
+- bpo-20635: Added tests for Tk geometry managers.
+
+- Add test case for freeze.
+
+- bpo-20743: Fix a reference leak in test_tcl.
+
+- bpo-21097: Move test_namespace_pkgs into test_importlib.
+
+- bpo-21503: Use test_both() consistently in test_importlib.
+
+- bpo-20939: Avoid various network test failures due to new redirect of
+  http://www.python.org/ to https://www.python.org: use
+  http://www.example.com instead.
+
+- bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by
+  Vajrasky Kok)
+
+- bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of
+  libz exists in $HOME/lib or /usr/local/lib.
+
+- bpo-22770: Prevent some Tk segfaults on OS X when running gui tests.
+
+- bpo-23211: Workaround test_logging failure on some OS X 10.6 systems.
+
+- bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values
+  (like 0.9.8zc).
+
+Tools/Demos
+-----------
+
+- bpo-22314: pydoc now works when the LINES environment variable is set.
+
+- bpo-22615: Argument Clinic now supports the "type" argument for the int
+  converter. This permits using the int converter with enums and typedefs.
+
+- bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping.
+
+- bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file
+  from glibc sources and supports command line options for source paths.
+
+- bpo-22201: Command-line interface of the zipfile module now correctly
+  extracts ZIP files with directory entries.  Patch by Ryan Wilson.
+
+- bpo-22120: For functions using an unsigned integer return converter,
+  Argument Clinic now generates a cast to that type for the comparison to -1
+  in the generated code.  (This suppresses a compilation warning.)
+
+- bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse.
+
+- bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary
+  Ware.
+
+- bpo-21629: Fix Argument Clinic's "--converters" feature.
+
+- Add support for ``yield from`` to 2to3.
+
+- Add support for the :pep:`465` matrix multiplication operator to 2to3.
+
+- bpo-16047: Fix module exception list and __file__ handling in freeze.
+  Patch by Meador Inge.
+
+- bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge.
+
+- bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch
+  by Arfrever Frehtes Taifersar Arahesis.
+
+Windows
+-------
+
+- bpo-23260: Update Windows installer
+
+- The bundled version of Tcl/Tk has been updated to 8.6.3.  The most visible
+  result of this change is the addition of new native file dialogs when
+  running on Windows Vista or newer.  See Tcl/Tk's TIP 432 for more
+  information.  Also, this version of Tcl/Tk includes support for Windows
+  10.
+
+- bpo-17896: The Windows build scripts now expect external library sources
+  to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``.
+
+- bpo-17717: The Windows build scripts now use a copy of NASM pulled from
+  svn.python.org to build OpenSSL.
+
+- bpo-21907: Improved the batch scripts provided for building Python.
+
+- bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j.
+
+- bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive
+  Kilburn.
+
+- bpo-22980: .pyd files with a version and platform tag (for example,
+  ".cp35-win32.pyd") will now be loaded in preference to those without tags.
+
+
+**(For information about older versions, consult the HISTORY file.)**
diff --git a/Modules/config.c b/Modules/config.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9jb25maWcuYw==
--- /dev/null
+++ b/Modules/config.c
@@ -0,0 +1,114 @@
+/* Generated automatically from ./Modules/config.c.in by makesetup. */
+/* -*- C -*- ***********************************************
+Copyright (c) 2000, BeOpen.com.
+Copyright (c) 1995-2000, Corporation for National Research Initiatives.
+Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
+All rights reserved.
+
+See the file "Misc/COPYRIGHT" for information on usage and
+redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+******************************************************************/
+
+/* Module configuration */
+
+/* !!! !!! !!! This file is edited by the makesetup script !!! !!! !!! */
+
+/* This file contains the table of built-in modules.
+   See create_builtin() in import.c. */
+
+#include "Python.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern PyObject* PyInit_posix(void);
+extern PyObject* PyInit_errno(void);
+extern PyObject* PyInit_pwd(void);
+extern PyObject* PyInit__sre(void);
+extern PyObject* PyInit__codecs(void);
+extern PyObject* PyInit__weakref(void);
+extern PyObject* PyInit__functools(void);
+extern PyObject* PyInit__operator(void);
+extern PyObject* PyInit__collections(void);
+extern PyObject* PyInit__abc(void);
+extern PyObject* PyInit_itertools(void);
+extern PyObject* PyInit_atexit(void);
+extern PyObject* PyInit__signal(void);
+extern PyObject* PyInit__stat(void);
+extern PyObject* PyInit_time(void);
+extern PyObject* PyInit__thread(void);
+extern PyObject* PyInit__locale(void);
+extern PyObject* PyInit__io(void);
+extern PyObject* PyInit_faulthandler(void);
+extern PyObject* PyInit__tracemalloc(void);
+extern PyObject* PyInit__symtable(void);
+extern PyObject* PyInit_xxsubtype(void);
+
+/* -- ADDMODULE MARKER 1 -- */
+
+extern PyObject* PyMarshal_Init(void);
+extern PyObject* PyInit__imp(void);
+extern PyObject* PyInit_gc(void);
+extern PyObject* PyInit__ast(void);
+extern PyObject* _PyWarnings_Init(void);
+extern PyObject* PyInit__string(void);
+
+struct _inittab _PyImport_Inittab[] = {
+
+    {"posix", PyInit_posix},
+    {"errno", PyInit_errno},
+    {"pwd", PyInit_pwd},
+    {"_sre", PyInit__sre},
+    {"_codecs", PyInit__codecs},
+    {"_weakref", PyInit__weakref},
+    {"_functools", PyInit__functools},
+    {"_operator", PyInit__operator},
+    {"_collections", PyInit__collections},
+    {"_abc", PyInit__abc},
+    {"itertools", PyInit_itertools},
+    {"atexit", PyInit_atexit},
+    {"_signal", PyInit__signal},
+    {"_stat", PyInit__stat},
+    {"time", PyInit_time},
+    {"_thread", PyInit__thread},
+    {"_locale", PyInit__locale},
+    {"_io", PyInit__io},
+    {"faulthandler", PyInit_faulthandler},
+    {"_tracemalloc", PyInit__tracemalloc},
+    {"_symtable", PyInit__symtable},
+    {"xxsubtype", PyInit_xxsubtype},
+
+/* -- ADDMODULE MARKER 2 -- */
+
+    /* This module lives in marshal.c */
+    {"marshal", PyMarshal_Init},
+
+    /* This lives in import.c */
+    {"_imp", PyInit__imp},
+
+    /* This lives in Python/Python-ast.c */
+    {"_ast", PyInit__ast},
+
+    /* These entries are here for sys.builtin_module_names */
+    {"builtins", NULL},
+    {"sys", NULL},
+
+    /* This lives in gcmodule.c */
+    {"gc", PyInit_gc},
+
+    /* This lives in _warnings.c */
+    {"_warnings", _PyWarnings_Init},
+
+    /* This lives in Objects/unicodeobject.c */
+    {"_string", PyInit__string},
+
+    /* Sentinel */
+    {0, 0}
+};
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Modules/rdb/db.c b/Modules/rdb/db.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvZGIuYw==
--- /dev/null
+++ b/Modules/rdb/db.c
@@ -0,0 +1,767 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <descrip.h>
+
+#pragma names save
+#pragma names uppercase
+#include <sql_rdb_headers.h>
+#include <sql_literals.h>
+#include <sql_sqlca.h>
+#pragma names restore
+
+#include <starlet.h>
+#include <str$routines.h>
+#include <lib$routines.h>
+#include <assert.h>
+#include <unixlib.h>
+
+#include "db.h"
+
+#ifndef OKAY
+#define OKAY(STATUS) (((STATUS) & 1) != 0)
+#endif
+
+
+#define MAXARGS        100
+
+#pragma nomember_alignment
+
+typedef struct
+{
+	char  	sqldaid[8];
+	int   	i0;
+	short 	sqln;
+	short 	sqld;
+	struct  sqlvar
+    	{
+    	   	short 	sqltype;
+	   	long  	sqldlen;
+           	int  	i0;
+	   	char *  sqldata;
+	   	int *   sqlnind;
+           	int  	i1;
+           	int  	i2;
+	   	short 	l0;
+    	   	char  	d0[128];
+           	char  	d1[128];
+           	char  	d2[128];
+           	char  	d3[128];
+	}
+	sqlvar[MAXARGS];
+}
+sqlda_t;
+
+typedef struct {
+    	sqlda_t 		sqlda_i;
+	sqlda_t 		sqlda_o;
+	long 			id;
+	char 			cursor[32];
+}
+stmt_t;
+
+
+static struct SQLCA SQLCA = {
+	"SQLCA  ", 128, 0, {0, ""}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, ""
+	};
+
+
+
+typedef long  	vc_len_t;
+typedef short 	sc_len_t;
+
+
+# define MAXVLEN 8192
+
+typedef struct
+{
+	unsigned long 	dlen;
+	char 		data[MAXVLEN];
+}
+vc_t;
+
+
+#pragma names save
+#pragma names uppercase
+extern void eib$$db_attach(void *, char *);
+extern void eib$$db_detach(void *);
+extern void eib$$db_commit(void *);
+extern void eib$$db_rollback(void *);
+extern void eib$$db_exec_immediate(void *, char *);
+extern void eib$$db_exec(void *, long *, void *, void *);
+extern void eib$$db_set_readonly(void *);
+extern void eib$$db_release(void *, long *);
+extern void eib$$db_prepare(void *, long *, char *);
+extern void eib$$db_open_cursor(void *, char *, void *);
+extern void eib$$db_close_cursor(void *, char *);
+extern void eib$$db_declare(void *, char *, long *);
+extern void eib$$db_describe_select(void *, long *, void *);
+extern void eib$$db_describe_markers(void *, long *, void *);
+extern void eib$$db_fetch(void *, char *, void *);
+#pragma names restore
+
+
+
+static char errstr[256] = "";
+
+
+
+
+static char *eib_DB_ErrorString()
+{
+	static char 			str[256];
+	unsigned short 			pos;
+	unsigned short 			len;
+	struct dsc$descriptor_s 	dsc;
+
+    	dsc.dsc$w_length  = sizeof(str) - 1;
+    	dsc.dsc$b_class   = DSC$K_CLASS_S;
+    	dsc.dsc$b_dtype   = DSC$K_DTYPE_T;
+    	dsc.dsc$a_pointer = str;
+
+    	sql$get_error_text(&dsc);
+
+	str$trim(&dsc, &dsc, &len);
+	str[len] = '\0';
+    	return ( (char *)str );
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Sqlcode()
+{
+	return (SQLCA.SQLCODE);
+}
+
+const char *Error()
+{
+	return (errstr);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Attach(const char *db)
+{
+	char *			tmp = NULL;
+	int 			rv = 0;
+
+//
+	int old = -1, idx = -1;
+   	if ((idx = decc$feature_get_index("DECC$UNIX_LEVEL")) >= 0)
+    	{
+           old = decc$feature_set_value(idx, 1, 0);
+        }
+//
+
+	errstr[0] = '\0';
+
+	if (db == NULL || ! strlen(db))
+	{
+	   sprintf(errstr, "Invalid database name");
+	   rv = -1;
+	   goto hell;
+	}
+
+	tmp = malloc((strlen(db) + 16) * sizeof(char));
+    assert(tmp);
+	sprintf(tmp, "filename %s", db);
+
+	eib$$db_attach(&SQLCA, tmp);
+	free(tmp);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   rv = -1;
+	   goto hell;
+	}
+
+hell:
+   	if (idx >= 0)
+	{
+           decc$feature_set_value(idx, 1, old);
+	}
+
+	return (rv);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Rollback()
+{
+	errstr[0] = '\0';
+
+	eib$$db_rollback(&SQLCA);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Commit()
+{
+	errstr[0] = '\0';
+
+	eib$$db_commit(&SQLCA);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Exec(void *addr)
+{
+	stmt_t * 		sp = (stmt_t *) addr;
+
+	eib$$db_exec(&SQLCA, &sp->id, &sp->sqlda_i, &sp->sqlda_o);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+int ExecI(char *stmt)
+{
+	errstr[0] = '\0';
+	eib$$db_exec_immediate(&SQLCA, stmt);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Detach()
+{
+	errstr[0] = '\0';
+
+	eib$$db_detach(&SQLCA);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+static int eib_DB_Alloc(sqlda_t *sqlda_o)
+{
+	short 			type;
+    	int 			i;
+
+	errstr[0] = '\0';
+
+	for (i = 0; i < sqlda_o->sqld; i++)
+	{
+	   sqlda_o->sqlvar[i].sqlnind = malloc(sizeof(int));
+       assert(sqlda_o->sqlvar[i].sqlnind);
+	   type = sqlda_o->sqlvar[i].sqltype;
+
+	   switch (type)
+	   {
+	      case SQLDA_VARCHAR:
+          sqlda_o->sqlvar[i].sqldata = malloc(sizeof(vc_t));
+		 assert(sqlda_o->sqlvar[i].sqldata);
+	         break;
+
+	      case SQLDA_CHAR:
+	      case SQLDA_INTEGER:
+	      case SQLDA_SMALLINT:
+	      case SQLDA_TINYINT:
+	      case SQLDA_FLOAT:
+              case SQLDA_SEGSTRING:
+              case SQLDA_QUADWORD:
+	      case SQLDA_DATE:
+	      case SQLDA2_DATETIME:
+          sqlda_o->sqlvar[i].sqldata = malloc(sqlda_o->sqlvar[i].sqldlen);
+		 assert(sqlda_o->sqlvar[i].sqldata);
+		 break;
+
+	      default:
+	         abort(); 		/* Unknown data type */
+		 break;
+	   }
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int SetReadonly()
+{
+	errstr[0] = '\0';
+
+        eib$$db_set_readonly(&SQLCA);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Free(void *addr)
+{
+	stmt_t * 		sp = (stmt_t *) addr;
+        int                     i;
+
+        if (sp->id != 0)
+        {
+           eib$$db_release(&SQLCA, &sp->id);
+        }
+
+        sp->id = 0;
+
+        for (i = 0; i < MAXARGS; i++)
+        {
+           if (sp->sqlda_o.sqlvar[i].sqlnind != NULL)
+           {
+              free(sp->sqlda_o.sqlvar[i].sqlnind);
+           }
+
+           if (sp->sqlda_o.sqlvar[i].sqldata != NULL)
+           {
+              free(sp->sqlda_o.sqlvar[i].sqldata);
+           }
+        }
+
+        for (i = 0; i < MAXARGS; i++)
+        {
+           if (sp->sqlda_i.sqlvar[i].sqlnind != NULL)
+           {
+              free(sp->sqlda_i.sqlvar[i].sqlnind);
+           }
+
+           if (sp->sqlda_i.sqlvar[i].sqldata != NULL)
+           {
+              free(sp->sqlda_i.sqlvar[i].sqldata);
+           }
+        }
+
+	free(sp);
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int OpenCursor(void *addr)
+{
+	stmt_t * 		sp = (stmt_t *) addr;
+
+	errstr[0] = '\0';
+
+	eib$$db_open_cursor(&SQLCA, sp->cursor, &sp->sqlda_i);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int CloseCursor(void *addr)
+{
+	stmt_t * 		sp = (stmt_t *) addr;
+
+	errstr[0] = '\0';
+
+	eib$$db_close_cursor(&SQLCA, sp->cursor);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS) {
+	   strcpy(errstr, eib_DB_ErrorString());
+	   return (-1);
+	}
+
+	return (0);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+void *Prepare(char *stmt)
+{
+	stmt_t *sp = NULL;
+    	int 			i;
+	int 			ss;		/* Not really used */
+
+     	errstr[0] = '\0';
+
+	sp = calloc(1, sizeof(stmt_t));
+    assert(sp);
+
+	sp->sqlda_i.sqln = MAXARGS;
+	sp->sqlda_o.sqln = MAXARGS;
+
+        strncpy(&sp->sqlda_i.sqldaid[0], "SQLDA2  ", 8);
+        strncpy(&sp->sqlda_o.sqldaid[0], "SQLDA2  ", 8);
+
+	eib$$db_prepare(&SQLCA, &sp->id, stmt);
+
+ 	if (SQLCA.SQLCODE != SQLCODE_SUCCESS)
+	{
+	   strcpy(errstr, eib_DB_ErrorString());
+	   free(sp);
+	   return (NULL);
+	}
+
+	eib$$db_describe_select(&SQLCA, &sp->id, &sp->sqlda_o);
+
+ 	if (SQLCA.SQLCODE != SQLCODE_SUCCESS)
+	{
+	   strcpy(errstr, eib_DB_ErrorString());
+	   free(sp);
+	   return (NULL);
+	}
+
+	eib$$db_describe_markers(&SQLCA, &sp->id, &sp->sqlda_i);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS)
+	{
+	   strcpy(errstr, eib_DB_ErrorString());
+	   free(sp);
+	   return (NULL);
+	}
+
+	ss = SQLCA.SQLERRD[1];
+
+        for (i = 0; i < sp->sqlda_i.sqld; i++)
+       	{
+               sp->sqlda_i.sqlvar[i].sqldata = malloc(sp->sqlda_i.sqlvar[i].sqldlen * sizeof(char));
+	   assert(sp->sqlda_i.sqlvar[i].sqldata);
+	   sp->sqlda_i.sqlvar[i].sqlnind = NULL;
+	}
+
+	for (i = 0; i < sp->sqlda_o.sqld; i++)
+	{
+	   if (sp->sqlda_o.sqlvar[i].sqltype == SQLDA2_INTERVAL)
+	   {
+	      sp->sqlda_o.sqlvar[i].sqltype = SQLDA_VARCHAR;
+    	      sp->sqlda_o.sqlvar[i].sqldlen = 100;
+	   }
+	}
+
+    	return ((void *) sp);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+void *DeclareCursor(char *cursor, char *stmt)
+{
+	stmt_t * 		sp = NULL;
+
+	errstr[0] = '\0';
+
+#pragma message disable (MAYLOSEDATA2)		/* We know we're getting a 32-bit address */
+	if ((sp = Prepare(stmt)) == NULL)
+	{
+	   return (NULL);
+	}
+#pragma message enable (MAYLOSEDATA2)
+
+	if (eib_DB_Alloc(&sp->sqlda_o) != 0)
+	{
+           Free((void *) sp);
+	   return (NULL);
+	}
+
+	strcpy(sp->cursor, cursor);
+	eib$$db_declare(&SQLCA, sp->cursor, &sp->id);
+
+	if (SQLCA.SQLCODE != SQLCODE_SUCCESS)
+	{
+	   strcpy(errstr, eib_DB_ErrorString());
+           Free((void *) sp);
+	   return (NULL);
+	}
+
+	return ((void *) sp);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+void eib_DB_FreeRow(char **arr)
+{
+	int i = 0;
+
+	if (arr != NULL)
+	{
+	   while (arr[i])
+	   {
+	      free(arr[i]);
+	      i++;
+	   }
+	   free(arr);
+       	}
+}
+
+
+
+char **FetchRow(void *addr)
+{
+	stmt_t * 		sp = (stmt_t *) addr;
+	char ** 		arr = NULL;
+	int 			i;
+	int 			nc;
+
+	if (Fetch(addr) != 1)
+	{
+	   return (NULL);
+	}
+
+	nc = sp->sqlda_o.sqld;
+    arr = calloc((nc + 1), sizeof(char *));
+	assert(arr);
+
+	for (i = 0; i < nc; i++)
+	{
+        arr[i] = strdup(Data(addr, i));
+	   assert(arr[i]);
+	}
+
+	arr[i] = NULL;
+	return (arr);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int Fetch(void *addr)
+{
+	stmt_t * 		sp = (stmt_t *) addr;
+
+	eib$$db_fetch(&SQLCA, sp->cursor, &sp->sqlda_o);
+
+	switch (SQLCA.SQLCODE)
+	{
+	   case SQLCODE_SUCCESS:
+	      return (1);
+	      break;
+
+	   case SQLCODE_EOS:
+	      return (0);
+	      break;
+
+	   default:
+	      return (-1);
+	      break;
+	}
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+int NCol(void *addr)
+{
+	stmt_t *		sp = (stmt_t *) addr;
+	return (sp->sqlda_o.sqld);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+static unsigned long dbl_to_str(double val, char *str, int len)
+{
+	struct dsc$descriptor_sd 	data_desc;
+	struct dsc$descriptor_s 	strn_desc;
+	unsigned long 			status;
+
+	data_desc.dsc$b_class   = DSC$K_CLASS_SD;
+	data_desc.dsc$w_length  = sizeof(double);
+	data_desc.dsc$a_pointer = (char *) &val;
+	data_desc.dsc$b_scale   = 0;
+	data_desc.dsc$b_digits  = 0;
+	data_desc.dsc$b_dtype   = DSC$K_DTYPE_G; 	/* G-Floating 64-bit */
+
+	strn_desc.dsc$w_length  = len;
+	strn_desc.dsc$b_dtype   = DSC$K_DTYPE_T;
+	strn_desc.dsc$b_class   = DSC$K_CLASS_S;
+	strn_desc.dsc$a_pointer = str;
+
+	status = lib$cvt_dx_dx(&data_desc, &strn_desc);
+
+	if (OKAY(status))
+	{
+	   str[strn_desc.dsc$w_length] = '\0';
+	}
+
+	return (status);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+static unsigned long flt_to_str(float val, char *str, int len)
+{
+	struct dsc$descriptor_sd 	data_desc;
+	struct dsc$descriptor_s 	strn_desc;
+	unsigned long 			status;
+
+	data_desc.dsc$b_class   = DSC$K_CLASS_SD;
+	data_desc.dsc$w_length  = sizeof(double);
+	data_desc.dsc$a_pointer = (char *) &val;
+	data_desc.dsc$b_scale   = 0;
+	data_desc.dsc$b_digits  = 0;
+	data_desc.dsc$b_dtype   = DSC$K_DTYPE_F; 	/* F-Floating 32-bit */
+
+	strn_desc.dsc$w_length  = len;
+	strn_desc.dsc$b_dtype   = DSC$K_DTYPE_T;
+	strn_desc.dsc$b_class   = DSC$K_CLASS_S;
+	strn_desc.dsc$a_pointer = str;
+
+	status = lib$cvt_dx_dx(&data_desc, &strn_desc);
+
+	if (OKAY(status))
+	{
+	   str[strn_desc.dsc$w_length] = '\0';
+	}
+
+	return (status);
+}
+
+/* ------------------------------------------------------------------------------------------------------------------------------ */
+
+char *Data(void *addr, int n)
+{
+	stmt_t * 			sp = (stmt_t *) addr;
+        struct dsc$descriptor_s         dd;
+        vc_len_t                	len;
+        sc_len_t *                      p;
+        char *                  	q;
+	struct dsc$descriptor_sd        qd;
+	static char 			str[MAXVLEN];
+	struct sqlvar * 		var;
+
+	var = &sp->sqlda_o.sqlvar[n];
+
+	if (*var->sqlnind < 0)
+        {
+	   strcpy(str, "<null>");
+        }
+        else
+        {
+           switch (var->sqltype)
+           {
+              case SQLDA_VARCHAR:
+                 len = (vc_len_t) *var->sqldata;
+
+                 if (len < 0)             		/* Hack */
+                 {
+                    len = 256 + len;
+                 }
+
+                 str[len] = '\0';
+                 strncpy(str, (char *)(var->sqldata + sizeof(vc_len_t)), len);
+
+                 for (q = str + len - 1; q >= str && *q == ' ' ; q--)
+                 {
+                    *q = '\0';
+                 }
+
+	         break;
+
+	      case SQLDA_CHAR:
+                 len = var->sqldlen;
+                 str[len] = '\0';
+                 strncpy(str, var->sqldata, len);
+
+                 for (q = str + len - 1 ; q >= str && *q == ' ' ; q--)
+                 {
+                    *q = '\0';
+                 }
+
+	         break;
+
+	      case SQLDA_TINYINT:
+                 sprintf(str, "%d", *(char *) var->sqldata);
+	         break;
+
+	      case SQLDA_FLOAT:
+                 if (var->sqldlen == 8)
+                 {
+                    dbl_to_str(*(double *) var->sqldata, str, sizeof(str) - 1);
+                 }
+                 else
+                 {
+                    flt_to_str(*(float  *) var->sqldata, str, sizeof(str) - 1);
+                 }
+
+	         break;
+
+	      case SQLDA_DATE:
+                 dd.dsc$w_length  = 32;
+                 dd.dsc$b_dtype   = DSC$K_DTYPE_T;
+                 dd.dsc$b_class   = DSC$K_CLASS_S;
+                 dd.dsc$a_pointer = str;
+
+                 sys$asctim(0, &dd, var->sqldata, 0);
+	         str[20] = '\0';
+                 if (str[0] == ' ') str[0] = '0';
+
+	         break;
+
+              case SQLDA_SMALLINT:
+              case SQLDA_QUADWORD:
+              case SQLDA_INTEGER:
+                 p = (sc_len_t *) &var->sqldlen;
+
+                 dd.dsc$w_length  = 64;
+                 dd.dsc$b_dtype   = DSC$K_DTYPE_T;
+                 dd.dsc$b_class   = DSC$K_CLASS_S;
+                 dd.dsc$a_pointer = str;
+
+                 qd.dsc$b_class   = DSC$K_CLASS_SD;
+                 qd.dsc$w_length  = p[0];
+                 qd.dsc$a_pointer = var->sqldata;
+                 qd.dsc$b_scale   = -1 * p[1];
+                 qd.dsc$b_digits  = 0;
+
+                 switch (var->sqltype)
+                 {
+                    case SQLDA_SMALLINT:
+                       qd.dsc$b_dtype = DSC$K_DTYPE_W;
+                       break;
+
+                    case SQLDA_QUADWORD:
+                       qd.dsc$b_dtype = DSC$K_DTYPE_Q;
+                       break;
+
+                    case SQLDA_INTEGER:
+                       qd.dsc$b_dtype = DSC$K_DTYPE_L;
+                       break;
+                 }
+
+                 lib$cvt_dx_dx(&qd, &dd, &dd.dsc$w_length);
+                 str[dd.dsc$w_length] = '\0';
+	         break;
+
+	      default:
+	         strcpy(str, "<null>");
+	         break;
+	   }
+	}
+
+	return (str);
+}
+
diff --git a/Modules/rdb/db.h b/Modules/rdb/db.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvZGIuaA==
--- /dev/null
+++ b/Modules/rdb/db.h
@@ -0,0 +1,31 @@
+# ifndef __DB_H__
+# define __DB_H__
+
+# ifdef __cplusplus
+	extern "C" {
+#endif
+
+extern char ** 			FetchRow(void *);
+extern int 			NCol(void *);
+extern int 			Attach(const char *);
+extern int 			CloseCursor(void *);
+extern int 			Commit();
+extern char * 			Data(void *, int);
+extern void * 			DeclareCursor(char *, char *);
+extern int 			Detach();
+extern int 			Exec(void *);
+extern int 			ExecI(char *);
+extern int 			Fetch(void *);
+extern int 			Free(void *);
+extern int 			OpenCursor(void *);
+extern void * 			Prepare(char *);
+extern int 			Rollback();
+extern int 			SetReadonly();
+extern const char *		Error();
+extern int 			Sqlcode();
+
+# ifdef __cplusplus
+	}
+#endif
+
+# endif
diff --git a/Modules/rdb/rdb.i b/Modules/rdb/rdb.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvcmRiLmk=
--- /dev/null
+++ b/Modules/rdb/rdb.i
@@ -0,0 +1,26 @@
+%module rdb
+%{
+  #include "db.h"
+%}
+
+%typemap(out) char** {
+  int len,i;
+  if ($1 == NULL) {
+      $result = Py_None;
+  } else {
+      len = 0;
+      while ($1[len]) len++;
+      $result = PyList_New(len);
+      for (i = 0; i < len; i++) {
+        PyList_SetItem($result, i, PyString_FromString($1[i]));
+      }
+  }
+}
+%typemap(freearg) char **
+{
+    extern void eib_DB_FreeRow(char **);
+    eib_DB_FreeRow( $1 );
+}
+
+%include "db.h"
+
diff --git a/Modules/rdb/sql.sqlmod b/Modules/rdb/sql.sqlmod
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvc3FsLnNxbG1vZA==
--- /dev/null
+++ b/Modules/rdb/sql.sqlmod
@@ -0,0 +1,126 @@
+--##############################################################################
+
+module 	eib$$db_functions
+
+	language	c
+	authorization 	$$rdb$$
+	parameter 	colons
+
+	declare $$rdb$$ alias for filename sql$database
+
+-- ============================================================================
+procedure eib$$db_attach
+	  sqlca
+	  :p_attach 		char(255);
+
+	  attach :p_attach;
+
+-- ============================================================================
+procedure eib$$db_detach
+	  sqlca;
+
+	  disconnect default;
+
+-- ============================================================================
+procedure eib$$db_commit
+    	  sqlca;
+
+    	  commit;
+
+-- ============================================================================
+procedure eib$$db_rollback
+    	  sqlca;
+
+    	  rollback;
+
+-- ============================================================================
+procedure eib$$db_set_readonly
+          sqlca;
+
+          set transaction read only;
+
+-- ============================================================================
+procedure eib$$db_set_readwrite
+          sqlca;
+
+          set transaction read write;
+
+-- ============================================================================
+procedure eib$$db_exec_immediate
+          sqlca
+          :p_statement          char(8192);
+
+          execute immediate :p_statement;
+
+-- ============================================================================
+procedure eib$$db_exec
+          sqlca
+          :p_statement_id       integer
+    	  :i_sqlda 		sqlda
+    	  :o_sqlda 		sqlda;
+
+	  execute :p_statement_id into descriptor :o_sqlda using descriptor :i_sqlda;
+
+-- ============================================================================
+procedure eib$$db_prepare
+          sqlca
+          :p_statement_id       integer
+          :p_statement          char(8192);
+
+          prepare :p_statement_id from :p_statement;
+
+-- ============================================================================
+procedure eib$$db_release
+          sqlca
+          :p_statement_id       integer;
+
+          release :p_statement_id;
+
+-- ============================================================================
+procedure eib$$db_open_cursor
+          sqlca
+          :p_name               char(32)
+          sqlda;
+
+          open :p_name using descriptor sqlda;
+
+-- ============================================================================
+procedure eib$$db_close_cursor
+          sqlca
+          :p_name               char(32);
+
+          close :p_name;
+
+-- ============================================================================
+procedure eib$$db_declare
+          sqlca
+          :p_name               char(32)
+          :p_statement_id       integer;
+
+          declare :p_name cursor for :p_statement_id;
+
+-- ============================================================================
+procedure eib$$db_describe_select
+          sqlca
+          :p_statement_id       integer
+          sqlda;
+
+          describe :p_statement_id select list into sqlda;
+
+-- ============================================================================
+procedure eib$$db_describe_markers
+          sqlca
+          :p_statement_id       integer
+          sqlda;
+
+          describe :p_statement_id markers into sqlda;
+
+-- ============================================================================
+procedure eib$$db_fetch
+          sqlca
+          :p_cursor             char(32)
+          sqlda;
+
+          fetch :p_cursor using descriptor sqlda;
+
+--##############################################################################
diff --git a/Modules/vms/__init__.py b/Modules/vms/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvX19pbml0X18ucHk=
--- /dev/null
+++ b/Modules/vms/__init__.py
@@ -0,0 +1,1 @@
+# empty
\ No newline at end of file
diff --git a/Modules/vms/accdef/accdef.c b/Modules/vms/accdef/accdef.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNjZGVmL2FjY2RlZi5j
--- /dev/null
+++ b/Modules/vms/accdef/accdef.c
@@ -0,0 +1,67 @@
+#include <Python.h>
+#include <accdef.h>
+
+PyDoc_STRVAR(doc__accdef,
+"ACC definitions");
+
+static struct PyModuleDef _accdef_module = {
+    PyModuleDef_HEAD_INIT,
+    "accdef",
+    doc__accdef,
+    -1,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL
+};
+
+PyMODINIT_FUNC
+PyInit__accdef(void)
+{
+    PyObject *m = NULL;
+    char buff[64];
+
+    m = PyModule_Create(&_accdef_module);
+
+    PyModule_AddIntConstant(m, "ACC_K_TERMLEN", 84);
+    PyModule_AddIntConstant(m, "ACC_C_TERMLEN", 84);
+    PyModule_AddIntConstant(m, "ACC_K_JOB_LEN", 108);
+    PyModule_AddIntConstant(m, "ACC_C_JOB_LEN", 108);
+    PyModule_AddIntConstant(m, "ACC_S_ACCDEF", 108);
+    PyModule_AddIntConstant(m, "ACC_S_TERMTIME", 8);
+    PyModule_AddIntConstant(m, "ACC_S_ACCOUNT", 8);
+    PyModule_AddIntConstant(m, "ACC_S_USERNAME", 12);
+    PyModule_AddIntConstant(m, "ACC_S_LOGIN", 8);
+    PyModule_AddIntConstant(m, "ACC_S_JOB_NAME", 8);
+    PyModule_AddIntConstant(m, "ACC_S_JOB_QUE", 16);
+    PyModule_AddIntConstant(m, "ACC_K_PRT_LEN", 88);
+    PyModule_AddIntConstant(m, "ACC_C_PRT_LEN", 88);
+    PyModule_AddIntConstant(m, "ACC_S_ACCDEF1", 88);
+    PyModule_AddIntConstant(m, "ACC_S_QUETIME", 8);
+    PyModule_AddIntConstant(m, "ACC_S_PRT_NAME", 8);
+    PyModule_AddIntConstant(m, "ACC_S_PRT_QUE", 12);
+    PyModule_AddIntConstant(m, "ACC_K_INS_LEN", 176);
+    PyModule_AddIntConstant(m, "ACC_C_INS_LEN", 176);
+    PyModule_AddIntConstant(m, "ACC_K_PRCTRM", 1);
+    PyModule_AddIntConstant(m, "ACC_K_BATTRM", 2);
+    PyModule_AddIntConstant(m, "ACC_K_INTTRM", 3);
+    PyModule_AddIntConstant(m, "ACC_K_LOGTRM", 4);
+    PyModule_AddIntConstant(m, "ACC_K_IMGTRM", 5);
+    PyModule_AddIntConstant(m, "ACC_K_SUBTRM", 6);
+    PyModule_AddIntConstant(m, "ACC_K_DETTRM", 7);
+    PyModule_AddIntConstant(m, "ACC_K_NETTRM", 8);
+    PyModule_AddIntConstant(m, "ACC_K_PRTJOB", 16);
+    PyModule_AddIntConstant(m, "ACC_K_INSMSG", 17);
+    PyModule_AddIntConstant(m, "ACC_K_INSMESG", 1);
+    PyModule_AddIntConstant(m, "ACC_K_NEWFILE", 2);
+    PyModule_AddIntConstant(m, "ACC_K_ENABACC", 3);
+    PyModule_AddIntConstant(m, "ACC_K_DISAACC", 4);
+    PyModule_AddIntConstant(m, "ACC_K_ENABSEL", 5);
+    PyModule_AddIntConstant(m, "ACC_K_DISASEL", 6);
+    PyModule_AddIntConstant(m, "ACC_S_ACCDEF2", 176);
+    PyModule_AddIntConstant(m, "ACC_S_USER_DATA", 132);
+
+    return m;
+
+}
\ No newline at end of file
diff --git a/Modules/vms/accdef/accdef.i b/Modules/vms/accdef/accdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNjZGVmL2FjY2RlZi5p
--- /dev/null
+++ b/Modules/vms/accdef/accdef.i
@@ -0,0 +1,39 @@
+%module accdef
+
+%constant int ACC_K_TERMLEN = 84;
+%constant int ACC_C_TERMLEN = 84;
+%constant int ACC_K_JOB_LEN = 108;
+%constant int ACC_C_JOB_LEN = 108;
+%constant int ACC_S_ACCDEF = 108;
+%constant int ACC_S_TERMTIME = 8;
+%constant int ACC_S_ACCOUNT = 8;
+%constant int ACC_S_USERNAME = 12;
+%constant int ACC_S_LOGIN = 8;
+%constant int ACC_S_JOB_NAME = 8;
+%constant int ACC_S_JOB_QUE = 16;
+%constant int ACC_K_PRT_LEN = 88;
+%constant int ACC_C_PRT_LEN = 88;
+%constant int ACC_S_ACCDEF1 = 88;
+%constant int ACC_S_QUETIME = 8;
+%constant int ACC_S_PRT_NAME = 8;
+%constant int ACC_S_PRT_QUE = 12;
+%constant int ACC_K_INS_LEN = 176;
+%constant int ACC_C_INS_LEN = 176;
+%constant int ACC_K_PRCTRM = 1;
+%constant int ACC_K_BATTRM = 2;
+%constant int ACC_K_INTTRM = 3;
+%constant int ACC_K_LOGTRM = 4;
+%constant int ACC_K_IMGTRM = 5;
+%constant int ACC_K_SUBTRM = 6;
+%constant int ACC_K_DETTRM = 7;
+%constant int ACC_K_NETTRM = 8;
+%constant int ACC_K_PRTJOB = 16;
+%constant int ACC_K_INSMSG = 17;
+%constant int ACC_K_INSMESG = 1;
+%constant int ACC_K_NEWFILE = 2;
+%constant int ACC_K_ENABACC = 3;
+%constant int ACC_K_DISAACC = 4;
+%constant int ACC_K_ENABSEL = 5;
+%constant int ACC_K_DISASEL = 6;
+%constant int ACC_S_ACCDEF2 = 176;
+%constant int ACC_S_USER_DATA = 132;
diff --git a/Modules/vms/accdef/accdef.py b/Modules/vms/accdef/accdef.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNjZGVmL2FjY2RlZi5weQ==
--- /dev/null
+++ b/Modules/vms/accdef/accdef.py
@@ -0,0 +1,1 @@
+from _accdef import *
diff --git a/Modules/vms/acldef/acldef.i b/Modules/vms/acldef/acldef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNsZGVmL2FjbGRlZi5p
--- /dev/null
+++ b/Modules/vms/acldef/acldef.i
@@ -0,0 +1,56 @@
+%module acldef
+
+%constant int ACL_K_LENGTH = 12;
+%constant int ACL_C_LENGTH = 12;
+%constant int ACL_C_FILE = 1;
+%constant int ACL_C_DEVICE = 2;
+%constant int ACL_C_JOBCTL_QUEUE = 3;
+%constant int ACL_C_COMMON_EF_CLUSTER = 4;
+%constant int ACL_C_LOGICAL_NAME_TABLE = 5;
+%constant int ACL_C_PROCESS = 6;
+%constant int ACL_C_GROUP_GLOBAL_SECTION = 7;
+%constant int ACL_C_SYSTEM_GLOBAL_SECTION = 8;
+%constant int ACL_C_CAPABILITY = 9;
+%constant int ACL_C_EVENT_FACILITY = 10;
+%constant int ACL_C_LOCK = 11;
+%constant int ACL_C_VOLUME = 12;
+%constant int ACL_C_MAX_OBJECT = 13;
+%constant int ACL_C_NUM_OBJECTS = 12;
+%constant int ACL_K_NUM_OBJECTS = 12;
+%constant int ACL_C_ADDACLENT = 1;
+%constant int ACL_C_DELACLENT = 2;
+%constant int ACL_C_MODACLENT = 3;
+%constant int ACL_C_FNDACLENT = 4;
+%constant int ACL_C_FNDACETYP = 5;
+%constant int ACL_C_DELETEACL = 6;
+%constant int ACL_C_READACL = 7;
+%constant int ACL_C_ACLLENGTH = 8;
+%constant int ACL_C_READACE = 9;
+%constant int ACL_C_RLOCK_ACL = 10;
+%constant int ACL_C_WLOCK_ACL = 11;
+%constant int ACL_C_UNLOCK_ACL = 12;
+%constant int ACL_C_GRANT_ACE = 13;
+%constant int ACL_C_NEXT_ACE = 14;
+%constant int ACL_C_DELETE_ALL = 15;
+%constant int ACL_C_RESERVED_ITEM_2 = 16;
+%constant int ACL_C_RESERVED_ITEM_3 = 17;
+%constant int ACL_S_ADDACLENT = 255;
+%constant int ACL_S_DELACLENT = 255;
+%constant int ACL_S_MODACLENT = 255;
+%constant int ACL_S_FNDACLENT = 255;
+%constant int ACL_S_FNDACETYP = 255;
+%constant int ACL_S_DELETEACL = 255;
+%constant int ACL_S_READACL = 512;
+%constant int ACL_S_ACLLENGTH = 4;
+%constant int ACL_S_READACE = 255;
+%constant int ACL_S_RLOCK_ACL = 4;
+%constant int ACL_S_WLOCK_ACL = 4;
+%constant int ACL_S_UNLOCK_ACL = 4;
+%constant int ACL_S_GRANT_ACE = 255;
+%constant int ACL_S_NEXT_ACE = 4;
+%constant int ACL_S_DELETE_ALL = 255;
+%constant int ACL_S_RESERVED_ITEM_2 = 255;
+%constant int ACL_S_RESERVED_ITEM_3 = 255;
+%constant int ACL_C_MAX_SEGMENT_SIZE = 512;
+%constant int ACL_K_MAX_SEGMENT_SIZE = 512;
+%constant int ACL_S_ACLDEF = 16;
diff --git a/Modules/vms/acrdef/acrdef.i b/Modules/vms/acrdef/acrdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNyZGVmL2FjcmRlZi5p
--- /dev/null
+++ b/Modules/vms/acrdef/acrdef.i
@@ -0,0 +1,63 @@
+%module acrdef
+
+%constant int ACR_K_VERSION2 = 0;
+%constant int ACR_K_VERSION3T = 1;
+%constant int ACR_K_VERSION3 = 2;
+%constant int ACR_K_VERSION4 = 3;
+%constant int ACR_K_CURVER = 3;
+%constant int ACR_M_PACKET = 0x1L;
+%constant int ACR_M_TYPE = 0xFEL;
+%constant int ACR_M_SUBTYPE = 0xF00L;
+%constant int ACR_M_VERSION = 0x7000L;
+%constant int ACR_M_CUSTOMER = 0x8000L;
+%constant int ACR_K_PRCDEL = 1;
+%constant int ACR_K_PRCPUR = 2;
+%constant int ACR_K_IMGDEL = 3;
+%constant int ACR_K_IMGPUR = 4;
+%constant int ACR_K_SYSINIT = 5;
+%constant int ACR_K_SETTIME = 6;
+%constant int ACR_K_LOGFAIL = 7;
+%constant int ACR_K_PRINT = 8;
+%constant int ACR_K_USER = 9;
+%constant int ACR_K_ENABLE = 10;
+%constant int ACR_K_DISABLE = 11;
+%constant int ACR_K_ALTACM = 12;
+%constant int ACR_K_FILE_FL = 13;
+%constant int ACR_K_FILE_BL = 14;
+%constant int ACR_K_INTERACTIVE = 1;
+%constant int ACR_K_SUBPROCESS = 2;
+%constant int ACR_K_DETACHED = 3;
+%constant int ACR_K_BATCH = 4;
+%constant int ACR_K_NETWORK = 5;
+%constant int ACR_K_ID = 1;
+%constant int ACR_K_RESOURCE = 2;
+%constant int ACR_K_IMAGENAME = 3;
+%constant int ACR_K_FILENAME = 4;
+%constant int ACR_K_USER_DATA = 5;
+%constant int ACR_S_ACRDEF = 4;
+%constant int ACR_S_TYPE = 7;
+%constant int ACR_S_SUBTYPE = 4;
+%constant int ACR_S_VERSION = 3;
+%constant int ACR_K_HDRLEN = 12;
+%constant int ACR_C_HDRLEN = 12;
+%constant int ACR_S_ACRDEF1 = 12;
+%constant int ACR_S_SYSTIME = 8;
+%constant int ACR_M_FULLNAME = 0x1L;
+%constant int ACR_M_UIDGID = 0x2L;
+%constant int ACR_M_FILL_1 = 0xFCL;
+%constant int ACR_K_IDVAR = 58;
+%constant int ACR_C_IDVAR = 58;
+%constant int ACR_S_ACRDEF2 = 58;
+%constant int ACR_S_PRIV = 8;
+%constant int ACR_S_FILL_1 = 6;
+%constant int ACR_S_ACRDEF3 = 56;
+%constant int ACR_S_LOGIN = 8;
+%constant int ACR_S_ACRDEF4 = 260;
+%constant int ACR_S_IMAGENAME = 256;
+%constant int ACR_S_ACRDEF5 = 40;
+%constant int ACR_S_QUETIME = 8;
+%constant int ACR_S_BEGTIME = 8;
+%constant int ACR_S_ACRDEF6 = 260;
+%constant int ACR_S_FILENAME = 256;
+%constant int ACR_S_ACRDEF7 = 260;
+%constant int ACR_S_USER_DATA = 256;
diff --git a/Modules/vms/armdef/armdef.i b/Modules/vms/armdef/armdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYXJtZGVmL2FybWRlZi5p
--- /dev/null
+++ b/Modules/vms/armdef/armdef.i
@@ -0,0 +1,16 @@
+%module armdef
+
+%constant int ARM_M_READ = 0x1L;
+%constant int ARM_M_WRITE = 0x2L;
+%constant int ARM_M_EXECUTE = 0x4L;
+%constant int ARM_M_DELETE = 0x8L;
+%constant int ARM_M_CONTROL = 0x10L;
+%constant int ARM_M_CREATE = 0x4L;
+%constant int ARM_M_LOCK = 0x4L;
+%constant int ARM_M_PHYSICAL = 0x4L;
+%constant int ARM_M_LOGICAL = 0x8L;
+%constant int ARM_M_ASSOCIATE = 0x1L;
+%constant int ARM_M_SUBMIT = 0x2L;
+%constant int ARM_M_MANAGE = 0x4L;
+%constant int ARM_S_ARMDEF = 4;
+%constant int ARM_S_FILL = 27;
diff --git a/Modules/vms/brkdef/brkdef.i b/Modules/vms/brkdef/brkdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYnJrZGVmL2Jya2RlZi5p
--- /dev/null
+++ b/Modules/vms/brkdef/brkdef.i
@@ -0,0 +1,37 @@
+%module brkdef
+
+%constant int BRK_C_DEVICE = 1;
+%constant int BRK_C_USERNAME = 2;
+%constant int BRK_C_ALLUSERS = 3;
+%constant int BRK_C_ALLTERMS = 4;
+%constant int BRK_C_MAXSENDTYPE = 4;
+%constant int BRK_C_GENERAL = 0;
+%constant int BRK_C_PHONE = 1;
+%constant int BRK_C_MAIL = 2;
+%constant int BRK_C_QUEUE = 3;
+%constant int BRK_C_SHUTDOWN = 4;
+%constant int BRK_C_URGENT = 5;
+%constant int BRK_C_DCL = 6;
+%constant int BRK_C_OPCOM = 7;
+%constant int BRK_C_USER1 = 32;
+%constant int BRK_C_USER2 = 33;
+%constant int BRK_C_USER3 = 34;
+%constant int BRK_C_USER4 = 35;
+%constant int BRK_C_USER5 = 36;
+%constant int BRK_C_USER6 = 37;
+%constant int BRK_C_USER7 = 38;
+%constant int BRK_C_USER8 = 39;
+%constant int BRK_C_USER9 = 40;
+%constant int BRK_C_USER10 = 41;
+%constant int BRK_C_USER11 = 42;
+%constant int BRK_C_USER12 = 43;
+%constant int BRK_C_USER13 = 44;
+%constant int BRK_C_USER14 = 45;
+%constant int BRK_C_USER15 = 46;
+%constant int BRK_C_USER16 = 47;
+%constant int BRK_M_SCREEN = 0x100L;
+%constant int BRK_M_BOTTOM = 0x200L;
+%constant int BRK_M_NOREFRESH = 0x400L;
+%constant int BRK_M_CLUSTER = 0x800L;
+%constant int BRK_S_FLAGS_INPUT = 2;
+%constant int BRK_S_ERASE_LINES = 8;
diff --git a/Modules/vms/capdef/capdef.i b/Modules/vms/capdef/capdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2FwZGVmL2NhcGRlZi5p
--- /dev/null
+++ b/Modules/vms/capdef/capdef.i
@@ -0,0 +1,71 @@
+%module capdef
+
+%constant int CAP_K_ALL_USER = -1;
+%constant int CAP_K_ALL_USER_ADD = -1;
+%constant int CAP_K_ALL_CPU_ADD = -1;
+%constant int CAP_K_ALL_ACTIVE_CPUS = -1;
+%constant int CAP_K_ALL_USER_REMOVE = 0;
+%constant int CAP_K_ALL_CPU_REMOVE = 0;
+%constant int CAP_K_GET_FREE_CAP = 0;
+%constant int CAP_M_USER1 = 0x1L;
+%constant int CAP_M_USER2 = 0x2L;
+%constant int CAP_M_USER3 = 0x4L;
+%constant int CAP_M_USER4 = 0x8L;
+%constant int CAP_M_USER5 = 0x10L;
+%constant int CAP_M_USER6 = 0x20L;
+%constant int CAP_M_USER7 = 0x40L;
+%constant int CAP_M_USER8 = 0x80L;
+%constant int CAP_M_USER9 = 0x100L;
+%constant int CAP_M_USER10 = 0x200L;
+%constant int CAP_M_USER11 = 0x400L;
+%constant int CAP_M_USER12 = 0x800L;
+%constant int CAP_M_USER13 = 0x1000L;
+%constant int CAP_M_USER14 = 0x2000L;
+%constant int CAP_M_USER15 = 0x4000L;
+%constant int CAP_M_USER16 = 0x8000L;
+%constant int CAP_S_CAP = 4;
+%constant int CAP_M_CPU0 = 0x1L;
+%constant int CAP_M_CPU1 = 0x2L;
+%constant int CAP_M_CPU2 = 0x4L;
+%constant int CAP_M_CPU3 = 0x8L;
+%constant int CAP_M_CPU4 = 0x10L;
+%constant int CAP_M_CPU5 = 0x20L;
+%constant int CAP_M_CPU6 = 0x40L;
+%constant int CAP_M_CPU7 = 0x80L;
+%constant int CAP_M_CPU8 = 0x100L;
+%constant int CAP_M_CPU9 = 0x200L;
+%constant int CAP_M_CPU10 = 0x400L;
+%constant int CAP_M_CPU11 = 0x800L;
+%constant int CAP_M_CPU12 = 0x1000L;
+%constant int CAP_M_CPU13 = 0x2000L;
+%constant int CAP_M_CPU14 = 0x4000L;
+%constant int CAP_M_CPU15 = 0x8000L;
+%constant int CAP_M_CPU16 = 0x10000L;
+%constant int CAP_M_CPU17 = 0x20000L;
+%constant int CAP_M_CPU18 = 0x40000L;
+%constant int CAP_M_CPU19 = 0x80000L;
+%constant int CAP_M_CPU20 = 0x100000L;
+%constant int CAP_M_CPU21 = 0x200000L;
+%constant int CAP_M_CPU22 = 0x400000L;
+%constant int CAP_M_CPU23 = 0x800000L;
+%constant int CAP_M_CPU24 = 0x1000000L;
+%constant int CAP_M_CPU25 = 0x2000000L;
+%constant int CAP_M_CPU26 = 0x4000000L;
+%constant int CAP_M_CPU27 = 0x8000000L;
+%constant int CAP_M_CPU28 = 0x10000000L;
+%constant int CAP_M_CPU29 = 0x20000000L;
+%constant int CAP_M_CPU30 = 0x40000000L;
+%constant int CAP_M_CPU31 = 0x80000000L;
+%constant int CAP_S_CAP_CPUS = 4;
+%constant int CAP_M_IMPLICIT_AFFINITY_CLEAR = 0x1L;
+%constant int CAP_M_IMPLICIT_AFFINITY_SET = 0x2L;
+%constant int CAP_M_IMPLICIT_DEFAULT_ONLY = 0x4L;
+%constant int CAP_M_IMPLICIT_ALL_THREADS = 0x8L;
+%constant int CAP_S_IMP_FLAGS = 1;
+%constant int CAP_M_FLAG_CHECK_CPU = 0x1L;
+%constant int CAP_M_FLAG_PERMANENT = 0x2L;
+%constant int CAP_M_FLAG_CHECK_CPU_ACTIVE = 0x8L;
+%constant int CAP_M_FLAG_DEFAULT_ONLY = 0x10L;
+%constant int CAP_M_ALL_THREADS = 0x20L;
+%constant int CAP_M_PURGE_WS_IF_NEW_RAD = 0x40L;
+%constant int CAP_S_CAP_FLAGS = 1;
diff --git a/Modules/vms/chpdef/chpdef.i b/Modules/vms/chpdef/chpdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2hwZGVmL2NocGRlZi5p
--- /dev/null
+++ b/Modules/vms/chpdef/chpdef.i
@@ -0,0 +1,73 @@
+%module chpdef
+
+%constant int CHP__END = 0;
+%constant int CHP__ACCESS = 1;
+%constant int CHP__FLAGS = 2;
+%constant int CHP__PRIV = 3;
+%constant int CHP__ACMODE = 4;
+%constant int CHP__ACCLASS = 5;
+%constant int CHP__RIGHTS = 6;
+%constant int CHP__ADD_RIGHTS = 7;
+%constant int CHP__MODE = 8;
+%constant int CHP__MODES = 9;
+%constant int CHP__MIN_CLASS = 10;
+%constant int CHP__MAX_CLASS = 11;
+%constant int CHP__OWNER = 12;
+%constant int CHP__PROT = 13;
+%constant int CHP__ACL = 14;
+%constant int CHP__AUDIT_NAME = 15;
+%constant int CHP__ALARM_NAME = 16;
+%constant int CHP__MATCHED_ACE = 17;
+%constant int CHP__PRIVUSED = 18;
+%constant int CHP__AUDIT_LIST = 19;
+%constant int CHP__OBJECT_NAME = 20;
+%constant int CHP__OBJECT_CLASS = 21;
+%constant int CHP__UIC = 22;
+%constant int CHP__OBJECT_SPECIFIC = 23;
+%constant int CHP__MAX_CODE = 24;
+%constant int CHP__ADDRIGHTS = 7;
+%constant int CHP__MINCLASS = 10;
+%constant int CHP__MAXCLASS = 11;
+%constant int CHP__AUDITNAME = 15;
+%constant int CHP__ALARMNAME = 16;
+%constant int CHP__MATCHEDACE = 17;
+%constant int CHP__CLASS = 5;
+%constant int CHP_K_MATCHED_ACE_LENGTH = 255;
+%constant int CHP_K_ALARM_LENGTH = 768;
+%constant int CHP_K_AUDIT_LENGTH = 1560;
+%constant int CHP_M_SYSPRV = 0x1L;
+%constant int CHP_M_BYPASS = 0x2L;
+%constant int CHP_M_UPGRADE = 0x4L;
+%constant int CHP_M_DOWNGRADE = 0x8L;
+%constant int CHP_M_GRPPRV = 0x10L;
+%constant int CHP_M_READALL = 0x20L;
+%constant int CHP_M_OPER = 0x40L;
+%constant int CHP_M_GRPNAM = 0x80L;
+%constant int CHP_M_SYSNAM = 0x100L;
+%constant int CHP_M_GROUP = 0x200L;
+%constant int CHP_M_WORLD = 0x400L;
+%constant int CHP_M_PRMCEB = 0x800L;
+%constant int CHP_K_NUMBER_OF_PRIVS = 12;
+%constant int CHP_S_PRIVS_USED_BITS = 2;
+%constant int CHP_M_OBSERVE = 0x1L;
+%constant int CHP_M_ALTER = 0x2L;
+%constant int CHP_M_READ = 0x1L;
+%constant int CHP_M_WRITE = 0x2L;
+%constant int CHP_M_USEREADALL = 0x4L;
+%constant int CHP_M_AUDIT = 0x8L;
+%constant int CHP_M_NOFAILAUD = 0x10L;
+%constant int CHP_M_NOSUCCAUD = 0x20L;
+%constant int CHP_M_DELETE = 0x40L;
+%constant int CHP_M_MANDATORY = 0x80L;
+%constant int CHP_M_FLUSH = 0x100L;
+%constant int CHP_M_CREATE = 0x200L;
+%constant int CHP_M_INTERNAL = 0x400L;
+%constant int CHP_M_SERVER = 0x800L;
+%constant int CHP_S_FLAG_BITS = 2;
+%constant int CHP_M_NOACCESS = 0x1L;
+%constant int CHP_M_REMDUPID = 0x2L;
+%constant int CHP_M_INCSYSID = 0x4L;
+%constant int CHP_M_INCIMGID = 0x8L;
+%constant int CHP_M_DEFPRIV = 0x10L;
+%constant int CHP_M_DEFCLASS = 0x20L;
+%constant int CHP_S_PROFILE_FLAGS = 1;
diff --git a/Modules/vms/ciadef/ciadef.i b/Modules/vms/ciadef/ciadef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2lhZGVmL2NpYWRlZi5p
--- /dev/null
+++ b/Modules/vms/ciadef/ciadef.i
@@ -0,0 +1,90 @@
+%module ciadef
+
+%constant int CIA_K_SCAN = 1;
+%constant int CIA_K_DELETE = 2;
+%constant int CIA_K_SHOW = 3;
+%constant int CIA_K_PERFORMANCE = 4;
+%constant int CIA_K_ZERO_PERFORMANCE = 5;
+%constant int CIA_K_SCAN_EXTENDED = 6;
+%constant int CIA_K_DELETE_EXTENDED = 7;
+%constant int CIA_K_SHOW_EXTENDED = 8;
+%constant int CIA_K_MAX_CIA_CODE = 9;
+%constant int CIA_K_PERFORMANCE_LENGTH = 40;
+%constant int CIA_S_PERFORMANCE = 40;
+%constant int CIA_K_SOURCE_TERMINAL_LENGTH = 64;
+%constant int CIA_K_SOURCE_NODE_MAX_LENGTH = 1024;
+%constant int CIA_K_USER_SPEC_MAX_LENGTH = 1058;
+%constant int CIA_K_USER_STRING_MAX_LENGTH = 32;
+%constant int CIA_K_PASSWORD_MAX_LENGTH = 32;
+%constant int CIA_K_SOURCE_ADDRESS_MAX_LENGTH = 128;
+%constant int CIA_K_SCSNODE_LENGTH = 8;
+%constant int CIA_K_SCSNODE_REPLY_LENGTH = 12;
+%constant int CIA_K_USERDATA_LENGTH = 256;
+%constant int CIA_S_CIA_GENERIC_DESC = 5;
+%constant int CIAEXT_S_PACKET = 4;
+%constant int CIAEXT_S_EXTENSION_PACKET = 4;
+%constant int CIAEXT__USER_DATA = 100;
+%constant int CIAEXT__SCSNODE = 101;
+%constant int CIAEXT__SCSNODE_REPLY = 102;
+%constant int CIAEXT__IMAGE_NAME = 103;
+%constant int CIAEXT__MAX_CIAEXT_CODE = 104;
+%constant int CIA__SCSNODE_LIST = 200;
+%constant int CIA__SCSNODE = 201;
+%constant int CIA__OUTPUT_LIST = 202;
+%constant int CIA__USER_DATA = 203;
+%constant int CIA__USER_CRITERIAL = 204;
+%constant int CIA__FAILED_USERNAME = 205;
+%constant int CIA__IMAGE_NAME = 206;
+%constant int CIA__MAX_CIA_ITEM = 207;
+%constant int CIA_K_IMAGE_NAME_MAX_SIZE = 4096;
+%constant int CIA_S_IMAGE_NAME = 4100;
+%constant int CIA_S_IMAGE_STRING = 4096;
+%constant int CIA_M_IGNORE_RETURN = 0x1L;
+%constant int CIA_M_RESERVED_1 = 0xFEL;
+%constant int CIA_M_SUSPECTS = 0x100L;
+%constant int CIA_M_INTRUDERS = 0x200L;
+%constant int CIA_M_SECONDARY_PASSWORD = 0x400L;
+%constant int CIA_M_NOAUDIT = 0x800L;
+%constant int CIA_M_REAL_USERNAME = 0x1000L;
+%constant int CIA_M_SHOW_NODE = 0x2000L;
+%constant int CIA_M_ITEMLIST = 0x4000L;
+%constant int CIA_M_FILL_1 = 0xFFFF8000L;
+%constant int CIA_K_HEADER_LENGTH = 8;
+%constant int CIA_S_HEADER = 8;
+%constant int CIA_S_RESERVED_1 = 7;
+%constant int CIA_S_FILL_1 = 17;
+%constant int CIA_K_SHOW_INPUT_LENGTH = 1062;
+%constant int CIA_K_DELETE_INPUT_LENGTH = 1062;
+%constant int CIA_S_CONTENTS = 1062;
+%constant int CIA_S_NAME = 1058;
+%constant int CIA_K_SCAN_CONTENTS_LENGTH = 1386;
+%constant int CIA_S_SCAN_CONTENTS = 1386;
+%constant int CIA_S_SOURCE_TERMINAL = 68;
+%constant int CIA_S_SOURCE_TERM_NAME = 64;
+%constant int CIA_S_SOURCE_USER = 36;
+%constant int CIA_S_SOURCE_USER_NAME = 32;
+%constant int CIA_S_SOURCE_ADDRESS = 132;
+%constant int CIA_S_SOURCE_ADDRESS_NAME = 128;
+%constant int CIA_S_FAILED_USER = 36;
+%constant int CIA_S_FAILED_USER_NAME = 32;
+%constant int CIA_S_FAILED_PASSWORD = 36;
+%constant int CIA_S_FAILED_PASS_NAME = 32;
+%constant int CIA_S_PARENT_USER = 36;
+%constant int CIA_S_PARENT_USER_NAME = 32;
+%constant int CIA_S_SOURCE_NODE = 1028;
+%constant int CIA_S_SOURCE_NODE_NAME = 1024;
+%constant int CIA_M_INTRUDER = 0x1L;
+%constant int CIA_M_SUSPECT = 0x2L;
+%constant int CIA_M_NETWORK = 0x4L;
+%constant int CIA_M_TERM_USER = 0x8L;
+%constant int CIA_M_TERMINAL = 0x10L;
+%constant int CIA_M_USERNAME = 0x20L;
+%constant int CIA_M_FILL_2 = 0xFFFFFFC0L;
+%constant int CIA_K_SHOW_OUTPUT_LENGTH = 1086;
+%constant int CIA_S_SHOW_OUTPUT = 1086;
+%constant int CIA_S_EXPIRATION_TIME = 8;
+%constant int CIA_S_USER_SPEC = 1062;
+%constant int CIA_S_USER_SPEC_NAME = 1058;
+%constant int CIA_S_BREAKIN_BLOCK = 16;
+%constant int CIA_S_BREAK_TIME = 8;
+%constant int CIA_S_CIA_GENERIC_REPLY = 4;
diff --git a/Modules/vms/clidef/clidef.i b/Modules/vms/clidef/clidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2xpZGVmL2NsaWRlZi5p
--- /dev/null
+++ b/Modules/vms/clidef/clidef.i
@@ -0,0 +1,108 @@
+%module clidef
+
+%constant int CLI_M_DEBUG = 0x1L;
+%constant int CLI_M_DBGTRU = 0x2L;
+%constant int CLI_M_VERIFY = 0x4L;
+%constant int CLI_M_BATCH = 0x8L;
+%constant int CLI_M_INDIRECT = 0x10L;
+%constant int CLI_M_VFYINP = 0x20L;
+%constant int CLI_M_TRMVRBLV = 0x300L;
+%constant int CLI_M_DBGEXCP = 0x10000L;
+%constant int CLI_S_CLIDEF = 32;
+%constant int CLI_S_TRMVRBLV = 2;
+%constant int CLI_M_PARMREQ = 0x1L;
+%constant int CLI_M_ABSADR = 0x2L;
+%constant int CLI_M_EXPNAM = 0x4L;
+%constant int CLI_M_LASTVAL = 0x1L;
+%constant int CLI_M_DUMMY = 0x2L;
+%constant int CLI_M_PARMPRS = 0x1L;
+%constant int CLI_M_CONCATINP = 0x2L;
+%constant int CLI_M_MOREINP = 0x4L;
+%constant int CLI_M_PARMDEF = 0x8L;
+%constant int CLI_M_MOREVALS = 0x1L;
+%constant int CLI_M_KEYVALU = 0x2L;
+%constant int CLI_K_REQDESC = 28;
+%constant int CLI_C_REQDESC = 28;
+%constant int CLI_S_CLIDEF1 = 28;
+%constant int CLI_S_SUBTYP = 4;
+%constant int CLI_S_PRITYP = 4;
+%constant int CLI_S_RQDESC = 8;
+%constant int CLI_S_CLIDEF2 = 36;
+%constant int CLI_S_NAMDESC = 8;
+%constant int CLI_S_VALDESC = 8;
+%constant int CLI_S_TABDESC = 8;
+%constant int CLI_S_CLIDEF3 = 12;
+%constant int CLI_S_CLIDEF4 = 8;
+%constant int CLI_M_NOWAIT = 0x1L;
+%constant int CLI_M_NOCLISYM = 0x2L;
+%constant int CLI_M_NOLOGNAM = 0x4L;
+%constant int CLI_M_NOKEYPAD = 0x8L;
+%constant int CLI_M_NOTIFY = 0x10L;
+%constant int CLI_M_NOCONTROL = 0x20L;
+%constant int CLI_M_TRUSTED = 0x40L;
+%constant int CLI_M_AUTHPRIV = 0x80L;
+%constant int CLI_M_SUBSYSTEM = 0x100L;
+%constant int CLI_M_DETACHED = 0x200L;
+%constant int CLI_K_SPAWN_VERSION = 1;
+%constant int CLI_C_SPAWN_VERSION = 1;
+%constant int CLI_K_SRVDESC = 88;
+%constant int CLI_C_SRVDESC = 88;
+%constant int CLI_S_CLIDEF5 = 88;
+%constant int CLI_S_CMDSTR = 8;
+%constant int CLI_S_INPUT = 8;
+%constant int CLI_S_OUTPUT = 8;
+%constant int CLI_S_PRCNAM = 8;
+%constant int CLI_S_PROMPT = 8;
+%constant int CLI_S_CLI = 8;
+%constant int CLI_S_TABLE = 8;
+%constant int CLI_M_ALLOCCUR = 0x1L;
+%constant int CLI_M_QDUSRV = 0x2L;
+%constant int CLI_M_QDEXPA = 0x4L;
+%constant int CLI_M_QUALTRU = 0x1L;
+%constant int CLI_M_QUALEXP = 0x2L;
+%constant int CLI_K_QUALDEF = 20;
+%constant int CLI_C_QUALDEF = 20;
+%constant int CLI_K_QDBITS = 20;
+%constant int CLI_C_QDBITS = 20;
+%constant int CLI_S_CLIDEF6 = 24;
+%constant int CLI_S_QDVALDESC = 8;
+%constant int CLI_K_WORKAREA = 128;
+%constant int CLI_C_WORKAREA = 128;
+%constant int CLI_K_UTILOPR = 0;
+%constant int CLI_K_INPSPEC = 1;
+%constant int CLI_K_OUTSPEC = 2;
+%constant int CLI_K_PARDONE = 3;
+%constant int CLI_K_VALCONV = 4;
+%constant int CLI_K_CLINT = 5;
+%constant int CLI_K_INITPRS = 0;
+%constant int CLI_K_GETCMD = 1;
+%constant int CLI_K_GETQUAL = 2;
+%constant int CLI_K_GETOPT = 3;
+%constant int CLI_K_GETLINE = 4;
+%constant int CLI_K_CLISERV = 5;
+%constant int CLI_K_INPUT1 = 16;
+%constant int CLI_K_INPUT2 = 17;
+%constant int CLI_K_INPUT3 = 18;
+%constant int CLI_K_INPUT4 = 19;
+%constant int CLI_K_OUTPUT1 = 32;
+%constant int CLI_K_OUTPUT2 = 33;
+%constant int CLI_K_OUTPUT3 = 34;
+%constant int CLI_K_OUTPUT4 = 35;
+%constant int CLI_K_ENDPRM1 = 48;
+%constant int CLI_K_ENDPRM2 = 49;
+%constant int CLI_K_ENDPRM3 = 50;
+%constant int CLI_K_ENDPRM4 = 51;
+%constant int CLI_K_NUMERVAL = 64;
+%constant int CLI_K_ASCIIVAL = 65;
+%constant int CLI_K_KEYWORD = 66;
+%constant int CLI_K_KEYVAL = 67;
+%constant int CLI_K_FILSPEC = 68;
+%constant int CLI_K_PRESENT = 80;
+%constant int CLI_K_GETVALUE = 81;
+%constant int CLI_K_ENDPARSE = 82;
+%constant int CLI_K_DCLPARSE = 83;
+%constant int CLI_K_DISPATCH = 84;
+%constant int CLI_K_NEXTQUAL = 85;
+%constant int CLI_S_CLIDEF7 = 128;
+%constant int CLI_S_WORKAREA = 128;
+%constant int CLI_S_CLIDEF8 = 8;
diff --git a/Modules/vms/cmbdef/cmbdef.i b/Modules/vms/cmbdef/cmbdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY21iZGVmL2NtYmRlZi5p
--- /dev/null
+++ b/Modules/vms/cmbdef/cmbdef.i
@@ -0,0 +1,5 @@
+%module cmbdef
+
+%constant int CMB_M_READONLY = 0x1L;
+%constant int CMB_M_WRITEONLY = 0x2L;
+%constant int CMB_S_CMBDEF = 4;
diff --git a/Modules/vms/cvtfnmdef/cvtfnmdef.i b/Modules/vms/cvtfnmdef/cvtfnmdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY3Z0Zm5tZGVmL2N2dGZubWRlZi5p
--- /dev/null
+++ b/Modules/vms/cvtfnmdef/cvtfnmdef.i
@@ -0,0 +1,10 @@
+%module cvtfnmdef
+
+%constant int CVTFNM_M_WORD_CHARS = 0x1L;
+%constant int CVTFNM_M_NO_DELIMITERS = 0x2L;
+%constant int CVTFNM_M_FORCE_UPCASE = 0x4L;
+%constant int CVTFNM_S_INOUTFLAGS = 4;
+%constant int CVTFNM_C_RMS_TO_ACPQIO = 1;
+%constant int CVTFNM_C_ACPQIO_TO_RMS = 2;
+%constant int CVTFNM_K_RMS_TO_ACPQIO = 1;
+%constant int CVTFNM_K_ACPQIO_TO_RMS = 2;
diff --git a/Modules/vms/dcdef/dcdef.i b/Modules/vms/dcdef/dcdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGNkZWYvZGNkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/dcdef/dcdef.i
@@ -0,0 +1,694 @@
+%module dcdef
+
+%constant int AT__MBA = 0;
+%constant int AT__UBA = 1;
+%constant int AT__DR = 2;
+%constant int AT__MPM = 3;
+%constant int AT__CI = 4;
+%constant int AT__NULL = 5;
+%constant int AT__BDA = 6;
+%constant int AT__DMB32 = 7;
+%constant int AT__DRB32 = 8;
+%constant int AT__BVP = 9;
+%constant int AT__BVP_SSP = 10;
+%constant int AT__BVP_NIP = 11;
+%constant int AT__KA410 = 12;
+%constant int AT__KA420 = 12;
+%constant int AT__GENBI = 13;
+%constant int AT__NBI = 14;
+%constant int AT__DISK9 = 15;
+%constant int AT__XBI = 16;
+%constant int AT__TERM9 = 17;
+%constant int AT__TAPE9 = 18;
+%constant int AT__PRTR9 = 19;
+%constant int AT__SFUN9 = 20;
+%constant int AT__USER9 = 21;
+%constant int AT__MBUSIO = 22;
+%constant int AT__MBUSGFX = 23;
+%constant int AT__KA640 = 24;
+%constant int AT__XWATCH = 25;
+%constant int AT__XBI_PLUS_XMI = 26;
+%constant int AT__XBI_PLUS_BI = 27;
+%constant int AT__XJA = 28;
+%constant int AT__HSX50 = 29;
+%constant int AT__KDM70 = 29;
+%constant int AT__NI = 30;
+%constant int AT__KA43 = 31;
+%constant int AT__SJA = 32;
+%constant int AT__GENXMI = 33;
+%constant int AT__KA440 = 34;
+%constant int AT__KA46 = 34;
+%constant int AT__KA520 = 35;
+%constant int AT__XSA = 36;
+%constant int AT__XZA = 37;
+%constant int AT__XZA_SCSI = 37;
+%constant int AT__VME = 38;
+%constant int AT__IOP = 39;
+%constant int AT__LAMB = 40;
+%constant int AT__KA49 = 41;
+%constant int AT__TC = 42;
+%constant int AT__X1303 = 43;
+%constant int AT__XMI = 44;
+%constant int AT__FBUS = 45;
+%constant int AT__COREIO = 46;
+%constant int AT__KA0202 = 47;
+%constant int AT__KA0202_LBUS = 48;
+%constant int AT__KA0302 = 49;
+%constant int AT__KA0402 = 50;
+%constant int AT__TURBO_SCSI = 51;
+%constant int AT__CIMNA = 52;
+%constant int AT__XZA_DSSI = 53;
+%constant int AT__DEMNA = 54;
+%constant int AT__FFA = 55;
+%constant int AT__KA0602 = 56;
+%constant int AT__EISA = 57;
+%constant int AT__VTI_COMBO = 58;
+%constant int AT__KA0702 = 64;
+%constant int AT__TC_MULTI_NI = 65;
+%constant int AT__AHA_1742A = 66;
+%constant int AT__KA0902 = 67;
+%constant int AT__PCI = 68;
+%constant int AT__KA0802 = 69;
+%constant int AT__MULTIFUNCTION_PCI = 70;
+%constant int AT__ISA = 71;
+%constant int AT__XBUS = 72;
+%constant int AT__KA0C05 = 73;
+%constant int AT__KA0E04 = 74;
+%constant int AT__KA0D02 = 75;
+%constant int AT__THIRDPARTY0 = 76;
+%constant int AT__THIRDPARTY1 = 77;
+%constant int AT__THIRDPARTY2 = 78;
+%constant int AT__THIRDPARTY3 = 79;
+%constant int AT__THIRDPARTY4 = 80;
+%constant int AT__THIRDPARTY5 = 81;
+%constant int AT__THIRDPARTY6 = 82;
+%constant int AT__THIRDPARTY7 = 83;
+%constant int AT__MULTIFUNCTION_ISA = 84;
+%constant int AT__KA0F05 = 85;
+%constant int AT__LMCP = 86;
+%constant int AT__TIOP = 87;
+%constant int AT__ITIOP = 88;
+%constant int AT__KA1102 = 89;
+%constant int AT__KA1504 = 90;
+%constant int AT__HPC = 91;
+%constant int AT__PCMCIA = 92;
+%constant int AT__KA1402 = 93;
+%constant int AT__KA0905 = 94;
+%constant int AT__KA1802 = 95;
+%constant int AT__KA1805 = 96;
+%constant int AT__MEMCHAN = 97;
+%constant int AT__KA1B02 = 98;
+%constant int AT__KA1B05 = 99;
+%constant int AT__KA1A05 = 100;
+%constant int AT__KA1605 = 101;
+%constant int AT__MC_BUS = 102;
+%constant int AT__KA1105 = 103;
+%constant int AT__KA1702 = 104;
+%constant int AT__KA1E07 = 105;
+%constant int AT__KA2005 = 106;
+%constant int AT__KA2405 = 107;
+%constant int AT__KA2208 = 108;
+%constant int AT__KA2508 = 109;
+%constant int AT__KA2308 = 110;
+%constant int AT__WFQBB = 111;
+%constant int AT__WFIOP = 112;
+%constant int AT__WFPCA = 113;
+%constant int AT__KA2608 = 114;
+%constant int AT__KA270F = 115;
+%constant int AT__IO7 = 116;
+%constant int AT__I2000 = 117;
+%constant int AT__ACPI_IA64_PLTFRM = 118;
+%constant int AT__ACPI_IA64_CONTAIN = 119;
+%constant int AT__ACPI_IA64_SYSBUS = 120;
+%constant int AT__ACPI_IA64_BUSLESS = 121;
+%constant int AT__ACPI_IA64_IOC = 122;
+%constant int AT__PCIE = 123;
+%constant int DC__ANY = 0;
+%constant int DC__DISK = 1;
+%constant int DC__TAPE = 2;
+%constant int DC__SCOM = 32;
+%constant int DC__CARD = 65;
+%constant int DC__TERM = 66;
+%constant int DC__LP = 67;
+%constant int DC__WORKSTATION = 70;
+%constant int DC__REALTIME = 96;
+%constant int DC__DECVOICE = 97;
+%constant int DC__AUDIO = 98;
+%constant int DC__VIDEO = 99;
+%constant int DC__BUS = 128;
+%constant int DC__MAILBOX = 160;
+%constant int DC__REMCSL_STORAGE = 170;
+%constant int DC__MISC = 200;
+%constant int DT__RK06 = 1;
+%constant int DT__RK07 = 2;
+%constant int DT__RP04 = 3;
+%constant int DT__RP05 = 4;
+%constant int DT__RP06 = 5;
+%constant int DT__RM03 = 6;
+%constant int DT__RP07 = 7;
+%constant int DT__RP07HT = 8;
+%constant int DT__RL01 = 9;
+%constant int DT__RL02 = 10;
+%constant int DT__RX02 = 11;
+%constant int DT__RX04 = 12;
+%constant int DT__RM80 = 13;
+%constant int DT__TU58 = 14;
+%constant int DT__RM05 = 15;
+%constant int DT__RX01 = 16;
+%constant int DT__ML11 = 17;
+%constant int DT__RB02 = 18;
+%constant int DT__RB80 = 19;
+%constant int DT__RA80 = 20;
+%constant int DT__RA81 = 21;
+%constant int DT__RA60 = 22;
+%constant int DT__RZ01 = 23;
+%constant int DT__RC25 = 23;
+%constant int DT__RZF01 = 24;
+%constant int DT__RCF25 = 24;
+%constant int DT__RD51 = 25;
+%constant int DT__RX50 = 26;
+%constant int DT__RD52 = 27;
+%constant int DT__RD53 = 28;
+%constant int DT__RD26 = 29;
+%constant int DT__RA82 = 30;
+%constant int DT__RD31 = 31;
+%constant int DT__RD54 = 32;
+%constant int DT__CRX50 = 33;
+%constant int DT__RRD50 = 34;
+%constant int DT__GENERIC_DU = 35;
+%constant int DT__RX33 = 36;
+%constant int DT__RX18 = 37;
+%constant int DT__RA70 = 38;
+%constant int DT__RA90 = 39;
+%constant int DT__RD32 = 40;
+%constant int DT__DISK9 = 41;
+%constant int DT__RX35 = 42;
+%constant int DT__RF30 = 43;
+%constant int DT__RF70 = 44;
+%constant int DT__RF71 = 44;
+%constant int DT__RD33 = 45;
+%constant int DT__ESE20 = 46;
+%constant int DT__TU56 = 47;
+%constant int DT__RZ22 = 48;
+%constant int DT__RZ23 = 49;
+%constant int DT__RZ24 = 50;
+%constant int DT__RZ55 = 51;
+%constant int DT__RRD40S = 52;
+%constant int DT__RRD40 = 53;
+%constant int DT__GENERIC_DK = 54;
+%constant int DT__RX23 = 55;
+%constant int DT__RF31 = 56;
+%constant int DT__RF72 = 57;
+%constant int DT__RAM_DISK = 58;
+%constant int DT__RZ25 = 59;
+%constant int DT__RZ56 = 60;
+%constant int DT__RZ57 = 61;
+%constant int DT__RX23S = 62;
+%constant int DT__RX33S = 63;
+%constant int DT__RA92 = 64;
+%constant int DT__SSTRIPE = 65;
+%constant int DT__RZ23L = 66;
+%constant int DT__RX26 = 67;
+%constant int DT__RZ57I = 68;
+%constant int DT__RZ31 = 69;
+%constant int DT__RZ58 = 70;
+%constant int DT__SCSI_MO = 71;
+%constant int DT__RWZ01 = 71;
+%constant int DT__RRD42 = 72;
+%constant int DT__CD_LOADER_1 = 73;
+%constant int DT__ESE25 = 74;
+%constant int DT__RFH31 = 75;
+%constant int DT__RFH72 = 76;
+%constant int DT__RF73 = 77;
+%constant int DT__RFH73 = 78;
+%constant int DT__RA72 = 79;
+%constant int DT__RA71 = 80;
+%constant int DT__RAH72 = 80;
+%constant int DT__RF32 = 81;
+%constant int DT__RF35 = 81;
+%constant int DT__RFH32 = 82;
+%constant int DT__RFH35 = 82;
+%constant int DT__RFF31 = 83;
+%constant int DT__RF31F = 83;
+%constant int DT__RZ72 = 84;
+%constant int DT__RZ73 = 85;
+%constant int DT__RZ35 = 86;
+%constant int DT__RZ24L = 87;
+%constant int DT__RZ25L = 88;
+%constant int DT__RZ55L = 89;
+%constant int DT__RZ56L = 90;
+%constant int DT__RZ57L = 91;
+%constant int DT__RA73 = 92;
+%constant int DT__RZ26 = 93;
+%constant int DT__RZ36 = 94;
+%constant int DT__RZ74 = 95;
+%constant int DT__ESE52 = 96;
+%constant int DT__ESE56 = 97;
+%constant int DT__ESE58 = 98;
+%constant int DT__RZ27 = 99;
+%constant int DT__RZ37 = 100;
+%constant int DT__RZ34L = 101;
+%constant int DT__RZ35L = 102;
+%constant int DT__RZ36L = 103;
+%constant int DT__RZ38 = 104;
+%constant int DT__RZ75 = 105;
+%constant int DT__RZ59 = 106;
+%constant int DT__RZ13 = 107;
+%constant int DT__RZ14 = 108;
+%constant int DT__RZ15 = 109;
+%constant int DT__RZ16 = 110;
+%constant int DT__RZ17 = 111;
+%constant int DT__RZ18 = 112;
+%constant int DT__EZ51 = 113;
+%constant int DT__EZ52 = 114;
+%constant int DT__EZ53 = 115;
+%constant int DT__EZ54 = 116;
+%constant int DT__EZ58 = 117;
+%constant int DT__EF51 = 118;
+%constant int DT__EF52 = 119;
+%constant int DT__EF53 = 120;
+%constant int DT__EF54 = 121;
+%constant int DT__EF58 = 122;
+%constant int DT__RF36 = 123;
+%constant int DT__RF37 = 124;
+%constant int DT__RF74 = 125;
+%constant int DT__RF75 = 126;
+%constant int DT__HSZ10 = 127;
+%constant int DT__RZ28 = 128;
+%constant int DT__GENERIC_RX = 180;
+%constant int DT__FD1 = 129;
+%constant int DT__FD2 = 130;
+%constant int DT__FD3 = 131;
+%constant int DT__FD4 = 132;
+%constant int DT__FD5 = 133;
+%constant int DT__FD6 = 134;
+%constant int DT__FD7 = 135;
+%constant int DT__FD8 = 136;
+%constant int DT__RZ29 = 137;
+%constant int DT__RZ26L = 138;
+%constant int DT__RRD43 = 139;
+%constant int DT__RRD44 = 140;
+%constant int DT__HSX00 = 141;
+%constant int DT__HSX01 = 142;
+%constant int DT__RZ26B = 143;
+%constant int DT__RZ27B = 144;
+%constant int DT__RZ28B = 145;
+%constant int DT__RZ29B = 146;
+%constant int DT__RZ73B = 147;
+%constant int DT__RZ74B = 148;
+%constant int DT__RZ75B = 149;
+%constant int DT__RWZ21 = 150;
+%constant int DT__RZ27L = 151;
+%constant int DT__HSZ20 = 152;
+%constant int DT__HSZ40 = 153;
+%constant int DT__HSZ15 = 154;
+%constant int DT__RZ26M = 155;
+%constant int DT__RW504 = 156;
+%constant int DT__RW510 = 157;
+%constant int DT__RW514 = 158;
+%constant int DT__RW516 = 159;
+%constant int DT__RWZ52 = 160;
+%constant int DT__RWZ53 = 161;
+%constant int DT__RWZ54 = 162;
+%constant int DT__RWZ31 = 163;
+%constant int DT__EZ31 = 164;
+%constant int DT__EZ32 = 165;
+%constant int DT__EZ33 = 166;
+%constant int DT__EZ34 = 167;
+%constant int DT__EZ35 = 168;
+%constant int DT__EZ31L = 169;
+%constant int DT__EZ32L = 170;
+%constant int DT__EZ33L = 171;
+%constant int DT__RZ28L = 172;
+%constant int DT__RWZ51 = 173;
+%constant int DT__EZ56R = 174;
+%constant int DT__RAID0 = 175;
+%constant int DT__RAID5 = 176;
+%constant int DT__CONSOLE_CALLBACK = 177;
+%constant int DT__FILES_64 = 178;
+%constant int DT__SWXCR = 179;
+%constant int DT__SNAPPY_DISK = 180;
+%constant int DT__SNAPPY_POOL = 181;
+%constant int DT__USB_CB_DISK = 182;
+%constant int DT__TE16 = 1;
+%constant int DT__TU45 = 2;
+%constant int DT__TU77 = 3;
+%constant int DT__TS11 = 4;
+%constant int DT__TU78 = 5;
+%constant int DT__TA78 = 6;
+%constant int DT__TU80 = 7;
+%constant int DT__TU81 = 8;
+%constant int DT__TA81 = 9;
+%constant int DT__TK50 = 10;
+%constant int DT__MR_TU70 = 11;
+%constant int DT__MR_TU72 = 12;
+%constant int DT__MW_TSU05 = 13;
+%constant int DT__MW_TSV05 = 14;
+%constant int DT__TK70 = 15;
+%constant int DT__RV20 = 16;
+%constant int DT__RV80 = 16;
+%constant int DT__TK60 = 17;
+%constant int DT__GENERIC_TU = 18;
+%constant int DT__TA79 = 19;
+%constant int DT__TAPE9 = 20;
+%constant int DT__TA90 = 21;
+%constant int DT__TF30 = 22;
+%constant int DT__TF85 = 22;
+%constant int DT__TF70 = 23;
+%constant int DT__RV60 = 24;
+%constant int DT__TZ30 = 25;
+%constant int DT__TM32 = 26;
+%constant int DT__TZX0 = 27;
+%constant int DT__TSZ05 = 27;
+%constant int DT__GENERIC_MK = 28;
+%constant int DT__TK50S = 29;
+%constant int DT__TZ30S = 30;
+%constant int DT__TK70L = 31;
+%constant int DT__TLZ04 = 32;
+%constant int DT__TZK10 = 33;
+%constant int DT__TSZ07 = 34;
+%constant int DT__TSZ08 = 35;
+%constant int DT__TA90E = 36;
+%constant int DT__TZK11 = 37;
+%constant int DT__TZ85 = 38;
+%constant int DT__TZ86 = 39;
+%constant int DT__TZ87 = 40;
+%constant int DT__TZ857 = 41;
+%constant int DT__EXABYTE = 42;
+%constant int DT__TAPE_LOADER_1 = 43;
+%constant int DT__TA91 = 44;
+%constant int DT__TLZ06 = 45;
+%constant int DT__TA85 = 46;
+%constant int DT__TKZ60 = 47;
+%constant int DT__TLZ6 = 48;
+%constant int DT__TZ867 = 49;
+%constant int DT__TZ877 = 50;
+%constant int DT__TAD85 = 51;
+%constant int DT__TF86 = 52;
+%constant int DT__TKZ09 = 53;
+%constant int DT__TA86 = 54;
+%constant int DT__TA87 = 55;
+%constant int DT__TD34 = 56;
+%constant int DT__TD44 = 57;
+%constant int DT__HST00 = 58;
+%constant int DT__HST01 = 59;
+%constant int DT__TLZ07 = 60;
+%constant int DT__TLZ7 = 61;
+%constant int DT__TZ88 = 62;
+%constant int DT__TZ885 = 63;
+%constant int DT__TZ887 = 64;
+%constant int DT__TZ89 = 65;
+%constant int DT__TZ895 = 66;
+%constant int DT__TZ897 = 67;
+%constant int DT__TZ875 = 68;
+%constant int DT__TL810 = 69;
+%constant int DT__TL820 = 70;
+%constant int DT__TZ865 = 71;
+%constant int DT__TTYUNKN = 0;
+%constant int DT__VT05 = 1;
+%constant int DT__FT1 = 16;
+%constant int DT__FT2 = 17;
+%constant int DT__FT3 = 18;
+%constant int DT__FT4 = 19;
+%constant int DT__FT5 = 20;
+%constant int DT__FT6 = 21;
+%constant int DT__FT7 = 22;
+%constant int DT__FT8 = 23;
+%constant int DT__LAX = 32;
+%constant int DT__LA36 = 32;
+%constant int DT__LA120 = 33;
+%constant int DT__VT5X = 64;
+%constant int DT__VT52 = 64;
+%constant int DT__VT55 = 65;
+%constant int DT__TQ_BTS = 4;
+%constant int DT__TEK401X = 10;
+%constant int DT__VT100 = 96;
+%constant int DT__VK100 = 2;
+%constant int DT__VT173 = 3;
+%constant int DT__LA34 = 34;
+%constant int DT__LA38 = 35;
+%constant int DT__LA12 = 36;
+%constant int DT__LA24 = 37;
+%constant int DT__LA100 = 37;
+%constant int DT__LQP02 = 38;
+%constant int DT__VT101 = 97;
+%constant int DT__VT102 = 98;
+%constant int DT__VT105 = 99;
+%constant int DT__VT125 = 100;
+%constant int DT__VT131 = 101;
+%constant int DT__VT132 = 102;
+%constant int DT__DZ11 = 66;
+%constant int DT__DZ32 = 67;
+%constant int DT__DZ730 = 68;
+%constant int DT__DMZ32 = 69;
+%constant int DT__DHV = 70;
+%constant int DT__DHU = 71;
+%constant int DT__SLU = 72;
+%constant int DT__TERM9 = 73;
+%constant int DT__LAT = 74;
+%constant int DT__VS100 = 1;
+%constant int DT__VS125 = 2;
+%constant int DT__VL_VS8200 = 3;
+%constant int DT__VD = 4;
+%constant int DT__DECW_OUTPUT = 5;
+%constant int DT__DECW_INPUT = 6;
+%constant int DT__DECW_PSEUDO = 7;
+%constant int DT__DMC11 = 1;
+%constant int DT__DMR11 = 2;
+%constant int DT__XK_3271 = 3;
+%constant int DT__XJ_2780 = 4;
+%constant int DT__NW_X25 = 5;
+%constant int DT__NV_X29 = 6;
+%constant int DT__SB_ISB11 = 7;
+%constant int DT__MX_MUX200 = 8;
+%constant int DT__DMP11 = 9;
+%constant int DT__DMF32 = 10;
+%constant int DT__XV_3271 = 11;
+%constant int DT__CI = 12;
+%constant int DT__NI = 13;
+%constant int DT__UNA11 = 14;
+%constant int DT__DEUNA = 14;
+%constant int DT__YN_X25 = 15;
+%constant int DT__YO_X25 = 16;
+%constant int DT__YP_ADCCP = 17;
+%constant int DT__YQ_3271 = 18;
+%constant int DT__YR_DDCMP = 19;
+%constant int DT__YS_SDLC = 20;
+%constant int DT__UK_KTC32 = 21;
+%constant int DT__DEQNA = 22;
+%constant int DT__DMV11 = 23;
+%constant int DT__ES_LANCE = 24;
+%constant int DT__DELUA = 25;
+%constant int DT__NQ_3271 = 26;
+%constant int DT__DMB32 = 27;
+%constant int DT__YI_KMS11K = 28;
+%constant int DT__ET_DEBNT = 29;
+%constant int DT__ET_DEBNA = 29;
+%constant int DT__SJ_DSV11 = 30;
+%constant int DT__SL_DSB32 = 31;
+%constant int DT__ZS_DST32 = 32;
+%constant int DT__XQ_DELQA = 33;
+%constant int DT__ET_DEBNI = 34;
+%constant int DT__EZ_SGEC = 35;
+%constant int DT__EX_DEMNA = 36;
+%constant int DT__DIV32 = 37;
+%constant int DT__XQ_DEQTA = 38;
+%constant int DT__FT_NI = 39;
+%constant int DT__EP_LANCE = 40;
+%constant int DT__KWV32 = 41;
+%constant int DT__SM_DSF32 = 42;
+%constant int DT__FX_DEMFA = 43;
+%constant int DT__SF_DSF32 = 44;
+%constant int DT__SE_DUP11 = 45;
+%constant int DT__SE_DPV11 = 46;
+%constant int DT__ZT_DSW = 47;
+%constant int DT__FC_DEFZA = 48;
+%constant int DT__EC_PMAD = 49;
+%constant int DT__EZ_TGEC = 50;
+%constant int DT__EA_DEANA = 51;
+%constant int DT__EY_NITC2 = 52;
+%constant int DT__ER_DE422 = 53;
+%constant int DT__ER_DE200 = 54;
+%constant int DT__EW_TULIP = 55;
+%constant int DT__FA_DEFAA = 56;
+%constant int DT__FC_DEFTA = 57;
+%constant int DT__FQ_DEFQA = 58;
+%constant int DT__FR_DEFEA = 59;
+%constant int DT__FW_DEFPA = 60;
+%constant int DT__IC_DETRA = 61;
+%constant int DT__IQ_DEQRA = 62;
+%constant int DT__IR_DW300 = 63;
+%constant int DT__ZR_SCC = 64;
+%constant int DT__ZY_DSYT1 = 65;
+%constant int DT__ZE_DNSES = 66;
+%constant int DT__ER_DE425 = 67;
+%constant int DT__EW_DE435 = 68;
+%constant int DT__ER_DE205 = 69;
+%constant int DT__HC_OTTO = 70;
+%constant int DT__ZS_PBXDI = 71;
+%constant int DT__EL_ELAN = 72;
+%constant int DT__HW_OTTO = 73;
+%constant int DT__EO_3C598 = 74;
+%constant int DT__IW_TC4048 = 75;
+%constant int DT__EW_DE450 = 76;
+%constant int DT__EW_DE500 = 77;
+%constant int DT__CL_CLIP = 78;
+%constant int DT__ZW_PBXDP = 79;
+%constant int DT__HW_METEOR = 80;
+%constant int DT__ER_DE305 = 81;
+%constant int DT__EW_DEGPA = 82;
+%constant int DT__IW_RACORE = 83;
+%constant int DT__EB_SMLAN = 84;
+%constant int DT__EI_82558 = 85;
+%constant int DT__EI_82559 = 86;
+%constant int DT__HW_HE622 = 87;
+%constant int DT__HW_HE155 = 88;
+%constant int DT__EW_BCM5703 = 89;
+%constant int DT__EW_BCM5704 = 90;
+%constant int DT__EW_XFRAME = 91;
+%constant int DT__EW_BCM5701 = 92;
+%constant int DT__LL_LLAN = 93;
+%constant int DT__EG_ELP_FC = 94;
+%constant int DT__EG_Q_FC = 95;
+%constant int DT__EI_82540 = 96;
+%constant int DT__VL_VLAN = 97;
+%constant int DT__EW_BCM5715 = 98;
+%constant int DT__EI_AVIO = 99;
+%constant int DT__ER_BCM57711 = 100;
+%constant int DT__EW_BCM57711 = 101;
+%constant int DT__EB_BE = 102;
+%constant int DT__EW_BE = 103;
+%constant int DT__LP11 = 1;
+%constant int DT__LA11 = 2;
+%constant int DT__LA180 = 3;
+%constant int DT__LC_DMF32 = 4;
+%constant int DT__LI_DMB32 = 5;
+%constant int DT__PRTR9 = 6;
+%constant int DT__SCSI_SCANNER_1 = 7;
+%constant int DT__PC_PRINTER = 8;
+%constant int DT__CR11 = 1;
+%constant int DT__MBX = 1;
+%constant int DT__SHRMBX = 2;
+%constant int DT__NULL = 3;
+%constant int DT__PIPE = 4;
+%constant int DT__DAP_DEVICE = 1;
+%constant int DT__LPA11 = 1;
+%constant int DT__DR780 = 2;
+%constant int DT__DR750 = 3;
+%constant int DT__DR11W = 4;
+%constant int DT__PCL11R = 5;
+%constant int DT__PCL11T = 6;
+%constant int DT__DR11C = 7;
+%constant int DT__BS_DT07 = 8;
+%constant int DT__XP_PCL11B = 9;
+%constant int DT__IX_IEX11 = 10;
+%constant int DT__FP_FEPCM = 11;
+%constant int DT__TK_FCM = 12;
+%constant int DT__XI_DR11C = 13;
+%constant int DT__XA_DRV11WA = 14;
+%constant int DT__DRB32 = 15;
+%constant int DT__HX_DRQ3B = 16;
+%constant int DT__DECVOICE = 1;
+%constant int DT__DTC04 = 2;
+%constant int DT__DTC05 = 3;
+%constant int DT__DTCN5 = 4;
+%constant int DT__AMD79C30A = 1;
+%constant int DT__CMI8738 = 2;
+%constant int DT__CI780 = 1;
+%constant int DT__CI750 = 2;
+%constant int DT__UQPORT = 3;
+%constant int DT__UDA50 = 3;
+%constant int DT__UDA50A = 4;
+%constant int DT__LESI = 5;
+%constant int DT__TU81P = 6;
+%constant int DT__RDRX = 7;
+%constant int DT__TK50P = 8;
+%constant int DT__RUX50P = 9;
+%constant int DT__RC26P = 10;
+%constant int DT__QDA50 = 11;
+%constant int DT__KDA50 = 11;
+%constant int DT__BDA50 = 12;
+%constant int DT__KDB50 = 12;
+%constant int DT__RRD50P = 13;
+%constant int DT__QDA25 = 14;
+%constant int DT__KDA25 = 14;
+%constant int DT__BCI750 = 15;
+%constant int DT__BCA = 16;
+%constant int DT__RQDX3 = 17;
+%constant int DT__NISCA = 18;
+%constant int DT__AIO = 19;
+%constant int DT__KFBTA = 19;
+%constant int DT__AIE = 20;
+%constant int DT__DEBNT = 20;
+%constant int DT__BSA = 21;
+%constant int DT__KSB50 = 21;
+%constant int DT__TK70P = 22;
+%constant int DT__RV20P = 23;
+%constant int DT__RV80P = 23;
+%constant int DT__TK60P = 24;
+%constant int DT__SII = 25;
+%constant int DT__KFSQSA = 26;
+%constant int DT__KFQSA = 26;
+%constant int DT__SHAC = 27;
+%constant int DT__CIXCD = 28;
+%constant int DT__N5380 = 29;
+%constant int DT__SCSII = 30;
+%constant int DT__HSX50 = 31;
+%constant int DT__KDM70 = 31;
+%constant int DT__TM32P = 32;
+%constant int DT__TK7LP = 33;
+%constant int DT__SWIFT = 34;
+%constant int DT__N53C94 = 35;
+%constant int DT__KFMSA = 36;
+%constant int DT__SCSI_XTENDR = 37;
+%constant int DT__FT_TRACE_RAM = 38;
+%constant int DT__XVIB = 39;
+%constant int DT__XZA_SCSI = 40;
+%constant int DT__XZA_DSSI = 41;
+%constant int DT__N710_SCSI = 42;
+%constant int DT__N710_DSSI = 43;
+%constant int DT__AHA1742A = 44;
+%constant int DT__TZA_SCSI = 45;
+%constant int DT__N810_SCSI = 46;
+%constant int DT__CIPCA = 47;
+%constant int DT__ISP1020 = 48;
+%constant int DT__MC_SPUR = 49;
+%constant int DT__PZA_SCSI = 50;
+%constant int DT__MCSCA = 51;
+%constant int DT__SMCI = 52;
+%constant int DT__KZPCM_SCSI = 53;
+%constant int DT__SYM896_SCSI = 54;
+%constant int DT__FCP_SCSI = 55;
+%constant int DT__LP7000_FC = 56;
+%constant int DT__SYM895_SCSI = 57;
+%constant int DT__KZPCA_SCSI = 58;
+%constant int DT__ADAPTEC7892_SCSI = 59;
+%constant int DT__ADAPTEC7895_SCSI = 60;
+%constant int DT__ADAPTEC7897_SCSI = 61;
+%constant int DT__ADAPTEC7899_SCSI = 62;
+%constant int DT__CISS = 63;
+%constant int DT__ISP23XX_FC = 64;
+%constant int DT__LSI1010_SCSI = 65;
+%constant int DT__LSI1030_SCSI = 66;
+%constant int DT__ISP24XX_FC = 67;
+%constant int DT__LSI106X_SAS = 68;
+%constant int DT__SW_ISCSI = 69;
+%constant int DT__LP8000_FC = 70;
+%constant int DT__LP9000_FC = 71;
+%constant int DT__LP9802_FC = 72;
+%constant int DT__LP10000_FC = 73;
+%constant int DT__LP11002_FC = 74;
+%constant int DT__ISP243X_FC = 75;
+%constant int DT__EP2422_FC = 76;
+%constant int DT__ISP253X_FC = 77;
+%constant int DT__GSP = 78;
+%constant int DT__ICH10_AHCI = 79;
+%constant int DT__DN11 = 1;
+%constant int DT__PV = 2;
+%constant int DT__SFUN9 = 3;
+%constant int DT__USER9 = 4;
+%constant int DT__GENERIC_SCSI = 5;
+%constant int DT__DMA_520 = 6;
+%constant int DT__T3270 = 7;
+%constant int DT__IPMI = 9;
+%constant int DT__ACPI_SE = 10;
diff --git a/Modules/vms/decc/decc.c b/Modules/vms/decc/decc.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGVjYy9kZWNjLmM=
--- /dev/null
+++ b/Modules/vms/decc/decc.c
@@ -0,0 +1,218 @@
+#define __NEW_STARLET 1
+#include <stdio.h>
+#include <string.h>
+#include <lib$routines.h>
+#include <starlet.h>
+#include <descrip.h>
+#include <ssdef.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+#include <assert.h>
+#include <dlfcn.h>
+
+#include "decc.h"
+
+extern unsigned int decc$fix_time(long long *);
+
+unsigned int _fix_time(long long vms_time)
+{
+    return (decc$fix_time(&vms_time));
+}
+
+
+static long long epoch = 0;
+
+#define UNIX_EPOCH "01-JAN-1970 00:00:00.00"
+#define FAC 10000000L
+
+static int offset()
+{
+    time_t gmt, rawtime = time(NULL);
+    struct tm *ptm;
+
+    struct tm gbuf;
+    ptm = gmtime_r(&rawtime, &gbuf);
+    ptm->tm_isdst = -1;
+    gmt = mktime(ptm);
+
+    return ((int) difftime(rawtime, gmt));
+}
+
+unsigned int _unixtime(long long dt)
+{
+    unsigned int sec;
+    __int64 diff;
+
+    if (epoch == 0)  {
+        struct dsc$descriptor_s epoch_dsc;
+
+        epoch_dsc.dsc$w_length = strlen(UNIX_EPOCH);
+        epoch_dsc.dsc$b_class = DSC$K_CLASS_S;
+        epoch_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        epoch_dsc.dsc$a_pointer = UNIX_EPOCH;
+
+        sys$bintim(&epoch_dsc, (struct _generic_64 *) &epoch);
+    }
+
+    diff = dt - epoch;
+    sec = diff / FAC - offset();
+    return (sec);
+}
+
+
+
+long long _vmstime(unsigned int dt)
+{
+    long long val;
+    long long tmp;
+
+    if (epoch == 0)  {
+        struct dsc$descriptor_s epoch_dsc;
+
+        epoch_dsc.dsc$w_length = strlen(UNIX_EPOCH);
+        epoch_dsc.dsc$b_class = DSC$K_CLASS_S;
+        epoch_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        epoch_dsc.dsc$a_pointer = UNIX_EPOCH;
+
+        sys$bintim(&epoch_dsc, (struct _generic_64 *) &epoch);
+    }
+
+    tmp = dt;
+    val = epoch + (tmp * FAC);
+
+    return (val);
+}
+
+
+extern int decc$from_vms(const char *, int (*)(char *, void *), int, ...);
+extern int decc$to_vms(const char *, int (*)(char *, int, void *), int, int, ...);
+
+typedef struct {
+    int     len;
+    int     cap;
+    char**  buf;
+} _simple_arr;
+
+static int cb_from_vms(char *name, void *user_data)
+{
+    _simple_arr *parr = (_simple_arr *) user_data;
+    assert(parr);
+    if (parr->len + 1 >= parr->cap ) {
+        parr->cap += 8;
+        parr->buf = realloc(parr->buf, parr->cap * sizeof(char*));
+    }
+    parr->buf[parr->len] = strdup(name);
+    assert(parr->buf[parr->len]);
+    ++parr->len;
+    parr->buf[parr->len] = NULL;
+    return (1);
+}
+
+
+char **_from_vms(char *path, int wild_flag)
+{
+    _simple_arr arr;
+    arr.len = 0;
+    arr.cap = 8;
+    arr.buf = malloc(arr.cap * sizeof(char*));
+    arr.buf[arr.len] = NULL;
+
+    assert(path);
+    int num_files = decc$from_vms(path, cb_from_vms, wild_flag, &arr);
+    return (arr.buf);
+}
+
+
+static int cb_to_vms(char *name, int flag, void *user_data)
+{
+    _simple_arr *parr = (_simple_arr *) user_data;
+    assert(parr);
+    if (parr->len + 1 >= parr->cap ) {
+        parr->cap += 8;
+        parr->buf = realloc(parr->buf, parr->cap * sizeof(char*));
+    }
+    parr->buf[parr->len] = strdup(name);
+    assert(parr->buf[parr->len]);
+    ++parr->len;
+    parr->buf[parr->len] = NULL;
+    return (1);
+}
+
+char **_to_vms(char *path, int allow_wild, int no_directory)
+{
+    _simple_arr arr;
+    arr.len = 0;
+    arr.cap = 8;
+    arr.buf = malloc(arr.cap * sizeof(char*));
+    arr.buf[arr.len] = NULL;
+
+    assert(path);
+    decc$to_vms(path, cb_to_vms, allow_wild, no_directory, &arr);
+    return (arr.buf);
+}
+
+
+char *_getenv(char *name, char *def)
+{
+    char *tmp, *val = NULL;
+
+    assert(name);
+    val = getenv(name);
+
+    if (val == NULL && def != NULL) {
+       val = def;
+    }
+
+    if (val) {
+        tmp = strdup(val);
+	    assert(tmp);
+    } else {
+	    tmp = NULL;
+    }
+
+    return (tmp);
+}
+
+
+long _sysconf(int name)
+{
+    return (sysconf(name));
+}
+
+
+int _sleep(unsigned int nsec)
+{
+    return (sleep(nsec));
+}
+
+int _dlopen_test(char *name) {
+    void *handle = dlopen(name, 0);
+    if (handle) {
+        dlclose(handle);
+        return 1;
+    }
+    return 0;
+}
+
+int _get_symbol(char *name, char** value) {
+    struct dsc$descriptor_s symbol_name;
+    symbol_name.dsc$w_length = strlen(name);
+    symbol_name.dsc$b_class = DSC$K_CLASS_S;
+    symbol_name.dsc$b_dtype = DSC$K_DTYPE_T;
+    symbol_name.dsc$a_pointer = name;
+
+    char buffer[256];
+    buffer[0] = 0;
+    struct dsc$descriptor_s symbol_value;
+    symbol_value.dsc$w_length = 255;
+    symbol_value.dsc$b_class = DSC$K_CLASS_S;
+    symbol_value.dsc$b_dtype = DSC$K_DTYPE_T;
+    symbol_value.dsc$a_pointer = buffer;
+
+    short result_len = 0;
+    int status = lib$get_symbol(&symbol_name, &symbol_value, &result_len);
+    buffer[result_len] = 0;
+    *value = strdup(buffer);
+    return status;
+}
\ No newline at end of file
diff --git a/Modules/vms/decc/decc.h b/Modules/vms/decc/decc.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGVjYy9kZWNjLmg=
--- /dev/null
+++ b/Modules/vms/decc/decc.h
@@ -0,0 +1,22 @@
+#ifndef __DECC_H__
+#define __DECC_H__
+
+#ifdef __cplusplus
+        extern "C" {
+#endif
+
+extern unsigned int _fix_time(long long);
+extern unsigned int _unixtime(long long dt);
+extern long long _vmstime(unsigned int);
+extern char ** _from_vms(char *, int);
+extern char ** _to_vms(char *, int, int);
+extern char *_getenv(char *, char *);
+extern long _sysconf(int);
+extern int _sleep(unsigned int);
+extern int _dlopen_test(char *name);
+extern int _get_symbol(char *name, char** value);
+
+#ifdef __cplusplus
+        }
+#endif
+#endif
diff --git a/Modules/vms/decc/decc.i b/Modules/vms/decc/decc.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGVjYy9kZWNjLmk=
--- /dev/null
+++ b/Modules/vms/decc/decc.i
@@ -0,0 +1,139 @@
+%module decc
+
+%{
+#include "decc.h"
+%}
+
+%include "typemaps.i"
+%include <cstring.i>
+%cstring_output_allocate(char **OUTPUT, free(*$1));
+
+%exception {
+    Py_BEGIN_ALLOW_THREADS
+    $action
+    Py_END_ALLOW_THREADS
+}
+
+%typemap(out) char *
+{
+   if ($1 == NULL) {
+      $result = Py_None;
+      Py_INCREF($result);
+   } else {
+      $result = PyUnicode_DecodeUTF8($1, strlen($1), "surrogateescape");
+      free($1);
+   }
+}
+
+%typemap(out) char** {
+  int len,i;
+  if ($1 == NULL) {
+      $result = Py_None;
+      Py_INCREF($result);
+  } else {
+      len = 0;
+      while ($1[len]) len++;
+      $result = PyList_New(len);
+      for (i = 0; i < len; i++) {
+        PyList_SetItem($result, i, PyString_FromString($1[i]));
+      }
+  }
+}
+
+%typemap(newfree) char ** {
+  if ($1 != NULL) {
+      int i;
+      i = 0;
+      while ($1[i]) {
+          free($1[i]);
+          ++i;
+      }
+      free($1);
+  }
+}
+
+%constant int _SC_ARG_MAX = 100;
+%constant int _SC_CHILD_MAX = 101;
+%constant int _SC_CLK_TCK = 102;
+%constant int _SC_NGROUPS_MAX = 103;
+%constant int _SC_OPEN_MAX = 104;
+%constant int _SC_STREAM_MAX = 105;
+%constant int _SC_TZNAME_MAX = 106;
+%constant int _SC_JOB_CONTROL = 107;
+%constant int _SC_SAVED_IDS = 108;
+%constant int _SC_VERSION = 109;
+%constant int _SC_BC_BASE_MAX = 121;
+%constant int _SC_BC_DIM_MAX = 122;
+%constant int _SC_BC_SCALE_MAX = 123;
+%constant int _SC_BC_STRING_MAX = 124;
+%constant int _SC_COLL_WEIGHTS_MAX = 125;
+%constant int _SC_EXPR_NEST_MAX = 126;
+%constant int _SC_LINE_MAX = 127;
+%constant int _SC_RE_DUP_MAX = 128;
+%constant int _SC_2_VERSION = 129;
+%constant int _SC_2_C_BIND = 130;
+%constant int _SC_2_C_DEV = 131;
+%constant int _SC_2_FORT_DEV = 132;
+%constant int _SC_2_SW_DEV = 133;
+%constant int _SC_2_FORT_RUN = 134;
+%constant int _SC_2_LOCALEDEF = 135;
+%constant int _SC_2_UPE = 136;
+%constant int _SC_GETGR_R_SIZE_MAX = 150;
+%constant int _SC_GETPW_R_SIZE_MAX = 151;
+%constant int _SC_THREAD_DESTRUCTOR_ITERATIONS = 140;
+%constant int _SC_THREAD_KEYS_MAX = 141;
+%constant int _SC_THREAD_STACK_MIN = 142;
+%constant int _SC_THREAD_THREADS_MAX = 143;
+%constant int _SC_THREAD_SAFE_FUNCTIONS = 144;
+%constant int _SC_THREADS = 145;
+%constant int _SC_THREAD_ATTR_STACKSIZE = 146;
+%constant int _SC_THREAD_PRIORITY_SCHEDULING = 147;
+%constant int _SC_XOPEN_VERSION = 110;
+%constant int _SC_PASS_MAX = 111;
+%constant int _SC_XOPEN_CRYPT = 118;
+%constant int _SC_XOPEN_ENH_I18N = 119;
+%constant int _SC_XOPEN_SHM = 120;
+%constant int _SC_PAGESIZE = 117;
+%constant int _SC_PAGE_SIZE = 117; 		/* _SC_PAGESIZE */
+%constant int _SC_ATEXIT_MAX = 138; 		/* not in POSIX, but in XPG4 */
+%constant int _SC_IOV_MAX = 139; 		/* not in POSIX, but in XPG4 */
+%constant int _SC_XOPEN_UNIX = 148;
+%constant int _SC_NPROC_CONF = 200;
+%constant int _SC_NPROCESSORS_CONF = 200;	/* _SC_NPROC_CONF */
+%constant int _SC_NPROC_ONLN = 201;
+%constant int _SC_NPROCESSORS_ONLN = 201;	/* _SC_NPROC_ONLN */
+%constant int _SC_2_C_VERSION = 129;		/* _SC_2_VERSION  */
+%constant int _SC_2_CHAR_TERM = 137;
+%constant int _SC_DELAYTIMER_MAX = 112;
+%constant int _SC_TIMER_MAX = 113;
+%constant int _SC_MAPPED_FILES = 114;
+%constant int _SC_FSYNC = 115;
+%constant int _SC_TIMERS = 116;
+%constant int _SC_CPU_CHIP_TYPE = 160;
+
+%rename(fix_time) _fix_time;
+%rename(unixtime) _unixtime;
+%rename(vmstime) _vmstime;
+%rename(from_vms) _from_vms;
+%rename(to_vms) _to_vms;
+%rename(getenv) _getenv;
+%rename(sysconf) _sysconf;
+%rename(sleep) _sleep;
+%rename(dlopen_test) _dlopen_test;
+%rename(get_symbol) _get_symbol;
+
+%newobject _from_vms;
+%newobject _to_vms;
+
+extern unsigned int _fix_time(long long);
+extern unsigned int _unixtime(long long dt);
+extern long long _vmstime(unsigned int);
+extern char ** _from_vms(char *, int);
+extern char ** _to_vms(char *, int, int);
+extern char *_getenv(char *, char *);
+extern long _sysconf(int);
+extern int _sleep(unsigned int);
+extern int _dlopen_test(char *name);
+extern int _get_symbol(char *name, char** OUTPUT);
+
+
diff --git a/Modules/vms/dmtdef/dmtdef.i b/Modules/vms/dmtdef/dmtdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZG10ZGVmL2RtdGRlZi5p
--- /dev/null
+++ b/Modules/vms/dmtdef/dmtdef.i
@@ -0,0 +1,14 @@
+%module dmtdef
+
+%constant int DMT_M_NOUNLOAD = 0x1L;
+%constant int DMT_M_UNIT = 0x2L;
+%constant int DMT_M_ABORT = 0x4L;
+%constant int DMT_M_CLUSTER = 0x8L;
+%constant int DMT_M_UNLOAD = 0x10L;
+%constant int DMT_M_OVR_CHECKS = 0x20L;
+%constant int DMT_M_CHECK_ONLY = 0x40L;
+%constant int DMT_M_REMOTE = 0x80L;
+%constant int DMT_M_MINICOPY_REQUIRED = 0x100L;
+%constant int DMT_M_MINICOPY_OPTIONAL = 0x200L;
+%constant int DMT_M_FORCE = 0x400L;
+%constant int DMT_S_DMTDEF = 2;
diff --git a/Modules/vms/dpsdef/dpsdef.i b/Modules/vms/dpsdef/dpsdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHBzZGVmL2Rwc2RlZi5p
--- /dev/null
+++ b/Modules/vms/dpsdef/dpsdef.i
@@ -0,0 +1,3 @@
+%module dpsdef
+
+%constant int DPS__MP_PATHNAME = 1;
diff --git a/Modules/vms/dscdef/dscdef.i b/Modules/vms/dscdef/dscdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHNjZGVmL2RzY2RlZi5p
--- /dev/null
+++ b/Modules/vms/dscdef/dscdef.i
@@ -0,0 +1,230 @@
+%module dscdef
+
+%constant int DSC_K_DTYPE_Z = 0;
+%constant int DSC64_K_DTYPE_Z = 0;
+%constant int DSC_K_DTYPE_BU = 2;
+%constant int DSC64_K_DTYPE_BU = 2;
+%constant int DSC_K_DTYPE_WU = 3;
+%constant int DSC64_K_DTYPE_WU = 3;
+%constant int DSC_K_DTYPE_LU = 4;
+%constant int DSC64_K_DTYPE_LU = 4;
+%constant int DSC_K_DTYPE_QU = 5;
+%constant int DSC64_K_DTYPE_QU = 5;
+%constant int DSC_K_DTYPE_OU = 25;
+%constant int DSC64_K_DTYPE_OU = 25;
+%constant int DSC_K_DTYPE_B = 6;
+%constant int DSC64_K_DTYPE_B = 6;
+%constant int DSC_K_DTYPE_W = 7;
+%constant int DSC64_K_DTYPE_W = 7;
+%constant int DSC_K_DTYPE_L = 8;
+%constant int DSC64_K_DTYPE_L = 8;
+%constant int DSC_K_DTYPE_Q = 9;
+%constant int DSC64_K_DTYPE_Q = 9;
+%constant int DSC_K_DTYPE_O = 26;
+%constant int DSC64_K_DTYPE_O = 26;
+%constant int DSC_K_DTYPE_F = 10;
+%constant int DSC64_K_DTYPE_F = 10;
+%constant int DSC_K_DTYPE_D = 11;
+%constant int DSC64_K_DTYPE_D = 11;
+%constant int DSC_K_DTYPE_G = 27;
+%constant int DSC64_K_DTYPE_G = 27;
+%constant int DSC_K_DTYPE_H = 28;
+%constant int DSC64_K_DTYPE_H = 28;
+%constant int DSC_K_DTYPE_FC = 12;
+%constant int DSC64_K_DTYPE_FC = 12;
+%constant int DSC_K_DTYPE_DC = 13;
+%constant int DSC64_K_DTYPE_DC = 13;
+%constant int DSC_K_DTYPE_GC = 29;
+%constant int DSC64_K_DTYPE_GC = 29;
+%constant int DSC_K_DTYPE_HC = 30;
+%constant int DSC64_K_DTYPE_HC = 30;
+%constant int DSC_K_DTYPE_FS = 52;
+%constant int DSC64_K_DTYPE_FS = 52;
+%constant int DSC_K_DTYPE_FT = 53;
+%constant int DSC64_K_DTYPE_FT = 53;
+%constant int DSC_K_DTYPE_FSC = 54;
+%constant int DSC64_K_DTYPE_FSC = 54;
+%constant int DSC_K_DTYPE_FTC = 55;
+%constant int DSC64_K_DTYPE_FTC = 55;
+%constant int DSC_K_DTYPE_FX = 57;
+%constant int DSC64_K_DTYPE_FX = 57;
+%constant int DSC_K_DTYPE_FXC = 58;
+%constant int DSC64_K_DTYPE_FXC = 58;
+%constant int DSC_K_DTYPE_CIT = 31;
+%constant int DSC64_K_DTYPE_CIT = 31;
+%constant int DSC_K_DTYPE_T = 14;
+%constant int DSC64_K_DTYPE_T = 14;
+%constant int DSC_K_DTYPE_VT = 37;
+%constant int DSC64_K_DTYPE_VT = 37;
+%constant int DSC_K_DTYPE_T2 = 38;
+%constant int DSC64_K_DTYPE_T2 = 38;
+%constant int DSC_K_DTYPE_NU = 15;
+%constant int DSC64_K_DTYPE_NU = 15;
+%constant int DSC_K_DTYPE_NL = 16;
+%constant int DSC64_K_DTYPE_NL = 16;
+%constant int DSC_K_DTYPE_NLO = 17;
+%constant int DSC64_K_DTYPE_NLO = 17;
+%constant int DSC_K_DTYPE_NR = 18;
+%constant int DSC64_K_DTYPE_NR = 18;
+%constant int DSC_K_DTYPE_NRO = 19;
+%constant int DSC64_K_DTYPE_NRO = 19;
+%constant int DSC_K_DTYPE_NZ = 20;
+%constant int DSC64_K_DTYPE_NZ = 20;
+%constant int DSC_K_DTYPE_P = 21;
+%constant int DSC64_K_DTYPE_P = 21;
+%constant int DSC_K_DTYPE_V = 1;
+%constant int DSC64_K_DTYPE_V = 1;
+%constant int DSC_K_DTYPE_VU = 34;
+%constant int DSC64_K_DTYPE_VU = 34;
+%constant int DSC_K_DTYPE_ZI = 22;
+%constant int DSC64_K_DTYPE_ZI = 22;
+%constant int DSC_K_DTYPE_ZEM = 23;
+%constant int DSC64_K_DTYPE_ZEM = 23;
+%constant int DSC_K_DTYPE_DSC = 24;
+%constant int DSC64_K_DTYPE_DSC = 24;
+%constant int DSC_K_DTYPE_BPV = 32;
+%constant int DSC64_K_DTYPE_BPV = 32;
+%constant int DSC_K_DTYPE_BLV = 33;
+%constant int DSC64_K_DTYPE_BLV = 33;
+%constant int DSC_K_DTYPE_ADT = 35;
+%constant int DSC64_K_DTYPE_ADT = 35;
+%constant int DSC_K_DTYPE_CAD = 178;
+%constant int DSC64_K_DTYPE_CAD = 178;
+%constant int DSC_K_DTYPE_ENT = 179;
+%constant int DSC64_K_DTYPE_ENT = 179;
+%constant int DSC_K_DTYPE_GBL = 180;
+%constant int DSC64_K_DTYPE_GBL = 180;
+%constant int DSC_K_DTYPE_EPT = 181;
+%constant int DSC64_K_DTYPE_EPT = 181;
+%constant int DSC_K_DTYPE_R11 = 182;
+%constant int DSC64_K_DTYPE_R11 = 182;
+%constant int DSC_K_DTYPE_FLD = 183;
+%constant int DSC64_K_DTYPE_FLD = 183;
+%constant int DSC_K_DTYPE_PCT = 184;
+%constant int DSC64_K_DTYPE_PCT = 184;
+%constant int DSC_K_DTYPE_DPC = 185;
+%constant int DSC64_K_DTYPE_DPC = 185;
+%constant int DSC_K_DTYPE_LBL = 186;
+%constant int DSC64_K_DTYPE_LBL = 186;
+%constant int DSC_K_DTYPE_SLB = 187;
+%constant int DSC64_K_DTYPE_SLB = 187;
+%constant int DSC_K_DTYPE_MOD = 188;
+%constant int DSC64_K_DTYPE_MOD = 188;
+%constant int DSC_K_DTYPE_EOM = 189;
+%constant int DSC64_K_DTYPE_EOM = 189;
+%constant int DSC_K_DTYPE_RTN = 190;
+%constant int DSC64_K_DTYPE_RTN = 190;
+%constant int DSC_K_DTYPE_EOR = 191;
+%constant int DSC64_K_DTYPE_EOR = 191;
+%constant int DSC_K_CLASS_Z = 0;
+%constant int DSC64_K_CLASS_Z = 0;
+%constant int DSC_K_CLASS_S = 1;
+%constant int DSC64_K_CLASS_S = 1;
+%constant int DSC_K_CLASS_D = 2;
+%constant int DSC64_K_CLASS_D = 2;
+%constant int DSC_K_CLASS_V = 3;
+%constant int DSC64_K_CLASS_V = 3;
+%constant int DSC_K_CLASS_A = 4;
+%constant int DSC64_K_CLASS_A = 4;
+%constant int DSC_K_CLASS_P = 5;
+%constant int DSC64_K_CLASS_P = 5;
+%constant int DSC_K_CLASS_PI = 6;
+%constant int DSC64_K_CLASS_PI = 6;
+%constant int DSC_K_CLASS_J = 7;
+%constant int DSC64_K_CLASS_J = 7;
+%constant int DSC_K_CLASS_JI = 8;
+%constant int DSC_K_CLASS_SD = 9;
+%constant int DSC64_K_CLASS_SD = 9;
+%constant int DSC_K_CLASS_NCA = 10;
+%constant int DSC64_K_CLASS_NCA = 10;
+%constant int DSC_K_CLASS_VS = 11;
+%constant int DSC64_K_CLASS_VS = 11;
+%constant int DSC_K_CLASS_VSA = 12;
+%constant int DSC64_K_CLASS_VSA = 12;
+%constant int DSC_K_CLASS_UBS = 13;
+%constant int DSC64_K_CLASS_UBS = 13;
+%constant int DSC_K_CLASS_UBA = 14;
+%constant int DSC64_K_CLASS_UBA = 14;
+%constant int DSC_K_CLASS_SB = 15;
+%constant int DSC64_K_CLASS_SB = 15;
+%constant int DSC_K_CLASS_UBSB = 16;
+%constant int DSC64_K_CLASS_UBSB = 16;
+%constant int DSC_K_CLASS_BFA = 191;
+%constant int DSC_S_DSCDEF = 14;
+%constant int DSC_S_DSCDEF1 = 8;
+%constant int DSC_K_Z_BLN = 8;
+%constant int DSC_C_Z_BLN = 8;
+%constant int DSC_K_S_BLN = 8;
+%constant int DSC_C_S_BLN = 8;
+%constant int DSC_K_D_BLN = 8;
+%constant int DSC_C_D_BLN = 8;
+%constant int DSC_K_P_BLN = 8;
+%constant int DSC_C_P_BLN = 8;
+%constant int DSC_K_J_BLN = 8;
+%constant int DSC_C_J_BLN = 8;
+%constant int DSC_K_VS_BLN = 8;
+%constant int DSC_C_VS_BLN = 8;
+%constant int DSC_S_DSCDEF2 = 8;
+%constant int DSC_K_UBS_BLN = 12;
+%constant int DSC_C_UBS_BLN = 12;
+%constant int DSC_S_DSCDEF3 = 12;
+%constant int DSC_S_DSCDEF4 = 12;
+%constant int DSC_K_SD_BLN = 12;
+%constant int DSC_C_SD_BLN = 12;
+%constant int DSC_S_DSCDEF5 = 20;
+%constant int DSC_S_DSCDEF6 = 28;
+%constant int DSC_S_DSCDEF7 = 28;
+%constant int DSC_K_PI_BLN = 12;
+%constant int DSC_C_PI_BLN = 12;
+%constant int DSC_K_JI_BLN = 12;
+%constant int DSC_C_JI_BLN = 12;
+%constant int DSC_S_DSCDEF8 = 12;
+%constant int DSC_S_DSCDEF9 = 16;
+%constant int DSC_S_DSCDEF10 = 20;
+%constant int DSC64_S_DSCDEF64 = 16;
+%constant int DSC64_S_LENGTH = 8;
+%constant int DSC64_S_DSCDEF1_64 = 24;
+%constant int DSC64_S_MAXSTRLEN = 8;
+%constant int DSC64_S_POINTER = 8;
+%constant int DSC64_K_Z_BLN = 24;
+%constant int DSC64_C_Z_BLN = 24;
+%constant int DSC64_K_S_BLN = 24;
+%constant int DSC64_C_S_BLN = 24;
+%constant int DSC64_K_D_BLN = 24;
+%constant int DSC64_C_D_BLN = 24;
+%constant int DSC64_K_P_BLN = 24;
+%constant int DSC64_C_P_BLN = 24;
+%constant int DSC64_K_J_BLN = 24;
+%constant int DSC64_C_J_BLN = 24;
+%constant int DSC64_K_VS_BLN = 24;
+%constant int DSC64_C_VS_BLN = 24;
+%constant int DSC64_S_DSCDEF2_64 = 24;
+%constant int DSC64_S_BASE = 8;
+%constant int DSC64_K_UBS_BLN = 32;
+%constant int DSC64_C_UBS_BLN = 32;
+%constant int DSC64_S_DSCDEF3_64 = 32;
+%constant int DSC64_S_POS = 8;
+%constant int DSC64_K_SD_BLN = 32;
+%constant int DSC64_C_SD_BLN = 32;
+%constant int DSC64_S_DSCDEF5_64 = 48;
+%constant int DSC64_S_ARSIZE = 8;
+%constant int DSC64_S_A0 = 8;
+%constant int DSC64_S_DSCDEF6_64 = 64;
+%constant int DSC64_S_V0 = 8;
+%constant int DSC64_S_S1 = 8;
+%constant int DSC64_S_S2 = 8;
+%constant int DSC64_S_DSCDEF7_64 = 64;
+%constant int DSC64_S_M1 = 8;
+%constant int DSC64_S_M2 = 8;
+%constant int DSC64_K_PI_BLN = 32;
+%constant int DSC64_C_PI_BLN = 32;
+%constant int DSC64_K_JI_BLN = 32;
+%constant int DSC64_C_JI_BLN = 32;
+%constant int DSC64_S_DSCDEF8_64 = 32;
+%constant int DSC64_S_FRAME = 8;
+%constant int DSC64_S_DSCDEF9_64 = 40;
+%constant int DSC64_S_SB_L1 = 8;
+%constant int DSC64_S_SB_U1 = 8;
+%constant int DSC64_S_DSCDEF10_64 = 48;
+%constant int DSC64_S_UBSB_L1 = 8;
+%constant int DSC64_S_UBSB_U1 = 8;
diff --git a/Modules/vms/dtr/dtr.c b/Modules/vms/dtr/dtr.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5j
--- /dev/null
+++ b/Modules/vms/dtr/dtr.c
@@ -0,0 +1,501 @@
+#include <stdio.h>
+#include <str$routines.h>
+#include <lib$routines.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <ssdef.h>
+#include <unixlib.h>
+#include "dtr.h"
+#include "lcl.h"
+
+
+#ifndef dtr_Assert
+#define dtr_Assert(x) \
+    do { \
+        if ((!(x))) { \
+            fprintf(stderr, "Assertion failed: %s (%s: %d)\n", #x, __FILE__, __LINE__); \
+            abort(); \
+        } \
+    } while (0)
+#endif
+
+#ifndef OKAY
+#define OKAY(status) (((status) & 1) != 0)
+#endif
+
+
+extern void REC_load(void *, void *, unsigned short);
+extern void REC_pack(void *, unsigned short, void *, unsigned short *);
+
+#define MSG_BUF_LEN 255
+#define AUX_BUF_LEN 255
+#define TMP_BUF_LEN 255
+
+
+unsigned int _command(unsigned int obj, char *str, int *condition, unsigned short *state)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    struct dsc$descriptor_s str_dsc;
+
+    dtr_Assert(dab);
+    dtr_Assert(str);
+
+    str_dsc.dsc$w_length = strlen(str);
+    str_dsc.dsc$b_class = DSC$K_CLASS_S;
+    str_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    str_dsc.dsc$a_pointer = str;
+
+    status = dtr$command(dab, &str_dsc);
+
+    if (condition) {
+	*condition = dab->dab$l_condition;
+    }
+
+    if (state) {
+	*state = dab->dab$w_state;
+    }
+
+    return (status);
+}
+
+
+unsigned int _continue(unsigned int obj, int *condition, unsigned short *state)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+
+    dtr_Assert(dab);
+    status = dtr$continue(dab);
+
+    if (condition) {
+	*condition = dab->dab$l_condition;
+    }
+
+    if (state) {
+	*state = dab->dab$w_state;
+    }
+
+    return (status);
+}
+
+
+unsigned int _create_udk(unsigned int obj, char *str, short index, short context)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    struct dsc$descriptor_s str_dsc;
+
+    dtr_Assert(dab);
+    dtr_Assert(str);
+
+    str_dsc.dsc$w_length = strlen(str);
+    str_dsc.dsc$b_class = DSC$K_CLASS_S;
+    str_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    str_dsc.dsc$a_pointer = str;
+
+    status = dtr$create_udk(dab, &str_dsc, &index, &context);
+    return (status);
+}
+
+
+
+unsigned int _end_udk(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+
+    dtr_Assert(dab);
+    status = dtr$end_udk(dab);
+    return (status);
+}
+
+
+unsigned int _finish(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+
+    dtr_Assert(dab);
+    status = dtr$finish(dab);
+
+    if (dab->dab$a_msg_buf) {
+	free(dab->dab$a_msg_buf);
+    }
+
+    if (dab->dab$a_aux_buf) {
+	free(dab->dab$a_aux_buf);
+    }
+
+    free(dab);
+    return (status);
+}
+
+
+unsigned int _get_port(unsigned int obj, void *loc)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    LCL_rec *rec = (LCL_rec *) loc;
+
+    dtr_Assert(dab);
+    dtr_Assert(rec);
+
+    status = dtr$get_port(dab, rec->buf);
+
+    if (OKAY(status)) {
+	REC_load(rec, rec->buf, rec->len);
+    }
+
+    return (status);
+}
+
+
+unsigned int _get_string(unsigned int obj, int type, char **str, char *cmp)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    char tmp[TMP_BUF_LEN + 1];
+    unsigned short len;
+    struct dsc$descriptor_s tmp_dsc;
+    struct dsc$descriptor_s cmp_dsc;
+
+    dtr_Assert(dab);
+    dtr_Assert(str);
+
+    if (cmp) {
+	cmp_dsc.dsc$w_length = strlen(cmp);
+	cmp_dsc.dsc$b_class = DSC$K_CLASS_S;
+	cmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	cmp_dsc.dsc$a_pointer = cmp;
+    }
+
+    tmp_dsc.dsc$w_length = TMP_BUF_LEN;
+    tmp_dsc.dsc$b_class = DSC$K_CLASS_S;
+    tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    tmp_dsc.dsc$a_pointer = tmp;
+
+    status =
+	dtr$get_string(dab, (long *) &type, &tmp_dsc, &len,
+		       cmp ? &cmp_dsc : NULL);
+
+    if (OKAY(status)) {
+	tmp[len] = '\0';
+	dtr_Assert((*str = strdup(tmp)));
+    }
+
+    return (status);
+}
+
+
+unsigned int _info(unsigned int obj,
+		   int id, char code, int *ret, char **str, int index)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    char tmp[TMP_BUF_LEN + 1];
+    unsigned short len;
+    struct dsc$descriptor_s tmp_dsc;
+
+    dtr_Assert(dab);
+    dtr_Assert(ret);
+
+    if (str) {
+	tmp_dsc.dsc$w_length = TMP_BUF_LEN;
+	tmp_dsc.dsc$b_class = DSC$K_CLASS_S;
+	tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	tmp_dsc.dsc$a_pointer = tmp;
+    }
+
+    status =
+	dtr$info(dab, (long *) &id, &code, (long *) ret,
+		 str ? &tmp_dsc : NULL, index);
+
+    if (OKAY(status)) {
+	if (str) {
+	    str$trim(&tmp_dsc, &tmp_dsc, &len);
+	    tmp[len] = '\0';
+	    dtr_Assert((*str = strdup(tmp)));
+	}
+    }
+
+    return (status);
+}
+
+
+unsigned int _init(unsigned int *obj, int size, int options)
+{
+    DTR_access_block *dab = NULL;
+    unsigned int status;
+
+#ifdef __PYTHON
+    int old = -1, idx = -1;
+    if ((idx = decc$feature_get_index("DECC$UNIX_LEVEL")) >= 0) {
+	old = decc$feature_set_value(idx, 1, 0);
+    }
+#endif
+
+    dtr_Assert(obj);
+    dtr_Assert((dab = malloc(sizeof(DTR_access_block))));
+
+    dtr_Assert((dab->dab$a_msg_buf = malloc(MSG_BUF_LEN + 1)));
+    dab->dab$w_msg_buf_len = MSG_BUF_LEN;
+
+    dtr_Assert((dab->dab$a_aux_buf = malloc(MSG_BUF_LEN + 1)));
+    dab->dab$w_aux_buf_len = MSG_BUF_LEN;
+
+    status =
+	dtr$init(dab, size ? &size : NULL, NULL, NULL,
+		 options ? &options : NULL);
+
+#ifdef __PYTHON
+    if (idx >= 0) {
+	decc$feature_set_value(idx, 1, old);
+    }
+#endif
+
+    if (!OKAY(status)) {
+	free(dab->dab$a_msg_buf);
+	free(dab->dab$a_aux_buf);
+	free(dab);
+	return (status);
+    }
+
+    *obj = (unsigned int) dab;
+    return (status);
+}
+
+
+unsigned int _lookup(unsigned int obj, char type, int *id, char *name)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    struct dsc$descriptor_s name_dsc;
+
+    dtr_Assert(dab);
+    dtr_Assert(id);
+
+    if (name) {
+	name_dsc.dsc$w_length = strlen(name);
+	name_dsc.dsc$b_class = DSC$K_CLASS_S;
+	name_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	name_dsc.dsc$a_pointer = name;
+    }
+
+    status = dtr$lookup(dab, &type, (long *) id, name ? &name_dsc : NULL);
+    return (status);
+}
+
+
+unsigned int _port_eof(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+
+    dtr_Assert(dab);
+    status = dtr$port_eof(dab);
+    return (status);
+}
+
+
+unsigned int _put_port(unsigned int obj, void *loc)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    LCL_rec *rec = (LCL_rec *) loc;
+    unsigned short len;
+
+    dtr_Assert(dab);
+    dtr_Assert(rec);
+
+    REC_pack(rec->buf, rec->len, loc, &len);
+    status = dtr$put_port(dab, rec->buf);
+    return (status);
+}
+
+
+
+unsigned int _put_value(unsigned int obj, char *val)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned int status;
+    struct dsc$descriptor_s val_dsc;
+
+    dtr_Assert(dab);
+
+    if (val) {
+	val_dsc.dsc$w_length = strlen(val);
+	val_dsc.dsc$b_class = DSC$K_CLASS_S;
+	val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	val_dsc.dsc$a_pointer = val;
+    }
+
+    status = dtr$put_value(dab, val ? &val_dsc : NULL);
+    return (status);
+}
+
+
+unsigned int _unwind(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dtr$unwind(dab));
+}
+
+
+unsigned int _condition(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dab->dab$l_condition);
+}
+
+
+unsigned int _state(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dab->dab$w_state);
+}
+
+
+char *_msg_buf(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned short len;
+    struct dsc$descriptor_s tmp_dsc;
+    char *val;
+
+    tmp_dsc.dsc$w_length = MSG_BUF_LEN;
+    tmp_dsc.dsc$b_class = DSC$K_CLASS_S;
+    tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    tmp_dsc.dsc$a_pointer = dab->dab$a_msg_buf;
+
+    str$trim(&tmp_dsc, &tmp_dsc, &len);
+
+    dab->dab$a_msg_buf[len] = '\0';
+    dtr_Assert((val = strdup(dab->dab$a_msg_buf)));
+    return (val);
+}
+
+
+char *_aux_buf(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    unsigned short len;
+    struct dsc$descriptor_s tmp_dsc;
+    char *val;
+
+    tmp_dsc.dsc$w_length = AUX_BUF_LEN;
+    tmp_dsc.dsc$b_class = DSC$K_CLASS_S;
+    tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    tmp_dsc.dsc$a_pointer = dab->dab$a_aux_buf;
+
+    str$trim(&tmp_dsc, &tmp_dsc, &len);
+
+    dab->dab$a_aux_buf[len] = '\0';
+    dtr_Assert((val = strdup(dab->dab$a_aux_buf)));
+    return (val);
+}
+
+
+unsigned int _get_options(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dab->dab$l_options);
+}
+
+
+unsigned int _set_options(unsigned int obj, unsigned int options)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    dab->dab$l_options = dab->dab$l_options | options;
+    return (dab->dab$l_options);
+}
+
+
+unsigned int _clear_options(unsigned int obj, unsigned int options)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    dab->dab$l_options = dab->dab$l_options & (~options);
+    return (dab->dab$l_options);
+}
+
+
+unsigned int _get_rec_len(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dab->dab$w_rec_length);
+}
+
+
+unsigned int _get_flags(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dab->dab$l_flags);
+}
+
+
+unsigned int _get_udk_index(unsigned int obj)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dab->dab$w_udk_index);
+}
+
+
+
+unsigned int _dtr(unsigned int obj, int opt)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    dtr_Assert(dab);
+    return (dtr$dtr(dab, (long *) &opt));
+}
+
+
+unsigned int _skip(unsigned int obj, unsigned int n)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    int i;
+    unsigned int status = SS$_NORMAL;
+
+    dtr_Assert(dab);
+
+    for (i = 0; i < n; i++) {
+    	if (dab->dab$w_state != DTR$K_STL_LINE) {
+	    break;
+	}
+
+	status = dtr$continue(dab);
+
+	if (! OKAY(status)) {
+	    break;
+	}
+    }
+
+    return (status);
+
+}
+
+
+
+extern int rsscanf(const char *buffer, const char *format, char ***argv);
+
+char **_row(unsigned int obj, char *fmt)
+{
+    DTR_access_block *dab = (DTR_access_block *) obj;
+    char **arr = NULL;
+
+    dtr_Assert(dab);
+    dtr_Assert(fmt);
+
+    rsscanf(dab->dab$a_msg_buf, fmt, &arr);
+    dtr$continue(dab);
+    return (arr);
+}
diff --git a/Modules/vms/dtr/dtr.h b/Modules/vms/dtr/dtr.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5o
--- /dev/null
+++ b/Modules/vms/dtr/dtr.h
@@ -0,0 +1,50 @@
+#ifndef __DTR_H__
+#define __DTR_H__
+
+#pragma names save
+#pragma names uppercase
+#include "dab.h"		/* DATATRIEVE definitions */
+
+
+
+
+
+#pragma names restore
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    extern unsigned int _command(unsigned int, char *, int *, unsigned short *);
+    extern unsigned int _continue(unsigned int, int *, unsigned short *);
+    extern unsigned int _create_udk(unsigned int, char *, short, short);
+    extern unsigned int _end_udk(unsigned int);
+    extern unsigned int _finish(unsigned int);
+    extern unsigned int _get_port(unsigned int, void *);
+    extern unsigned int _get_string(unsigned int, int, char **, char *);
+    extern unsigned int _info(unsigned int, int, char, int *, char **, int);
+    extern unsigned int _init(unsigned int *, int, int);
+    extern unsigned int _lookup(unsigned int, char, int *, char *);
+    extern unsigned int _port_eof(unsigned int);
+    extern unsigned int _put_port(unsigned int, void *);
+    extern unsigned int _put_value(unsigned int, char *);
+    extern unsigned int _unwind(unsigned int);
+    extern unsigned int _condition(unsigned int);
+    extern unsigned int _state(unsigned int);
+    extern char *_msg_buf(unsigned int);
+    extern char *_aux_buf(unsigned int);
+    extern unsigned int _get_options(unsigned int);
+    extern unsigned int _set_options(unsigned int, unsigned int);
+    extern unsigned int _clear_options(unsigned int, unsigned int);
+    extern unsigned int _get_rec_len(unsigned int);
+    extern unsigned int _get_flags(unsigned int);
+    extern unsigned int _get_udk_index(unsigned int);
+    extern unsigned int _dtr(unsigned int, int);
+    extern unsigned int _skip(unsigned int, unsigned int);
+    extern char **_row(unsigned int, char *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Modules/vms/dtr/dtr.i b/Modules/vms/dtr/dtr.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5p
--- /dev/null
+++ b/Modules/vms/dtr/dtr.i
@@ -0,0 +1,243 @@
+%module dtr
+
+%{
+#include "dtr.h"
+%}
+
+%include "typemaps.i"
+%include <cstring.i>
+%cstring_output_allocate(char **OUTPUT, free(*$1));
+
+%typemap(out) char *
+{
+   resultobj = SWIG_FromCharPtr((const char *)result);
+   free(result);
+}
+
+%typemap(out) char** {
+  int len,i;
+  if ($1 == NULL) {
+      $result = Py_None;
+  } else {
+      len = 0;
+      while ($1[len]) len++;
+      $result = PyList_New(len);
+      for (i = 0; i < len; i++) {
+        PyList_SetItem($result, i, PyString_FromString($1[i]));
+	free($1[i]);
+      }
+      free($1);
+  }
+}
+
+%constant int _K_STL_CMD = DTR$K_STL_CMD;
+%constant int _K_STL_PRMPT = DTR$K_STL_PRMPT;
+%constant int _K_STL_LINE = DTR$K_STL_LINE;
+%constant int _K_STL_MSG = DTR$K_STL_MSG;
+%constant int _K_STL_PGET = DTR$K_STL_PGET;
+%constant int _K_STL_PPUT = DTR$K_STL_PPUT;
+%constant int _K_STL_CONT = DTR$K_STL_CONT;
+%constant int _K_STL_UDK = DTR$K_STL_UDK;
+%constant int _K_STL_END_UDK = DTR$K_STL_END_UDK;
+
+%constant int _K_SEMI_COLON_OPT = DTR_K_SEMI_COLON_OPT;
+%constant int _K_UNQUOTED_LIT = DTR_K_UNQUOTED_LIT;
+%constant int _K_SYNTAX_PROMPT = DTR_K_SYNTAX_PROMPT;
+%constant int _K_IMMED_RETURN = DTR_K_IMMED_RETURN;
+%constant int _K_FORMS_ENABLE = DTR_K_FORMS_ENABLE;
+%constant int _K_VERIFY = DTR_K_VERIFY;
+%constant int _K_BIG_ENDIAN = DTR_K_BIG_ENDIAN;
+%constant int _K_IEEE_FLOAT = DTR_K_IEEE_FLOAT;
+%constant int _K_CONTEXT_SEARCH = DTR_K_CONTEXT_SEARCH;
+%constant int _K_HYPHEN_DISABLED = DTR_K_HYPHEN_DISABLED;
+%constant int _K_MORE_COMMANDS = DTR_K_MORE_COMMANDS;
+%constant int _K_ABORT = DTR_K_ABORT;
+%constant int _K_LOCK_WAIT = DTR_K_LOCK_WAIT;
+%constant int _K_FN_PORT_SUPPORT = DTR_K_FN_PORT_SUPPORT;
+%constant int _K_DATE_STR = DTR_K_DATE_STR;
+%constant int _K_RET_ON_PRINT_ERROR = DTR_K_RET_ON_PRINT_ERROR;
+%constant int _K_GET_ROUTINES_SUPPORT = DTR_K_GET_ROUTINES_SUPPORT;
+
+%constant int _M_OPT_CMD = DTR$M_OPT_CMD;
+%constant int _M_OPT_PRMPT = DTR$M_OPT_PRMPT;
+%constant int _M_OPT_LINE = DTR$M_OPT_LINE;
+%constant int _M_OPT_MSG = DTR$M_OPT_MSG;
+%constant int _M_OPT_PGET = DTR$M_OPT_PGET;
+%constant int _M_OPT_PPUT = DTR$M_OPT_PPUT;
+%constant int _M_OPT_CONT = DTR$M_OPT_CONT;
+%constant int _M_OPT_UDK = DTR$M_OPT_UDK;
+%constant int _M_OPT_DTR_UDK = DTR$M_OPT_DTR_UDK;
+%constant int _M_OPT_END_UDK = DTR$M_OPT_END_UDK;
+%constant int _M_OPT_UNWIND = DTR$M_OPT_UNWIND;
+%constant int _M_OPT_CONTROL_C = DTR$M_OPT_CONTROL_C;
+%constant int _M_OPT_STARTUP = DTR$M_OPT_STARTUP;
+%constant int _M_OPT_FOREIGN = DTR$M_OPT_FOREIGN;
+%constant int _M_OPT_BANNER = DTR$M_OPT_BANNER;
+%constant int _M_OPT_REMOVE_CTLC = DTR$M_OPT_REMOVE_CTLC;
+%constant int _M_OPT_KEYDEFS = DTR$M_OPT_KEYDEFS;
+
+%constant int _K_UDK_SET = DTR$K_UDK_SET;
+%constant int _K_UDK_SET_NO = DTR$K_UDK_SET_NO;
+%constant int _K_UDK_SHOW = DTR$K_UDK_SHOW;
+%constant int _K_UDK_STATEMENT = DTR$K_UDK_STATEMENT;
+%constant int _K_UDK_COMMAND = DTR$K_UDK_COMMAND;
+
+%constant int _K_TOK_TOKEN = DTR$K_TOK_TOKEN;
+%constant int _K_TOK_PICTURE = DTR$K_TOK_PICTURE;
+%constant int _K_TOK_FILENAME = DTR$K_TOK_FILENAME;
+%constant int _K_TOK_COMMAND = DTR$K_TOK_COMMAND;
+%constant int _K_TOK_TEST_TOKEN = DTR$K_TOK_TEST_TOKEN;
+%constant int _K_TOK_LIST_ELEMENT = DTR$K_TOK_LIST_ELEMENT;
+%constant int _K_TOK_TEST_EOL = DTR$K_TOK_TEST_EOL;
+
+%constant int _SUCCESS = DTR_SUCCESS;
+
+%constant int _K_INF_TYPE_DOMAIN = DTR$K_INF_TYPE_DOMAIN;
+%constant int _K_INF_TYPE_COLLECTION = DTR$K_INF_TYPE_COLLECTION;
+%constant int _K_INF_TYPE_KEYWORD = DTR$K_INF_TYPE_KEYWORD;
+%constant int _K_INF_TYPE_DIC_NAME = DTR$K_INF_TYPE_DIC_NAME;
+%constant int _K_INF_TYPE_GLV = DTR$K_INF_TYPE_GLV;
+%constant int _K_INF_TYPE_PLOT = DTR$K_INF_TYPE_PLOT;
+
+%constant int _K_INF_DOM_FLD = DTR$K_INF_DOM_FLD;
+%constant int _K_INF_DOM_FORM = DTR$K_INF_DOM_FORM;
+%constant int _K_INF_DOM_SHARE = DTR$K_INF_DOM_SHARE;
+%constant int _K_INF_DOM_ACCESS = DTR$K_INF_DOM_ACCESS;
+%constant int _K_INF_DOM_NAME = DTR$K_INF_DOM_NAME;
+%constant int _K_INF_DOM_NEXT_DOM = DTR$K_INF_DOM_NEXT_DOM;
+%constant int _K_INF_DOM_SSC = DTR$K_INF_DOM_SSC;
+%constant int _K_INF_DOM_REC_LEN = DTR$K_INF_DOM_REC_LEN;
+
+%constant int _K_INF_FLD_NAME = DTR$K_INF_FLD_NAME;
+%constant int _K_INF_FLD_QNAME = DTR$K_INF_FLD_QNAME;
+%constant int _K_INF_FLD_PICTURE = DTR$K_INF_FLD_PICTURE;
+%constant int _K_INF_FLD_EDIT = DTR$K_INF_FLD_EDIT;
+%constant int _K_INF_FLD_DTYPE = DTR$K_INF_FLD_DTYPE;
+%constant int _K_INF_FLD_OFFSET = DTR$K_INF_FLD_OFFSET;
+%constant int _K_INF_FLD_LENGTH = DTR$K_INF_FLD_LENGTH;
+%constant int _K_INF_FLD_SCALE = DTR$K_INF_FLD_SCALE;
+%constant int _K_INF_FLD_CHILD = DTR$K_INF_FLD_CHILD;
+%constant int _K_INF_FLD_CNT = DTR$K_INF_FLD_CNT;
+%constant int _K_INF_FLD_LIST = DTR$K_INF_FLD_LIST;
+%constant int _K_INF_FLD_REDEFINES = DTR$K_INF_FLD_REDEFINES;
+%constant int _K_INF_FLD_VIRTUAL = DTR$K_INF_FLD_VIRTUAL;
+%constant int _K_INF_FLD_FILLER = DTR$K_INF_FLD_FILLER;
+%constant int _K_INF_FLD_MISSING = DTR$K_INF_FLD_MISSING;
+%constant int _K_INF_FLD_MISSING_TXT = DTR$K_INF_FLD_MISSING_TXT;
+%constant int _K_INF_FLD_SEG_STRING = DTR$K_INF_FLD_SEG_STRING;
+
+%constant int _K_INF_COL_CURSOR = DTR$K_INF_COL_CURSOR;
+%constant int _K_INF_COL_SIZE = DTR$K_INF_COL_SIZE;
+%constant int _K_INF_COL_FLD = DTR$K_INF_COL_FLD;
+%constant int _K_INF_COL_DROPPED = DTR$K_INF_COL_DROPPED;
+%constant int _K_INF_COL_ERASED = DTR$K_INF_COL_ERASED;
+%constant int _K_INF_COL_INVISIBLE = DTR$K_INF_COL_INVISIBLE;
+%constant int _K_INF_COL_NAME = DTR$K_INF_COL_NAME;
+%constant int _K_INF_COL_NEXT_COL = DTR$K_INF_COL_NEXT_COL;
+
+%constant int _K_INF_GLV_FIRST_DOM = DTR$K_INF_GLV_FIRST_DOM;
+%constant int _K_INF_GLV_FIRST_COL = DTR$K_INF_GLV_FIRST_COL;
+%constant int _K_INF_GLV_FIRST_SSC = DTR$K_INF_GLV_FIRST_SSC;
+%constant int _K_INF_GLV_DEF_DIC = DTR$K_INF_GLV_DEF_DIC;
+
+%constant int _K_INF_FRM_NAME = DTR$K_INF_FRM_NAME;
+%constant int _K_INF_FRM_LIBRARY = DTR$K_INF_FRM_LIBRARY;
+
+%constant int _K_INF_SSC_NAME = DTR$K_INF_SSC_NAME;
+%constant int _K_INF_SSC_SET = DTR$K_INF_SSC_SET;
+%constant int _K_INF_SSC_NEXT = DTR$K_INF_SSC_NEXT;
+
+%constant int _K_INF_SET_NAME = DTR$K_INF_SET_NAME;
+%constant int _K_INF_SET_NEXT = DTR$K_INF_SET_NEXT;
+%constant int _K_INF_SET_SDP = DTR$K_INF_SET_SDP;
+%constant int _K_INF_SET_SINGULAR = DTR$K_INF_SET_SINGULAR;
+
+%constant int _K_INF_SDP_NEXT = DTR$K_INF_SDP_NEXT;
+%constant int _K_INF_SDP_DOMAIN = DTR$K_INF_SDP_DOMAIN;
+%constant int _K_INF_SDP_TENANCY = DTR$K_INF_SDP_TENANCY;
+%constant int _K_INF_SDP_INSERT = DTR$K_INF_SDP_INSERT;
+%constant int _K_INF_SDP_RETAIN = DTR$K_INF_SDP_RETAIN;
+
+%constant int _K_INF_FLD_QHDR = DTR$K_INF_FLD_QHDR;
+
+%constant int _K_INF_HDR_CNT = DTR$K_INF_HDR_CNT;
+%constant int _K_INF_HDR_STRING = DTR$K_INF_HDR_STRING;
+
+%constant int _K_INF_GLV_STA_OBJ = DTR$K_INF_GLV_STA_OBJ;
+%constant int _K_INF_GLV_STA_CNT = DTR$K_INF_GLV_STA_CNT;
+%constant int _K_INF_GLV_STA_LINE = DTR$K_INF_GLV_STA_LINE;
+
+%constant int _K_INF_PLO_CNT = DTR$K_INF_PLO_CNT;
+%constant int _K_INF_PLO_PAI = DTR$K_INF_PLO_PAI;
+
+%constant int _K_INF_PAI_PROMPT = DTR$K_INF_PAI_PROMPT;
+%constant int _K_INF_PAI_DTYPE = DTR$K_INF_PAI_DTYPE;
+
+%constant int _K_INF_DOM_ACCESS_READ = DTR$K_INF_DOM_ACCESS_READ;
+%constant int _K_INF_DOM_ACCESS_WRITE = DTR$K_INF_DOM_ACCESS_WRITE;
+%constant int _K_INF_DOM_ACCESS_MODIFY = DTR$K_INF_DOM_ACCESS_MODIFY;
+%constant int _K_INF_DOM_ACCESS_EXTEND = DTR$K_INF_DOM_ACCESS_EXTEND;
+
+%constant int _K_INF_DOM_SHARE_EXCLUSIVE = DTR$K_INF_DOM_SHARE_EXCLUSIVE;
+%constant int _K_INF_DOM_SHARE_SHARED = DTR$K_INF_DOM_SHARE_SHARED;
+%constant int _K_INF_DOM_SHARE_PROTECT = DTR$K_INF_DOM_SHARE_PROTECT;
+
+%constant int _NTS = DTR_NTS;
+
+%rename(command) _command;
+%rename(cont) _continue;
+%rename(create_udk) _create_udk;
+%rename(dtr) _dtr;
+%rename(end_udk) _end_udk;
+%rename(finish) _finish;
+%rename(get_port) _get_port;
+%rename(get_string) _get_string;
+%rename(info) _info;
+%rename(init) _init;
+%rename(lookup) _lookup;
+%rename(port_eof) _port_eof;
+%rename(put_port) _put_port;
+%rename(put_value) _put_value;
+%rename(unwind) _unwind;
+%rename(condition) _condition;
+%rename(state) _state;
+%rename(msg_buf) _msg_buf;
+%rename(aux_buf) _aux_buf;
+%rename(get_options) _get_options;
+%rename(set_options) _set_options;
+%rename(clear_options) _clear_options;
+%rename(get_rec_len) _get_rec_len;
+%rename(get_flags) _get_flags;
+%rename(get_udk_index) _get_udk_index;
+%rename(dtr) _dtr;
+%rename(skip) _skip;
+%rename(row) _row;
+
+unsigned int _command(unsigned int, char *, int *OUTPUT, unsigned short *OUTPUT);
+unsigned int _continue(unsigned int, int *OUTPUT, unsigned short *OUTPUT);
+unsigned int _create_udk(unsigned int, char *, short, short);
+unsigned int _end_udk(unsigned int);
+unsigned int _finish(unsigned int);
+unsigned int _get_port(unsigned int, void *);
+unsigned int _get_string(unsigned int, int, char **OUTPUT, char *);
+unsigned int _info(unsigned int, int, char, int *OUTPUT, char **OUTPUT, int);
+unsigned int _init(unsigned int *OUTPUT, int, int);
+unsigned int _lookup(unsigned int, char, int *OUTPUT, char *);
+unsigned int _port_eof(unsigned int);
+unsigned int _put_port(unsigned int, void *);
+unsigned int _put_value(unsigned int, char *);
+unsigned int _unwind(unsigned int);
+unsigned int _condition(unsigned int);
+unsigned int _state(unsigned int);
+char *_msg_buf(unsigned int);
+char *_aux_buf(unsigned int);
+unsigned int _get_options(unsigned int);
+unsigned int _set_options(unsigned int, unsigned int);
+unsigned int _clear_options(unsigned int, unsigned int);
+unsigned int _get_rec_len(unsigned int);
+unsigned int _get_flags(unsigned int);
+unsigned int _get_udk_index(unsigned int);
+unsigned int _dtr(unsigned int, int);
+unsigned int _skip(unsigned int, unsigned int);
+char **_row(unsigned int, char *);
+
diff --git a/Modules/vms/dtr/dtr.py b/Modules/vms/dtr/dtr.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5weQ==
--- /dev/null
+++ b/Modules/vms/dtr/dtr.py
@@ -0,0 +1,593 @@
+# This file was automatically generated by SWIG (http://www.swig.org).
+# Version 3.0.5
+#
+# Do not make changes to this file unless you know what you are doing--modify
+# the SWIG interface file instead.
+
+
+
+
+
+from sys import version_info
+if version_info >= (2, 6, 0):
+    def swig_import_helper():
+        from os.path import dirname
+        import imp
+        fp = None
+        try:
+            fp, pathname, description = imp.find_module('_dtr', [dirname(__file__)])
+        except ImportError:
+            import _dtr
+            return _dtr
+        if fp is not None:
+            try:
+                _mod = imp.load_module('_dtr', fp, pathname, description)
+            finally:
+                fp.close()
+            return _mod
+    _dtr = swig_import_helper()
+    del swig_import_helper
+else:
+    import _dtr
+del version_info
+try:
+    _swig_property = property
+except NameError:
+    pass  # Python < 2.2 doesn't have 'property'.
+
+
+def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
+    if (name == "thisown"):
+        return self.this.own(value)
+    if (name == "this"):
+        if type(value).__name__ == 'SwigPyObject':
+            self.__dict__[name] = value
+            return
+    method = class_type.__swig_setmethods__.get(name, None)
+    if method:
+        return method(self, value)
+    if (not static):
+        object.__setattr__(self, name, value)
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+
+def _swig_setattr(self, class_type, name, value):
+    return _swig_setattr_nondynamic(self, class_type, name, value, 0)
+
+
+def _swig_getattr_nondynamic(self, class_type, name, static=1):
+    if (name == "thisown"):
+        return self.this.own()
+    method = class_type.__swig_getmethods__.get(name, None)
+    if method:
+        return method(self)
+    if (not static):
+        return object.__getattr__(self, name)
+    else:
+        raise AttributeError(name)
+
+def _swig_getattr(self, class_type, name):
+    return _swig_getattr_nondynamic(self, class_type, name, 0)
+
+
+def _swig_repr(self):
+    try:
+        strthis = "proxy of " + self.this.__repr__()
+    except:
+        strthis = ""
+    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
+
+try:
+    _object = object
+    _newclass = 1
+except AttributeError:
+    class _object:
+        pass
+    _newclass = 0
+
+
+
+_dtr._K_STL_CMD_swigconstant(_dtr)
+_K_STL_CMD = _dtr._K_STL_CMD
+
+_dtr._K_STL_PRMPT_swigconstant(_dtr)
+_K_STL_PRMPT = _dtr._K_STL_PRMPT
+
+_dtr._K_STL_LINE_swigconstant(_dtr)
+_K_STL_LINE = _dtr._K_STL_LINE
+
+_dtr._K_STL_MSG_swigconstant(_dtr)
+_K_STL_MSG = _dtr._K_STL_MSG
+
+_dtr._K_STL_PGET_swigconstant(_dtr)
+_K_STL_PGET = _dtr._K_STL_PGET
+
+_dtr._K_STL_PPUT_swigconstant(_dtr)
+_K_STL_PPUT = _dtr._K_STL_PPUT
+
+_dtr._K_STL_CONT_swigconstant(_dtr)
+_K_STL_CONT = _dtr._K_STL_CONT
+
+_dtr._K_STL_UDK_swigconstant(_dtr)
+_K_STL_UDK = _dtr._K_STL_UDK
+
+_dtr._K_STL_END_UDK_swigconstant(_dtr)
+_K_STL_END_UDK = _dtr._K_STL_END_UDK
+
+_dtr._K_SEMI_COLON_OPT_swigconstant(_dtr)
+_K_SEMI_COLON_OPT = _dtr._K_SEMI_COLON_OPT
+
+_dtr._K_UNQUOTED_LIT_swigconstant(_dtr)
+_K_UNQUOTED_LIT = _dtr._K_UNQUOTED_LIT
+
+_dtr._K_SYNTAX_PROMPT_swigconstant(_dtr)
+_K_SYNTAX_PROMPT = _dtr._K_SYNTAX_PROMPT
+
+_dtr._K_IMMED_RETURN_swigconstant(_dtr)
+_K_IMMED_RETURN = _dtr._K_IMMED_RETURN
+
+_dtr._K_FORMS_ENABLE_swigconstant(_dtr)
+_K_FORMS_ENABLE = _dtr._K_FORMS_ENABLE
+
+_dtr._K_VERIFY_swigconstant(_dtr)
+_K_VERIFY = _dtr._K_VERIFY
+
+_dtr._K_BIG_ENDIAN_swigconstant(_dtr)
+_K_BIG_ENDIAN = _dtr._K_BIG_ENDIAN
+
+_dtr._K_IEEE_FLOAT_swigconstant(_dtr)
+_K_IEEE_FLOAT = _dtr._K_IEEE_FLOAT
+
+_dtr._K_CONTEXT_SEARCH_swigconstant(_dtr)
+_K_CONTEXT_SEARCH = _dtr._K_CONTEXT_SEARCH
+
+_dtr._K_HYPHEN_DISABLED_swigconstant(_dtr)
+_K_HYPHEN_DISABLED = _dtr._K_HYPHEN_DISABLED
+
+_dtr._K_MORE_COMMANDS_swigconstant(_dtr)
+_K_MORE_COMMANDS = _dtr._K_MORE_COMMANDS
+
+_dtr._K_ABORT_swigconstant(_dtr)
+_K_ABORT = _dtr._K_ABORT
+
+_dtr._K_LOCK_WAIT_swigconstant(_dtr)
+_K_LOCK_WAIT = _dtr._K_LOCK_WAIT
+
+_dtr._K_FN_PORT_SUPPORT_swigconstant(_dtr)
+_K_FN_PORT_SUPPORT = _dtr._K_FN_PORT_SUPPORT
+
+_dtr._K_DATE_STR_swigconstant(_dtr)
+_K_DATE_STR = _dtr._K_DATE_STR
+
+_dtr._K_RET_ON_PRINT_ERROR_swigconstant(_dtr)
+_K_RET_ON_PRINT_ERROR = _dtr._K_RET_ON_PRINT_ERROR
+
+_dtr._K_GET_ROUTINES_SUPPORT_swigconstant(_dtr)
+_K_GET_ROUTINES_SUPPORT = _dtr._K_GET_ROUTINES_SUPPORT
+
+_dtr._M_OPT_CMD_swigconstant(_dtr)
+_M_OPT_CMD = _dtr._M_OPT_CMD
+
+_dtr._M_OPT_PRMPT_swigconstant(_dtr)
+_M_OPT_PRMPT = _dtr._M_OPT_PRMPT
+
+_dtr._M_OPT_LINE_swigconstant(_dtr)
+_M_OPT_LINE = _dtr._M_OPT_LINE
+
+_dtr._M_OPT_MSG_swigconstant(_dtr)
+_M_OPT_MSG = _dtr._M_OPT_MSG
+
+_dtr._M_OPT_PGET_swigconstant(_dtr)
+_M_OPT_PGET = _dtr._M_OPT_PGET
+
+_dtr._M_OPT_PPUT_swigconstant(_dtr)
+_M_OPT_PPUT = _dtr._M_OPT_PPUT
+
+_dtr._M_OPT_CONT_swigconstant(_dtr)
+_M_OPT_CONT = _dtr._M_OPT_CONT
+
+_dtr._M_OPT_UDK_swigconstant(_dtr)
+_M_OPT_UDK = _dtr._M_OPT_UDK
+
+_dtr._M_OPT_DTR_UDK_swigconstant(_dtr)
+_M_OPT_DTR_UDK = _dtr._M_OPT_DTR_UDK
+
+_dtr._M_OPT_END_UDK_swigconstant(_dtr)
+_M_OPT_END_UDK = _dtr._M_OPT_END_UDK
+
+_dtr._M_OPT_UNWIND_swigconstant(_dtr)
+_M_OPT_UNWIND = _dtr._M_OPT_UNWIND
+
+_dtr._M_OPT_CONTROL_C_swigconstant(_dtr)
+_M_OPT_CONTROL_C = _dtr._M_OPT_CONTROL_C
+
+_dtr._M_OPT_STARTUP_swigconstant(_dtr)
+_M_OPT_STARTUP = _dtr._M_OPT_STARTUP
+
+_dtr._M_OPT_FOREIGN_swigconstant(_dtr)
+_M_OPT_FOREIGN = _dtr._M_OPT_FOREIGN
+
+_dtr._M_OPT_BANNER_swigconstant(_dtr)
+_M_OPT_BANNER = _dtr._M_OPT_BANNER
+
+_dtr._M_OPT_REMOVE_CTLC_swigconstant(_dtr)
+_M_OPT_REMOVE_CTLC = _dtr._M_OPT_REMOVE_CTLC
+
+_dtr._M_OPT_KEYDEFS_swigconstant(_dtr)
+_M_OPT_KEYDEFS = _dtr._M_OPT_KEYDEFS
+
+_dtr._K_UDK_SET_swigconstant(_dtr)
+_K_UDK_SET = _dtr._K_UDK_SET
+
+_dtr._K_UDK_SET_NO_swigconstant(_dtr)
+_K_UDK_SET_NO = _dtr._K_UDK_SET_NO
+
+_dtr._K_UDK_SHOW_swigconstant(_dtr)
+_K_UDK_SHOW = _dtr._K_UDK_SHOW
+
+_dtr._K_UDK_STATEMENT_swigconstant(_dtr)
+_K_UDK_STATEMENT = _dtr._K_UDK_STATEMENT
+
+_dtr._K_UDK_COMMAND_swigconstant(_dtr)
+_K_UDK_COMMAND = _dtr._K_UDK_COMMAND
+
+_dtr._K_TOK_TOKEN_swigconstant(_dtr)
+_K_TOK_TOKEN = _dtr._K_TOK_TOKEN
+
+_dtr._K_TOK_PICTURE_swigconstant(_dtr)
+_K_TOK_PICTURE = _dtr._K_TOK_PICTURE
+
+_dtr._K_TOK_FILENAME_swigconstant(_dtr)
+_K_TOK_FILENAME = _dtr._K_TOK_FILENAME
+
+_dtr._K_TOK_COMMAND_swigconstant(_dtr)
+_K_TOK_COMMAND = _dtr._K_TOK_COMMAND
+
+_dtr._K_TOK_TEST_TOKEN_swigconstant(_dtr)
+_K_TOK_TEST_TOKEN = _dtr._K_TOK_TEST_TOKEN
+
+_dtr._K_TOK_LIST_ELEMENT_swigconstant(_dtr)
+_K_TOK_LIST_ELEMENT = _dtr._K_TOK_LIST_ELEMENT
+
+_dtr._K_TOK_TEST_EOL_swigconstant(_dtr)
+_K_TOK_TEST_EOL = _dtr._K_TOK_TEST_EOL
+
+_dtr._SUCCESS_swigconstant(_dtr)
+_SUCCESS = _dtr._SUCCESS
+
+_dtr._K_INF_TYPE_DOMAIN_swigconstant(_dtr)
+_K_INF_TYPE_DOMAIN = _dtr._K_INF_TYPE_DOMAIN
+
+_dtr._K_INF_TYPE_COLLECTION_swigconstant(_dtr)
+_K_INF_TYPE_COLLECTION = _dtr._K_INF_TYPE_COLLECTION
+
+_dtr._K_INF_TYPE_KEYWORD_swigconstant(_dtr)
+_K_INF_TYPE_KEYWORD = _dtr._K_INF_TYPE_KEYWORD
+
+_dtr._K_INF_TYPE_DIC_NAME_swigconstant(_dtr)
+_K_INF_TYPE_DIC_NAME = _dtr._K_INF_TYPE_DIC_NAME
+
+_dtr._K_INF_TYPE_GLV_swigconstant(_dtr)
+_K_INF_TYPE_GLV = _dtr._K_INF_TYPE_GLV
+
+_dtr._K_INF_TYPE_PLOT_swigconstant(_dtr)
+_K_INF_TYPE_PLOT = _dtr._K_INF_TYPE_PLOT
+
+_dtr._K_INF_DOM_FLD_swigconstant(_dtr)
+_K_INF_DOM_FLD = _dtr._K_INF_DOM_FLD
+
+_dtr._K_INF_DOM_FORM_swigconstant(_dtr)
+_K_INF_DOM_FORM = _dtr._K_INF_DOM_FORM
+
+_dtr._K_INF_DOM_SHARE_swigconstant(_dtr)
+_K_INF_DOM_SHARE = _dtr._K_INF_DOM_SHARE
+
+_dtr._K_INF_DOM_ACCESS_swigconstant(_dtr)
+_K_INF_DOM_ACCESS = _dtr._K_INF_DOM_ACCESS
+
+_dtr._K_INF_DOM_NAME_swigconstant(_dtr)
+_K_INF_DOM_NAME = _dtr._K_INF_DOM_NAME
+
+_dtr._K_INF_DOM_NEXT_DOM_swigconstant(_dtr)
+_K_INF_DOM_NEXT_DOM = _dtr._K_INF_DOM_NEXT_DOM
+
+_dtr._K_INF_DOM_SSC_swigconstant(_dtr)
+_K_INF_DOM_SSC = _dtr._K_INF_DOM_SSC
+
+_dtr._K_INF_DOM_REC_LEN_swigconstant(_dtr)
+_K_INF_DOM_REC_LEN = _dtr._K_INF_DOM_REC_LEN
+
+_dtr._K_INF_FLD_NAME_swigconstant(_dtr)
+_K_INF_FLD_NAME = _dtr._K_INF_FLD_NAME
+
+_dtr._K_INF_FLD_QNAME_swigconstant(_dtr)
+_K_INF_FLD_QNAME = _dtr._K_INF_FLD_QNAME
+
+_dtr._K_INF_FLD_PICTURE_swigconstant(_dtr)
+_K_INF_FLD_PICTURE = _dtr._K_INF_FLD_PICTURE
+
+_dtr._K_INF_FLD_EDIT_swigconstant(_dtr)
+_K_INF_FLD_EDIT = _dtr._K_INF_FLD_EDIT
+
+_dtr._K_INF_FLD_DTYPE_swigconstant(_dtr)
+_K_INF_FLD_DTYPE = _dtr._K_INF_FLD_DTYPE
+
+_dtr._K_INF_FLD_OFFSET_swigconstant(_dtr)
+_K_INF_FLD_OFFSET = _dtr._K_INF_FLD_OFFSET
+
+_dtr._K_INF_FLD_LENGTH_swigconstant(_dtr)
+_K_INF_FLD_LENGTH = _dtr._K_INF_FLD_LENGTH
+
+_dtr._K_INF_FLD_SCALE_swigconstant(_dtr)
+_K_INF_FLD_SCALE = _dtr._K_INF_FLD_SCALE
+
+_dtr._K_INF_FLD_CHILD_swigconstant(_dtr)
+_K_INF_FLD_CHILD = _dtr._K_INF_FLD_CHILD
+
+_dtr._K_INF_FLD_CNT_swigconstant(_dtr)
+_K_INF_FLD_CNT = _dtr._K_INF_FLD_CNT
+
+_dtr._K_INF_FLD_LIST_swigconstant(_dtr)
+_K_INF_FLD_LIST = _dtr._K_INF_FLD_LIST
+
+_dtr._K_INF_FLD_REDEFINES_swigconstant(_dtr)
+_K_INF_FLD_REDEFINES = _dtr._K_INF_FLD_REDEFINES
+
+_dtr._K_INF_FLD_VIRTUAL_swigconstant(_dtr)
+_K_INF_FLD_VIRTUAL = _dtr._K_INF_FLD_VIRTUAL
+
+_dtr._K_INF_FLD_FILLER_swigconstant(_dtr)
+_K_INF_FLD_FILLER = _dtr._K_INF_FLD_FILLER
+
+_dtr._K_INF_FLD_MISSING_swigconstant(_dtr)
+_K_INF_FLD_MISSING = _dtr._K_INF_FLD_MISSING
+
+_dtr._K_INF_FLD_MISSING_TXT_swigconstant(_dtr)
+_K_INF_FLD_MISSING_TXT = _dtr._K_INF_FLD_MISSING_TXT
+
+_dtr._K_INF_FLD_SEG_STRING_swigconstant(_dtr)
+_K_INF_FLD_SEG_STRING = _dtr._K_INF_FLD_SEG_STRING
+
+_dtr._K_INF_COL_CURSOR_swigconstant(_dtr)
+_K_INF_COL_CURSOR = _dtr._K_INF_COL_CURSOR
+
+_dtr._K_INF_COL_SIZE_swigconstant(_dtr)
+_K_INF_COL_SIZE = _dtr._K_INF_COL_SIZE
+
+_dtr._K_INF_COL_FLD_swigconstant(_dtr)
+_K_INF_COL_FLD = _dtr._K_INF_COL_FLD
+
+_dtr._K_INF_COL_DROPPED_swigconstant(_dtr)
+_K_INF_COL_DROPPED = _dtr._K_INF_COL_DROPPED
+
+_dtr._K_INF_COL_ERASED_swigconstant(_dtr)
+_K_INF_COL_ERASED = _dtr._K_INF_COL_ERASED
+
+_dtr._K_INF_COL_INVISIBLE_swigconstant(_dtr)
+_K_INF_COL_INVISIBLE = _dtr._K_INF_COL_INVISIBLE
+
+_dtr._K_INF_COL_NAME_swigconstant(_dtr)
+_K_INF_COL_NAME = _dtr._K_INF_COL_NAME
+
+_dtr._K_INF_COL_NEXT_COL_swigconstant(_dtr)
+_K_INF_COL_NEXT_COL = _dtr._K_INF_COL_NEXT_COL
+
+_dtr._K_INF_GLV_FIRST_DOM_swigconstant(_dtr)
+_K_INF_GLV_FIRST_DOM = _dtr._K_INF_GLV_FIRST_DOM
+
+_dtr._K_INF_GLV_FIRST_COL_swigconstant(_dtr)
+_K_INF_GLV_FIRST_COL = _dtr._K_INF_GLV_FIRST_COL
+
+_dtr._K_INF_GLV_FIRST_SSC_swigconstant(_dtr)
+_K_INF_GLV_FIRST_SSC = _dtr._K_INF_GLV_FIRST_SSC
+
+_dtr._K_INF_GLV_DEF_DIC_swigconstant(_dtr)
+_K_INF_GLV_DEF_DIC = _dtr._K_INF_GLV_DEF_DIC
+
+_dtr._K_INF_FRM_NAME_swigconstant(_dtr)
+_K_INF_FRM_NAME = _dtr._K_INF_FRM_NAME
+
+_dtr._K_INF_FRM_LIBRARY_swigconstant(_dtr)
+_K_INF_FRM_LIBRARY = _dtr._K_INF_FRM_LIBRARY
+
+_dtr._K_INF_SSC_NAME_swigconstant(_dtr)
+_K_INF_SSC_NAME = _dtr._K_INF_SSC_NAME
+
+_dtr._K_INF_SSC_SET_swigconstant(_dtr)
+_K_INF_SSC_SET = _dtr._K_INF_SSC_SET
+
+_dtr._K_INF_SSC_NEXT_swigconstant(_dtr)
+_K_INF_SSC_NEXT = _dtr._K_INF_SSC_NEXT
+
+_dtr._K_INF_SET_NAME_swigconstant(_dtr)
+_K_INF_SET_NAME = _dtr._K_INF_SET_NAME
+
+_dtr._K_INF_SET_NEXT_swigconstant(_dtr)
+_K_INF_SET_NEXT = _dtr._K_INF_SET_NEXT
+
+_dtr._K_INF_SET_SDP_swigconstant(_dtr)
+_K_INF_SET_SDP = _dtr._K_INF_SET_SDP
+
+_dtr._K_INF_SET_SINGULAR_swigconstant(_dtr)
+_K_INF_SET_SINGULAR = _dtr._K_INF_SET_SINGULAR
+
+_dtr._K_INF_SDP_NEXT_swigconstant(_dtr)
+_K_INF_SDP_NEXT = _dtr._K_INF_SDP_NEXT
+
+_dtr._K_INF_SDP_DOMAIN_swigconstant(_dtr)
+_K_INF_SDP_DOMAIN = _dtr._K_INF_SDP_DOMAIN
+
+_dtr._K_INF_SDP_TENANCY_swigconstant(_dtr)
+_K_INF_SDP_TENANCY = _dtr._K_INF_SDP_TENANCY
+
+_dtr._K_INF_SDP_INSERT_swigconstant(_dtr)
+_K_INF_SDP_INSERT = _dtr._K_INF_SDP_INSERT
+
+_dtr._K_INF_SDP_RETAIN_swigconstant(_dtr)
+_K_INF_SDP_RETAIN = _dtr._K_INF_SDP_RETAIN
+
+_dtr._K_INF_FLD_QHDR_swigconstant(_dtr)
+_K_INF_FLD_QHDR = _dtr._K_INF_FLD_QHDR
+
+_dtr._K_INF_HDR_CNT_swigconstant(_dtr)
+_K_INF_HDR_CNT = _dtr._K_INF_HDR_CNT
+
+_dtr._K_INF_HDR_STRING_swigconstant(_dtr)
+_K_INF_HDR_STRING = _dtr._K_INF_HDR_STRING
+
+_dtr._K_INF_GLV_STA_OBJ_swigconstant(_dtr)
+_K_INF_GLV_STA_OBJ = _dtr._K_INF_GLV_STA_OBJ
+
+_dtr._K_INF_GLV_STA_CNT_swigconstant(_dtr)
+_K_INF_GLV_STA_CNT = _dtr._K_INF_GLV_STA_CNT
+
+_dtr._K_INF_GLV_STA_LINE_swigconstant(_dtr)
+_K_INF_GLV_STA_LINE = _dtr._K_INF_GLV_STA_LINE
+
+_dtr._K_INF_PLO_CNT_swigconstant(_dtr)
+_K_INF_PLO_CNT = _dtr._K_INF_PLO_CNT
+
+_dtr._K_INF_PLO_PAI_swigconstant(_dtr)
+_K_INF_PLO_PAI = _dtr._K_INF_PLO_PAI
+
+_dtr._K_INF_PAI_PROMPT_swigconstant(_dtr)
+_K_INF_PAI_PROMPT = _dtr._K_INF_PAI_PROMPT
+
+_dtr._K_INF_PAI_DTYPE_swigconstant(_dtr)
+_K_INF_PAI_DTYPE = _dtr._K_INF_PAI_DTYPE
+
+_dtr._K_INF_DOM_ACCESS_READ_swigconstant(_dtr)
+_K_INF_DOM_ACCESS_READ = _dtr._K_INF_DOM_ACCESS_READ
+
+_dtr._K_INF_DOM_ACCESS_WRITE_swigconstant(_dtr)
+_K_INF_DOM_ACCESS_WRITE = _dtr._K_INF_DOM_ACCESS_WRITE
+
+_dtr._K_INF_DOM_ACCESS_MODIFY_swigconstant(_dtr)
+_K_INF_DOM_ACCESS_MODIFY = _dtr._K_INF_DOM_ACCESS_MODIFY
+
+_dtr._K_INF_DOM_ACCESS_EXTEND_swigconstant(_dtr)
+_K_INF_DOM_ACCESS_EXTEND = _dtr._K_INF_DOM_ACCESS_EXTEND
+
+_dtr._K_INF_DOM_SHARE_EXCLUSIVE_swigconstant(_dtr)
+_K_INF_DOM_SHARE_EXCLUSIVE = _dtr._K_INF_DOM_SHARE_EXCLUSIVE
+
+_dtr._K_INF_DOM_SHARE_SHARED_swigconstant(_dtr)
+_K_INF_DOM_SHARE_SHARED = _dtr._K_INF_DOM_SHARE_SHARED
+
+_dtr._K_INF_DOM_SHARE_PROTECT_swigconstant(_dtr)
+_K_INF_DOM_SHARE_PROTECT = _dtr._K_INF_DOM_SHARE_PROTECT
+
+_dtr._NTS_swigconstant(_dtr)
+_NTS = _dtr._NTS
+
+def command(arg1, arg2):
+    return _dtr.command(arg1, arg2)
+command = _dtr.command
+
+def cont(arg1):
+    return _dtr.cont(arg1)
+cont = _dtr.cont
+
+def create_udk(arg1, arg2, arg3, arg4):
+    return _dtr.create_udk(arg1, arg2, arg3, arg4)
+create_udk = _dtr.create_udk
+
+def end_udk(arg1):
+    return _dtr.end_udk(arg1)
+end_udk = _dtr.end_udk
+
+def finish(arg1):
+    return _dtr.finish(arg1)
+finish = _dtr.finish
+
+def get_port(arg1, arg2):
+    return _dtr.get_port(arg1, arg2)
+get_port = _dtr.get_port
+
+def get_string(arg1, arg2, arg4):
+    return _dtr.get_string(arg1, arg2, arg4)
+get_string = _dtr.get_string
+
+def info(arg1, arg2, arg3, arg6):
+    return _dtr.info(arg1, arg2, arg3, arg6)
+info = _dtr.info
+
+def init(arg2, arg3):
+    return _dtr.init(arg2, arg3)
+init = _dtr.init
+
+def lookup(arg1, arg2, arg4):
+    return _dtr.lookup(arg1, arg2, arg4)
+lookup = _dtr.lookup
+
+def port_eof(arg1):
+    return _dtr.port_eof(arg1)
+port_eof = _dtr.port_eof
+
+def put_port(arg1, arg2):
+    return _dtr.put_port(arg1, arg2)
+put_port = _dtr.put_port
+
+def put_value(arg1, arg2):
+    return _dtr.put_value(arg1, arg2)
+put_value = _dtr.put_value
+
+def unwind(arg1):
+    return _dtr.unwind(arg1)
+unwind = _dtr.unwind
+
+def condition(arg1):
+    return _dtr.condition(arg1)
+condition = _dtr.condition
+
+def state(arg1):
+    return _dtr.state(arg1)
+state = _dtr.state
+
+def msg_buf(arg1):
+    return _dtr.msg_buf(arg1)
+msg_buf = _dtr.msg_buf
+
+def aux_buf(arg1):
+    return _dtr.aux_buf(arg1)
+aux_buf = _dtr.aux_buf
+
+def get_options(arg1):
+    return _dtr.get_options(arg1)
+get_options = _dtr.get_options
+
+def set_options(arg1, arg2):
+    return _dtr.set_options(arg1, arg2)
+set_options = _dtr.set_options
+
+def clear_options(arg1, arg2):
+    return _dtr.clear_options(arg1, arg2)
+clear_options = _dtr.clear_options
+
+def get_rec_len(arg1):
+    return _dtr.get_rec_len(arg1)
+get_rec_len = _dtr.get_rec_len
+
+def get_flags(arg1):
+    return _dtr.get_flags(arg1)
+get_flags = _dtr.get_flags
+
+def get_udk_index(arg1):
+    return _dtr.get_udk_index(arg1)
+get_udk_index = _dtr.get_udk_index
+
+def dtr(arg1, arg2):
+    return _dtr.dtr(arg1, arg2)
+dtr = _dtr.dtr
+
+def skip(arg1, arg2):
+    return _dtr.skip(arg1, arg2)
+skip = _dtr.skip
+
+def row(arg1, arg2):
+    return _dtr.row(arg1, arg2)
+row = _dtr.row
+# This file is compatible with both classic and new-style classes.
+
+
diff --git a/Modules/vms/dtr/lcl.h b/Modules/vms/dtr/lcl.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2xjbC5o
--- /dev/null
+++ b/Modules/vms/dtr/lcl.h
@@ -0,0 +1,33 @@
+#ifndef __LCL_H__
+#define __LCL_H__
+
+#define __NEW_STARLET 1
+#include <iledef.h>
+
+typedef struct {
+    unsigned short top;
+    int size;
+    int elem;
+    ILE3 *list;
+    int *types;
+    unsigned short bot;
+} LCL_ile3;
+
+
+typedef struct {
+    unsigned short ncol;
+    struct {
+	char *name;
+	unsigned short idx;
+	unsigned short type;
+	unsigned short size;
+	unsigned short off;
+	int digits;
+	int scale;
+	void *val;
+    } *fields;
+    char *buf;
+    unsigned short len;
+} LCL_rec;
+
+#endif
diff --git a/Modules/vms/dtr/rec.c b/Modules/vms/dtr/rec.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5j
--- /dev/null
+++ b/Modules/vms/dtr/rec.c
@@ -0,0 +1,942 @@
+#define __NEW_STARLET 1
+
+#include <descrip.h>
+#include <lib$routines.h>
+#include <starlet.h>
+#include <ssdef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#include "lcl.h"
+
+#ifndef rec_Assert
+#define rec_Assert(x) \
+    do { \
+        if ((!((x)))) { \
+            fprintf (stderr, "Assertion failed: %s (%s: %d)\n", #x, __FILE__, __LINE__); \
+            abort(); \
+        } \
+    } while (0)
+#endif
+
+#ifndef OKAY
+#define OKAY(STATUS) (((STATUS) & 1) != 0)
+#endif
+
+
+
+void *_new()
+{
+    LCL_rec *rec = NULL;
+
+    rec_Assert((rec = calloc(1, sizeof(LCL_rec))));
+    rec->ncol = 0;
+    rec->fields = NULL;
+
+    rec->len = 0;
+    rec->buf = NULL;
+
+    return (rec);
+}
+
+
+void _delete(void *addr)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    int i;
+
+    rec_Assert(rec);
+
+    if (rec->fields) {
+	for (i = 0; i < rec->ncol; i++) {
+	    if (rec->fields[i].name) {
+		free(rec->fields[i].name);
+	    }
+	    if (rec->fields[i].val) {
+		free(rec->fields[i].val);
+	    }
+	}
+	free(rec->fields);
+    }
+
+    if (rec->buf) {
+	free(rec->buf);
+    }
+
+    free(rec);
+}
+
+
+char *_getstr(void *addr, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    char *tmp;
+    int i;
+    unsigned short size;
+
+    rec_Assert((rec->ncol));
+    rec_Assert((idx < rec->ncol));
+    rec_Assert((rec->fields));
+    rec_Assert((rec->fields[idx].type == DSC$K_DTYPE_T));
+
+    size = rec->fields[idx].size;
+    rec_Assert((tmp = calloc((size + 1), sizeof(char))));
+    memcpy(tmp, rec->fields[idx].val, size);
+
+    i = rec->fields[idx].size - 1;
+
+    while (i > 0 && isspace(tmp[i])) {
+	i--;
+    }
+    i++;
+    tmp[i] = '\0';
+
+    return (tmp);
+}
+
+
+char *_gethex(void *addr, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    char tmp[32], *val;
+    unsigned short type;
+
+    rec_Assert((rec->ncol));
+    rec_Assert((idx < rec->ncol));
+    rec_Assert((rec->fields));
+
+    val = rec->fields[idx].val;
+    type = rec->fields[idx].type;
+
+    switch (type) {
+    case DSC$K_DTYPE_BU:
+	sprintf(tmp, "0x%llx", *(unsigned char *) val);
+	break;
+    case DSC$K_DTYPE_B:
+	sprintf(tmp, "0x%llx", *(char *) val);
+	break;
+    case DSC$K_DTYPE_WU:
+	sprintf(tmp, "0x%llx", *(unsigned short *) val);
+	break;
+    case DSC$K_DTYPE_W:
+	sprintf(tmp, "0x%llx", *(short *) val);
+	break;
+    case DSC$K_DTYPE_LU:
+	sprintf(tmp, "0x%llx", *(unsigned int *) val);
+	break;
+    case DSC$K_DTYPE_L:
+	sprintf(tmp, "0x%llx", *(int *) val);
+	break;
+    case DSC$K_DTYPE_QU:
+	sprintf(tmp, "0x%llx", *(unsigned long long *) val);
+	break;
+    case DSC$K_DTYPE_Q:
+	sprintf(tmp, "0x%llx", *(long long *) val);
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    rec_Assert(val = strdup(tmp));
+    return (val);
+}
+
+
+long long _getint(void *addr, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    void *val;
+    unsigned short type;
+
+    rec_Assert((rec->ncol));
+    rec_Assert((idx < rec->ncol));
+    rec_Assert((rec->fields));
+
+    val = rec->fields[idx].val;
+    type = rec->fields[idx].type;
+
+    switch (type) {
+    case DSC$K_DTYPE_BU:
+	return (*(unsigned char *) val);
+	break;
+    case DSC$K_DTYPE_B:
+	return (*(char *) val);
+	break;
+    case DSC$K_DTYPE_WU:
+	return (*(unsigned short *) val);
+	break;
+    case DSC$K_DTYPE_W:
+	return (*(short *) val);
+	break;
+    case DSC$K_DTYPE_LU:
+	return (*(unsigned int *) val);
+	break;
+    case DSC$K_DTYPE_L:
+	return (*(int *) val);
+	break;
+    case DSC$K_DTYPE_QU:
+    case DSC$K_DTYPE_Q:
+	return (*(long long *) val);
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    return (0);
+}
+
+
+double _getnum(void *addr, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    struct dsc$descriptor_sd from, to;
+    double tmp;
+    unsigned short type;
+
+    rec_Assert((rec->ncol));
+    rec_Assert((idx < rec->ncol));
+    rec_Assert((rec->fields));
+
+    type = rec->fields[idx].type;
+
+    switch (type) {
+    case DSC$K_DTYPE_NU:
+    case DSC$K_DTYPE_NL:
+    case DSC$K_DTYPE_NLO:
+    case DSC$K_DTYPE_NR:
+    case DSC$K_DTYPE_NRO:
+    case DSC$K_DTYPE_NZ:
+    case DSC$K_DTYPE_P:
+	from.dsc$b_class = DSC$K_CLASS_SD;
+	from.dsc$w_length = rec->fields[idx].size;
+	from.dsc$a_pointer = (char *) rec->fields[idx].val;
+	from.dsc$b_scale = rec->fields[idx].scale;
+	from.dsc$b_digits = rec->fields[idx].digits;
+	from.dsc$b_dtype = type;
+
+	to.dsc$b_class = DSC$K_CLASS_SD;
+	to.dsc$w_length = sizeof(double);
+	to.dsc$a_pointer = (char *) &tmp;
+	to.dsc$b_scale = 0;
+	to.dsc$b_digits = 0;
+	to.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+	rec_Assert((OKAY
+		(lib$cvt_dx_dx
+		 ((unsigned int *) &from, (unsigned int *) &to))));
+	return (tmp);
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    return (0.0);
+}
+
+
+
+double _getfloat(void *addr, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    void *val;
+    unsigned short type;
+
+    rec_Assert((rec->ncol));
+    rec_Assert((idx < rec->ncol));
+    rec_Assert((rec->fields));
+
+    val = rec->fields[idx].val;
+    type = rec->fields[idx].type;
+
+    switch (type) {
+    case DSC$K_DTYPE_F:
+	{
+	    struct dsc$descriptor_sd from, to;
+	    double tmp;
+
+	    from.dsc$b_class = DSC$K_CLASS_SD;
+	    from.dsc$w_length = sizeof(float);
+	    from.dsc$a_pointer = (char *) val;
+	    from.dsc$b_scale = 0;
+	    from.dsc$b_digits = 0;
+	    from.dsc$b_dtype = DSC$K_DTYPE_F;
+
+	    to.dsc$b_class = DSC$K_CLASS_SD;
+	    to.dsc$w_length = sizeof(double);
+	    to.dsc$a_pointer = (char *) &tmp;
+	    to.dsc$b_scale = 0;
+	    to.dsc$b_digits = 0;
+	    to.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+	    rec_Assert((OKAY
+		    (lib$cvt_dx_dx
+		     ((unsigned int *) &from, (unsigned int *) &to))));
+	    return (tmp);
+	}
+	break;
+    case DSC$K_DTYPE_FS:
+	return (*(float *) val);
+	break;
+    case DSC$K_DTYPE_G:
+	{
+	    struct dsc$descriptor_sd from, to;
+	    double tmp;
+
+	    from.dsc$b_class = DSC$K_CLASS_SD;
+	    from.dsc$w_length = sizeof(double);
+	    from.dsc$a_pointer = (char *) val;
+	    from.dsc$b_scale = 0;
+	    from.dsc$b_digits = 0;
+	    from.dsc$b_dtype = DSC$K_DTYPE_G;
+
+	    to.dsc$b_class = DSC$K_CLASS_SD;
+	    to.dsc$w_length = sizeof(double);
+	    to.dsc$a_pointer = (char *) &tmp;
+	    to.dsc$b_scale = 0;
+	    to.dsc$b_digits = 0;
+	    to.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+	    rec_Assert((OKAY
+		    (lib$cvt_dx_dx
+		     ((unsigned int *) &from, (unsigned int *) &to))));
+	    return (tmp);
+	}
+	break;
+    case DSC$K_DTYPE_FT:
+	return (*(double *) val);
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    return (0.0);
+}
+
+
+void _setstr(void *addr, char *val, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    unsigned short len;
+
+    rec_Assert(rec);
+    rec_Assert(idx < rec->ncol);
+    rec_Assert((rec->fields[idx].type == DSC$K_DTYPE_T));
+
+    memset(rec->fields[idx].val, ' ', rec->fields[idx].size);
+
+    if (val) {
+	len = strlen(val);
+	rec_Assert((len <= rec->fields[idx].size));
+	memcpy(rec->fields[idx].val, val, len);
+    }
+}
+
+
+void _addstr(void *addr, char *val, unsigned short len, unsigned short off)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    int n;
+    int idx;
+
+    rec_Assert(rec);
+
+    if (val) {
+	rec_Assert(((n = strlen(val)) <= len));
+    }
+
+    idx = rec->ncol;
+    rec->ncol++;
+    rec_Assert((rec->fields =
+	    realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol)));
+    rec_Assert((rec->fields[idx].val = malloc(len)));
+    memset(rec->fields[idx].val, ' ', len);
+
+    if (val) {
+	memcpy(rec->fields[idx].val, val, n);
+    }
+
+    rec->fields[idx].type = DSC$K_DTYPE_T;
+    rec->fields[idx].off = off;
+    rec->fields[idx].idx = idx;
+    rec->fields[idx].size = len;
+    rec->fields[idx].digits = -1;
+    rec->fields[idx].scale = -1;
+    rec->fields[idx].name = NULL;
+
+    rec->len += len;
+    rec_Assert((rec->buf = realloc(rec->buf, rec->len)));
+}
+
+
+void _setint(void *addr, long long val, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    int type;
+    int size;
+
+    rec_Assert(rec);
+    rec_Assert(idx < rec->ncol);
+
+    type = rec->fields[idx].type;
+    size = rec->fields[idx].size;
+
+    switch (type) {
+    case DSC$K_DTYPE_BU:
+	{
+	    unsigned char tmp = (unsigned char) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_B:
+	{
+	    char tmp = (char) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_WU:
+	{
+	    unsigned short tmp = (unsigned short) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_W:
+	{
+	    short tmp = (short) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_LU:
+	{
+	    unsigned long tmp = (unsigned long) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_L:
+	{
+	    long tmp = (long) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_QU:
+    case DSC$K_DTYPE_Q:
+	memcpy(rec->fields[idx].val, &val, size);
+	break;
+    default:
+	abort();
+	break;
+    }
+}
+
+
+
+void _addint(void *addr, int type, long long val, unsigned short off)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    int size;
+    int idx;
+
+    rec_Assert(rec);
+
+    idx = rec->ncol;
+    rec->ncol++;
+    rec_Assert((rec->fields =
+	    realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol)));
+
+    switch (type) {
+    case DSC$K_DTYPE_BU:
+    case DSC$K_DTYPE_B:
+	size = 1;
+	break;
+    case DSC$K_DTYPE_WU:
+    case DSC$K_DTYPE_W:
+	size = 2;
+	break;
+    case DSC$K_DTYPE_LU:
+    case DSC$K_DTYPE_L:
+	size = 4;
+	break;
+    case DSC$K_DTYPE_QU:
+    case DSC$K_DTYPE_Q:
+	size = 8;
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    rec_Assert((rec->fields[idx].val = calloc(1, size)));
+
+    switch (type) {
+    case DSC$K_DTYPE_BU:
+	{
+	    unsigned char tmp = (unsigned char) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_B:
+	{
+	    char tmp = (char) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_WU:
+	{
+	    unsigned short tmp = (unsigned short) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_W:
+	{
+	    short tmp = (short) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_LU:
+	{
+	    unsigned long tmp = (unsigned long) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_L:
+	{
+	    long tmp = (long) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_QU:
+    case DSC$K_DTYPE_Q:
+     	memcpy(rec->fields[idx].val, &val, size);
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    rec->fields[idx].size = size;
+    rec->fields[idx].type = type;
+    rec->fields[idx].off = off;
+    rec->fields[idx].idx = idx;
+    rec->fields[idx].digits = -1;
+    rec->fields[idx].scale = -1;
+    rec->fields[idx].name = NULL;
+
+    rec->len += size;
+    rec_Assert((rec->buf = realloc(rec->buf, rec->len)));
+}
+
+
+
+void _setnum(void *addr, double val, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    struct dsc$descriptor_sd from, to;
+
+    rec_Assert(rec);
+    rec_Assert(idx < rec->ncol);
+
+    switch (rec->fields[idx].type) {
+    case DSC$K_DTYPE_NU:
+    case DSC$K_DTYPE_NL:
+    case DSC$K_DTYPE_NLO:
+    case DSC$K_DTYPE_NR:
+    case DSC$K_DTYPE_NRO:
+    case DSC$K_DTYPE_NZ:
+    case DSC$K_DTYPE_P:
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    from.dsc$b_class = DSC$K_CLASS_SD;
+    from.dsc$w_length = sizeof(double);
+    from.dsc$a_pointer = (char *) &val;
+    from.dsc$b_scale = 0;
+    from.dsc$b_digits = 0;
+    from.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+    to.dsc$b_class = DSC$K_CLASS_SD;
+    to.dsc$w_length = rec->fields[idx].size;
+    to.dsc$a_pointer = rec->fields[idx].val;
+    to.dsc$b_scale = rec->fields[idx].scale;
+    to.dsc$b_digits = rec->fields[idx].digits;
+    to.dsc$b_dtype = rec->fields[idx].type;
+
+    rec_Assert((OKAY
+	    (lib$cvt_dx_dx
+	     ((unsigned int *) &from, (unsigned int *) &to))));
+}
+
+
+
+void _addnum(void *addr, int type, double val, short scale,
+	     unsigned short digits, unsigned short len, unsigned short off)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    struct dsc$descriptor_sd from, to;
+    int idx;
+
+    rec_Assert(rec);
+
+    switch (type) {
+    case DSC$K_DTYPE_NU:
+    case DSC$K_DTYPE_NL:
+    case DSC$K_DTYPE_NLO:
+    case DSC$K_DTYPE_NR:
+    case DSC$K_DTYPE_NRO:
+    case DSC$K_DTYPE_NZ:
+    case DSC$K_DTYPE_P:
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    idx = rec->ncol;
+    rec->ncol++;
+    rec_Assert((rec->fields =
+	    realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol)));
+
+    if (type == DSC$K_DTYPE_P) {
+	len = digits;
+    }
+
+    rec_Assert((rec->fields[idx].val = calloc(1, len)));
+
+    from.dsc$b_class = DSC$K_CLASS_SD;
+    from.dsc$w_length = sizeof(double);
+    from.dsc$a_pointer = (char *) &val;
+    from.dsc$b_scale = 0;
+    from.dsc$b_digits = 0;
+    from.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+    to.dsc$b_class = DSC$K_CLASS_SD;
+    to.dsc$w_length = len;
+    to.dsc$a_pointer = rec->fields[idx].val;
+    to.dsc$b_scale = scale;
+    to.dsc$b_digits = digits;
+    to.dsc$b_dtype = type;
+
+    rec_Assert((OKAY
+	    (lib$cvt_dx_dx
+	     ((unsigned int *) &from, (unsigned int *) &to))));
+
+    rec->fields[idx].size = len;
+    rec->fields[idx].type = type;
+    rec->fields[idx].off = off;
+    rec->fields[idx].idx = idx;
+    rec->fields[idx].digits = digits;
+    rec->fields[idx].scale = scale;
+    rec->fields[idx].name = NULL;
+
+    rec->len += len;
+    rec_Assert((rec->buf = realloc(rec->buf, rec->len)));
+}
+
+
+
+void _setfloat(void *addr, double val, int idx)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    struct dsc$descriptor_sd from, to;
+
+    rec_Assert(rec);
+    rec_Assert(idx < rec->ncol);
+
+    switch (rec->fields[idx].type) {
+    case DSC$K_DTYPE_F:
+    case DSC$K_DTYPE_FS:
+    case DSC$K_DTYPE_G:
+    case DSC$K_DTYPE_FT:
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    from.dsc$b_class = DSC$K_CLASS_SD;
+    from.dsc$w_length = sizeof(double);
+    from.dsc$a_pointer = (char *) &val;
+    from.dsc$b_scale = 0;
+    from.dsc$b_digits = 0;
+    from.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+    to.dsc$b_class = DSC$K_CLASS_SD;
+    to.dsc$w_length = rec->fields[idx].size;
+    to.dsc$a_pointer = rec->fields[idx].val;
+    to.dsc$b_scale = 0;
+    to.dsc$b_digits = 0;
+    to.dsc$b_dtype = rec->fields[idx].type;
+
+    rec_Assert((OKAY
+	    (lib$cvt_dx_dx
+	     ((unsigned int *) &from, (unsigned int *) &to))));
+}
+
+
+void _addfloat(void *addr, int type, double val, unsigned short off)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    int size;
+    int idx;
+
+    rec_Assert(rec);
+
+    idx = rec->ncol;
+    rec->ncol++;
+    rec_Assert((rec->fields =
+	    realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol)));
+
+    switch (type) {
+    case DSC$K_DTYPE_F:
+    case DSC$K_DTYPE_FS:
+	size = 4;
+	break;
+    case DSC$K_DTYPE_G:
+    case DSC$K_DTYPE_FT:
+	size = 8;
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    rec_Assert((rec->fields[idx].val = calloc(1, size)));
+
+    switch (type) {
+    case DSC$K_DTYPE_F:
+	{
+	    struct dsc$descriptor_sd from, to;
+	    float tmp;
+
+	    from.dsc$b_class = DSC$K_CLASS_SD;
+	    from.dsc$w_length = sizeof(double);
+	    from.dsc$a_pointer = (char *) &val;
+	    from.dsc$b_scale = 0;
+	    from.dsc$b_digits = 0;
+	    from.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+	    to.dsc$b_class = DSC$K_CLASS_SD;
+	    to.dsc$w_length = sizeof(float);
+	    to.dsc$a_pointer = (char *) &tmp;
+	    to.dsc$b_scale = 0;
+	    to.dsc$b_digits = 0;
+	    to.dsc$b_dtype = DSC$K_DTYPE_F;
+
+	    rec_Assert((OKAY
+		    (lib$cvt_dx_dx
+		     ((unsigned int *) &from, (unsigned int *) &to))));
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_FS:
+	{
+	    float tmp = (float) val;
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_G:	// IEEE double to G float
+	{
+	    struct dsc$descriptor_sd from, to;
+	    double tmp;
+
+	    from.dsc$b_class = DSC$K_CLASS_SD;
+	    from.dsc$w_length = sizeof(double);
+	    from.dsc$a_pointer = (char *) &val;
+	    from.dsc$b_scale = 0;
+	    from.dsc$b_digits = 0;
+	    from.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+	    to.dsc$b_class = DSC$K_CLASS_SD;
+	    to.dsc$w_length = sizeof(double);
+	    to.dsc$a_pointer = (char *) &tmp;
+	    to.dsc$b_scale = 0;
+	    to.dsc$b_digits = 0;
+	    to.dsc$b_dtype = DSC$K_DTYPE_G;
+
+	    rec_Assert((OKAY
+		    (lib$cvt_dx_dx
+		     ((unsigned int *) &from, (unsigned int *) &to))));
+	    memcpy(rec->fields[idx].val, &tmp, size);
+	}
+	break;
+    case DSC$K_DTYPE_FT:
+	{
+	    memcpy(rec->fields[idx].val, &val, size);
+	}
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    rec->fields[idx].type = type;
+    rec->fields[idx].off = off;
+    rec->fields[idx].idx = idx;
+    rec->fields[idx].digits = -1;
+    rec->fields[idx].scale = -1;
+    rec->fields[idx].name = NULL;
+
+    rec->len += size;
+    rec_Assert((rec->buf = realloc(rec->buf, rec->len)));
+}
+
+
+void _load(void *addr, void *data, unsigned short len)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    char *loc;
+    char *end;
+    unsigned short size;
+    int i;
+
+    rec_Assert(rec);
+    rec_Assert(data);
+
+    end = (char *) data + len;
+
+    for (i = 0; i < rec->ncol; i++) {
+	loc = (char *) data + rec->fields[i].off;
+	switch (rec->fields[i].type) {
+	case DSC$K_DTYPE_T:
+	    size = rec->fields[i].size;
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_BU:
+	case DSC$K_DTYPE_B:
+	    rec_Assert((size = rec->fields[i].size) == 1);
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_WU:
+	case DSC$K_DTYPE_W:
+	    rec_Assert((size = rec->fields[i].size) == 2);
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_LU:
+	case DSC$K_DTYPE_L:
+	    rec_Assert((size = rec->fields[i].size) == 4);
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_QU:
+	case DSC$K_DTYPE_Q:
+	    rec_Assert((size = rec->fields[i].size) == 8);
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_F:
+	    {
+		struct dsc$descriptor_sd from, to;
+		rec_Assert((size = rec->fields[i].size) == 4);
+
+		from.dsc$b_class = DSC$K_CLASS_SD;
+		from.dsc$w_length = sizeof(float);
+		from.dsc$a_pointer = (char *) loc;
+		from.dsc$b_scale = 0;
+		from.dsc$b_digits = 0;
+		from.dsc$b_dtype = DSC$K_DTYPE_F;
+
+		to.dsc$b_class = DSC$K_CLASS_SD;
+		to.dsc$w_length = sizeof(float);
+		to.dsc$a_pointer = (char *) &rec->fields[i].val;
+		to.dsc$b_scale = 0;
+		to.dsc$b_digits = 0;
+		to.dsc$b_dtype = DSC$K_DTYPE_FS;
+
+		rec_Assert((OKAY
+			(lib$cvt_dx_dx
+			 ((unsigned int *) &from, (unsigned int *) &to))));
+	    }
+	    break;
+	case DSC$K_DTYPE_FS:
+	    rec_Assert((size = rec->fields[i].size) == 4);
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_G:
+	    {
+		struct dsc$descriptor_sd from, to;
+		rec_Assert((size = rec->fields[i].size) == 8);
+
+		from.dsc$b_class = DSC$K_CLASS_SD;
+		from.dsc$w_length = sizeof(double);
+		from.dsc$a_pointer = (char *) loc;
+		from.dsc$b_scale = 0;
+		from.dsc$b_digits = 0;
+		from.dsc$b_dtype = DSC$K_DTYPE_G;
+
+		to.dsc$b_class = DSC$K_CLASS_SD;
+		to.dsc$w_length = sizeof(double);
+		to.dsc$a_pointer = (char *) &rec->fields[i].val;
+		to.dsc$b_scale = 0;
+		to.dsc$b_digits = 0;
+		to.dsc$b_dtype = DSC$K_DTYPE_FT;
+
+		rec_Assert((OKAY
+			(lib$cvt_dx_dx
+			 ((unsigned int *) &from, (unsigned int *) &to))));
+	    }
+	    break;
+	case DSC$K_DTYPE_FT:
+	    rec_Assert((size = rec->fields[i].size) == 8);
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	case DSC$K_DTYPE_NU:
+	case DSC$K_DTYPE_NL:
+	case DSC$K_DTYPE_NLO:
+	case DSC$K_DTYPE_NR:
+	case DSC$K_DTYPE_NRO:
+	case DSC$K_DTYPE_NZ:
+	case DSC$K_DTYPE_P:
+	    size = rec->fields[i].size;
+	    rec_Assert((loc + size) <= end);
+	    memcpy(rec->fields[i].val, loc, size);
+	    break;
+	default:
+	    abort();
+	    break;
+	}
+    }
+
+}
+
+
+void REC_load(void *addr, void *data, unsigned short len)
+{
+    _load(addr, data, len);
+}
+
+
+void REC_pack(void *data, unsigned short maxlen, void *addr,
+	      unsigned short *len)
+{
+    LCL_rec *rec = (LCL_rec *) addr;
+    char *loc;
+    char *end;
+    unsigned short size;
+    int i;
+
+    rec_Assert(addr);
+    rec_Assert(data);
+
+    end = (char *) data + maxlen;
+    *len = 0;
+
+    for (i = 0; i < rec->ncol; i++) {
+	loc = (char *) data + rec->fields[i].off;
+	size = rec->fields[i].size;
+	rec_Assert((loc + size) <= end);
+	memcpy(loc, rec->fields[i].val, size);
+	*len += size;
+    }
+}
diff --git a/Modules/vms/dtr/rec.h b/Modules/vms/dtr/rec.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5o
--- /dev/null
+++ b/Modules/vms/dtr/rec.h
@@ -0,0 +1,28 @@
+#ifndef __REC_H__
+#define __REC_H__
+
+#ifdef __cplusplus
+        extern "C" {
+#endif
+
+extern void *_new();
+extern void _delete(void *);
+extern char *_getstr(void *, int);
+extern long long _getint(void *, int);
+extern void _addstr(void *, char *, unsigned short, unsigned short);
+extern void _addint(void *, int, long long, unsigned short);
+extern void _load(void *, void *, unsigned short);
+extern void _addfloat(void *, int, double, unsigned short);
+extern double _getfloat(void *, int);
+extern void _addnum(void *, int, double, short, unsigned short, unsigned short, unsigned short);
+extern char *_gethex(void *, int);
+extern double _getnum(void *, int);
+extern void _setstr(void *, char *, int);
+extern void _setint(void *, long long, int);
+extern void _setnum(void *, double, int);
+extern void _setfloat(void *, double, int);
+
+#ifdef __cplusplus
+        }
+#endif
+#endif
diff --git a/Modules/vms/dtr/rec.i b/Modules/vms/dtr/rec.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5p
--- /dev/null
+++ b/Modules/vms/dtr/rec.i
@@ -0,0 +1,56 @@
+%module rec
+
+%{
+#include "rec.h"
+%}
+
+%include "typemaps.i"
+%include <cstring.i>
+%cstring_output_allocate(char **OUTPUT, free(*$1));
+
+%typemap(out) char *
+{
+   if (result) {
+      resultobj = PyUnicode_DecodeUTF8(result, strlen(result), "surrogateescape");
+      free(result);
+   } else {
+      resultobj = Py_None;
+      Py_INCREF(resultobj);
+   }
+}
+
+%rename(new) _new;
+%rename(delete) _delete;
+%rename(getstr) _getstr;
+%rename(getint) _getint;
+%rename(addstr) _addstr;
+%rename(addint) _addint;
+%rename(load) _load;
+%rename(addfloat) _addfloat;
+%rename(getfloat) _getfloat;
+%rename(addnum) _addnum;
+%rename(gethex) _gethex;
+%rename(getnum) _getnum;
+%rename(setstr) _setstr;
+%rename(setint) _setint;
+%rename(setnum) _setnum;
+%rename(setfloat) _setfloat;
+
+extern void *_new();
+extern void _delete(void *);
+extern char *_getstr(void *, int);
+extern long long _getint(void *, int);
+extern void _addstr(void *, char *, unsigned short, unsigned short);
+extern void _addint(void *, int, long long, unsigned short);
+extern void _load(void *, void *, unsigned short);
+extern void _addfloat(void *, int, double, unsigned short);
+extern double _getfloat(void *, int);
+extern void _addnum(void *, int, double, short, unsigned short, unsigned short, unsigned short);
+extern char *_gethex(void *, int);
+extern double _getnum(void *, int);
+extern void _setstr(void *, char *, int);
+extern void _setint(void *, long long, int);
+extern void _setnum(void *, double, int);
+extern void _setfloat(void *, double, int);
+
+
diff --git a/Modules/vms/dtr/rec.py b/Modules/vms/dtr/rec.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5weQ==
--- /dev/null
+++ b/Modules/vms/dtr/rec.py
@@ -0,0 +1,156 @@
+# This file was automatically generated by SWIG (http://www.swig.org).
+# Version 3.0.5
+#
+# Do not make changes to this file unless you know what you are doing--modify
+# the SWIG interface file instead.
+
+
+
+
+
+from sys import version_info
+if version_info >= (2, 6, 0):
+    def swig_import_helper():
+        from os.path import dirname
+        import imp
+        fp = None
+        try:
+            fp, pathname, description = imp.find_module('_rec', [dirname(__file__)])
+        except ImportError:
+            import _rec
+            return _rec
+        if fp is not None:
+            try:
+                _mod = imp.load_module('_rec', fp, pathname, description)
+            finally:
+                fp.close()
+            return _mod
+    _rec = swig_import_helper()
+    del swig_import_helper
+else:
+    import _rec
+del version_info
+try:
+    _swig_property = property
+except NameError:
+    pass  # Python < 2.2 doesn't have 'property'.
+
+
+def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
+    if (name == "thisown"):
+        return self.this.own(value)
+    if (name == "this"):
+        if type(value).__name__ == 'SwigPyObject':
+            self.__dict__[name] = value
+            return
+    method = class_type.__swig_setmethods__.get(name, None)
+    if method:
+        return method(self, value)
+    if (not static):
+        object.__setattr__(self, name, value)
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+
+def _swig_setattr(self, class_type, name, value):
+    return _swig_setattr_nondynamic(self, class_type, name, value, 0)
+
+
+def _swig_getattr_nondynamic(self, class_type, name, static=1):
+    if (name == "thisown"):
+        return self.this.own()
+    method = class_type.__swig_getmethods__.get(name, None)
+    if method:
+        return method(self)
+    if (not static):
+        return object.__getattr__(self, name)
+    else:
+        raise AttributeError(name)
+
+def _swig_getattr(self, class_type, name):
+    return _swig_getattr_nondynamic(self, class_type, name, 0)
+
+
+def _swig_repr(self):
+    try:
+        strthis = "proxy of " + self.this.__repr__()
+    except:
+        strthis = ""
+    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
+
+try:
+    _object = object
+    _newclass = 1
+except AttributeError:
+    class _object:
+        pass
+    _newclass = 0
+
+
+
+def new():
+    return _rec.new()
+new = _rec.new
+
+def delete(arg1):
+    return _rec.delete(arg1)
+delete = _rec.delete
+
+def getstr(arg1, arg2):
+    return _rec.getstr(arg1, arg2)
+getstr = _rec.getstr
+
+def getint(arg1, arg2):
+    return _rec.getint(arg1, arg2)
+getint = _rec.getint
+
+def addstr(arg1, arg2, arg3, arg4):
+    return _rec.addstr(arg1, arg2, arg3, arg4)
+addstr = _rec.addstr
+
+def addint(arg1, arg2, arg3, arg4):
+    return _rec.addint(arg1, arg2, arg3, arg4)
+addint = _rec.addint
+
+def load(arg1, arg2, arg3):
+    return _rec.load(arg1, arg2, arg3)
+load = _rec.load
+
+def addfloat(arg1, arg2, arg3, arg4):
+    return _rec.addfloat(arg1, arg2, arg3, arg4)
+addfloat = _rec.addfloat
+
+def getfloat(arg1, arg2):
+    return _rec.getfloat(arg1, arg2)
+getfloat = _rec.getfloat
+
+def addnum(arg1, arg2, arg3, arg4, arg5, arg6, arg7):
+    return _rec.addnum(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
+addnum = _rec.addnum
+
+def gethex(arg1, arg2):
+    return _rec.gethex(arg1, arg2)
+gethex = _rec.gethex
+
+def getnum(arg1, arg2):
+    return _rec.getnum(arg1, arg2)
+getnum = _rec.getnum
+
+def setstr(arg1, arg2, arg3):
+    return _rec.setstr(arg1, arg2, arg3)
+setstr = _rec.setstr
+
+def setint(arg1, arg2, arg3):
+    return _rec.setint(arg1, arg2, arg3)
+setint = _rec.setint
+
+def setnum(arg1, arg2, arg3):
+    return _rec.setnum(arg1, arg2, arg3)
+setnum = _rec.setnum
+
+def setfloat(arg1, arg2, arg3):
+    return _rec.setfloat(arg1, arg2, arg3)
+setfloat = _rec.setfloat
+# This file is compatible with both classic and new-style classes.
+
+
diff --git a/Modules/vms/dtr/rsscanf.c b/Modules/vms/dtr/rsscanf.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3Jzc2NhbmYuYw==
--- /dev/null
+++ b/Modules/vms/dtr/rsscanf.c
@@ -0,0 +1,505 @@
+/*
+ * rsscanf.c
+ *
+ * vsscanf(), from which the rest of the scanf()
+ * family is built
+ *
+ * Adapted from https://github.com/apache/mynewt-core/blob/master/libc/baselibc/src/vsscanf.c
+ *
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <inttypes.h>
+#include <string.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef LONG_BIT
+#define LONG_BIT (CHAR_BIT*sizeof(long))
+#endif
+
+#ifndef __STDINT_LOADED
+typedef unsigned int uintmax_t;
+#endif
+
+enum flags {
+	FL_SPLAT = 0x01,	/* Drop the value, do not assign */
+	FL_INV   = 0x02,	/* Character-set with inverse */
+	FL_WIDTH = 0x04,	/* Field width specified */
+	FL_MINUS = 0x08,	/* Negative number */
+};
+
+enum ranks {
+	rank_char     = -2,
+	rank_short    = -1,
+	rank_int      = 0,
+	rank_long     = 1,
+	rank_longlong = 2,
+	rank_ptr      = INT_MAX	/* Special value used for pointers */
+};
+
+#define MIN_RANK	rank_char
+#define MAX_RANK	rank_longlong
+
+#define INTMAX_RANK	rank_longlong
+#define SIZE_T_RANK	rank_long
+#define PTRDIFF_T_RANK	rank_long
+
+enum bail {
+	bail_none = 0,		/* No error condition */
+	bail_eof,		/* Hit EOF */
+	bail_err		/* Conversion mismatch */
+};
+
+
+
+static inline int digitval(int ch)
+{
+    	if (ch >= '0' && ch <= '9') {
+		return ch - '0';
+	} else if (ch >= 'A' && ch <= 'Z') {
+		return ch - 'A' + 10;
+	} else if (ch >= 'a' && ch <= 'z') {
+		return ch - 'a' + 10;
+	} else {
+		return -1;
+	}
+}
+
+static uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n)
+{
+	int minus = 0;
+	uintmax_t v = 0;
+	int d;
+
+	while (n && isspace((unsigned char)*nptr)) {
+		nptr++;
+		n--;
+	}
+
+	/* Single optional + or - */
+	if (n) {
+		char c = *nptr;
+		if (c == '-' || c == '+') {
+			minus = (c == '-');
+			nptr++;
+			n--;
+		}
+	}
+
+	if (base == 0) {
+		if (n >= 2 && nptr[0] == '0' &&
+		    (nptr[1] == 'x' || nptr[1] == 'X')) {
+			n -= 2;
+			nptr += 2;
+			base = 16;
+		} else if (n >= 1 && nptr[0] == '0') {
+			n--;
+			nptr++;
+			base = 8;
+		} else {
+			base = 10;
+		}
+	} else if (base == 16) {
+		if (n >= 2 && nptr[0] == '0' &&
+		    (nptr[1] == 'x' || nptr[1] == 'X')) {
+			n -= 2;
+			nptr += 2;
+		}
+	}
+
+	while (n && (d = digitval(*nptr)) >= 0 && d < base) {
+		v = v * base + d;
+		n--;
+		nptr++;
+	}
+
+	if (endptr)
+		*endptr = (char *)nptr;
+
+	return minus ? -v : v;
+}
+
+
+static inline const char *skipspace(const char *p)
+{
+	while (isspace((unsigned char)*p))
+		p++;
+	return p;
+}
+
+#undef set_bit
+static inline void set_bit(unsigned long *bitmap, unsigned int bit)
+{
+	bitmap[bit / LONG_BIT] |= 1UL << (bit % LONG_BIT);
+}
+
+#undef test_bit
+static inline int test_bit(unsigned long *bitmap, unsigned int bit)
+{
+	return (int)(bitmap[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1;
+}
+
+int rsscanf(const char *buffer, const char *format, char ***argv)
+{
+	const char *p = format;
+	char ch;
+	unsigned char uc;
+	const char *q = buffer;
+	const char *qq;
+	uintmax_t val = 0;
+	int rank = rank_int;	/* Default rank */
+	unsigned int width = UINT_MAX;
+	int base;
+	enum flags flags = 0;
+	enum {
+		st_normal,	/* Ground state */
+		st_flags,	/* Special flags */
+		st_width,	/* Field width */
+		st_modifiers,	/* Length or conversion modifiers */
+		st_match_init,	/* Initial state of %[ sequence */
+		st_match,	/* Main state of %[ sequence */
+		st_match_range,	/* After - in a %[ sequence */
+	} state = st_normal;
+	char *sarg = NULL;	/* %s %c or %[ string argument */
+	enum bail bail = bail_none;
+	int sign;
+	int converted = 0;	/* Successful conversions */
+	unsigned long matchmap[((1 << CHAR_BIT) + (LONG_BIT - 1)) / LONG_BIT];
+	int matchinv = 0;	/* Is match map inverted? */
+	unsigned char range_start = 0;
+	(void)sign;
+	char tmp[256];
+
+	*argv = NULL;
+
+	while ((ch = *p++) && !bail) {
+		switch (state) {
+		case st_normal:
+			if (ch == '%') {
+				state = st_flags;
+				flags = 0;
+				rank = rank_int;
+				width = UINT_MAX;
+			} else if (isspace((unsigned char)ch)) {
+				q = skipspace(q);
+			} else {
+				if (*q == ch)
+					q++;
+				else
+					bail = bail_err; /* Match failure */
+			}
+			break;
+
+		case st_flags:
+			switch (ch) {
+			case '*':
+				flags |= FL_SPLAT;
+				break;
+			case '0':
+			case '1':
+			case '2':
+			case '3':
+			case '4':
+			case '5':
+			case '6':
+			case '7':
+			case '8':
+			case '9':
+				width = (ch - '0');
+				state = st_width;
+				flags |= FL_WIDTH;
+				break;
+			default:
+				state = st_modifiers;
+				p--;	/* Process this character again */
+				break;
+			}
+			break;
+
+		case st_width:
+			if (ch >= '0' && ch <= '9') {
+				width = width * 10 + (ch - '0');
+			} else {
+				state = st_modifiers;
+				p--;	/* Process this character again */
+			}
+			break;
+
+		case st_modifiers:
+			switch (ch) {
+				/* Length modifiers - nonterminal sequences */
+			case 'h':
+				rank--;	/* Shorter rank */
+				break;
+			case 'l':
+				rank++;	/* Longer rank */
+				break;
+			case 'j':
+				rank = INTMAX_RANK;
+				break;
+			case 'z':
+				rank = SIZE_T_RANK;
+				break;
+			case 't':
+				rank = PTRDIFF_T_RANK;
+				break;
+			case 'L':
+			case 'q':
+				rank = rank_longlong;	/* long double/long long */
+				break;
+
+			default:
+				/* Output modifiers - terminal sequences */
+				/* Next state will be normal */
+				state = st_normal;
+
+				/* Canonicalize rank */
+				if (rank < MIN_RANK)
+					rank = MIN_RANK;
+				else if (rank > MAX_RANK)
+					rank = MAX_RANK;
+
+				switch (ch) {
+				case 'P':	/* Upper case pointer */
+				case 'p':	/* Pointer */
+					rank = rank_ptr;
+					base = 0;
+					sign = 0;
+					goto scan_int;
+
+				case 'i':	/* Base-independent integer */
+					base = 0;
+					sign = 1;
+					goto scan_int;
+
+				case 'd':	/* Decimal integer */
+					base = 10;
+					sign = 1;
+					goto scan_int;
+
+				case 'o':	/* Octal integer */
+					base = 8;
+					sign = 0;
+					goto scan_int;
+
+				case 'u':	/* Unsigned decimal integer */
+					base = 10;
+					sign = 0;
+					goto scan_int;
+
+				case 'x':	/* Hexadecimal integer */
+				case 'X':
+					base = 16;
+					sign = 0;
+					goto scan_int;
+
+				case 'n':	/* # of characters consumed */
+					val = (q - buffer);
+					goto set_integer;
+
+				      scan_int:
+					q = skipspace(q);
+					if (!*q) {
+						bail = bail_eof;
+						break;
+					}
+					val =
+					    strntoumax(q, (char **)&qq, base,
+						       width);
+					if (qq == q) {
+						bail = bail_err;
+						break;
+					}
+					q = qq;
+					if (!(flags & FL_SPLAT))
+						converted++;
+					/* fall through */
+
+				      set_integer:
+					if (!(flags & FL_SPLAT)) {
+						switch (rank) {
+						case rank_char:
+							sprintf(tmp, "%c", *(char*)&val);
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+							break;
+						case rank_short:
+							sprintf(tmp, "%d", *(short*)&val);
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+							break;
+						case rank_int:
+							sprintf(tmp, "%d", *(int*)&val);
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+							break;
+						case rank_long:
+							sprintf(tmp, "%ld", *(long*)&val);
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+							break;
+						case rank_longlong:
+							sprintf(tmp, "%lld", *(long long int*)&val);
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+							break;
+						case rank_ptr:
+							sprintf(tmp, "%llx", *(void**)&val);
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+							break;
+						}
+					}
+					break;
+
+				case 'c':	/* Character */
+					/* Default width == 1 */
+					width = (flags & FL_WIDTH) ? width : 1;
+					if (flags & FL_SPLAT) {
+						while (width--) {
+							if (!*q) {
+								bail = bail_eof;
+								break;
+							}
+						}
+					} else {
+						sarg = tmp;
+						while (width--) {
+							if (!*q) {
+								bail = bail_eof;
+								break;
+							}
+							*sarg++ = *q++;
+						}
+						if (!bail) {
+							converted++;
+							*sarg = '\0';
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+						}
+					}
+					break;
+
+				case 's':	/* String */
+					uc = 1;	/* Anything nonzero */
+					if (flags & FL_SPLAT) {
+						while (width-- && (uc = *q) &&
+						       !isspace(uc)) {
+							q++;
+						}
+					} else {
+						char *sp;
+						sp = sarg = tmp;
+						while (width-- && (uc = *q) &&
+						       !isspace(uc)) {
+							*sp++ = uc;
+							q++;
+						}
+						if (sarg != sp) {
+							/* Terminate output */
+							*sp = '\0';
+							converted++;
+							*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+							(*argv)[converted - 1] = strdup(tmp);
+						}
+					}
+					if (!uc)
+						bail = bail_eof;
+					break;
+
+				case '[':	/* Character range */
+					sarg = (flags & FL_SPLAT) ? NULL
+						: tmp;
+					state = st_match_init;
+					matchinv = 0;
+					memset(matchmap, 0, sizeof matchmap);
+					break;
+
+				case '%':	/* %% sequence */
+					if (*q == '%')
+						q++;
+					else
+						bail = bail_err;
+					break;
+
+				default:	/* Anything else */
+					/* Unknown sequence */
+					bail = bail_err;
+					break;
+				}
+			}
+			break;
+
+		case st_match_init:	/* Initial state for %[ match */
+			if (ch == '^' && !(flags & FL_INV)) {
+				matchinv = 1;
+			} else {
+				set_bit(matchmap, (unsigned char)ch);
+				state = st_match;
+			}
+			break;
+
+		case st_match:	/* Main state for %[ match */
+			if (ch == ']') {
+				goto match_run;
+			} else if (ch == '-') {
+				range_start = (unsigned char)ch;
+				state = st_match_range;
+			} else {
+				set_bit(matchmap, (unsigned char)ch);
+			}
+			break;
+
+		case st_match_range:	/* %[ match after - */
+			if (ch == ']') {
+				/* - was last character */
+				set_bit(matchmap, (unsigned char)'-');
+				goto match_run;
+			} else {
+				int i;
+				for (i = range_start; i < (unsigned char)ch;
+				     i++)
+					set_bit(matchmap, i);
+				state = st_match;
+			}
+			break;
+
+		      match_run:	/* Match expression finished */
+			qq = q;
+			uc = 1;	/* Anything nonzero */
+			while (width && (uc = *q)
+			       && test_bit(matchmap, uc)^matchinv) {
+				if (sarg)
+					*sarg++ = uc;
+				q++;
+			}
+			if (q != qq && sarg) {
+				*sarg = '\0';
+				converted++;
+				*argv = realloc(*argv, (converted + 1) * sizeof(char *));
+				(*argv)[converted - 1] = strdup(tmp);
+			} else {
+				bail = bail_err;
+			}
+			if (!uc)
+				bail = bail_eof;
+			break;
+		}
+	}
+
+	if (converted) {
+		(*argv)[converted] = NULL;
+	}
+
+	if (bail == bail_eof && !converted) {
+		converted = -1;	/* Return EOF (-1) */
+	}
+
+
+	return converted;
+}
+
diff --git a/Modules/vms/dvidef/dvidef.i b/Modules/vms/dvidef/dvidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHZpZGVmL2R2aWRlZi5p
--- /dev/null
+++ b/Modules/vms/dvidef/dvidef.i
@@ -0,0 +1,298 @@
+%module dvidef
+
+%constant int DVI__DEVCHAR = 2;
+%constant int DVI__DEVCLASS = 4;
+%constant int DVI__DEVTYPE = 6;
+%constant int DVI__DEVBUFSIZ = 8;
+%constant int DVI__DEVDEPEND = 10;
+%constant int DVI__UNIT = 12;
+%constant int DVI__PID = 14;
+%constant int DVI__OWNUIC = 16;
+%constant int DVI__VPROT = 18;
+%constant int DVI__ERRCNT = 20;
+%constant int DVI__OPCNT = 22;
+%constant int DVI__RECSIZ = 24;
+%constant int DVI__MAXBLOCK = 26;
+%constant int DVI__DEVDEPEND2 = 28;
+%constant int DVI__REFCNT = 30;
+%constant int DVI__DEVNAM = 32;
+%constant int DVI__VOLNAM = 34;
+%constant int DVI__SECTORS = 36;
+%constant int DVI__TRACKS = 38;
+%constant int DVI__CYLINDERS = 40;
+%constant int DVI__FREEBLOCKS = 42;
+%constant int DVI__LOGVOLNAM = 44;
+%constant int DVI__VOLNUMBER = 46;
+%constant int DVI__VOLCOUNT = 48;
+%constant int DVI__ROOTDEVNAM = 50;
+%constant int DVI__NEXTDEVNAM = 52;
+%constant int DVI__TRANSCNT = 54;
+%constant int DVI__MOUNTCNT = 56;
+%constant int DVI__CLUSTER = 58;
+%constant int DVI__MAXFILES = 60;
+%constant int DVI__SERIALNUM = 62;
+%constant int DVI__ACPPID = 64;
+%constant int DVI__ACPTYPE = 66;
+%constant int DVI__CONCEALED = 68;
+%constant int DVI__REC = 70;
+%constant int DVI__CCL = 72;
+%constant int DVI__TRM = 74;
+%constant int DVI__DIR = 76;
+%constant int DVI__SDI = 78;
+%constant int DVI__SQD = 80;
+%constant int DVI__SPL = 82;
+%constant int DVI__OPR = 84;
+%constant int DVI__RCT = 86;
+%constant int DVI__NET = 88;
+%constant int DVI__FOD = 90;
+%constant int DVI__DUA = 92;
+%constant int DVI__SHR = 94;
+%constant int DVI__GEN = 96;
+%constant int DVI__AVL = 98;
+%constant int DVI__MNT = 100;
+%constant int DVI__MBX = 102;
+%constant int DVI__DMT = 104;
+%constant int DVI__ELG = 106;
+%constant int DVI__ALL = 108;
+%constant int DVI__FOR = 110;
+%constant int DVI__SWL = 112;
+%constant int DVI__IDV = 114;
+%constant int DVI__ODV = 116;
+%constant int DVI__RND = 118;
+%constant int DVI__RTM = 120;
+%constant int DVI__RCK = 122;
+%constant int DVI__WCK = 124;
+%constant int DVI__TT_PASSALL = 126;
+%constant int DVI__TT_NOECHO = 128;
+%constant int DVI__TT_NOTYPEAHD = 130;
+%constant int DVI__TT_ESCAPE = 132;
+%constant int DVI__TT_HOSTSYNC = 134;
+%constant int DVI__TT_TTSYNC = 136;
+%constant int DVI__TT_SCRIPT = 138;
+%constant int DVI__TT_LOWER = 140;
+%constant int DVI__TT_MECHTAB = 142;
+%constant int DVI__TT_WRAP = 144;
+%constant int DVI__TT_CRFILL = 146;
+%constant int DVI__TT_LFFILL = 148;
+%constant int DVI__TT_SCOPE = 150;
+%constant int DVI__TT_REMOTE = 152;
+%constant int DVI__TT_EIGHTBIT = 154;
+%constant int DVI__TT_MBXDSABL = 156;
+%constant int DVI__TT_NOBRDCST = 158;
+%constant int DVI__TT_READSYNC = 160;
+%constant int DVI__TT_MECHFORM = 162;
+%constant int DVI__TT_HALFDUP = 164;
+%constant int DVI__TT_MODEM = 166;
+%constant int DVI__TT_OPER = 168;
+%constant int DVI__TT_PAGE = 170;
+%constant int DVI__TT_LOCALECHO = 172;
+%constant int DVI__TT_AUTOBAUD = 174;
+%constant int DVI__TT_HANGUP = 176;
+%constant int DVI__TT_MODHANGUP = 178;
+%constant int DVI__TT_BRDCSTMBX = 180;
+%constant int DVI__TT_DMA = 182;
+%constant int DVI__TT_ALTYPEAHD = 184;
+%constant int DVI__TT_SETSPEED = 186;
+%constant int DVI__TT_DCL_MAILBX = 188;
+%constant int DVI__TT_EDITING = 190;
+%constant int DVI__TT_INSERT = 192;
+%constant int DVI__TT_FALLBACK = 194;
+%constant int DVI__TT_DIALUP = 196;
+%constant int DVI__TT_SECURE = 198;
+%constant int DVI__TT_DISCONNECT = 200;
+%constant int DVI__TT_PASTHRU = 202;
+%constant int DVI__TT_SIXEL = 204;
+%constant int DVI__TT_DRCS = 206;
+%constant int DVI__TT_PRINTER = 208;
+%constant int DVI__TT_APP_KEYPAD = 210;
+%constant int DVI__TT_SYSPWD = 212;
+%constant int DVI__TT_ANSICRT = 214;
+%constant int DVI__TT_REGIS = 216;
+%constant int DVI__TT_BLOCK = 218;
+%constant int DVI__TT_AVO = 220;
+%constant int DVI__TT_EDIT = 222;
+%constant int DVI__TT_DECCRT = 224;
+%constant int DVI__STS = 226;
+%constant int DVI__DEVSTS = 228;
+%constant int DVI__DEVCHAR2 = 230;
+%constant int DVI__FULLDEVNAM = 232;
+%constant int DVI__LOCKID = 234;
+%constant int DVI__ALLDEVNAM = 236;
+%constant int DVI__VOLSETMEM = 238;
+%constant int DVI__DEVLOCKNAM = 240;
+%constant int DVI__ALLOCLASS = 242;
+%constant int DVI__ALT_HOST_AVAIL = 244;
+%constant int DVI__ALT_HOST_NAME = 246;
+%constant int DVI__ALT_HOST_TYPE = 248;
+%constant int DVI__HOST_AVAIL = 250;
+%constant int DVI__HOST_COUNT = 252;
+%constant int DVI__HOST_NAME = 254;
+%constant int DVI__HOST_TYPE = 256;
+%constant int DVI__REMOTE_DEVICE = 258;
+%constant int DVI__SERVED_DEVICE = 260;
+%constant int DVI__SHDW_CATCHUP_COPYING = 262;
+%constant int DVI__SHDW_MASTER = 264;
+%constant int DVI__SHDW_MASTER_NAME = 266;
+%constant int DVI__SHDW_MEMBER = 268;
+%constant int DVI__SHDW_MERGE_COPYING = 270;
+%constant int DVI__SHDW_NEXT_MBR_NAME = 272;
+%constant int DVI__TT_PHYDEVNAM = 274;
+%constant int DVI__TT_DECCRT2 = 276;
+%constant int DVI__MEDIA_NAME = 278;
+%constant int DVI__MEDIA_TYPE = 280;
+%constant int DVI__MEDIA_ID = 282;
+%constant int DVI__SHDW_FAILED_MEMBER = 284;
+%constant int DVI__MSCP_UNIT_NUMBER = 286;
+%constant int DVI__DISPLAY_DEVNAM = 288;
+%constant int DVI__TT_ACCPORNAM = 290;
+%constant int DVI__DEVDEPEND3 = 292;
+%constant int DVI__TT_MULTISESSION = 294;
+%constant int DVI__TT_DECCRT3 = 296;
+%constant int DVI__SET_HOST_TERMINAL = 298;
+%constant int DVI__DFS_ACCESS = 300;
+%constant int DVI__DAPDEVNAM = 302;
+%constant int DVI__TT_DECCRT4 = 304;
+%constant int DVI__TT_CHARSET = 306;
+%constant int DVI__TT_CS_KANA = 308;
+%constant int DVI__TT_CS_KANJI = 310;
+%constant int DVI__TT_CS_HANZI = 312;
+%constant int DVI__TT_CS_HANGUL = 314;
+%constant int DVI__TT_CS_HANYU = 316;
+%constant int DVI__TT_CS_THAI = 318;
+%constant int DVI__DEVDEPEND4 = 320;
+%constant int DVI__DEVICE_TYPE_NAME = 322;
+%constant int DVI__TT_ASIAN_MODE = 324;
+%constant int DVI__PREFERRED_CPU = 326;
+%constant int DVI__TT_DECCRT5 = 328;
+%constant int DVI__TT_ANSI_COLOR = 330;
+%constant int DVI__MT3_SUPPORTED = 332;
+%constant int DVI__MT3_DENSITY = 334;
+%constant int DVI__DRIVER_IMAGE_NAME = 336;
+%constant int DVI__CLIENT_DEVICE = 338;
+%constant int DVI__FC_PORT_NAME = 340;
+%constant int DVI__FC_NODE_NAME = 342;
+%constant int DVI__WWID = 344;
+%constant int DVI__VOLCHAR = 346;
+%constant int DVI__HBVS_MASTER_MEMBER = 348;
+%constant int DVI__MULTIPATH = 350;
+%constant int DVI__MPDEV_CURRENT_PATH = 352;
+%constant int DVI__VOLSIZE = 354;
+%constant int DVI__EXPSIZE = 356;
+%constant int DVI__QLEN = 358;
+%constant int DVI__SHDW_SITE = 360;
+%constant int DVI__SHDW_MBR_COUNT = 362;
+%constant int DVI__SHDW_DEVICE_COUNT = 364;
+%constant int DVI__SHDW_MBR_READ_COST = 366;
+%constant int DVI__SHDW_READ_SOURCE = 368;
+%constant int DVI__SHDW_TIMEOUT = 370;
+%constant int DVI__DVI_UNUSED_1 = 372;
+%constant int DVI__SHDW_GENERATION = 374;
+%constant int DVI__SHDW_STATUS = 376;
+%constant int DVI__SHDW_MBR_COPY_DONE = 378;
+%constant int DVI__SHDW_MBR_MERGE_DONE = 380;
+%constant int DVI__SHDW_MINIMERGE_ENABLE = 382;
+%constant int DVI__DVI_UNUSED_2 = 384;
+%constant int DVI__SHDW_COPIER_NODE = 386;
+%constant int DVI__SHDW_MASTER_MBR = 388;
+%constant int DVI__MPDEV_AUTO_PATH_SW_CNT = 390;
+%constant int DVI__MPDEV_MAN_PATH_SW_CNT = 392;
+%constant int DVI__WRITETHRU_CACHE_ENABLED = 394;
+%constant int DVI__NOCACHE_ON_VOLUME = 396;
+%constant int DVI__MOUNTVER_ELIGIBLE = 398;
+%constant int DVI__ERASE_ON_DELETE = 400;
+%constant int DVI__NOHIGHWATER = 402;
+%constant int DVI__NOSHARE_MOUNTED = 404;
+%constant int DVI__CLUSLOCK = 406;
+%constant int DVI__ODS2_SUBSET0 = 408;
+%constant int DVI__PROT_SUBSYSTEM_ENABLED = 410;
+%constant int DVI__ODS5 = 412;
+%constant int DVI__ACCESSTIMES_RECORDED = 414;
+%constant int DVI__HARDLINKS_SUPPORTED = 416;
+%constant int DVI__SCSI_DEVICE_FIRMWARE_REV = 418;
+%constant int DVI__TOTAL_PATH_COUNT = 420;
+%constant int DVI__AVAILABLE_PATH_COUNT = 422;
+%constant int DVI__VOLUME_EXTEND_QUANTITY = 424;
+%constant int DVI__MOUNT_TIME = 426;
+%constant int DVI__VOLUME_MOUNT_SYS = 428;
+%constant int DVI__VOLUME_MOUNT_GROUP = 430;
+%constant int DVI__PATH_AVAILABLE = 432;
+%constant int DVI__PATH_USER_DISABLED = 434;
+%constant int DVI__PATH_NOT_RESPONDING = 436;
+%constant int DVI__PATH_POLL_ENABLED = 438;
+%constant int DVI__MVSUPMSG = 440;
+%constant int DVI__PATH_SWITCH_TO_TIME = 442;
+%constant int DVI__PATH_SWITCH_FROM_TIME = 444;
+%constant int DVI__ERROR_RESET_TIME = 446;
+%constant int DVI__DEVICE_MAX_IO_SIZE = 448;
+%constant int DVI__VOLUME_RETAIN_MAX = 450;
+%constant int DVI__VOLUME_RETAIN_MIN = 452;
+%constant int DVI__PREFERRED_CPU_BITMAP = 454;
+%constant int DVI__MAILBOX_INITIAL_QUOTA = 456;
+%constant int DVI__MAILBOX_BUFFER_QUOTA = 458;
+%constant int DVI__VOLUME_WINDOW = 460;
+%constant int DVI__VOLUME_SPOOLED_DEV_CNT = 462;
+%constant int DVI__VOLUME_PENDING_WRITE_ERR = 464;
+%constant int DVI__LAN_SPEED = 466;
+%constant int DVI__LAN_LINK_UP = 468;
+%constant int DVI__LAN_DEFAULT_MAC_ADDRESS = 470;
+%constant int DVI__LAN_MAC_ADDRESS = 472;
+%constant int DVI__LAN_FULL_DUPLEX = 474;
+%constant int DVI__LAN_ALL_MULTICAST_MODE = 476;
+%constant int DVI__LAN_PROMISCUOUS_MODE = 478;
+%constant int DVI__LAN_JUMBO_FRAMES_ENABLED = 480;
+%constant int DVI__LAN_AUTONEG_ENABLED = 482;
+%constant int DVI__LAN_PROTOCOL_TYPE = 484;
+%constant int DVI__LAN_PROTOCOL_NAME = 486;
+%constant int DVI__LAN_LINK_STATE_VALID = 488;
+%constant int DVI__FC_HBA_FIRMWARE_REV = 490;
+%constant int DVI__ADAPTER_IDENT = 492;
+%constant int DVI__MOUNTCNT_CLUSTER = 494;
+%constant int DVI__SHDW_HBMM_RESET_COUNT = 496;
+%constant int DVI__SHDW_HBMM_RESET_TIME = 498;
+%constant int DVI__SPECIAL_FILES = 500;
+%constant int DVI__NOXFCCACHE_ON_VOLUME = 502;
+%constant int DVI__XFC_DEPOSING = 504;
+%constant int DVI__SSD_USAGE_REMAINING = 506;
+%constant int DVI__SSD_LIFE_REMAINING = 508;
+%constant int DVI_M_SECONDARY = 0x1L;
+%constant int DVI_M_NOREDIRECT = 0x8000L;
+%constant int DVI_S_DVIDEF = 2;
+%constant int DVI_S_ITEM_CODE = 14;
+%constant int DVI_M_VOL_READDIR = 0xFL;
+%constant int DVI_C_READDIR_NONE = 0;
+%constant int DVI_C_READDIR_VIO = 1;
+%constant int DVI_C_READDIR_IO = 2;
+%constant int DVI_C_READDIR_ACP = 3;
+%constant int DVI_M_VOL_LENGTH_HINT = 0x10L;
+%constant int DVI_M_VOL_CACHING_ATTR = 0x20L;
+%constant int DVI_M_VOL_ACCESS_DATE = 0x40L;
+%constant int DVI_M_VOL_HARDLINK = 0x80L;
+%constant int DVI_M_VOL_SET_SECURITY = 0x100L;
+%constant int DVI_M_VOL_FID_TO_NAME = 0x200L;
+%constant int DVI_M_VOL_ODS1_STYLE_PURGE = 0x400L;
+%constant int DVI_M_VOL_SHARED_TRUNCATE = 0x800L;
+%constant int DVI_M_VOL_WRITE_BARRIER = 0x1000L;
+%constant int DVI_M_VOL_DIRSEQ_QIO = 0x2000L;
+%constant int DVI_M_VOL_EFS = 0x4000L;
+%constant int DVI_M_VOL_UCS2 = 0x8000L;
+%constant int DVI_M_VOL_CASE_VARIANT = 0x10000L;
+%constant int DVI_M_VOL_MODDATE = 0x20000L;
+%constant int DVI_M_VOL_SPECIAL_FILE = 0x40000L;
+%constant int DVI_M_VOL_SSIO = 0x80000L;
+%constant int DVI_M_VOL_LOOKUP_SPECIAL = 0x100000L;
+%constant int DVI_S_DVIVOLDEF = 16;
+%constant int DVI_S_VOL_READDIR = 4;
+%constant int DVI_C_SECONDARY = 1;
+%constant int DVI_C_ACP_F11V1 = 1;
+%constant int DVI_C_ACP_F11V2 = 2;
+%constant int DVI_C_ACP_MTA = 3;
+%constant int DVI_C_ACP_NET = 4;
+%constant int DVI_C_ACP_REM = 5;
+%constant int DVI_C_ACP_HBS = 6;
+%constant int DVI_C_ACP_F11V3 = 7;
+%constant int DVI_C_ACP_F11V4 = 8;
+%constant int DVI_C_ACP_F64 = 9;
+%constant int DVI_C_ACP_UCX = 10;
+%constant int DVI_C_ACP_F11V5 = 11;
+%constant int DVI_C_ACP_F11V6 = 12;
+%constant int DVI_C_ACP_HBVS = 13;
diff --git a/Modules/vms/dvsdef/dvsdef.i b/Modules/vms/dvsdef/dvsdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHZzZGVmL2R2c2RlZi5p
--- /dev/null
+++ b/Modules/vms/dvsdef/dvsdef.i
@@ -0,0 +1,4 @@
+%module dvsdef
+
+%constant int DVS__DEVCLASS = 1;
+%constant int DVS__DEVTYPE = 2;
diff --git a/Modules/vms/efndef/efndef.i b/Modules/vms/efndef/efndef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZWZuZGVmL2VmbmRlZi5p
--- /dev/null
+++ b/Modules/vms/efndef/efndef.i
@@ -0,0 +1,4 @@
+%module efndef
+
+%constant int EFN_C_ENF = 128;
+%constant int EFN_C_CTX = 129;
diff --git a/Modules/vms/eradef/eradef.i b/Modules/vms/eradef/eradef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZXJhZGVmL2VyYWRlZi5p
--- /dev/null
+++ b/Modules/vms/eradef/eradef.i
@@ -0,0 +1,9 @@
+%module eradef
+
+%constant int ERA_K_LODUMMY = 0;
+%constant int ERA_K_MEMORY = 1;
+%constant int ERA_K_DISK = 2;
+%constant int ERA_K_TAPE = 3;
+%constant int ERA_K_HIDUMMY = 4;
+%constant int ERA_K_MINTYPE = 1;
+%constant int ERA_K_MAXTYPE = 3;
diff --git a/Modules/vms/fabdef/fabdef.i b/Modules/vms/fabdef/fabdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZmFiZGVmL2ZhYmRlZi5p
--- /dev/null
+++ b/Modules/vms/fabdef/fabdef.i
@@ -0,0 +1,101 @@
+%module fabdef
+
+%constant int FAB_C_BID = 3;
+%constant int FAB_M_PPF_RAT = 0x3FC0L;
+%constant int FAB_M_PPF_IND = 0x4000L;
+%constant int FAB_M_PPIFI = 0x8000L;
+%constant int FAB_M_ASY = 0x1L;
+%constant int FAB_M_MXV = 0x2L;
+%constant int FAB_M_SUP = 0x4L;
+%constant int FAB_M_TMP = 0x8L;
+%constant int FAB_M_TMD = 0x10L;
+%constant int FAB_M_DFW = 0x20L;
+%constant int FAB_M_SQO = 0x40L;
+%constant int FAB_M_RWO = 0x80L;
+%constant int FAB_M_POS = 0x100L;
+%constant int FAB_M_WCK = 0x200L;
+%constant int FAB_M_NEF = 0x400L;
+%constant int FAB_M_RWC = 0x800L;
+%constant int FAB_M_DMO = 0x1000L;
+%constant int FAB_M_SPL = 0x2000L;
+%constant int FAB_M_SCF = 0x4000L;
+%constant int FAB_M_DLT = 0x8000L;
+%constant int FAB_M_NFS = 0x10000L;
+%constant int FAB_M_UFO = 0x20000L;
+%constant int FAB_M_PPF = 0x40000L;
+%constant int FAB_M_INP = 0x80000L;
+%constant int FAB_M_CTG = 0x100000L;
+%constant int FAB_M_CBT = 0x200000L;
+%constant int FAB_M_SYNCSTS = 0x400000L;
+%constant int FAB_M_RCK = 0x800000L;
+%constant int FAB_M_NAM = 0x1000000L;
+%constant int FAB_M_CIF = 0x2000000L;
+%constant int FAB_M_ESC = 0x8000000L;
+%constant int FAB_M_TEF = 0x10000000L;
+%constant int FAB_M_OFP = 0x20000000L;
+%constant int FAB_M_KFO = 0x40000000L;
+%constant int FAB_M_EXTEND_FOP = 0x80000000L;
+%constant int FAB_M_ERL = 0x8000L;
+%constant int FAB_M_PUT = 0x1L;
+%constant int FAB_M_GET = 0x2L;
+%constant int FAB_M_DEL = 0x4L;
+%constant int FAB_M_UPD = 0x8L;
+%constant int FAB_M_TRN = 0x10L;
+%constant int FAB_M_BIO = 0x20L;
+%constant int FAB_M_BRO = 0x40L;
+%constant int FAB_M_EXE = 0x80L;
+%constant int FAB_M_SHRPUT = 0x1L;
+%constant int FAB_M_SHRGET = 0x2L;
+%constant int FAB_M_SHRDEL = 0x4L;
+%constant int FAB_M_SHRUPD = 0x8L;
+%constant int FAB_M_MSE = 0x10L;
+%constant int FAB_M_NIL = 0x20L;
+%constant int FAB_M_UPI = 0x40L;
+%constant int FAB_M_NQL = 0x80L;
+%constant int FAB_M_ORG = 0xF0L;
+%constant int FAB_C_SEQ = 0;
+%constant int FAB_C_REL = 16;
+%constant int FAB_C_IDX = 32;
+%constant int FAB_C_HSH = 48;
+%constant int FAB_C_SPECIAL = 64;
+%constant int FAB_M_FTN = 0x1L;
+%constant int FAB_M_CR = 0x2L;
+%constant int FAB_M_PRN = 0x4L;
+%constant int FAB_M_BLK = 0x8L;
+%constant int FAB_M_MSB = 0x10L;
+%constant int FAB_C_FIFO = 1;
+%constant int FAB_C_CHAR_SPECIAL = 2;
+%constant int FAB_C_BLOCK_SPECIAL = 3;
+%constant int FAB_C_SYMLINK = 4;
+%constant int FAB_C_SYMBOLIC_LINK = 5;
+%constant int FAB_C_RFM_DFLT = 2;
+%constant int FAB_C_UDF = 0;
+%constant int FAB_C_FIX = 1;
+%constant int FAB_C_VAR = 2;
+%constant int FAB_C_VFC = 3;
+%constant int FAB_C_STM = 4;
+%constant int FAB_C_STMLF = 5;
+%constant int FAB_C_STMCR = 6;
+%constant int FAB_C_MAXRFM = 6;
+%constant int FAB_M_ONLY_RU = 0x1L;
+%constant int FAB_M_RU = 0x2L;
+%constant int FAB_M_BI = 0x4L;
+%constant int FAB_M_AI = 0x8L;
+%constant int FAB_M_AT = 0x10L;
+%constant int FAB_M_NEVER_RU = 0x20L;
+%constant int FAB_M_JOURNAL_FILE = 0x40L;
+%constant int FAB_M_SSIO_RQST = 0x1L;
+%constant int FAB_M_SSIO_GRANTED = 0x2L;
+%constant int FAB_M_SSIO_FOC = 0x4L;
+%constant int FAB_M_RCF_RU = 0x1L;
+%constant int FAB_M_RCF_AI = 0x2L;
+%constant int FAB_M_RCF_BI = 0x4L;
+%constant int FAB_S_FABDEF = 80;
+%constant int FAB_S_PPF_RAT = 8;
+%constant int FAB_S_ORG = 4;
+%constant int FAB_S_LNM_MODE = 2;
+%constant int FAB_S_CHAN_MODE = 2;
+%constant int FAB_S_FILE_MODE = 2;
+%constant int FAB_S_CALLERS_MODE = 2;
+%constant int FAB_K_BLN = 80;
+%constant int FAB_C_BLN = 80;
diff --git a/Modules/vms/fdldef/fdldef.i b/Modules/vms/fdldef/fdldef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZmRsZGVmL2ZkbGRlZi5p
--- /dev/null
+++ b/Modules/vms/fdldef/fdldef.i
@@ -0,0 +1,11 @@
+%module fdldef
+
+%constant int FDL_C_VERSION = 2;
+%constant int FDL_K_VERSION = 2;
+%constant int FDL_M_SIGNAL = 0x1L;
+%constant int FDL_M_FDL_STRING = 0x2L;
+%constant int FDL_M_DEFAULT_STRING = 0x4L;
+%constant int FDL_M_FULL_OUTPUT = 0x8L;
+%constant int FDL_M__CALLBACK = 0x10L;
+%constant int FDL_M_LONG_NAMES = 0x20L;
+%constant int FDL_S_FDLDEF = 1;
diff --git a/Modules/vms/fpdef/fpdef.i b/Modules/vms/fpdef/fpdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZnBkZWYvZnBkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/fpdef/fpdef.i
@@ -0,0 +1,19 @@
+%module fpdef
+
+%constant int FP_K_BALANCE_PORTS = 1;
+%constant int FP_K_CPU_CONFIGURED = 2;
+%constant int FP_K_CPU_STARTING = 3;
+%constant int FP_K_CPU_STOPPING = 4;
+%constant int FP_K_CPU_STOP_FAILED = 5;
+%constant int HWINT_M_CPU_SELECTED = 0x1L;
+%constant int HWINT_M_CPU_NOT_IN_RAD = 0x2L;
+%constant int HWINT_M_PRIMARY = 0x4L;
+%constant int HWINT_S_HWINT_FLAGS = 8;
+%constant int FPRAD_S_FPRAD = 16;
+%constant int FP_M_SPL_HOLD = 0x1L;
+%constant int FP_K_LENGTH = 96;
+%constant int FP_C_LENGTH = 96;
+%constant int FP_S_FP = 96;
+%constant int FP_S_SIZE = 8;
+%constant int FP_S_USEABLE_CPUS = 8;
+%constant int FP_S_FAVORED_CPUS = 8;
diff --git a/Modules/vms/fscndef/fscndef.i b/Modules/vms/fscndef/fscndef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZnNjbmRlZi9mc2NuZGVmLmk=
--- /dev/null
+++ b/Modules/vms/fscndef/fscndef.i
@@ -0,0 +1,26 @@
+%module fscndef
+
+%constant int FSCN_M_NODE = 0x1L;
+%constant int FSCN_M_DEVICE = 0x2L;
+%constant int FSCN_M_ROOT = 0x4L;
+%constant int FSCN_M_DIRECTORY = 0x8L;
+%constant int FSCN_M_NAME = 0x10L;
+%constant int FSCN_M_TYPE = 0x20L;
+%constant int FSCN_M_VERSION = 0x40L;
+%constant int FSCN_M_NODE_PRIMARY = 0x80L;
+%constant int FSCN_M_NODE_ACS = 0x100L;
+%constant int FSCN_M_NODE_SECONDARY = 0x200L;
+%constant int FSCN_S_FLDFLAGS = 4;
+%constant int FSCN__FILESPEC = 1;
+%constant int FSCN__NODE = 2;
+%constant int FSCN__DEVICE = 3;
+%constant int FSCN__ROOT = 4;
+%constant int FSCN__DIRECTORY = 5;
+%constant int FSCN__NAME = 6;
+%constant int FSCN__TYPE = 7;
+%constant int FSCN__VERSION = 8;
+%constant int FSCN__NODE_PRIMARY = 9;
+%constant int FSCN__NODE_ACS = 10;
+%constant int FSCN__NODE_SECONDARY = 11;
+%constant int FSCN_S_ITEM_LEN = 8;
+%constant int FSCN_S_FSCNDEF = 8;
diff --git a/Modules/vms/iccdef/iccdef.i b/Modules/vms/iccdef/iccdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWNjZGVmL2ljY2RlZi5p
--- /dev/null
+++ b/Modules/vms/iccdef/iccdef.i
@@ -0,0 +1,22 @@
+%module iccdef
+
+%constant int IOS_ICC_S_IOS_ICC = 20;
+%constant int IOS_ICC_s_parameters = 16;
+%constant int IOS_ICC_s_connect = 16;
+%constant int IOS_ICC_s_receive = 16;
+%constant int IOS_ICC_s_reply = 16;
+%constant int IOS_ICC_s_transceive = 16;
+%constant int IOS_ICC_s_reply_buffer = 8;
+%constant int ICC_C_receive_len = 16;
+%constant int ICC_C_reply_len = 8;
+%constant int ICC_C_transceive_len = 20;
+%constant int ICC_C_MAX_ASSOC_LEN = 31;
+%constant int ICC_C_MAX_CONN_DATA_LEN = 1000;
+%constant int ICC_M_Synch_Mode = 0x1L;
+%constant int ICC_S_ICC_CONNECTION_FLAGS = 1;
+%constant int ICC_C_EV_CONNECT = 0;
+%constant int ICC_C_EV_DISCONNECT = 1;
+%constant int ICC_C_min_event = 0;
+%constant int ICC_C_max_event = 1;
+%constant int ICC_C_DFLT_ASSOC_HANDLE = 1;
+%constant int ICC_C_DEFAULT_MAXFLOWBUFCNT = 5;
diff --git a/Modules/vms/ile3/ile3.c b/Modules/vms/ile3/ile3.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9pbGUzLmM=
--- /dev/null
+++ b/Modules/vms/ile3/ile3.c
@@ -0,0 +1,403 @@
+#define __NEW_STARLET 1
+
+#include <descrip.h>
+#include <starlet.h>
+#include <ssdef.h>
+#include <iledef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <assert.h>
+
+#include "ile3.h"
+#include "lcl.h"
+
+#ifndef OKAY
+#define OKAY(STATUS) (((STATUS) & 1) != 0)
+#endif
+
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+
+void init_item(ILE3 *item) {
+    item->ile3$w_length = 0;
+    item->ile3$w_code = 0;
+    item->ile3$ps_bufaddr = NULL;
+    item->ile3$ps_retlen_addr = NULL;
+}
+
+
+void *_new()
+{
+    LCL_ile3 *obj = NULL;
+
+    obj = calloc(1, sizeof(LCL_ile3));
+    assert(obj);
+    obj->list = calloc(1, sizeof(ILE3));
+    assert(obj->list);
+    obj->types = calloc(1, sizeof(int));
+    assert(obj->types);
+    obj->size = 1;
+    obj->elem = 0;
+    init_item(&obj->list[obj->elem]);
+    return (obj);
+}
+
+int _size(void *addr) {
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    return obj->size - 1;
+}
+
+void _delete(void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    int i;
+    ILE3 *item;
+
+    for (i = 0; i < obj->size; i++) {
+	item = &obj->list[i];
+	if (item) {
+	    free(item->ile3$ps_bufaddr);
+	    free(item->ile3$ps_retlen_addr);
+	    free(item);
+	}
+	free(obj->types);
+    }
+
+    free(obj);
+}
+
+
+int _getbyte(void *addr, int idx, int n)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    unsigned short len;
+    char *tmp;
+
+    assert((idx >= 0) && (idx <= obj->elem));
+    item = &obj->list[idx];
+    len = *item->ile3$ps_retlen_addr;
+    assert(len);
+    assert(len > n);
+    tmp = (char *) item->ile3$ps_bufaddr;
+    return (tmp[n]);
+}
+
+
+char *_getstr(void *addr, int idx, int flag)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    unsigned short len;
+    char *tmp;
+    char *ptr;
+
+    assert((idx >= 0) && (idx <= obj->elem));
+    assert((obj->types[idx] == DSC$K_DTYPE_T));
+    item = &obj->list[idx];
+
+    ptr = (char *) item->ile3$ps_bufaddr;
+
+    if (flag) {
+        len = ptr[0];
+        ptr++;
+    } else {
+        len = *item->ile3$ps_retlen_addr;
+    }
+
+    tmp = malloc(len + 1);
+    assert(tmp);
+    memcpy(tmp, ptr, len);
+    tmp[len] = '\0';
+
+    if (!flag) {
+        char *cp = &tmp[len - 1];
+        while (cp >= tmp && isspace(*cp)) {
+            *cp = '\0';
+            cp--;
+        }
+    }
+
+    return (tmp);
+}
+
+
+long long _getint(void *addr, int idx)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    int type;
+
+    assert((idx >= 0) && (idx <= obj->elem));
+    item = &obj->list[idx];
+    type = obj->types[idx];
+
+    switch (type) {
+        case DSC$K_DTYPE_BU:
+            return (*(unsigned char *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_B:
+            return (*(char *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_WU:
+            return (*(unsigned short *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_W:
+            return (*(short *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_LU:
+            return (*(unsigned int *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_L:
+            return (*(int *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_QU:
+            return (*(unsigned long long *) item->ile3$ps_bufaddr);
+        case DSC$K_DTYPE_Q:
+            return (*(long long *) item->ile3$ps_bufaddr);
+        default:
+            abort();
+    }
+}
+
+
+char *_gethex(void *addr, int idx)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    unsigned short size;
+    int type;
+    char tmp[32], *val;
+
+    assert((idx >= 0) && (idx <= obj->elem));
+    item = &obj->list[idx];
+    type = obj->types[idx];
+
+    switch (type) {
+    case DSC$K_DTYPE_BU:
+	sprintf(tmp, "0x%llx", *(unsigned char *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_B:
+	sprintf(tmp, "0x%llx", *(char *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_WU:
+	sprintf(tmp, "0x%llx", *(unsigned short *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_W:
+	sprintf(tmp, "0x%llx", *(short *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_LU:
+	sprintf(tmp, "0x%llx", *(unsigned int *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_L:
+	sprintf(tmp, "0x%llx", *(int *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_QU:
+	sprintf(tmp, "0x%llx",
+		*(unsigned long long *) item->ile3$ps_bufaddr);
+	break;
+    case DSC$K_DTYPE_Q:
+	sprintf(tmp, "0x%llx", *(long long *) item->ile3$ps_bufaddr);
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    val = strdup(tmp);
+    assert(val);
+    return (val);
+}
+
+
+void _addstr(void *addr, int code, char *val, unsigned short len)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+
+    assert(obj);
+
+    obj->size++;
+    obj->list = realloc(obj->list, sizeof(ILE3) * obj->size);
+    assert(obj->list);
+    obj->types = realloc(obj->types, sizeof(int) * obj->size);
+    assert(obj->types);
+    item = &obj->list[obj->elem];
+
+    item->ile3$w_code = code;
+    item->ile3$ps_retlen_addr = calloc(1, 2);
+    assert(item->ile3$ps_retlen_addr);
+
+    if (val) {
+        item->ile3$w_length = strlen(val);
+        item->ile3$ps_bufaddr = strdup(val);
+        assert(item->ile3$ps_bufaddr);
+    } else {
+        item->ile3$w_length = len;
+        item->ile3$ps_bufaddr = calloc(1, len);
+        assert(item->ile3$ps_bufaddr);
+    }
+    *item->ile3$ps_retlen_addr = item->ile3$w_length;
+
+    obj->types[obj->elem] = DSC$K_DTYPE_T;
+    obj->elem++;
+    init_item(&obj->list[obj->elem]);
+}
+
+int size_by_type(int type) {
+    switch (type) {
+        case DSC$K_DTYPE_BU:
+        case DSC$K_DTYPE_B:
+            return 1;
+        case DSC$K_DTYPE_WU:
+        case DSC$K_DTYPE_W:
+            return 2;
+        case DSC$K_DTYPE_LU:
+        case DSC$K_DTYPE_L:
+            return 4;
+        case DSC$K_DTYPE_QU:
+        case DSC$K_DTYPE_Q:
+            return 8;
+        default:
+            return 0;
+    }
+}
+
+void _addint(void *addr, int code, int type, long long val)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    unsigned short size;
+
+    assert(obj);
+
+    obj->size++;
+    obj->list = realloc(obj->list, sizeof(ILE3) * obj->size);
+    assert(obj->list);
+    obj->types = realloc(obj->types, sizeof(int) * obj->size);
+    assert(obj->types);
+    item = &obj->list[obj->elem];
+
+    size = size_by_type(type);
+    assert(size);
+
+    item->ile3$w_length = size;
+    item->ile3$w_code = code;
+    item->ile3$ps_bufaddr = calloc(1, size);
+    assert(item->ile3$ps_bufaddr);
+    item->ile3$ps_retlen_addr = calloc(1, 2);
+    assert(item->ile3$ps_retlen_addr);
+
+    memcpy(item->ile3$ps_bufaddr, &val, size);
+
+    obj->types[obj->elem] = type;
+    *item->ile3$ps_retlen_addr = size;
+
+    obj->elem++;
+    init_item(&obj->list[obj->elem]);
+}
+
+
+void _addstrd(void *addr, int code, char *val, unsigned char len)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    int n;
+    char *ptr;
+
+    assert(obj);
+    assert(val);
+
+    obj->size++;
+    obj->list = realloc(obj->list, sizeof(ILE3) * obj->size);
+    assert(obj->list);
+    obj->types = realloc(obj->types, sizeof(int) * obj->size);
+    assert(obj->types);
+    item = &obj->list[obj->elem];
+
+    item->ile3$w_code = code;
+    item->ile3$ps_retlen_addr = calloc(1, 2);
+    assert(item->ile3$ps_retlen_addr);
+
+    item->ile3$w_length = len;
+    item->ile3$ps_bufaddr = calloc(1, len);
+    assert(item->ile3$ps_bufaddr);
+    memset(item->ile3$ps_bufaddr, ' ', len);
+
+    ptr = item->ile3$ps_bufaddr;
+    n = MIN(strlen(val), len - 1);
+    *ptr = n;
+    ptr++;
+    memcpy(ptr, val, n);
+    *item->ile3$ps_retlen_addr = (unsigned short)n;
+
+    obj->types[obj->elem] = DSC$K_DTYPE_T;
+    obj->elem++;
+    init_item(&obj->list[obj->elem]);
+}
+
+
+
+void _addstrn(void *addr, int code, char *val, unsigned short len)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+
+    assert(obj);
+    assert(val);
+
+    obj->size++;
+    obj->list = realloc(obj->list, sizeof(ILE3) * obj->size);
+    assert(obj->list);
+    obj->types = realloc(obj->types, sizeof(int) * obj->size);
+    assert(obj->types);
+    item = &obj->list[obj->elem];
+
+    item->ile3$w_code = code;
+    item->ile3$ps_retlen_addr = calloc(1, 2);
+    assert(item->ile3$ps_retlen_addr);
+
+    item->ile3$w_length = len;
+    item->ile3$ps_bufaddr = calloc(1, len);
+    assert(item->ile3$ps_bufaddr);
+    memset(item->ile3$ps_bufaddr, ' ', len);
+    *item->ile3$ps_retlen_addr = (unsigned short)MIN(len, strlen(val));
+    memcpy(item->ile3$ps_bufaddr, val, *item->ile3$ps_retlen_addr);
+
+    obj->types[obj->elem] = DSC$K_DTYPE_T;
+    obj->elem++;
+    init_item(&obj->list[obj->elem]);
+}
+
+
+void _addbin(void *addr, int code, long long val, unsigned short off, unsigned short num)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    ILE3 *item;
+    char *ptr;
+
+    assert(obj);
+    // assert((off < num));
+    assert(((off + num) <= sizeof(val)));
+
+    obj->size++;
+    obj->list = realloc(obj->list, sizeof(ILE3) * obj->size);
+    assert(obj->list);
+    obj->types = realloc(obj->types, sizeof(int) * obj->size);
+    assert(obj->types);
+    item = &obj->list[obj->elem];
+
+    item->ile3$w_code = code;
+    item->ile3$ps_retlen_addr = calloc(1, 2);
+    assert(item->ile3$ps_retlen_addr);
+
+    item->ile3$w_length = num;
+    item->ile3$ps_bufaddr = malloc(num);
+    assert(item->ile3$ps_bufaddr);
+    ptr = ((char*)&val) + off;
+    memcpy(item->ile3$ps_bufaddr, ptr, num);
+
+    *item->ile3$ps_retlen_addr = num;   // initialize retlen
+
+    obj->types[obj->elem] = DSC$K_DTYPE_T;
+    obj->elem++;
+    init_item(&obj->list[obj->elem]);
+}
+
diff --git a/Modules/vms/ile3/ile3.h b/Modules/vms/ile3/ile3.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9pbGUzLmg=
--- /dev/null
+++ b/Modules/vms/ile3/ile3.h
@@ -0,0 +1,24 @@
+#ifndef __RTL_H__
+#define __RTL_H__
+
+# ifdef __cplusplus
+        extern "C" {
+#endif
+
+extern void *_new();
+extern void _delete(void *);
+extern void _addint(void *, int, int, long long);
+extern long long _getint(void *, int);
+extern char* _gethex(void *, int);
+extern void _addstr(void *, int, char *, unsigned short);
+extern void _addstrd(void *, int, char *, unsigned char);
+extern void _addstrn(void *, int, char *, unsigned short);
+extern char *_getstr(void *, int, int);
+extern int _getbyte(void *, int, int);
+extern void _addbin(void *, int, long long, unsigned short, unsigned short);
+extern int _size(void *);
+
+# ifdef __cplusplus
+        }
+#endif
+#endif
diff --git a/Modules/vms/ile3/ile3.i b/Modules/vms/ile3/ile3.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9pbGUzLmk=
--- /dev/null
+++ b/Modules/vms/ile3/ile3.i
@@ -0,0 +1,46 @@
+%module ile3
+
+%{
+#include "ile3.h"
+%}
+
+%include "typemaps.i"
+%include <cstring.i>
+%cstring_output_allocate(char **OUTPUT, free(*$1));
+
+%typemap(out) char *
+{
+   if (result) {
+      resultobj = PyUnicode_DecodeUTF8(result, strlen(result), "surrogateescape");
+      free(result);
+   } else {
+      resultobj = Py_None;
+      Py_INCREF(resultobj);
+   }
+}
+
+%rename(new) _new;
+%rename(delete) _delete;
+%rename(addint) _addint;
+%rename(getint) _getint;
+%rename(gethex) _gethex;
+%rename(addstr) _addstr;
+%rename(addstrd) _addstrd;
+%rename(addstrn) _addstrn;
+%rename(getstr) _getstr;
+%rename(getbyte) _getbyte;
+%rename(addbin) _addbin;
+%rename(size) _size;
+
+extern void *_new();
+extern void _delete(void *);
+extern void _addint(void *, int, int, long long);
+extern long long _getint(void *, int);
+extern char *_gethex(void *, int);
+extern void _addstr(void *, int, char *, unsigned short);
+extern void _addstrd(void *, int, char *, unsigned char);
+extern void _addstrn(void *, int, char *, unsigned short);
+extern char *_getstr(void *, int, int);
+extern int _getbyte(void *, int, int);
+extern void _addbin(void *, int, long long, unsigned short, unsigned short);
+extern int _size(void *);
diff --git a/Modules/vms/ile3/lcl.h b/Modules/vms/ile3/lcl.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9sY2wuaA==
--- /dev/null
+++ b/Modules/vms/ile3/lcl.h
@@ -0,0 +1,15 @@
+#ifndef __LCL_H__
+#define __LCL_H__
+
+#define __NEW_STARLET 1
+#include <iledef.h>
+
+typedef struct {
+    int size;
+    int elem;
+    ILE3 *list;
+    int *types;
+} LCL_ile3;
+
+
+#endif
diff --git a/Modules/vms/iledef/iledef.i b/Modules/vms/iledef/iledef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlZGVmL2lsZWRlZi5p
--- /dev/null
+++ b/Modules/vms/iledef/iledef.i
@@ -0,0 +1,19 @@
+%module iledef
+
+%constant int ILE3_S_ILE3 = 12;
+%constant int ILE3_K_LENGTH = 12;
+%constant int ILE3_C_LENGTH = 12;
+%constant int ILEB_64_S_ILEB_64 = 32;
+%constant int ILEB_64_S_LENGTH = 8;
+%constant int ILEB_64_S_BUFADDR = 8;
+%constant int ILEB_64_S_RETLEN_ADDR = 8;
+%constant int ILEB_64_K_LENGTH = 32;
+%constant int ILEB_64_C_LENGTH = 32;
+%constant int ILE2_S_ILE2 = 8;
+%constant int ILE2_K_LENGTH = 8;
+%constant int ILE2_C_LENGTH = 8;
+%constant int ILEA_64_S_ILEA_64 = 24;
+%constant int ILEA_64_S_LENGTH = 8;
+%constant int ILEA_64_S_BUFADDR = 8;
+%constant int ILEA_64_K_LENGTH = 24;
+%constant int ILEA_64_C_LENGTH = 24;
diff --git a/Modules/vms/impdef/impdef.i b/Modules/vms/impdef/impdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaW1wZGVmL2ltcGRlZi5p
--- /dev/null
+++ b/Modules/vms/impdef/impdef.i
@@ -0,0 +1,13 @@
+%module impdef
+
+%constant int IMP_C_ASYEFN = 30;
+%constant int IMP_C_IOREFN = 30;
+%constant int IMP_C_ASYQIOEFN = 31;
+%constant int IMP_C_SYNCEFN = 27;
+%constant int IMP_C_MBXEFN = 26;
+%constant int IMP_C_NPIOFILES = 63;
+%constant int IMP_C_ENTPERSEG = 15;
+%constant int IMP_S_IMPDEF = 112;
+%constant int IMP_S_IMP = 112;
+%constant int IMP_S_FREEPGLH = 8;
+%constant int IMP_S_ASB_LOOKASIDE_LIST = 8;
diff --git a/Modules/vms/initdef/initdef.i b/Modules/vms/initdef/initdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaW5pdGRlZi9pbml0ZGVmLmk=
--- /dev/null
+++ b/Modules/vms/initdef/initdef.i
@@ -0,0 +1,84 @@
+%module initdef
+
+%constant int INIT_K_DENSITY_800_BPI = 1;
+%constant int INIT_K_DENSITY_1600_BPI = 2;
+%constant int INIT_K_DENSITY_6250_BPI = 3;
+%constant int INIT_K_DENSITY_SINGLE_DISK = 4;
+%constant int INIT_K_DENSITY_DOUBLE_DISK = 5;
+%constant int INIT_K_DENSITY_DD_DISK = 6;
+%constant int INIT_K_DENSITY_HD_DISK = 7;
+%constant int INIT_K_DENSITY_COMPACT = 8;
+%constant int INIT_K_DENSITY_ED_DISK = 9;
+%constant int INIT_K_HOMEBLOCKS_GEOMETRY = 1;
+%constant int INIT_K_HOMEBLOCKS_FIXED = 2;
+%constant int INIT_K_HOMEBLOCKS_CONTIGUOUS = 3;
+%constant int INIT_S_BADBLOCKS_LBN_DEF = 8;
+%constant int INIT_S_BADBLOCKS_SEC_DEF = 16;
+%constant int INIT__ACCESSED = 1;
+%constant int INIT__BADBLOCKS_LBN = 2;
+%constant int INIT__BADBLOCKS_SEC = 3;
+%constant int INIT__CLUSTERSIZE = 4;
+%constant int INIT__COMPACTION = 5;
+%constant int INIT__NO_COMPACTION = 6;
+%constant int INIT__DENSITY = 7;
+%constant int INIT__DIRECTORIES = 8;
+%constant int INIT__ERASE = 9;
+%constant int INIT__NO_ERASE = 10;
+%constant int INIT__EXTENSION = 11;
+%constant int INIT__FPROT = 12;
+%constant int INIT__HEADERS = 13;
+%constant int INIT__HIGHWATER = 14;
+%constant int INIT__NO_HIGHWATER = 15;
+%constant int INIT__INDEX_BEGINNING = 16;
+%constant int INIT__INDEX_BLOCK = 17;
+%constant int INIT__INDEX_END = 18;
+%constant int INIT__INDEX_MIDDLE = 19;
+%constant int INIT__INTERCHANGE = 20;
+%constant int INIT__NO_INTERCHANGE = 21;
+%constant int INIT__LABEL_ACCESS = 22;
+%constant int INIT__LABEL_VOLO = 23;
+%constant int INIT__MAXFILES = 24;
+%constant int INIT__OVR_ACCESS = 25;
+%constant int INIT__NO_OVR_ACCESS = 26;
+%constant int INIT__OVR_EXP = 27;
+%constant int INIT__NO_OVR_EXP = 28;
+%constant int INIT__OVR_VOLO = 29;
+%constant int INIT__NO_OVR_VOLO = 30;
+%constant int INIT__OWNER = 31;
+%constant int INIT__READCHECK = 32;
+%constant int INIT__NO_READCHECK = 33;
+%constant int INIT__SIZE = 34;
+%constant int INIT__STRUCTURE_LEVEL_1 = 35;
+%constant int INIT__STRUCTURE_LEVEL_2 = 36;
+%constant int INIT__STRUCTURE_LEVEL_2_SUB_0 = 37;
+%constant int INIT__USER_NAME = 38;
+%constant int INIT__VERIFIED = 39;
+%constant int INIT__NO_VERIFIED = 40;
+%constant int INIT__VPROT = 41;
+%constant int INIT__WINDOW = 42;
+%constant int INIT__WRITECHECK = 43;
+%constant int INIT__NO_WRITECHECK = 44;
+%constant int INIT__MIN_CLASS = 45;
+%constant int INIT__MAX_CLASS = 46;
+%constant int INIT__NO_PROTECTION = 47;
+%constant int INIT__HOMEBLOCKS = 48;
+%constant int INIT__STRUCTURE_LEVEL_5 = 49;
+%constant int INIT__SHADOW = 50;
+%constant int INIT__HARDLINKS = 51;
+%constant int INIT__ACCESS_DATES = 52;
+%constant int INIT__SPARE = 53;
+%constant int INIT__VOLUME_LIMIT = 54;
+%constant int INIT__GPT = 55;
+%constant int INIT__NO_GPT = 56;
+%constant int INIT__ERASE_ON_DELETE = 57;
+%constant int INIT__ERASE_ON_INIT = 58;
+%constant int INIT__STRUCTURE_LEVEL_6 = 59;
+%constant int INIT__LOGSIZE = 60;
+%constant int INIT__SPECIAL_FILES = 61;
+%constant int INIT__NO_SPECIAL_FILES = 62;
+%constant int INIT__LAST_INIT_ITEM = 63;
+%constant int INIT__MAX_ITEM_CODE = 62;
+%constant int INIT_S_USER_NAME = 12;
+%constant int INIT_S_DEVICE_NAME = 64;
+%constant int INIT_C_MIN_SECURITY_BLKCNT = 6;
+%constant int INIT_C_MIN_GPT_BLKCNT = 34;
diff --git a/Modules/vms/iodef/iodef.i b/Modules/vms/iodef/iodef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaW9kZWYvaW9kZWYuaQ==
--- /dev/null
+++ b/Modules/vms/iodef/iodef.i
@@ -0,0 +1,346 @@
+%module iodef
+
+%constant int IO__NOP = 0;
+%constant int IO__UNLOAD = 1;
+%constant int IO__LOADMCODE = 1;
+%constant int IO__START_BUS = 1;
+%constant int IO__SEEK = 2;
+%constant int IO__SPACEFILE = 2;
+%constant int IO__STARTMPROC = 2;
+%constant int IO__STOP_BUS = 2;
+%constant int IO__RECAL = 3;
+%constant int IO__DUPLEX = 3;
+%constant int IO__STOP = 3;
+%constant int IO__DEF_COMP = 3;
+%constant int IO__DRVCLR = 4;
+%constant int IO__INITIALIZE = 4;
+%constant int IO__MIMIC = 4;
+%constant int IO__DEF_COMP_LIST = 4;
+%constant int IO__FLUSH_ERROR = 4;
+%constant int IO__RELEASE = 5;
+%constant int IO__SETCLOCKP = 5;
+%constant int IO__START_ANALYSIS = 5;
+%constant int IO__BIND = 5;
+%constant int IO__PATH_VERIFY = 5;
+%constant int IO__OFFSET = 6;
+%constant int IO__ERASETAPE = 6;
+%constant int IO__STARTDATAP = 6;
+%constant int IO__STOP_ANALYSIS = 6;
+%constant int IO__UNBIND = 6;
+%constant int IO__RETCENTER = 7;
+%constant int IO__QSTOP = 7;
+%constant int IO__START_MONITOR = 7;
+%constant int IO__CREDISK = 7;
+%constant int IO__LOCAL_DRAIN = 7;
+%constant int IO__PACKACK = 8;
+%constant int IO__STOP_MONITOR = 8;
+%constant int IO__SEARCH = 9;
+%constant int IO__SPACERECORD = 9;
+%constant int IO__READRCT = 9;
+%constant int IO__REMDISK = 9;
+%constant int IO__WRITECHECK = 10;
+%constant int IO__EXPORT = 10;
+%constant int IO__WRITEPBLK = 11;
+%constant int IO__READPBLK = 12;
+%constant int IO__WRITEHEAD = 13;
+%constant int IO__RDSTATS = 13;
+%constant int IO__CRESHAD = 13;
+%constant int IO__READHEAD = 14;
+%constant int IO__ADDSHAD = 14;
+%constant int IO__WRITETRACKD = 15;
+%constant int IO__COPYSHAD = 15;
+%constant int IO__READTRACKD = 16;
+%constant int IO__REMSHAD = 16;
+%constant int IO__AVAILABLE = 17;
+%constant int IO__SETPRFPATH = 18;
+%constant int IO__DISPLAY = 19;
+%constant int IO__REMSHADMBR = 20;
+%constant int IO__DSE = 21;
+%constant int IO__REREADN = 22;
+%constant int IO__DISK_COPY_DATA = 22;
+%constant int IO__MOUNTSHAD = 23;
+%constant int IO__REREADP = 23;
+%constant int IO__WHM = 23;
+%constant int IO__AS_SETCHAR = 23;
+%constant int IO__WRITERET = 24;
+%constant int IO__WRITECHECKH = 24;
+%constant int IO__AS_SENSECHAR = 24;
+%constant int IO__ADDSHADMBR = 25;
+%constant int IO__READPRESET = 25;
+%constant int IO__STARTSPNDL = 25;
+%constant int IO__SETCHAR = 26;
+%constant int IO__SENSECHAR = 27;
+%constant int IO__WRITEMARK = 28;
+%constant int IO__COPYMEM = 28;
+%constant int IO__PSXSETCHAR = 28;
+%constant int IO__WRTTMKR = 29;
+%constant int IO__DIAGNOSE = 29;
+%constant int IO__SHADMV = 29;
+%constant int IO__PSXSENSECHAR = 29;
+%constant int IO__FORMAT = 30;
+%constant int IO__CLEAN = 30;
+%constant int IO__UPSHAD = 30;
+%constant int IO__PHYSICAL = 31;
+%constant int IO__WRITELBLK = 32;
+%constant int IO__READLBLK = 33;
+%constant int IO__REWINDOFF = 34;
+%constant int IO__READRCTL = 34;
+%constant int IO__SETMODE = 35;
+%constant int IO__REWIND = 36;
+%constant int IO__SKIPFILE = 37;
+%constant int IO__PSXSETMODE = 37;
+%constant int IO__SKIPRECORD = 38;
+%constant int IO__PSXSENSEMODE = 38;
+%constant int IO__SENSEMODE = 39;
+%constant int IO__WRITEOF = 40;
+%constant int IO__TTY_PORT_BUFIO = 40;
+%constant int IO__TTY_PORT = 41;
+%constant int IO__FREECAP = 41;
+%constant int IO__FLUSH = 42;
+%constant int IO__AS_SETMODE = 42;
+%constant int IO__READLCHUNK = 43;
+%constant int IO__AS_SENSEMODE = 43;
+%constant int IO__WRITELCHUNK = 44;
+%constant int IO__LOGICAL = 47;
+%constant int IO__WRITEVBLK = 48;
+%constant int IO__READVBLK = 49;
+%constant int IO__ACCESS = 50;
+%constant int IO__PSXWRITEVBLK = 50;
+%constant int IO__CREATE = 51;
+%constant int IO__DEACCESS = 52;
+%constant int IO__PSXREADVBLK = 52;
+%constant int IO__DELETE = 53;
+%constant int IO__MODIFY = 54;
+%constant int IO__NETCONTROL = 54;
+%constant int IO__READPROMPT = 55;
+%constant int IO__SETCLOCK = 55;
+%constant int IO__AUDIO = 55;
+%constant int IO__ACPCONTROL = 56;
+%constant int IO__STARTDATA = 56;
+%constant int IO__IOCTLV = 56;
+%constant int IO__MANAGE = 56;
+%constant int IO__MOUNT = 57;
+%constant int IO__TTYREADALL = 58;
+%constant int IO__DISMOUNT = 58;
+%constant int IO__TTYREADPALL = 59;
+%constant int IO__USBATTR = 59;
+%constant int IO__CONINTREAD = 60;
+%constant int IO__CONINTWRITE = 61;
+%constant int IO__READDIR = 62;
+%constant int IO__VIRTUAL = 63;
+%constant int IO_M_FCODE = 0x3FL;
+%constant int IO_M_FMODIFIERS = 0xFFC0L;
+%constant int IO_M_INHERLOG = 0x800L;
+%constant int IO_M_ERASE = 0x400L;
+%constant int IO_M_EXFUNC = 0x2000L;
+%constant int IO_M_DATACHECK = 0x4000L;
+%constant int IO_M_INHRETRY = 0x8000L;
+%constant int IO_M_SYNCSTS = 0x10000L;
+%constant int IO_M_NOVCACHE = 0x20000L;
+%constant int IO_M_BUFOBJ = 0x40000L;
+%constant int IO_M_TRUSTED = 0x80000L;
+%constant int IO_M_FILE_FLUSH = 0x100000L;
+%constant int IO_M_BARRIER = 0x200000L;
+%constant int IO_M_RAH_HINT = 0x400000L;
+%constant int IO_M_INHSEEK = 0x1000L;
+%constant int IO_M_READ_TO_EOF = 0x200000L;
+%constant int IO_M_REVERSE = 0x40L;
+%constant int IO_M_NOWAIT = 0x80L;
+%constant int IO_M_INHEXTGAP = 0x1000L;
+%constant int IO_M_RETENSION = 0x2000L;
+%constant int IO_M_ALLOWFAST = 0x4000L;
+%constant int IO_M_MT3_DENSITY = 0x8000L;
+%constant int IO_M_MSCPMODIFS = 0x100L;
+%constant int IO_M_SHADOW = 0x40L;
+%constant int IO_M_LOCATE = 0x80L;
+%constant int IO_M_MSCP_FORMAT = 0x40L;
+%constant int IO_M_ALLHOSTS = 0x40L;
+%constant int IO_M_DISSOLVE = 0x80L;
+%constant int IO_M_NOCLEANUP = 0x100L;
+%constant int IO_M_SPINDOWN = 0x40L;
+%constant int IO_M_EST_COM_PATH = 0x40L;
+%constant int IO_M_LCL_SRC_UNIT = 0x80L;
+%constant int IO_M_RTN_COM_PATH = 0x100L;
+%constant int IO_M_DEALC_ALL = 0x40L;
+%constant int IO_M_DEALC_HRN = 0x80L;
+%constant int IO_M_DEALC_ENTLOC = 0x100L;
+%constant int IO_M_DECR_AFC = 0x200L;
+%constant int IO_M_READ_ALL = 0x400L;
+%constant int IO_M_READ_HRN = 0x800L;
+%constant int IO_M_BREAK_CONN = 0x1000L;
+%constant int IO_M_STEPOVER = 0x40L;
+%constant int IO_M_COPYOP = 0x100L;
+%constant int IO_M_EXISTS = 0x40L;
+%constant int IO_M_CBS = 0x80L;
+%constant int IO_M_BOOTING = 0x100L;
+%constant int IO_M_REQ_MINICOPY = 0x200L;
+%constant int IO_M_OPT_MINICOPY = 0x400L;
+%constant int IO_M_NOMINICOPY = 0x800L;
+%constant int IO_M_EXPECT_MOUNT_DONE = 0x2000L;
+%constant int IO_M_VUEX_FC = 0x200L;
+%constant int IO_M_WRITE_SCB = 0x200L;
+%constant int IO_M_UPD_SCBLBN = 0x2000L;
+%constant int IO_M_FORCEPATH = 0x40L;
+%constant int IO_M_PREFERRED_CPU = 0x80L;
+%constant int IO_M_SYS_ASSIGNABLE = 0x100L;
+%constant int IO_M_COMMOD = 0x40L;
+%constant int IO_M_MOVETRACKD = 0x80L;
+%constant int IO_M_DIAGNOSTIC = 0x100L;
+%constant int IO_M_SKPSECINH = 0x200L;
+%constant int IO_M_DELDATA = 0x40L;
+%constant int IO_M_NOMRSP = 0x40L;
+%constant int IO_M_SWAP = 0x100L;
+%constant int IO_M_OPPOSITE = 0x200L;
+%constant int IO_M_CLSEREXCP = 0x200L;
+%constant int IO_M_CHUNKDIAG = 0x40L;
+%constant int IO_M_TBC = 0x400L;
+%constant int IO_M_ENAREP = 0x40L;
+%constant int IO_M_ACCESS = 0x40L;
+%constant int IO_M_CREATE = 0x80L;
+%constant int IO_M_DELETE = 0x100L;
+%constant int IO_M_MOUNT = 0x200L;
+%constant int IO_M_DMOUNT = 0x400L;
+%constant int IO_M_REMOUNT = 0x800L;
+%constant int IO_M_MOVEFILE = 0x1000L;
+%constant int IO_M_RWSHELVED = 0x4000L;
+%constant int IO_M_SETDIR = 0x8000L;
+%constant int IO_M_BINARY = 0x40L;
+%constant int IO_M_PACKED = 0x80L;
+%constant int IO_M_NOW = 0x40L;
+%constant int IO_M_STREAM = 0x80L;
+%constant int IO_M_READERCHECK = 0x100L;
+%constant int IO_M_WRITERCHECK = 0x200L;
+%constant int IO_M_NORSWAIT = 0x400L;
+%constant int IO_M_MB_ROOM_NOTIFY = 0x40L;
+%constant int IO_M_READATTN = 0x80L;
+%constant int IO_M_WRTATTN = 0x100L;
+%constant int IO_M_SETPROT = 0x200L;
+%constant int IO_M_READERWAIT = 0x400L;
+%constant int IO_M_WRITERWAIT = 0x800L;
+%constant int IO_M_NOECHO = 0x40L;
+%constant int IO_M_TIMED = 0x80L;
+%constant int IO_M_CVTLOW = 0x100L;
+%constant int IO_M_NOFILTR = 0x200L;
+%constant int IO_M_DSABLMBX = 0x400L;
+%constant int IO_M_PURGE = 0x800L;
+%constant int IO_M_TRMNOECHO = 0x1000L;
+%constant int IO_M_REFRESH = 0x2000L;
+%constant int IO_M_ESCAPE = 0x4000L;
+%constant int IO_M_EXTEND = 0x8000L;
+%constant int IO_M_CANCTRLO = 0x40L;
+%constant int IO_M_ENABLMBX = 0x80L;
+%constant int IO_M_NOFORMAT = 0x100L;
+%constant int IO_M_BREAKTHRU = 0x200L;
+%constant int IO_M_NEWLINE = 0x400L;
+%constant int IO_M_TYPEAHDCNT = 0x40L;
+%constant int IO_M_MAINT = 0x40L;
+%constant int IO_M_CTRLYAST = 0x80L;
+%constant int IO_M_CTRLCAST = 0x100L;
+%constant int IO_M_HANGUP = 0x200L;
+%constant int IO_M_OUTBAND = 0x400L;
+%constant int IO_M_TT_CONNECT = 0x800L;
+%constant int IO_M_TT_DISCON = 0x1000L;
+%constant int IO_M_TT_PROCESS = 0x2000L;
+%constant int IO_M_BRDCST = 0x4000L;
+%constant int IO_M_LOOP = 0x80L;
+%constant int IO_M_UNLOOP = 0x100L;
+%constant int IO_M_LINE_OFF = 0x200L;
+%constant int IO_M_SET_MODEM = 0x400L;
+%constant int IO_M_LINE_ON = 0x800L;
+%constant int IO_M_LOOP_EXT = 0x1000L;
+%constant int IO_M_AUTXOF_ENA = 0x2000L;
+%constant int IO_M_AUTXOF_DIS = 0x4000L;
+%constant int IO_M_INCLUDE = 0x800L;
+%constant int IO_M_TT_ABORT = 0x1000L;
+%constant int IO_M_POSIXINIT = 0x40L;
+%constant int IO_M_POSIXFLOW = 0x80L;
+%constant int IO_M_SET_POSIX = 0x80L;
+%constant int IO_M_CLEAR_POSIX = 0x100L;
+%constant int IO_M_SET_TERMIOS = 0x200L;
+%constant int IO_M_SET_PTC = 0x400L;
+%constant int IO_M_CLEAR_PTC = 0x800L;
+%constant int IO_M_FLUSH_TAB = 0x1000L;
+%constant int IO_M_FLUSH_OUTPUT = 0x2000L;
+%constant int IO_M_UPDATE_PTC = 0x4000L;
+%constant int IO_M_OUT_XOFF = 0x100L;
+%constant int IO_M_OUT_XON = 0x200L;
+%constant int IO_M_IN_XOFF = 0x400L;
+%constant int IO_M_IN_XON = 0x800L;
+%constant int IO_M_O_NONBLOCK = 0x40L;
+%constant int IO_M_INTERRUPT = 0x40L;
+%constant int IO_M_MULTIPLE = 0x80L;
+%constant int IO_M_LOCKBUF = 0x100L;
+%constant int IO_M_NOBLOCK = 0x200L;
+%constant int IO_M_ABORT = 0x100L;
+%constant int IO_M_SYNCH = 0x200L;
+%constant int IO_M_RESPONSE = 0x40L;
+%constant int IO_M_STARTUP = 0x40L;
+%constant int IO_M_SHUTDOWN = 0x80L;
+%constant int IO_M_ATTNAST = 0x100L;
+%constant int IO_M_CTRL = 0x200L;
+%constant int IO_M_SET_MAC = 0x800L;
+%constant int IO_M_UPDATE_MAP = 0x1000L;
+%constant int IO_M_ROUTE = 0x2000L;
+%constant int IO_M_RD_MEM = 0x40L;
+%constant int IO_M_RD_MODEM = 0x80L;
+%constant int IO_M_RD_COUNT = 0x100L;
+%constant int IO_M_CLR_COUNT = 0x400L;
+%constant int IO_M_SENSE_MAC = 0x800L;
+%constant int IO_M_SHOW_MAP = 0x1000L;
+%constant int IO_M_SHOW_ROUTE = 0x2000L;
+%constant int IO_K_SRRUNOUT = 0;
+%constant int IO_K_PTPBSC = 8192;
+%constant int IO_K_LOOPTEST = 57344;
+%constant int IO_M_MORE = 0x40L;
+%constant int IO_M_QUALIFIED = 0x80L;
+%constant int IO_M_REDIRECT = 0x40L;
+%constant int IO_M_ACCEPT = 0x80L;
+%constant int IO_M_SETEVF = 0x40L;
+%constant int IO_M_WORD = 0x40L;
+%constant int IO_M_SETFNCT = 0x200L;
+%constant int IO_M_DATAPATH = 0x400L;
+%constant int IO_M_CYCLE = 0x1000L;
+%constant int IO_M_RESET = 0x2000L;
+%constant int IO_M_SETCUADR = 0x100L;
+%constant int IO_M_SETBSIZE = 0x200L;
+%constant int IO_M_SETPOOLSZ = 0x400L;
+%constant int IO_M_SETENQCNT = 0x800L;
+%constant int IO_M_CLEAR = 0x1000L;
+%constant int IO_M_LPBEXT = 0x2000L;
+%constant int IO_M_LPBINT = 0x4000L;
+%constant int IO_M_READCSR = 0x8000L;
+%constant int IO_M_NOCTSWAIT = 0x40L;
+%constant int IO_M_SLAVLOOP = 0x80L;
+%constant int IO_M_NODSRWAIT = 0x100L;
+%constant int IO_M_MAINTLOOP = 0x200L;
+%constant int IO_M_LASTBLOCK = 0x400L;
+%constant int IO_M_INTCLOCK = 0x1000L;
+%constant int IO_M_LT_CONNECT = 0x40L;
+%constant int IO_M_LT_DISCON = 0x80L;
+%constant int IO_M_LT_READPORT = 0x100L;
+%constant int IO_M_LT_MAP_PORT = 0x200L;
+%constant int IO_M_LT_RATING = 0x400L;
+%constant int IO_M_LT_SOL_INFO = 0x800L;
+%constant int IO_M_LT_RCV_INFO = 0x1000L;
+%constant int IO_M_LT_SETMODE = 0x2000L;
+%constant int IO_M_LT_SENSEMODE = 0x4000L;
+%constant int IO_M_LT_QUE_CHG_NOTIF = 0x8000L;
+%constant int IO_M_LT_MAP_FILLER = 0x1L;
+%constant int IO_M_LT_MAP_NODNAM = 0x2L;
+%constant int IO_M_LT_MAP_PORNAM = 0x4L;
+%constant int IO_M_LT_MAP_SRVNAM = 0x8L;
+%constant int IO_M_LT_MAP_LNKNAM = 0x10L;
+%constant int IO_M_LT_MAP_NETADR = 0x20L;
+%constant int IO_M_FLUSH = 0x40L;
+%constant int IO_M_WRITE_BARRIER = 0x80L;
+%constant int IO_M_MKFILL1 = 0x40L;
+%constant int IO_M_ALLOWFAST_NEVER = 0x80L;
+%constant int IO_M_ALLOWFAST_PER_IO = 0x100L;
+%constant int IO_M_ALLOWFAST_ALWAYS = 0x200L;
+%constant int IO_M_ADD = 0x40L;
+%constant int IO_M_IDSTRING = 0x40L;
+%constant int IO_M_SERIALNUM = 0x80L;
+%constant int IO_M_BYPASS_VALID_CHK = 0x80L;
+%constant int IO_S_IODEF = 3;
+%constant int IO_S_FCODE = 6;
+%constant int IO_S_FMODIFIERS = 10;
diff --git a/Modules/vms/issdef/issdef.i b/Modules/vms/issdef/issdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaXNzZGVmL2lzc2RlZi5p
--- /dev/null
+++ b/Modules/vms/issdef/issdef.i
@@ -0,0 +1,117 @@
+%module issdef
+
+%constant int ISS__FLAGS = 1;
+%constant int ISS__ARBFLAGS = 2;
+%constant int ISS__WORKPRIV = 3;
+%constant int ISS__MODE = 4;
+%constant int ISS__WORKCLASS = 5;
+%constant int ISS__RIGHTS = 6;
+%constant int ISS__ADD_RIGHTS = 7;
+%constant int ISS__ADD_AUTHRIGHTS = 8;
+%constant int ISS__USERNAME = 9;
+%constant int ISS__ACCOUNT = 10;
+%constant int ISS__NOAUDIT = 11;
+%constant int ISS__AUTHPRIV = 12;
+%constant int ISS__PERMPRIV = 13;
+%constant int ISS__IMAGE_WORKPRIV = 14;
+%constant int ISS__ENABLED = 15;
+%constant int ISS__AUTHRIGHTS = 16;
+%constant int ISS__MINCLASS = 17;
+%constant int ISS__MAXCLASS = 18;
+%constant int ISS__UID = 19;
+%constant int ISS__PERSONA_ID = 20;
+%constant int ISS__PRINCIPAL = 21;
+%constant int ISS__UIC = 22;
+%constant int ISS__SWITCH_EXTENSION = 23;
+%constant int ISS__PRIMARY_EXTENSION = 24;
+%constant int ISS__EXTENSION_COUNT = 25;
+%constant int ISS__EXTENSION_ARRAY = 26;
+%constant int ISS__RIGHTS_INDEX = 27;
+%constant int ISS__INPUT_DATA = 28;
+%constant int ISS__POSIX_UID = 29;
+%constant int ISS__POSIX_GID = 30;
+%constant int ISS__MIN_ITEM_CODE = 1;
+%constant int ISS__MAX_ITEM_CODE = 30;
+%constant int ISS_M_FLAG_PERMANENT = 0x1L;
+%constant int ISS_M_FLAG_SECAUDIT = 0x2L;
+%constant int ISS_S_ISSFLAGSDEF = 4;
+%constant int ISS__COMMON_FLAGS = 1024;
+%constant int ISS__COMMON_USERNAME = 1025;
+%constant int ISS__COMMON_ACCOUNT = 1026;
+%constant int ISS__DOMAIN = 1027;
+%constant int ISS__COMMON_PRINCIPAL = 1028;
+%constant int ISS__DOI = 1029;
+%constant int ISS__EXTENSION = 1030;
+%constant int ISS__MAKE_TLV = 1031;
+%constant int ISS__MIN_COMMON_ITEM_CODE = 1024;
+%constant int ISS__MAX_COMMON_ITEM_CODE = 1031;
+%constant int ISS__NT_TOKEN = 8192;
+%constant int ISS__NT_SECURITY_SUBJECT = 8193;
+%constant int ISS__NT_FLAGS = 8194;
+%constant int ISS__NT_USER_REFCOUNT = 8195;
+%constant int ISS__NT_PRINCIPAL = 8196;
+%constant int ISS__NT_CREDENTIALS = 8197;
+%constant int ISS__NT_NT_OWF_PASSWORD = 8198;
+%constant int ISS__NT_LM_OWF_PASSWORD = 8199;
+%constant int ISS__NT_UNPACK_CRED_SIZE = 8200;
+%constant int ISS__NT_TOKEN_TOKENID = 8201;
+%constant int ISS__NT_TOKEN_IMPERSONATELEVEL = 8202;
+%constant int ISS__NT_TOKEN_AUTHENTICATIONID = 8203;
+%constant int ISS__NT_TOKEN_USERANDGROUPCOUNT = 8204;
+%constant int ISS__NT_TOKEN_VARIABLELENGTH = 8205;
+%constant int ISS__NT_TOKEN_USERANDGROUPS = 8206;
+%constant int ISS__NT_TOKEN_USERANDGROUPS_SID = 8207;
+%constant int ISS__NT_TOKEN_PRIMARYGROUP = 8208;
+%constant int ISS__NT_TOKEN_PRIVILEGES = 8209;
+%constant int ISS__NT_TOKEN_DEFAULTDACL = 8210;
+%constant int ISS__NT_TOKEN_UNIXUID = 8211;
+%constant int ISS__NT_TOKEN_UNIXGID = 8212;
+%constant int ISS__NT_TOKEN_GIDINFO = 8213;
+%constant int ISS__NT_TOKEN_GIDINFO_GIDS = 8214;
+%constant int ISS__NT_TOKEN_UNIXNAME = 8215;
+%constant int ISS__NT_TOKEN_DOMAINNAME = 8216;
+%constant int ISS__NT_TOKEN_USERNAME = 8217;
+%constant int ISS__NT_TOKEN_USERSESSIONKEY = 8218;
+%constant int ISS__NT_TOKEN_LMSESSIONKEY = 8219;
+%constant int ISS__NT_TOKEN_VARIABLEPART = 8220;
+%constant int ISS__NT_TOKEN_GROUP_LIST = 8221;
+%constant int ISS__NT_TOKEN_PRIVILEGES_LIST = 8222;
+%constant int ISS__NT_SECURITY_SIGNATURE = 8223;
+%constant int ISS__NT_SECURITY_SMBUID = 8224;
+%constant int ISS__NT_SECURITY_PROCESSAUDITID = 8225;
+%constant int ISS__NT_SECURITY_PROCESSID = 8226;
+%constant int ISS__NT_SECURITY_LOGONID = 8227;
+%constant int ISS__NT_SECURITY_LOGONTYPE = 8228;
+%constant int ISS__NT_SECURITY_SUBJECTFLAGS = 8229;
+%constant int ISS__NT_SECURITY_CONTEXT_OTHER = 8230;
+%constant int ISS__MIN_NT_ITEM_CODE = 8192;
+%constant int ISS__MAX_NT_ITEM_CODE = 8230;
+%constant int ISS_M_ENABLED_PERSONA = 0x1L;
+%constant int ISS_M_ENABLED_SUBSYSTEM = 0x2L;
+%constant int ISS_M_ENABLED_IMAGE = 0x4L;
+%constant int ISS_M_ENABLED_SYSTEM = 0x8L;
+%constant int ISS_M_ENABLED_TEMPORARY = 0x10L;
+%constant int ISS_S_ISSENABLEDDEF = 4;
+%constant int ISS_C_ARB_UNSPECIFIED = -1;
+%constant int ISS_C_ARB_NONE = 0;
+%constant int ISS_C_ARB_CLEAR = 1;
+%constant int ISS_C_ARB_READ_ONLY = 2;
+%constant int ISS_C_ARB_FULL = 3;
+%constant int ISS_C_ARB_FORCE = 4;
+%constant int ISS_C_ARB_MAX_CODE = 4;
+%constant int ISS_C_ARB_MIN_CODE = 0;
+%constant int ISS_C_ID_NATURAL = 1;
+%constant int ISS_C_ID_POSIX_REAL = -2;
+%constant int ISS_C_ID_IMAGE_PERSONA = -2;
+%constant int ISS_M_IMP_FLAGS = 0x7FL;
+%constant int ISS_M_ASSUME_NODEREF_OLD = 0x10000L;
+%constant int ISS_M_ASSUME_NOREF_NEW = 0x20000L;
+%constant int ISS_M_CREATE_DEFPRIV = 0x8L;
+%constant int ISS_M_CREATE_DEFCLASS = 0x10L;
+%constant int ISS_M_CREATE_AUTHPRIV = 0x20L;
+%constant int ISS_M_NOACCESS = 0x100000L;
+%constant int ISS_S_ISSSRVCFLG = 4;
+%constant int ISS_S_IMP_FLAGS = 7;
+%constant int ISS_S_ASSUME_FLAGS = 4;
+%constant int ISS_S_CREATE_FLAGS = 4;
+%constant int ISS_K_NT_VERSION_1 = 1;
diff --git a/Modules/vms/jbcmsgdef/jbcmsgdef.i b/Modules/vms/jbcmsgdef/jbcmsgdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvamJjbXNnZGVmL2piY21zZ2RlZi5p
--- /dev/null
+++ b/Modules/vms/jbcmsgdef/jbcmsgdef.i
@@ -0,0 +1,148 @@
+%module jbcmsgdef
+
+%constant int JBC__FACILITY = 4;
+%constant int JBC__NORMAL = 262145;
+%constant int JBC__NOCMKRNL = 272386;
+%constant int JBC__NOOPER = 272530;
+%constant int JBC__NOSYSNAM = 272402;
+%constant int JBC__ILLDEVNAM = 294916;
+%constant int JBC__UNSDEVTYP = 294924;
+%constant int JBC__ILLFILNAM = 294932;
+%constant int JBC__INVQUENAM = 294940;
+%constant int JBC__NOPRIV = 294946;
+%constant int JBC__NOQUEHDR = 294956;
+%constant int JBC__NOQUESPACE = 294962;
+%constant int JBC__NOSUCHQUE = 294970;
+%constant int JBC__NOSUCHJOB = 294978;
+%constant int JBC__NOOPENJOB = 294986;
+%constant int JBC__REFERENCED = 294994;
+%constant int JBC__STARTED = 295002;
+%constant int JBC__INVITMCOD = 295012;
+%constant int JBC__INVFUNCOD = 295020;
+%constant int JBC__EMPTYJOB = 295026;
+%constant int JBC__JOBQUEDIS = 295034;
+%constant int JBC__JOBABORT = 295044;
+%constant int JBC__ACMINVOP = 295052;
+%constant int JBC__INVPARLEN = 295060;
+%constant int JBC__TRMMBXUSE = 295068;
+%constant int JBC__MAXSYMEXD = 295076;
+%constant int JBC__SCTTABFUL = 295084;
+%constant int JBC__CREPRCFAL = 295092;
+%constant int JBC__SYMNTBFUL = 295100;
+%constant int JBC__NODSTQUE = 295106;
+%constant int JBC__INVDSTQUE = 295116;
+%constant int JBC__JOBDELETE = 295124;
+%constant int JBC__NORESTART = 295130;
+%constant int JBC__JOBREQUEUE = 295140;
+%constant int JBC__QUERESET = 295148;
+%constant int JBC__SYSFAIL = 295156;
+%constant int JBC__EXECUTING = 295162;
+%constant int JBC__INVMSGBUF = 295172;
+%constant int JBC__MISREQPAR = 295180;
+%constant int JBC__INVPARVAL = 295188;
+%constant int JBC__INCQUETYP = 295196;
+%constant int JBC__INCDSTQUE = 295204;
+%constant int JBC__JOBQUEENA = 295210;
+%constant int JBC__NOTASSIGN = 295218;
+%constant int JBC__INCOMPLETE = 295226;
+%constant int JBC__INVCHANAM = 295236;
+%constant int JBC__INVFORNAM = 295244;
+%constant int JBC__NOSUCHCHAR = 295250;
+%constant int JBC__NOSUCHFORM = 295258;
+%constant int JBC__DUPFORM = 295266;
+%constant int JBC__INCFORMPAR = 295276;
+%constant int JBC__NOSUCHFILE = 295282;
+%constant int JBC__DELACCESS = 295290;
+%constant int JBC__QUENOTSTOP = 295298;
+%constant int JBC__NOMORECHAR = 295306;
+%constant int JBC__NOMOREFILE = 295314;
+%constant int JBC__NOMOREFORM = 295322;
+%constant int JBC__NOMOREJOB = 295330;
+%constant int JBC__NOMOREQUE = 295338;
+%constant int JBC__NOJOBCTX = 295346;
+%constant int JBC__NOQUECTX = 295354;
+%constant int JBC__NOSUCHNODE = 295362;
+%constant int JBC__GEN_MAX = 295370;
+%constant int JBC__QUE_CLOSED = 295378;
+%constant int JBC__NOSUCHENT = 295386;
+%constant int JBC__NOMOREENT = 295394;
+%constant int JBC__JOBCTLABORT = 295404;
+%constant int JBC__NOTSUPPORTED = 295412;
+%constant int JBC__NOTMEANINGFUL = 295419;
+%constant int JBC__QUEDISABLED = 295426;
+%constant int JBC__NOTDISABLED = 295434;
+%constant int JBC__NOTENAGEN = 295442;
+%constant int JBC__ENABLEQUE = 295448;
+%constant int JBC__QUENOTMOD = 295459;
+%constant int JBC__ATT_MAX = 295466;
+%constant int JBC__ATTNOTAVAIL = 295474;
+%constant int JBC__QEXISTS = 295482;
+%constant int JBC__NOSUCHQMGR = 295490;
+%constant int JBC__JOBNOTEXEC = 295498;
+%constant int JBC__DUPCHARNAME = 295506;
+%constant int JBC__DUPCHARNUM = 295514;
+%constant int JBC__DUPFORMNAME = 295522;
+%constant int JBC__STKNOTCHANGE = 295530;
+%constant int JBC__ITMREMOVED = 295539;
+%constant int JBC__PRIOSMALL = 295547;
+%constant int JBC__QMANMAX = 295552;
+%constant int JBC__NOAUTOSTART = 295560;
+%constant int JBC__NOTALLREQUE = 295568;
+%constant int JBC__NULL1 = 295580;
+%constant int JBC__TOOMUCHINFO = 295586;
+%constant int JBC__AUTONOTSTART = 295595;
+%constant int JBC__NULL2 = 295602;
+%constant int JBC__QMANNOTSTARTED = 295610;
+%constant int JBC__BUFTOOSMALL = 295616;
+%constant int JBC__INTERNALERROR = 295624;
+%constant int JBC__QMGREXISTS = 295634;
+%constant int JBC__TWOQMGRS = 295642;
+%constant int JBC__INVQMANNAM = 295650;
+%constant int JBC__NOMOREQMGR = 295658;
+%constant int JBC__QMANABORT = 295668;
+%constant int JBC__ACCDISERR = 295939;
+%constant int JBC__ALLOCMEM = 295948;
+%constant int JBC__COMREMJBC = 295956;
+%constant int JBC__INVBLOCK = 295964;
+%constant int JBC__INVMSG = 295970;
+%constant int JBC__NEWQUEUE = 295979;
+%constant int JBC__OPEJBCMBX = 295988;
+%constant int JBC__PRCREAT = 295996;
+%constant int JBC__QUEFORMAT = 296000;
+%constant int JBC__REAJBCMBX = 296012;
+%constant int JBC__REQUEST = 296019;
+%constant int JBC__SETIMR = 296026;
+%constant int JBC__SYMCREPRC = 296034;
+%constant int JBC__SYMDEL = 296042;
+%constant int JBC__WRIRSPMSG = 296050;
+%constant int JBC__WRISMBMBX = 296058;
+%constant int JBC__NFY_COMPLETE = 296067;
+%constant int JBC__NFY_CURRENT = 296075;
+%constant int JBC__NFY_HOLD = 296083;
+%constant int JBC__NFY_PENDING = 296091;
+%constant int JBC__NFY_TIMER = 296099;
+%constant int JBC__STRUCT_LEVEL = 296107;
+%constant int JBC__DIAGNOSTIC = 296112;
+%constant int JBC__DIAG_TEXT = 296120;
+%constant int JBC__DIAG_DATA = 296128;
+%constant int JBC__RESTRICT = 296136;
+%constant int JBC__NFY_FAILURE = 296147;
+%constant int JBC__NFY_CPULIM = 296155;
+%constant int JBC__NFY_WSVAL = 296163;
+%constant int JBC__RESTARTCOM = 296171;
+%constant int JBC__NFY_NOACCESS = 296179;
+%constant int JBC__NFY_CHARAC = 296187;
+%constant int JBC__NFY_NOLOWER = 296195;
+%constant int JBC__NFY_SIZE_MIN = 296203;
+%constant int JBC__NFY_SIZE_MAX = 296211;
+%constant int JBC__NFY_FORM = 296219;
+%constant int JBC__NFY_QUESTATE = 296227;
+%constant int JBC__FAILCREPRC = 296234;
+%constant int JBC__QMANCREPRC = 296242;
+%constant int JBC__INITFAIL = 296252;
+%constant int JBC__QMANDEL = 296258;
+%constant int JBC__NOTIMZONRUL = 296264;
+%constant int JBC__LMFPRCFAIL = 296272;
+%constant int JBC__LMFLICERR = 296280;
+%constant int JBC__LMFERROR = 296288;
+%constant int JBC__ACCNOTENB = 298914;
diff --git a/Modules/vms/jpidef/jpidef.i b/Modules/vms/jpidef/jpidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvanBpZGVmL2pwaWRlZi5p
--- /dev/null
+++ b/Modules/vms/jpidef/jpidef.i
@@ -0,0 +1,221 @@
+%module jpidef
+
+%constant int JPI_K_DEFAULT_POLICY = 0;
+%constant int JPI_K_PSX_FIFO_POLICY = 1;
+%constant int JPI_K_PSX_RR_POLICY = 2;
+%constant int JPI_K_ALL_THREADS = -2147483648;
+%constant int JPI_C_ADRTYPE = 1;
+%constant int JPI_C_CTLTYPE = 2;
+%constant int JPI_C_PCBTYPE = 3;
+%constant int JPI_C_PHDTYPE = 4;
+%constant int JPI_C_PCBFLDTYPE = 5;
+%constant int JPI_C_PHDFLDTYPE = 6;
+%constant int JPI_C_JIBTYPE = 7;
+%constant int JPI_C_PSBTYPE = 8;
+%constant int JPI_C_KTBTYPE = 9;
+%constant int JPI_C_MAXSTRUC = 6;
+%constant int JPI_C_LISTEND = 0;
+%constant int JPI__CHAIN = -1;
+%constant int JPI__GETJPI_CONTROL_FLAGS = -2;
+%constant int JPI_M_NO_TARGET_INSWAP = 0x1L;
+%constant int JPI_M_NO_TARGET_AST = 0x2L;
+%constant int JPI_M_IGNORE_TARGET_STATUS = 0x4L;
+%constant int JPI_M_THREAD = 0x8L;
+%constant int JPI_M_NATURAL_PERSONA = 0x10L;
+%constant int JPI_M_FILL1 = 0x7FE0L;
+%constant int JPI_M_NEED_THREAD_CAP = 0x8000L;
+%constant int JPI_S_JPICTLDEF = 4;
+%constant int JPI_S_FILL1 = 10;
+%constant int JPI_K_OTHER = 0;
+%constant int JPI_K_NETWORK = 1;
+%constant int JPI_K_BATCH = 2;
+%constant int JPI_K_INTERACTIVE = 3;
+%constant int JPI_K_DETACHED = 0;
+%constant int JPI_K_LOCAL = 3;
+%constant int JPI_K_DIALUP = 4;
+%constant int JPI_K_REMOTE = 5;
+%constant int JPI_M_NEW_MAIL_AT_LOGIN = 0x1L;
+%constant int JPI_M_PASSWORD_CHANGED = 0x2L;
+%constant int JPI_M_PASSWORD_EXPIRED = 0x4L;
+%constant int JPI_M_PASSWORD_WARNING = 0x8L;
+%constant int JPI_M_PASSWORD2_CHANGED = 0x10L;
+%constant int JPI_M_PASSWORD2_EXPIRED = 0x20L;
+%constant int JPI_M_PASSWORD2_WARNING = 0x40L;
+%constant int JPI_S_JPILGIDEF = 4;
+%constant int JPI_K_SEARCH_SYMLINK_NONE = 1;
+%constant int JPI_K_SEARCH_SYMLINK_ALL = 2;
+%constant int JPI_K_SEARCH_SYMLINK_NOELLIPS = 3;
+%constant int JPI__ASTACT = 768;
+%constant int JPI__ASTEN = 769;
+%constant int JPI__PRI = 770;
+%constant int JPI__OWNER = 771;
+%constant int JPI__UIC = 772;
+%constant int JPI__STS = 773;
+%constant int JPI__STATE = 774;
+%constant int JPI__MEM = 775;
+%constant int JPI__GRP = 776;
+%constant int JPI__PRIB = 777;
+%constant int JPI__APTCNT = 778;
+%constant int JPI__TMBU = 779;
+%constant int JPI__GPGCNT = 780;
+%constant int JPI__PPGCNT = 781;
+%constant int JPI__ASTCNT = 782;
+%constant int JPI__BIOCNT = 783;
+%constant int JPI__BIOLM = 784;
+%constant int JPI__BYTCNT = 785;
+%constant int JPI__DIOCNT = 786;
+%constant int JPI__DIOLM = 787;
+%constant int JPI__FILCNT = 788;
+%constant int JPI__TQCNT = 789;
+%constant int JPI__EFWM = 790;
+%constant int JPI__EFCS = 791;
+%constant int JPI__EFCU = 792;
+%constant int JPI__PID = 793;
+%constant int JPI__BYTLM = 794;
+%constant int JPI__PRCCNT = 795;
+%constant int JPI__PRCNAM = 796;
+%constant int JPI__TERMINAL = 797;
+%constant int JPI__JOBPRCCNT = 798;
+%constant int JPI__ENQCNT = 799;
+%constant int JPI__ENQLM = 800;
+%constant int JPI__SWPFILLOC = 801;
+%constant int JPI__MODE = 802;
+%constant int JPI__JOBTYPE = 803;
+%constant int JPI__PROC_INDEX = 804;
+%constant int JPI__MASTER_PID = 805;
+%constant int JPI__RIGHTSLIST = 806;
+%constant int JPI__CPU_ID = 807;
+%constant int JPI__STS2 = 808;
+%constant int JPI__NODENAME = 809;
+%constant int JPI__NODE_CSID = 810;
+%constant int JPI__NODE_VERSION = 811;
+%constant int JPI__TT_PHYDEVNAM = 812;
+%constant int JPI__TT_ACCPORNAM = 813;
+%constant int JPI__PROCESS_RIGHTS = 814;
+%constant int JPI__SYSTEM_RIGHTS = 815;
+%constant int JPI__IMAGE_RIGHTS = 816;
+%constant int JPI__RIGHTS_SIZE = 817;
+%constant int JPI__CLASSIFICATION = 818;
+%constant int JPI__SCHED_POLICY = 819;
+%constant int JPI__RMS_FILEPROT = 820;
+%constant int JPI__MULTITHREAD = 821;
+%constant int JPI__KT_COUNT = 822;
+%constant int JPI__INITIAL_THREAD_PID = 823;
+%constant int JPI__THREAD_INDEX = 824;
+%constant int JPI__CURRENT_USERCAP_MASK = 825;
+%constant int JPI__PERMANENT_USERCAP_MASK = 826;
+%constant int JPI__CURRENT_AFFINITY_MASK = 827;
+%constant int JPI__PERMANENT_AFFINITY_MASK = 828;
+%constant int JPI__PERSONA_ID = 829;
+%constant int JPI__PERSONA_AUTHPRIV = 830;
+%constant int JPI__PERSONA_PERMPRIV = 831;
+%constant int JPI__PERSONA_WORKPRIV = 832;
+%constant int JPI__IMAGE_WORKPRIV = 833;
+%constant int JPI__PERSONA_RIGHTS_SIZE = 834;
+%constant int JPI__PERSONA_RIGHTS = 835;
+%constant int JPI__SUBSYSTEM_RIGHTS_SIZE = 836;
+%constant int JPI__SUBSYSTEM_RIGHTS = 837;
+%constant int JPI__INSTALL_RIGHTS_SIZE = 838;
+%constant int JPI__INSTALL_RIGHTS = 839;
+%constant int JPI__SYSTEM_RIGHTS_SIZE = 840;
+%constant int JPI__CURRENT_CAP_MASK = 841;
+%constant int JPI__PERMANENT_CAP_MASK = 842;
+%constant int JPI__SCHED_CLASS_NAME = 843;
+%constant int JPI__HOME_RAD = 844;
+%constant int JPI__POSIX_SID = 845;
+%constant int JPI__POSIX_PGID = 846;
+%constant int JPI__CREATOR = 847;
+%constant int JPI__KRNLTIM = 848;
+%constant int JPI__EXECTIM = 849;
+%constant int JPI__SUPRTIM = 850;
+%constant int JPI__USERTIM = 851;
+%constant int JPI__ORG_BYTLM = 852;
+%constant int JPI__DEADLOCK_WAIT = 853;
+%constant int JPI__KT_LIMIT = 854;
+%constant int JPI__LASTPCB = 855;
+%constant int JPI__CURPRIV = 1024;
+%constant int JPI__WSAUTH = 1025;
+%constant int JPI__WSQUOTA = 1026;
+%constant int JPI__DFWSCNT = 1027;
+%constant int JPI__FREP0VA = 1028;
+%constant int JPI__FREP1VA = 1029;
+%constant int JPI__DFPFC = 1030;
+%constant int JPI__CPUTIM = 1031;
+%constant int JPI__PRCLM = 1032;
+%constant int JPI__ASTLM = 1033;
+%constant int JPI__PAGEFLTS = 1034;
+%constant int JPI__DIRIO = 1035;
+%constant int JPI__BUFIO = 1036;
+%constant int JPI__CPULIM = 1037;
+%constant int JPI__PGFLQUOTA = 1038;
+%constant int JPI__FILLM = 1039;
+%constant int JPI__TQLM = 1040;
+%constant int JPI__WSSIZE = 1041;
+%constant int JPI__AUTHPRIV = 1042;
+%constant int JPI__IMAGPRIV = 1043;
+%constant int JPI__PAGFILCNT = 1044;
+%constant int JPI__FREPTECNT = 1045;
+%constant int JPI__WSEXTENT = 1046;
+%constant int JPI__WSAUTHEXT = 1047;
+%constant int JPI__AUTHPRI = 1048;
+%constant int JPI__PAGFILLOC = 1049;
+%constant int JPI__IMAGECOUNT = 1050;
+%constant int JPI__PHDFLAGS = 1051;
+%constant int JPI__VP_CPUTIM = 1052;
+%constant int JPI__VP_CONSUMER = 1053;
+%constant int JPI__P0_FIRST_FREE_VA_64 = 1054;
+%constant int JPI__P1_FIRST_FREE_VA_64 = 1055;
+%constant int JPI__P2_FIRST_FREE_VA_64 = 1056;
+%constant int JPI__IMAGE_AUTHPRIV = 1057;
+%constant int JPI__IMAGE_PERMPRIV = 1058;
+%constant int JPI__LASTPHD = 1059;
+%constant int JPI__VIRTPEAK = 512;
+%constant int JPI__WSPEAK = 513;
+%constant int JPI__USERNAME = 514;
+%constant int JPI__ACCOUNT = 515;
+%constant int JPI__PROCPRIV = 516;
+%constant int JPI__VOLUMES = 517;
+%constant int JPI__LOGINTIM = 518;
+%constant int JPI__IMAGNAME = 519;
+%constant int JPI__SITESPEC = 520;
+%constant int JPI__MSGMASK = 521;
+%constant int JPI__CLINAME = 522;
+%constant int JPI__TABLENAME = 523;
+%constant int JPI__CREPRC_FLAGS = 524;
+%constant int JPI__UAF_FLAGS = 525;
+%constant int JPI__MAXDETACH = 526;
+%constant int JPI__MAXJOBS = 527;
+%constant int JPI__SHRFILLM = 528;
+%constant int JPI__FAST_VP_SWITCH = 529;
+%constant int JPI__SLOW_VP_SWITCH = 530;
+%constant int JPI__LAST_LOGIN_I = 531;
+%constant int JPI__LAST_LOGIN_N = 532;
+%constant int JPI__LOGIN_FAILURES = 533;
+%constant int JPI__LOGIN_FLAGS = 534;
+%constant int JPI__RMS_DFMBC = 535;
+%constant int JPI__RMS_DFMBFSDK = 536;
+%constant int JPI__RMS_DFMBFSMT = 537;
+%constant int JPI__RMS_DFMBFSUR = 538;
+%constant int JPI__RMS_DFMBFREL = 539;
+%constant int JPI__RMS_DFMBFIDX = 540;
+%constant int JPI__RMS_PROLOGUE = 541;
+%constant int JPI__RMS_EXTEND_SIZE = 542;
+%constant int JPI__RMS_DFNBC = 543;
+%constant int JPI__RMS_DFLRL = 544;
+%constant int JPI__RMS_HEURISTIC = 545;
+%constant int JPI__PARSE_STYLE_PERM = 546;
+%constant int JPI__PARSE_STYLE_IMAGE = 547;
+%constant int JPI__RMSD6 = 548;
+%constant int JPI__RMS_QUERY_LOCK = 549;
+%constant int JPI__CASE_LOOKUP_PERM = 550;
+%constant int JPI__CASE_LOOKUP_IMAGE = 551;
+%constant int JPI__UNITS = 552;
+%constant int JPI__TOKEN = 553;
+%constant int JPI__SEARCH_SYMLINK_PERM = 554;
+%constant int JPI__SEARCH_SYMLINK_TEMP = 555;
+%constant int JPI__LASTCTL = 556;
+%constant int JPI__EXCVEC = 256;
+%constant int JPI__FINALEXC = 257;
+%constant int JPI__LASTADR = 258;
+%constant int JPI__LASTPCBFLD = 1280;
+%constant int JPI__LASTPHDFLD = 1536;
diff --git a/Modules/vms/kgbdef/kgbdef.i b/Modules/vms/kgbdef/kgbdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMva2diZGVmL2tnYmRlZi5p
--- /dev/null
+++ b/Modules/vms/kgbdef/kgbdef.i
@@ -0,0 +1,44 @@
+%module kgbdef
+
+%constant int KGB_M_RESOURCE = 0x1L;
+%constant int KGB_M_DYNAMIC = 0x2L;
+%constant int KGB_M_NOACCESS = 0x4L;
+%constant int KGB_M_SUBSYSTEM = 0x8L;
+%constant int KGB_M_IMPERSONATE = 0x10L;
+%constant int KGB_M_HOLDER_HIDDEN = 0x20L;
+%constant int KGB_M_NAME_HIDDEN = 0x40L;
+%constant int KGB_K_HOLD_RECORD = 16;
+%constant int KGB_K_IDENT_RECORD = 48;
+%constant int KGB_K_LEVEL1 = 257;
+%constant int KGB_K_MAINT_RECORD = 64;
+%constant int KGB_K_NUMBER_OF_ATTRIBUTES = 7;
+%constant int KGB_S_KGBDEF = 64;
+%constant int KGB_S_HOLDER = 8;
+%constant int KGB_S_NAME = 32;
+%constant int KGB_S_SYS_ID = 8;
+%constant int KGB_K_BATCH_ID = -2147483647;
+%constant int KGB_K_DIALUP_ID = -2147483646;
+%constant int KGB_K_INTERACTIVE_ID = -2147483645;
+%constant int KGB_K_LOCAL_ID = -2147483644;
+%constant int KGB_K_NETWORK_ID = -2147483643;
+%constant int KGB_K_REMOTE_ID = -2147483642;
+%constant int KGB_K_DECWINDOWS_ID = -2147483641;
+%constant int KGB_K_BOBUSER_ID = -2147483640;
+%constant int KGB_K_MRES_USER_ID = -2147483639;
+%constant int KGB_K_SAT_ACCESS_ID = -2147483638;
+%constant int KGB_K_LAST_ENV_ID = -2147483637;
+%constant int KGB_K_BASE_ENV_ID = -2147483647;
+%constant int KGB_K_NUMBER_OF_ENV_IDS = 10;
+%constant int KGB_K_RESTRICTED_RANGE = -2147418112;
+%constant int KGB_K_SEC_LEVEL_BASE = -2147482648;
+%constant int KGB_K_INT_LEVEL_BASE = -2147482392;
+%constant int KGB_K_SEC_CATEGORY_BASE = -2147482136;
+%constant int KGB_K_INT_CATEGORY_BASE = -2147482072;
+%constant int KGB_K_SEC_ACCESS_CLASS_BASE = -2147482648;
+%constant int KGB_K_SEC_ACCESS_CLASS_END = -2147482008;
+%constant int KGB_K_PROCESS = 0;
+%constant int KGB_K_SYSTEM = 1;
+%constant int KGB_K_EXTENDED = 2;
+%constant int KGB_K_IMAGE = 3;
+%constant int KGB_K_MAX_SEG = 4;
+%constant int KGB_K_SUBSYSTEM = 3;
diff --git a/Modules/vms/lckdef/lckdef.i b/Modules/vms/lckdef/lckdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGNrZGVmL2xja2RlZi5p
--- /dev/null
+++ b/Modules/vms/lckdef/lckdef.i
@@ -0,0 +1,32 @@
+%module lckdef
+
+%constant int LCK_M_VALBLK = 0x1L;
+%constant int LCK_M_CONVERT = 0x2L;
+%constant int LCK_M_NOQUEUE = 0x4L;
+%constant int LCK_M_SYNCSTS = 0x8L;
+%constant int LCK_M_SYSTEM = 0x10L;
+%constant int LCK_M_NOQUOTA = 0x20L;
+%constant int LCK_M_CVTSYS = 0x40L;
+%constant int LCK_M_RECOVER = 0x80L;
+%constant int LCK_M_PROTECT = 0x100L;
+%constant int LCK_M_NODLCKWT = 0x200L;
+%constant int LCK_M_NODLCKBLK = 0x400L;
+%constant int LCK_M_EXPEDITE = 0x800L;
+%constant int LCK_M_QUECVT = 0x1000L;
+%constant int LCK_M_BYPASS = 0x2000L;
+%constant int LCK_M_NOIOLOCK8 = 0x4000L;
+%constant int LCK_M_NOFORK = 0x8000L;
+%constant int LCK_M_XVALBLK = 0x10000L;
+%constant int LCK_M_DEQALL = 0x1L;
+%constant int LCK_M_CANCEL = 0x2L;
+%constant int LCK_M_INVVALBLK = 0x4L;
+%constant int LCK_M_RESV_NOIOLOCK8 = 0x4000L;
+%constant int LCK_M_RESV_NOFORK = 0x8000L;
+%constant int LCK_M_RESV_XVALBLK = 0x10000L;
+%constant int LCK_K_NLMODE = 0;
+%constant int LCK_K_CRMODE = 1;
+%constant int LCK_K_CWMODE = 2;
+%constant int LCK_K_PRMODE = 3;
+%constant int LCK_K_PWMODE = 4;
+%constant int LCK_K_EXMODE = 5;
+%constant int LCK_S_LCKDEF = 3;
diff --git a/Modules/vms/lib/lib.c b/Modules/vms/lib/lib.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliL2xpYi5j
--- /dev/null
+++ b/Modules/vms/lib/lib.c
@@ -0,0 +1,293 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <descrip.h>
+#include <lib$routines.h>
+#include <ssdef.h>
+#include <assert.h>
+
+#include "lib.h"
+
+#ifndef OKAY
+#define OKAY(STATUS) (((STATUS) & 1) != 0)
+#endif
+
+
+static const char *nil = "";
+
+unsigned int _date_time(char **dt)
+{
+    char val[32];
+    struct dsc$descriptor_s val_dsc;
+    unsigned int status;
+
+    assert(dt);
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    status = lib$date_time(&val_dsc);
+
+    if (OKAY(status)) {
+        val[23] = '\0';
+        *dt = strdup(val);
+        assert(*dt);
+    } else {
+        *dt = strdup(nil);
+    	assert(*dt);
+    }
+
+    return (status);
+}
+
+
+unsigned int _free_ef(unsigned int efn)
+{
+    return (lib$free_ef(&efn));
+}
+
+
+unsigned int _get_ef(unsigned int *efn)
+{
+    assert(efn);
+    return (lib$get_ef(efn));
+}
+
+
+unsigned int _get_hostname(char **hostname, unsigned int flags)
+{
+    char val[256];
+    struct dsc$descriptor_s val_dsc;
+    unsigned int status;
+    unsigned short len;
+
+    assert(hostname);
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    status = lib$get_hostname(&val_dsc, &len, flags);
+
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *hostname = strdup(val);
+        assert(*hostname);
+    } else {
+        *hostname = strdup(nil);
+	    assert(*hostname);
+    }
+
+    return (status);
+}
+
+
+unsigned int _getjpi(int item, unsigned int *pid, char *prn, char **ret)
+{
+    char val[256];
+    struct dsc$descriptor_s prn_dsc;
+    struct dsc$descriptor_s val_dsc;
+    unsigned int status;
+    unsigned short len;
+
+    assert(ret);
+
+    if (prn) {
+        prn_dsc.dsc$w_length = strlen(prn);
+        prn_dsc.dsc$b_class = DSC$K_CLASS_S;
+        prn_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        prn_dsc.dsc$a_pointer = prn;
+    }
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    status =
+        lib$getjpi(&item, pid, (prn ? &prn_dsc : NULL), 0, &val_dsc, &len);
+
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *ret = strdup(val);
+        assert(*ret);
+    } else {
+        *ret = strdup(nil);
+        assert(*ret);
+    }
+
+    return (status);
+}
+
+
+
+unsigned int _getsyi(int item, char **ret, unsigned int *csid, char *node)
+{
+    char val[256];
+    struct dsc$descriptor_s node_dsc, val_dsc;
+    unsigned int status;
+    unsigned short len;
+
+    assert(ret);
+    // assert(csid);
+
+    if (csid) {
+        *csid = 0;  // output parameter must be initialized
+    }
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    if (node) {
+        node_dsc.dsc$w_length = strlen(node);
+        node_dsc.dsc$b_class = DSC$K_CLASS_S;
+        node_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        node_dsc.dsc$a_pointer = node;
+    }
+
+    status =
+        lib$getsyi(&item, NULL, &val_dsc, &len, csid,
+                (node ? &node_dsc : NULL));
+
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *ret = strdup(val);
+        assert(*ret);
+    } else {
+        *ret = strdup(nil);
+        assert(*ret);
+    }
+
+    return (status);
+}
+
+
+unsigned int _spawn(char *cmd, char *in, char *out, unsigned int flags,
+		    char *prn, unsigned int *pid)
+{
+    struct dsc$descriptor_s cmd_dsc, in_dsc, out_dsc, prn_dsc;
+    unsigned int status;
+
+    if (cmd) {
+	cmd_dsc.dsc$w_length = strlen(cmd);
+	cmd_dsc.dsc$b_class = DSC$K_CLASS_S;
+	cmd_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	cmd_dsc.dsc$a_pointer = cmd;
+    }
+
+    if (in) {
+	in_dsc.dsc$w_length = strlen(in);
+	in_dsc.dsc$b_class = DSC$K_CLASS_S;
+	in_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	in_dsc.dsc$a_pointer = in;
+    }
+
+    if (out) {
+	out_dsc.dsc$w_length = strlen(out);
+	out_dsc.dsc$b_class = DSC$K_CLASS_S;
+	out_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	out_dsc.dsc$a_pointer = out;
+    }
+
+    if (prn) {
+	prn_dsc.dsc$w_length = strlen(prn);
+	prn_dsc.dsc$b_class = DSC$K_CLASS_S;
+	prn_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	prn_dsc.dsc$a_pointer = prn;
+    }
+
+    if (pid) {
+	*pid = 0;
+    }
+
+    status = lib$spawn((cmd ? &cmd_dsc : NULL),
+		       (in ? &in_dsc : NULL),
+		       (out ? &out_dsc : NULL),
+		       &flags,
+		       (prn ? &prn_dsc : NULL),
+		       pid, NULL, 0, NULL, NULL, NULL, NULL, NULL);
+
+    return (status);
+}
+
+
+unsigned int _do_command(char *cmd)
+{
+    struct dsc$descriptor_s cmd_dsc;
+    assert(cmd);
+
+    cmd_dsc.dsc$w_length = strlen(cmd);
+    cmd_dsc.dsc$b_class = DSC$K_CLASS_S;
+    cmd_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    cmd_dsc.dsc$a_pointer = cmd;
+
+    return (lib$do_command(&cmd_dsc));
+}
+
+
+
+unsigned int _put_common(char *str)
+{
+    struct dsc$descriptor_s str_dsc;
+
+    assert(str);
+
+    str_dsc.dsc$w_length = strlen(str);
+    str_dsc.dsc$b_class = DSC$K_CLASS_S;
+    str_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    str_dsc.dsc$a_pointer = str;
+
+    return (lib$put_common(&str_dsc));
+}
+
+
+unsigned int _get_common(char **str)
+{
+    struct dsc$descriptor_s str_dsc;
+    unsigned int status;
+    char *tmp;
+    unsigned short len;
+
+    assert(str);
+
+    tmp = malloc(252);
+    assert(tmp);
+
+    str_dsc.dsc$w_length = 252;
+    str_dsc.dsc$b_class = DSC$K_CLASS_S;
+    str_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    str_dsc.dsc$a_pointer = tmp;
+
+    status = lib$get_common(&str_dsc, &len);
+
+    if (OKAY(status)) {
+	tmp[len] = '\0';
+    } else {
+	free(tmp);
+	tmp = NULL;
+    }
+
+    *str = tmp;
+    return (status);
+}
+
+
+
+unsigned int _create_dir(char *spec, unsigned int *uic, unsigned short pe, unsigned short pv)
+{
+    struct dsc$descriptor_s spec_dsc;
+    assert(spec);
+
+    spec_dsc.dsc$w_length = strlen(spec);
+    spec_dsc.dsc$b_class = DSC$K_CLASS_S;
+    spec_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    spec_dsc.dsc$a_pointer = spec;
+
+    return (lib$create_dir(&spec_dsc, uic, &pe, &pv, NULL, NULL, NULL));
+}
+
diff --git a/Modules/vms/lib/lib.h b/Modules/vms/lib/lib.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliL2xpYi5o
--- /dev/null
+++ b/Modules/vms/lib/lib.h
@@ -0,0 +1,23 @@
+#ifndef __RTL_H__
+#define __RTL_H__
+
+# ifdef __cplusplus
+        extern "C" {
+#endif
+
+extern unsigned int _date_time(char **);
+extern unsigned int _free_ef(unsigned int);
+extern unsigned int _get_ef(unsigned int *);
+extern unsigned int _get_hostname(char **, unsigned int);
+extern unsigned int _getjpi(int, unsigned int *, char *, char **);
+extern unsigned int _getsyi(int, char **, unsigned int *, char *);
+extern unsigned int _spawn(char *, char *, char *, unsigned int, char *, unsigned int *);
+extern unsigned int _do_command(char *);
+extern unsigned int _put_common(char *);
+extern unsigned int _get_common(char **);
+extern unsigned int _create_dir(char *, unsigned int *, unsigned short, unsigned short);
+
+#ifdef __cplusplus
+        }
+#endif
+#endif
diff --git a/Modules/vms/lib/lib.i b/Modules/vms/lib/lib.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliL2xpYi5p
--- /dev/null
+++ b/Modules/vms/lib/lib.i
@@ -0,0 +1,49 @@
+%module lib
+
+%{
+#include "lib.h"
+%}
+
+%include "typemaps.i"
+%include <cstring.i>
+%cstring_output_allocate(char **OUTPUT, free(*$1));
+
+%typemap(in) unsigned int *owner_uic (unsigned int ouic) {
+   if (PyInt_Check($input)) {
+        ouic = PyInt_AsLong($input);
+        $1 = &ouic;
+    } else {
+        $1 = NULL;
+    }
+}
+
+%exception {
+    Py_BEGIN_ALLOW_THREADS
+    $action
+    Py_END_ALLOW_THREADS
+}
+
+%rename(date_time) _date_time;
+%rename(free_ef) _free_ef;
+%rename(get_ef) _get_ef;
+%rename(get_hostname) _get_hostname;
+%rename(getjpi) _getjpi;
+%rename(getsyi) _getsyi;
+%rename(spawn) _spawn;
+%rename(do_command) _do_command;
+%rename(put_common) _put_common;
+%rename(get_common) _get_common;
+%rename(create_dir) _create_dir;
+
+extern unsigned int _date_time(char **OUTPUT);
+extern unsigned int _free_ef(unsigned int);
+extern unsigned int _get_ef(unsigned int *OUTPUT);
+extern unsigned int _get_hostname(char **OUTPUT, unsigned int);
+extern unsigned int _getjpi(int, unsigned int *INPUT, char *, char **OUTPUT);
+extern unsigned int _getsyi(int, char **OUTPUT, unsigned int *OUTPUT, char *);
+extern unsigned int _spawn(char *, char *, char *, unsigned int, char *, unsigned int *OUTPUT);
+extern unsigned int _do_command(char *);
+extern unsigned int _put_common(char *);
+extern unsigned int _get_common(char **OUTPUT);
+extern unsigned int _create_dir(char *, unsigned int *owner_uic, unsigned short, unsigned short);
+
diff --git a/Modules/vms/libclidef/libclidef.i b/Modules/vms/libclidef/libclidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliY2xpZGVmL2xpYmNsaWRlZi5p
--- /dev/null
+++ b/Modules/vms/libclidef/libclidef.i
@@ -0,0 +1,7 @@
+%module libclidef
+
+%constant int LIB_K_CLI_LOCAL_SYM = 1;
+%constant int LIB_K_CLI_GLOBAL_SYM = 2;
+%constant int LIB_M_CLI_CTRLT = 0x100000L;
+%constant int LIB_M_CLI_CTRLY = 0x2000000L;
+%constant int LIB_S_CLI_CTRL_FIELDS = 4;
diff --git a/Modules/vms/libdtdef/libdtdef.i b/Modules/vms/libdtdef/libdtdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliZHRkZWYvbGliZHRkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/libdtdef/libdtdef.i
@@ -0,0 +1,54 @@
+%module libdtdef
+
+%constant int LIB_K_MONTH_NAME = 0;
+%constant int LIB_K_MONTH_NAME_ABB = 3;
+%constant int LIB_K_WEEKDAY_NAME = 6;
+%constant int LIB_K_WEEKDAY_NAME_ABB = 9;
+%constant int LIB_K_MERIDIEM_INDICATOR = 12;
+%constant int LIB_K_OUTPUT_FORMAT = 1;
+%constant int LIB_K_INPUT_FORMAT = 2;
+%constant int LIB_K_RELATIVE_DAY_NAME = 15;
+%constant int LIB_K_FORMAT_MNEMONICS = 18;
+%constant int LIB_K_LANGUAGE = 4;
+%constant int LIB_K_MONTH_OF_YEAR = 1;
+%constant int LIB_K_DAY_OF_YEAR = 2;
+%constant int LIB_K_HOUR_OF_YEAR = 3;
+%constant int LIB_K_MINUTE_OF_YEAR = 4;
+%constant int LIB_K_SECOND_OF_YEAR = 5;
+%constant int LIB_K_DAY_OF_MONTH = 6;
+%constant int LIB_K_HOUR_OF_MONTH = 7;
+%constant int LIB_K_MINUTE_OF_MONTH = 8;
+%constant int LIB_K_SECOND_OF_MONTH = 9;
+%constant int LIB_K_DAY_OF_WEEK = 10;
+%constant int LIB_K_HOUR_OF_WEEK = 11;
+%constant int LIB_K_MINUTE_OF_WEEK = 12;
+%constant int LIB_K_SECOND_OF_WEEK = 13;
+%constant int LIB_K_HOUR_OF_DAY = 14;
+%constant int LIB_K_MINUTE_OF_DAY = 15;
+%constant int LIB_K_SECOND_OF_DAY = 16;
+%constant int LIB_K_MINUTE_OF_HOUR = 17;
+%constant int LIB_K_SECOND_OF_HOUR = 18;
+%constant int LIB_K_SECOND_OF_MINUTE = 19;
+%constant int LIB_K_JULIAN_DATE = 20;
+%constant int LIB_K_DELTA_WEEKS = 21;
+%constant int LIB_K_DELTA_DAYS = 22;
+%constant int LIB_K_DELTA_HOURS = 23;
+%constant int LIB_K_DELTA_MINUTES = 24;
+%constant int LIB_K_DELTA_SECONDS = 25;
+%constant int LIB_K_DELTA_WEEKS_F = 26;
+%constant int LIB_K_DELTA_DAYS_F = 27;
+%constant int LIB_K_DELTA_HOURS_F = 28;
+%constant int LIB_K_DELTA_MINUTES_F = 29;
+%constant int LIB_K_DELTA_SECONDS_F = 30;
+%constant int LIB_K_MAX_OPERATION = 31;
+%constant int LIB_M_TIME_FIELDS = 0x1L;
+%constant int LIB_M_DATE_FIELDS = 0x2L;
+%constant int LIB_S_DT_PRINT_FIELDS = 1;
+%constant int LIB_M_YEAR = 0x1L;
+%constant int LIB_M_MONTH = 0x2L;
+%constant int LIB_M_DAY = 0x4L;
+%constant int LIB_M_HOUR = 0x8L;
+%constant int LIB_M_MINUTE = 0x10L;
+%constant int LIB_M_SECOND = 0x20L;
+%constant int LIB_M_HUNDREDTHS = 0x40L;
+%constant int LIB_S_DT_DEFAULT_FIELDS = 1;
diff --git a/Modules/vms/libfisdef/libfisdef.i b/Modules/vms/libfisdef/libfisdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliZmlzZGVmL2xpYmZpc2RlZi5p
--- /dev/null
+++ b/Modules/vms/libfisdef/libfisdef.i
@@ -0,0 +1,7 @@
+%module libfisdef
+
+%constant int LIB_M_FIS_PARANOID = 0x1L;
+%constant int LIB_M_FIS_NOTRANSLOG = 0x8L;
+%constant int LIB_M_FIS_MIXEDCASE = 0x10L;
+%constant int LIB_M_FIS_TV_AV = 0x20L;
+%constant int LIB_S_LIB_FIS_FLAGS = 1;
diff --git a/Modules/vms/lkidef/lkidef.i b/Modules/vms/lkidef/lkidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGtpZGVmL2xraWRlZi5p
--- /dev/null
+++ b/Modules/vms/lkidef/lkidef.i
@@ -0,0 +1,74 @@
+%module lkidef
+
+%constant int LKI_K_LENGTH = 24;
+%constant int LKI_C_LENGTH = 24;
+%constant int LKI_K_BR_LENGTH = 56;
+%constant int LKI_C_BR_LENGTH = 56;
+%constant int LKI_S_LKIDEF = 56;
+%constant int LKI_S_RQSTART = 8;
+%constant int LKI_S_RQLENGTH = 8;
+%constant int LKI_S_GRSTART = 8;
+%constant int LKI_S_GRLENGTH = 8;
+%constant int LKI_M_SYSNAM = 0x80000000L;
+%constant int LKI_S_NAMSPACE = 4;
+%constant int LKI_S_STATEF = 3;
+%constant int LKIUSR_K_LENGTH = 20;
+%constant int LKIUSR_C_LENGTH = 20;
+%constant int LKIUSR_K_BLOCKER_START = 20;
+%constant int LKIUSR_S_LKIUSRDEF = 20;
+%constant int LKIUSR_S_START = 8;
+%constant int LKIUSR_S_LENGTH = 8;
+%constant int LKI__RNG_S_RNGDEF = 32;
+%constant int LKI__RNG_S_RQSTART = 8;
+%constant int LKI__RNG_S_RQLENGTH = 8;
+%constant int LKI__RNG_S_GRSTART = 8;
+%constant int LKI__RNG_S_GRLENGTH = 8;
+%constant int LKI_C_GRANTED = 1;
+%constant int LKI_C_CONVERT = 0;
+%constant int LKI_C_WAITING = -1;
+%constant int LKI_C_RETRY = -2;
+%constant int LKI_C_SCSWAIT = -3;
+%constant int LKI_C_RSPNOTQED = -4;
+%constant int LKI_C_RSPQUEUED = -5;
+%constant int LKI_C_RSPGRANTD = -6;
+%constant int LKI_C_RSPDOLOCL = -7;
+%constant int LKI_C_RSPRESEND = -8;
+%constant int LKI_C_LKBTYPE = 1;
+%constant int LKI_C_RSBTYPE = 2;
+%constant int LKI_C_LISTEND = 0;
+%constant int LKI__PID = 256;
+%constant int LKI__STATE = 257;
+%constant int LKI__PARENT = 258;
+%constant int LKI__LCKREFCNT = 259;
+%constant int LKI__LOCKID = 260;
+%constant int LKI__REMLKID = 261;
+%constant int LKI__MSTLKID = 262;
+%constant int LKI__LKID = 263;
+%constant int LKI__CSID = 264;
+%constant int LKI__BRL = 265;
+%constant int LKI__RANGE = 266;
+%constant int LKI__LASTLKB = 267;
+%constant int LKI__NAMSPACE = 512;
+%constant int LKI__RESNAM = 513;
+%constant int LKI__RSBREFCNT = 514;
+%constant int LKI__VALBLK = 515;
+%constant int LKI__SYSTEM = 516;
+%constant int LKI__LCKCOUNT = 517;
+%constant int LKI__BLOCKEDBY = 518;
+%constant int LKI__BLOCKING = 519;
+%constant int LKI__LOCKS = 520;
+%constant int LKI__CVTCOUNT = 521;
+%constant int LKI__WAITCOUNT = 522;
+%constant int LKI__GRANTCOUNT = 523;
+%constant int LKI__MSTCSID = 524;
+%constant int LKI__VALBLKST = 525;
+%constant int LKI__BLOCKEDBY_BR = 526;
+%constant int LKI__BLOCKING_BR = 527;
+%constant int LKI__LOCKS_BR = 528;
+%constant int LKI__BLOCKER_BR = 529;
+%constant int LKI__XVALBLK = 530;
+%constant int LKI__XVALNOTVALID = 531;
+%constant int LKI__LASTRSB = 532;
+%constant int LKISND_K_HDRLEN = 16;
+%constant int LKISND_C_HDRLEN = 16;
+%constant int LKISND_S_LKISNDDEF = 16;
diff --git a/Modules/vms/lnmdef/lnmdef.i b/Modules/vms/lnmdef/lnmdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbG5tZGVmL2xubWRlZi5p
--- /dev/null
+++ b/Modules/vms/lnmdef/lnmdef.i
@@ -0,0 +1,31 @@
+%module lnmdef
+
+%constant int LNM_M_NO_ALIAS = 0x1L;
+%constant int LNM_M_CONFINE = 0x2L;
+%constant int LNM_M_CRELOG = 0x4L;
+%constant int LNM_M_TABLE = 0x8L;
+%constant int LNM_M_CONCEALED = 0x100L;
+%constant int LNM_M_TERMINAL = 0x200L;
+%constant int LNM_M_EXISTS = 0x400L;
+%constant int LNM_M_SHAREABLE = 0x10000L;
+%constant int LNM_M_CLUSTERWIDE = 0x20000L;
+%constant int LNM_M_DCL_REQUEST = 0x40000L;
+%constant int LNM_M_CREATE_IF = 0x1000000L;
+%constant int LNM_M_CASE_BLIND = 0x2000000L;
+%constant int LNM_M_INTERLOCKED = 0x4000000L;
+%constant int LNM_M_LOCAL_ACTION = 0x8000000L;
+%constant int LNM_S_LNMDEF = 4;
+%constant int LNM_C_TABNAMLEN = 31;
+%constant int LNM_C_NAMLENGTH = 255;
+%constant int LNM_C_MAXDEPTH = 10;
+%constant int LNM__INDEX = 1;
+%constant int LNM__STRING = 2;
+%constant int LNM__ATTRIBUTES = 3;
+%constant int LNM__TABLE = 4;
+%constant int LNM__LENGTH = 5;
+%constant int LNM__ACMODE = 6;
+%constant int LNM__MAX_INDEX = 7;
+%constant int LNM__PARENT = 8;
+%constant int LNM__LNMB_ADDR = 9;
+%constant int LNM__AGENT_ACMODE = 10;
+%constant int LNM__CHAIN = -1;
diff --git a/Modules/vms/maildef/maildef.i b/Modules/vms/maildef/maildef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbWFpbGRlZi9tYWlsZGVmLmk=
--- /dev/null
+++ b/Modules/vms/maildef/maildef.i
@@ -0,0 +1,310 @@
+%module maildef
+
+%constant int mail__send_spare_0 = 1;
+%constant int mail__send_foreign = 2;
+%constant int mail__send_cc_line = 3;
+%constant int mail__send_default_name = 4;
+%constant int mail__send_default_transport = 5;
+%constant int mail__send_error_entry = 6;
+%constant int mail__send_filename = 7;
+%constant int mail__send_from_line = 8;
+%constant int mail__send_no_default_transport = 9;
+%constant int mail__send_pers_name = 10;
+%constant int mail__send_record = 11;
+%constant int mail__send_resultspec = 12;
+%constant int mail__send_server = 13;
+%constant int mail__send_subject = 14;
+%constant int mail__send_success_entry = 15;
+%constant int mail__send_to_line = 16;
+%constant int mail__send_uflags = 17;
+%constant int mail__send_user_data = 18;
+%constant int mail__send_username = 19;
+%constant int mail__send_username_type = 20;
+%constant int mail__send_fid = 21;
+%constant int mail__send_no_pers_name = 22;
+%constant int mail__send_sigfile = 23;
+%constant int mail__send_no_sigfile = 24;
+%constant int mail__send_parse_quotes = 25;
+%constant int mail__send_copy_reply = 26;
+%constant int mail__send_copy_send = 27;
+%constant int mail__send_user = 28;
+%constant int mail__send_copy_forward = 29;
+%constant int mail__send_recip_folder = 30;
+%constant int mail__send_out_spare3 = 31;
+%constant int mail__send_out_spare4 = 32;
+%constant int mail__send_out_spare5 = 33;
+%constant int mail_k_send_min_item = 1;
+%constant int mail_k_send_max_item = 33;
+%constant int mail_k_send_items = 33;
+%constant int mail__mailfile_spare_0 = 1025;
+%constant int mail__mailfile_default_name = 1026;
+%constant int mail__mailfile_folder_routine = 1027;
+%constant int mail__mailfile_full_close = 1028;
+%constant int mail__mailfile_name = 1029;
+%constant int mail__mailfile_reclaim = 1030;
+%constant int mail__mailfile_user_data = 1031;
+%constant int mail__mailfile_wastebasket_name = 1032;
+%constant int mail__mailfile_collate_seq = 1033;
+%constant int mail__mailfile_in_spare2 = 1034;
+%constant int mail__mailfile_in_spare3 = 1035;
+%constant int mail__mailfile_in_spare4 = 1036;
+%constant int mail__mailfile_in_spare5 = 1037;
+%constant int mail__mailfile_in_spare6 = 1038;
+%constant int mail__mailfile_in_spare7 = 1039;
+%constant int mail__mailfile_in_spare8 = 1040;
+%constant int mail__mailfile_in_spare9 = 1041;
+%constant int mail__mailfile_in_spare10 = 1042;
+%constant int mail__mailfile_in_spare11 = 1043;
+%constant int mail__mailfile_in_spare12 = 1044;
+%constant int mail__mailfile_in_spare13 = 1045;
+%constant int mail__mailfile_in_spare14 = 1046;
+%constant int mail__mailfile_in_spare15 = 1047;
+%constant int mail__mailfile_in_spare16 = 1048;
+%constant int mail__mailfile_in_spare17 = 1049;
+%constant int mail__mailfile_in_spare18 = 1050;
+%constant int mail__mailfile_in_spare19 = 1051;
+%constant int mail__mailfile_in_spare20 = 1052;
+%constant int mail__mailfile_data_reclaim = 1053;
+%constant int mail__mailfile_data_scan = 1054;
+%constant int mail__mailfile_deleted_bytes = 1055;
+%constant int mail__mailfile_index_reclaim = 1056;
+%constant int mail__mailfile_mail_directory = 1057;
+%constant int mail__mailfile_messages_deleted = 1058;
+%constant int mail__mailfile_resultspec = 1059;
+%constant int mail__mailfile_total_reclaim = 1060;
+%constant int mail__mailfile_wastebasket = 1061;
+%constant int mail__mailfile_indexed = 1062;
+%constant int mail__mailfile_out_spare2 = 1063;
+%constant int mail__mailfile_out_spare3 = 1064;
+%constant int mail__mailfile_out_spare4 = 1065;
+%constant int mail__mailfile_out_spare5 = 1066;
+%constant int mail__mailfile_out_spare6 = 1067;
+%constant int mail__mailfile_out_spare7 = 1068;
+%constant int mail__mailfile_out_spare8 = 1069;
+%constant int mail__mailfile_out_spare9 = 1070;
+%constant int mail__mailfile_out_spare10 = 1071;
+%constant int mail__mailfile_out_spare11 = 1072;
+%constant int mail__mailfile_out_spare12 = 1073;
+%constant int mail__mailfile_out_spare13 = 1074;
+%constant int mail__mailfile_out_spare14 = 1075;
+%constant int mail__mailfile_out_spare15 = 1076;
+%constant int mail__mailfile_out_spare16 = 1077;
+%constant int mail__mailfile_out_spare17 = 1078;
+%constant int mail__mailfile_out_spare18 = 1079;
+%constant int mail__mailfile_out_spare19 = 1080;
+%constant int mail__mailfile_out_spare20 = 1081;
+%constant int mail_k_mailfile_min_item = 1025;
+%constant int mail_k_mailfile_max_item = 1081;
+%constant int mail_k_mailfile_items = 57;
+%constant int mail__message_spare_0 = 2048;
+%constant int mail__message_back = 2049;
+%constant int mail__message_before = 2050;
+%constant int mail__message_cc_substring = 2051;
+%constant int mail__message_continue = 2052;
+%constant int mail__message_file_action = 2053;
+%constant int mail__message_folder_action = 2054;
+%constant int mail__message_default_name = 2055;
+%constant int mail__message_delete = 2056;
+%constant int mail__message_erase = 2057;
+%constant int mail__message_file_ctx = 2058;
+%constant int mail__message_filename = 2059;
+%constant int mail__message_flags = 2060;
+%constant int mail__message_folder = 2061;
+%constant int mail__message_from_substring = 2062;
+%constant int mail__message_id = 2063;
+%constant int mail__message_next = 2064;
+%constant int mail__message_since = 2065;
+%constant int mail__message_subj_substring = 2066;
+%constant int mail__message_to_substring = 2067;
+%constant int mail__message_uflags = 2068;
+%constant int mail__message_auto_newmail = 2069;
+%constant int mail__message_user_data = 2070;
+%constant int mail__message_flags_mbz = 2071;
+%constant int mail__message_min_class = 2072;
+%constant int mail__message_max_class = 2073;
+%constant int mail__message_in_spare1 = 2074;
+%constant int mail__message_in_spare2 = 2075;
+%constant int mail__message_in_spare3 = 2076;
+%constant int mail__message_in_spare4 = 2077;
+%constant int mail__message_in_spare5 = 2078;
+%constant int mail__message_in_spare6 = 2079;
+%constant int mail__message_in_spare7 = 2080;
+%constant int mail__message_in_spare8 = 2081;
+%constant int mail__message_in_spare9 = 2082;
+%constant int mail__message_in_spare10 = 2083;
+%constant int mail__message_in_spare11 = 2084;
+%constant int mail__message_in_spare12 = 2085;
+%constant int mail__message_in_spare13 = 2086;
+%constant int mail__message_in_spare14 = 2087;
+%constant int mail__message_in_spare15 = 2088;
+%constant int mail__message_in_spare16 = 2089;
+%constant int mail__message_in_spare17 = 2090;
+%constant int mail__message_in_spare18 = 2091;
+%constant int mail__message_in_spare19 = 2092;
+%constant int mail__message_in_spare20 = 2093;
+%constant int mail__message_cc = 2094;
+%constant int mail__message_current_id = 2095;
+%constant int mail__message_date = 2096;
+%constant int mail__message_extid = 2097;
+%constant int mail__message_file_created = 2098;
+%constant int mail__message_folder_created = 2099;
+%constant int mail__message_from = 2100;
+%constant int mail__message_record = 2101;
+%constant int mail__message_record_type = 2102;
+%constant int mail__message_reply_path = 2103;
+%constant int mail__message_resultspec = 2104;
+%constant int mail__message_return_flags = 2105;
+%constant int mail__message_return_uflags = 2106;
+%constant int mail__message_selected = 2107;
+%constant int mail__message_sender = 2108;
+%constant int mail__message_size = 2109;
+%constant int mail__message_subject = 2110;
+%constant int mail__message_to = 2111;
+%constant int mail__message_buffer = 2112;
+%constant int mail__message_return_class = 2113;
+%constant int mail__message_binary_date = 2114;
+%constant int mail__message_spare4 = 2115;
+%constant int mail__message_parse_quotes = 2116;
+%constant int mail__message_spare6 = 2117;
+%constant int mail__message_spare7 = 2118;
+%constant int mail__message_spare8 = 2119;
+%constant int mail__message_spare9 = 2120;
+%constant int mail__message_spare10 = 2121;
+%constant int mail__message_spare11 = 2122;
+%constant int mail__message_spare12 = 2123;
+%constant int mail__message_spare13 = 2124;
+%constant int mail__message_spare14 = 2125;
+%constant int mail__message_spare15 = 2126;
+%constant int mail__message_spare16 = 2127;
+%constant int mail__message_spare17 = 2128;
+%constant int mail__message_spare18 = 2129;
+%constant int mail__message_spare19 = 2130;
+%constant int mail__message_null = 2131;
+%constant int mail__message_header = 2132;
+%constant int mail__message_text = 2133;
+%constant int mail__message_spare20 = 2134;
+%constant int mail_k_message_min_item = 2048;
+%constant int mail_k_message_max_item = 2134;
+%constant int mail_k_message_items = 87;
+%constant int mail__user_spare_0 = 3072;
+%constant int mail__user_first = 3073;
+%constant int mail__user_next = 3074;
+%constant int mail__user_username = 3075;
+%constant int mail__user_set_auto_purge = 3076;
+%constant int mail__user_set_no_auto_purge = 3077;
+%constant int mail__user_set_sub_directory = 3078;
+%constant int mail__user_set_no_sub_directory = 3079;
+%constant int mail__user_set_forwarding = 3080;
+%constant int mail__user_set_no_forwarding = 3081;
+%constant int mail__user_set_personal_name = 3082;
+%constant int mail__user_set_no_personal_name = 3083;
+%constant int mail__user_set_copy_send = 3084;
+%constant int mail__user_set_no_copy_send = 3085;
+%constant int mail__user_set_copy_reply = 3086;
+%constant int mail__user_set_no_copy_reply = 3087;
+%constant int mail__user_set_new_messages = 3088;
+%constant int mail__user_create_if = 3089;
+%constant int mail__user_set_mailplus = 3090;
+%constant int mail__user_set_no_mailplus = 3091;
+%constant int mail__user_set_transport = 3092;
+%constant int mail__user_set_no_transport = 3093;
+%constant int mail__user_set_editor = 3094;
+%constant int mail__user_set_no_editor = 3095;
+%constant int mail__user_set_queue = 3096;
+%constant int mail__user_set_no_queue = 3097;
+%constant int mail__user_set_user1 = 3098;
+%constant int mail__user_set_no_user1 = 3099;
+%constant int mail__user_set_user2 = 3100;
+%constant int mail__user_set_no_user2 = 3101;
+%constant int mail__user_set_user3 = 3102;
+%constant int mail__user_set_no_user3 = 3103;
+%constant int mail__user_set_form = 3104;
+%constant int mail__user_set_no_form = 3105;
+%constant int mail__user_set_copy_forward = 3106;
+%constant int mail__user_set_no_copy_forward = 3107;
+%constant int mail__user_set_cc_prompt = 3108;
+%constant int mail__user_set_no_cc_prompt = 3109;
+%constant int mail__user_set_sigfile = 3110;
+%constant int mail__user_set_no_sigfile = 3111;
+%constant int mail__user_in_spare1 = 3112;
+%constant int mail__user_in_spare2 = 3113;
+%constant int mail__user_in_spare3 = 3114;
+%constant int mail__user_in_spare4 = 3115;
+%constant int mail__user_in_spare5 = 3116;
+%constant int mail__user_in_spare6 = 3117;
+%constant int mail__user_in_spare7 = 3118;
+%constant int mail__user_in_spare8 = 3119;
+%constant int mail__user_in_spare9 = 3120;
+%constant int mail__user_in_spare10 = 3121;
+%constant int mail__user_in_spare11 = 3122;
+%constant int mail__user_in_spare12 = 3123;
+%constant int mail__user_in_spare13 = 3124;
+%constant int mail__user_in_spare14 = 3125;
+%constant int mail__user_in_spare15 = 3126;
+%constant int mail__user_in_spare16 = 3127;
+%constant int mail__user_in_spare17 = 3128;
+%constant int mail__user_in_spare18 = 3129;
+%constant int mail__user_in_spare19 = 3130;
+%constant int mail__user_in_spare20 = 3131;
+%constant int mail__user_mailplus = 3132;
+%constant int mail__user_transport = 3133;
+%constant int mail__user_editor = 3134;
+%constant int mail__user_queue = 3135;
+%constant int mail__user_user1 = 3136;
+%constant int mail__user_user2 = 3137;
+%constant int mail__user_user3 = 3138;
+%constant int mail__user_form = 3139;
+%constant int mail__user_copy_forward = 3140;
+%constant int mail__user_sigfile = 3141;
+%constant int mail__user_return_username = 3142;
+%constant int mail__user_auto_purge = 3143;
+%constant int mail__user_sub_directory = 3144;
+%constant int mail__user_full_directory = 3145;
+%constant int mail__user_new_messages = 3146;
+%constant int mail__user_forwarding = 3147;
+%constant int mail__user_personal_name = 3148;
+%constant int mail__user_copy_send = 3149;
+%constant int mail__user_copy_reply = 3150;
+%constant int mail__user_captive = 3151;
+%constant int mail__user_cc_prompt = 3152;
+%constant int mail__user_out_spare2 = 3153;
+%constant int mail__user_out_spare3 = 3154;
+%constant int mail__user_out_spare4 = 3155;
+%constant int mail__user_out_spare5 = 3156;
+%constant int mail__user_out_spare6 = 3157;
+%constant int mail__user_out_spare7 = 3158;
+%constant int mail__user_out_spare8 = 3159;
+%constant int mail__user_out_spare9 = 3160;
+%constant int mail__user_out_spare10 = 3161;
+%constant int mail__user_out_spare11 = 3162;
+%constant int mail__user_out_spare12 = 3163;
+%constant int mail__user_out_spare13 = 3164;
+%constant int mail__user_out_spare14 = 3165;
+%constant int mail__user_out_spare15 = 3166;
+%constant int mail__user_out_spare16 = 3167;
+%constant int mail__user_out_spare17 = 3168;
+%constant int mail__user_out_spare18 = 3169;
+%constant int mail__user_out_spare19 = 3170;
+%constant int mail__user_out_spare20 = 3171;
+%constant int mail_k_user_min_item = 3072;
+%constant int mail_k_user_max_item = 3171;
+%constant int mail_k_user_items = 100;
+%constant int mail__noop = 4097;
+%constant int mail__nosignal = 4098;
+%constant int mail__noprobe = 4099;
+%constant int mail__tld_input = 4100;
+%constant int mail__tld_output = 4101;
+%constant int mail__to = 1;
+%constant int mail__cc = 2;
+%constant int mail__spare1 = 3;
+%constant int mail__spare2 = 4;
+%constant int MAIL_m_newmsg = 0x1L;
+%constant int MAIL_m_replied = 0x2L;
+%constant int MAIL_m_dwmail = 0x4L;
+%constant int MAIL_m_extmsg = 0x8L;
+%constant int MAIL_m_extfnf = 0x10L;
+%constant int MAIL_m_notrans = 0x20L;
+%constant int MAIL_m_extnstd = 0x40L;
+%constant int MAIL_m_marked = 0x80L;
+%constant int MAIL_m_recmode = 0x100L;
+%constant int MAIL_S_flagsdef = 2;
diff --git a/Modules/vms/mntdef/mntdef.i b/Modules/vms/mntdef/mntdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbW50ZGVmL21udGRlZi5p
--- /dev/null
+++ b/Modules/vms/mntdef/mntdef.i
@@ -0,0 +1,115 @@
+%module mntdef
+
+%constant int MNT_M_FOREIGN = 0x1L;
+%constant int MNT_M_GROUP = 0x2L;
+%constant int MNT_M_NOASSIST = 0x4L;
+%constant int MNT_M_NODISKQ = 0x8L;
+%constant int MNT_M_NOHDR3 = 0x10L;
+%constant int MNT_M_NOLABEL = 0x20L;
+%constant int MNT_M_NOWRITE = 0x40L;
+%constant int MNT_M_OVR_ACCESS = 0x80L;
+%constant int MNT_M_OVR_EXP = 0x100L;
+%constant int MNT_M_OVR_IDENT = 0x200L;
+%constant int MNT_M_OVR_SETID = 0x400L;
+%constant int MNT_M_READCHECK = 0x800L;
+%constant int MNT_M_SHARE = 0x1000L;
+%constant int MNT_M_MESSAGE = 0x2000L;
+%constant int MNT_M_SYSTEM = 0x4000L;
+%constant int MNT_M_WRITECHECK = 0x8000L;
+%constant int MNT_M_WRITETHRU = 0x10000L;
+%constant int MNT_M_NOCACHE = 0x20000L;
+%constant int MNT_M_OVR_LOCK = 0x40000L;
+%constant int MNT_M_NOMNTVER = 0x80000L;
+%constant int MNT_M_NOUNLOAD = 0x100000L;
+%constant int MNT_M_TAPE_DATA_WRITE = 0x200000L;
+%constant int MNT_M_NOCOPY = 0x400000L;
+%constant int MNT_M_NOAUTO = 0x800000L;
+%constant int MNT_M_INIT_ALL = 0x1000000L;
+%constant int MNT_M_INIT_CONT = 0x2000000L;
+%constant int MNT_M_OVR_VOLO = 0x4000000L;
+%constant int MNT_M_INTERCHG = 0x8000000L;
+%constant int MNT_M_CLUSTER = 0x10000000L;
+%constant int MNT_M_NOREBUILD = 0x20000000L;
+%constant int MNT_M_OVR_SHAMEM = 0x40000000L;
+%constant int MNT_M_MULTI_VOL = 0x80000000L;
+%constant int MNT2_M_DISKQ = 0x1L;
+%constant int MNT2_M_COMPACTION = 0x2L;
+%constant int MNT2_M_INCLUDE = 0x4L;
+%constant int MNT2_M_PASS2 = 0x8L;
+%constant int MNT2_M_OVR_NOFE = 0x10L;
+%constant int MNT2_M_SCRATCH = 0x20L;
+%constant int MNT2_M_CDROM = 0x40L;
+%constant int MNT2_M_XAR = 0x80L;
+%constant int MNT2_M_DSI = 0x100L;
+%constant int MNT2_M_SUBSYSTEM = 0x200L;
+%constant int MNT2_M_NOCOMPACTION = 0x400L;
+%constant int MNT2_M_OVR_SECURITY = 0x800L;
+%constant int MNT2_M_OVR_LIMITED_SEARCH = 0x1000L;
+%constant int MNT2_M_POOL = 0x2000L;
+%constant int MNT2_M_WLG_ENABLE = 0x4000L;
+%constant int MNT2_M_WLG_DISABLE = 0x8000L;
+%constant int MNT2_M_REQUIRE_MEMBERS = 0x10000L;
+%constant int MNT2_M_VERIFY_LABEL = 0x20000L;
+%constant int MNT2_M_FULL_MERGE = 0x40000L;
+%constant int MNT2_M_WRITE_FIRST = 0x80000L;
+%constant int MNT2_M_DCD = 0x100000L;
+%constant int MNT2_M_NODCD = 0x200000L;
+%constant int MNT2_M_LOCAL_HOST = 0x400000L;
+%constant int MNT2_M_FACTOR = 0x800000L;
+%constant int MNT2_M_PRIORITY = 0x1000000L;
+%constant int MNT__DEVNAM = 1;
+%constant int MNT__VOLNAM = 2;
+%constant int MNT__LOGNAM = 3;
+%constant int MNT__FLAGS = 4;
+%constant int MNT__ACCESSED = 5;
+%constant int MNT__PROCESSOR = 6;
+%constant int MNT__VOLSET = 7;
+%constant int MNT__BLOCKSIZE = 8;
+%constant int MNT__DENSITY = 9;
+%constant int MNT__EXTENT = 10;
+%constant int MNT__FILEID = 11;
+%constant int MNT__LIMIT = 12;
+%constant int MNT__OWNER = 13;
+%constant int MNT__VPROT = 14;
+%constant int MNT__QUOTA = 15;
+%constant int MNT__RECORDSIZ = 16;
+%constant int MNT__WINDOW = 17;
+%constant int MNT__EXTENSION = 18;
+%constant int MNT__VISUAL_ID = 19;
+%constant int MNT__COMMENT = 20;
+%constant int MNT__CLASS = 21;
+%constant int MNT__UNUSED2 = 22;
+%constant int MNT__ACCPTNAM = 23;
+%constant int MNT__SHACOPY_BUF = 24;
+%constant int MNT__SHANAM = 25;
+%constant int MNT__SHAMEM = 26;
+%constant int MNT__SHAMEM_MGCOPY = 27;
+%constant int MNT__SHAMEM_COPY = 28;
+%constant int MNT__PRFD_PATH = 29;
+%constant int MNT__ASSIGNMENT_UNIT = 30;
+%constant int MNT__CART_MEDIA_NAME = 31;
+%constant int MNT__CARTRIDGE_NAME = 32;
+%constant int MNT__CARTRIDGE_SIDE = 33;
+%constant int MNT__COLLECTION = 34;
+%constant int MNT__DEVICE_TYPE = 35;
+%constant int MNT__DISPOSITION = 36;
+%constant int MNT__LOCATION = 37;
+%constant int MNT__MEDIA_NAME = 38;
+%constant int MNT__UNUSED4 = 39;
+%constant int MNT__UNDEFINED_FAT = 40;
+%constant int MNT__UCS = 41;
+%constant int MNT__TAPE_EXPIRATION = 42;
+%constant int MNT__PRIORITY = 43;
+%constant int MNT__FACTOR = 44;
+%constant int MNT__WBM_SIZE = 45;
+%constant int MNT__DATA = 46;
+%constant int MNT__NODATA = 47;
+%constant int MNT__LAST_ITEM_CODE = 48;
+%constant int MNT_C_BASE_CARTRIDGE = 1;
+%constant int MNT_C_COMPOUND_CARTRIDGE = 2;
+%constant int MNT_C_PREASSIGNED_SIDE = 3;
+%constant int MNT_C_SIDE = 4;
+%constant int MNT_C_KEEP = 1;
+%constant int MNT_C_RELEASE = 2;
+%constant int MNT_S_MNTDEF = 8;
+%constant int UNFAT_S_UNDEFINED_FAT = 4;
diff --git a/Modules/vms/nsadef/nsadef.i b/Modules/vms/nsadef/nsadef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbnNhZGVmL25zYWRlZi5p
--- /dev/null
+++ b/Modules/vms/nsadef/nsadef.i
@@ -0,0 +1,1047 @@
+%module nsadef
+
+%constant int NSA_C_MSG_SERVER = 1;
+%constant int NSA_C_MSG_AUDIT = 2;
+%constant int NSA_C_MSG_BREAKIN = 3;
+%constant int NSA_C_MSG_INSTALL = 4;
+%constant int NSA_C_MSG_LOGFAIL = 5;
+%constant int NSA_C_MSG_LOGIN = 6;
+%constant int NSA_C_MSG_LOGOUT = 7;
+%constant int NSA_C_MSG_MOUNT = 8;
+%constant int NSA_C_MSG_NETPROXY = 9;
+%constant int NSA_C_MSG_ACCESS = 10;
+%constant int NSA_C_MSG_SYSUAF = 11;
+%constant int NSA_C_MSG_RIGHTSDB = 12;
+%constant int NSA_C_MSG_CUSTOMER = 13;
+%constant int NSA_C_MSG_CSS = 14;
+%constant int NSA_C_MSG_LP = 15;
+%constant int NSA_C_MSG_PRVAUD = 16;
+%constant int NSA_C_MSG_RESERVED_1 = 17;
+%constant int NSA_C_MSG_RESERVED_2 = 18;
+%constant int NSA_C_MSG_RESERVED_3 = 19;
+%constant int NSA_C_MSG_RESERVED_4 = 20;
+%constant int NSA_C_MSG_SYSTIME = 21;
+%constant int NSA_C_MSG_SYSGEN = 22;
+%constant int NSA_C_MSG_OBJ_CREATE = 23;
+%constant int NSA_C_MSG_OBJ_DELETE = 24;
+%constant int NSA_C_MSG_OBJ_DEACCESS = 25;
+%constant int NSA_C_MSG_OBJ_ACCESS = 26;
+%constant int NSA_C_MSG_CONNECTION = 27;
+%constant int NSA_C_MSG_RESERVED_5 = 28;
+%constant int NSA_C_MSG_NCP = 29;
+%constant int NSA_C_MSG_PROCESS = 30;
+%constant int NSA_C_MSG_OBJECT_SERVICE = 31;
+%constant int NSA_C_MSG_AUTHENTICATE = 32;
+%constant int NSA_C_MSG_PERSONA = 33;
+%constant int NSA_C_MSG_MAX_CODE = 34;
+%constant int NSA_M_MANDATORY = 0x1L;
+%constant int NSA_M_ACL = 0x2L;
+%constant int NSA_M_INTERNAL = 0x4L;
+%constant int NSA_M_ALARM = 0x8L;
+%constant int NSA_M_AUDIT = 0x10L;
+%constant int NSA_M_FOREIGN = 0x20L;
+%constant int NSA_M_FLUSH = 0x40L;
+%constant int NSA_M_SERVER = 0x80L;
+%constant int NSA_M_DEACCESS = 0x100L;
+%constant int NSA_M_SYNCH = 0x200L;
+%constant int NSA_M_IDENTIFIER = 0x400L;
+%constant int NSA_M_PROCPRIV = 0x800L;
+%constant int NSA_M_AUTHPRIV = 0x1000L;
+%constant int NSA_M_NOEVTCHECK = 0x2000L;
+%constant int NSA_M_NOFAILAUD = 0x4000L;
+%constant int NSA_M_NOSUCCAUD = 0x8000L;
+%constant int NSA_C_VERSION_1 = 1;
+%constant int NSA_C_VERSION_2 = 2;
+%constant int NSA_C_VERSION_3 = 3;
+%constant int NSA_C_V1_MSG_HDR_LENGTH = 12;
+%constant int NSA_K_V1_MSG_HDR_LENGTH = 12;
+%constant int NSA_C_MSG_HDR_LENGTH = 20;
+%constant int NSA_K_MSG_HDR_LENGTH = 20;
+%constant int NSA_S_NSAMSGDEF = 21;
+%constant int NSA_S_SPARE_4 = 6;
+%constant int NSA_C_SRV_ADD_JOURNAL = 1;
+%constant int NSA_C_SRV_REM_JOURNAL = 2;
+%constant int NSA_C_SRV_FLUSH_JOURNAL = 3;
+%constant int NSA_C_SRV_FLUSH_ALL_JOURNALS = 4;
+%constant int NSA_C_SRV_FLUSH_INTERVAL = 5;
+%constant int NSA_C_SRV_ARCHIVE_DEVICE = 6;
+%constant int NSA_C_SRV_ARCHIVE_ENABLE = 7;
+%constant int NSA_C_SRV_ARCHIVE_DISABLE = 8;
+%constant int NSA_C_SRV_ARCHIVE_INTERVAL = 9;
+%constant int NSA_C_SRV_BADJNL_INTERVAL = 10;
+%constant int NSA_C_SRV_BADJNL_LIMIT = 11;
+%constant int NSA_C_SRV_EXIT = 12;
+%constant int NSA_C_SRV_CREATE_SYSTEM_LOG = 13;
+%constant int NSA_C_SRV_AUDIT_CHANGE = 14;
+%constant int NSA_C_SRV_REDIRECT_SYSTEM_LOG = 15;
+%constant int NSA_C_SRV_REM_ENABLE = 16;
+%constant int NSA_C_SRV_REM_DISABLE = 17;
+%constant int NSA_C_SRV_REM_MONITOR_INTERVAL = 18;
+%constant int NSA_C_SRV_REM_RESUME_INTERVAL = 19;
+%constant int NSA_C_SRV_REM_MONITOR_MODE = 20;
+%constant int NSA_C_SRV_REM_FINAL_ACTION = 21;
+%constant int NSA_C_SRV_REM_WARN_THRESHOLD = 22;
+%constant int NSA_C_SRV_REM_ACTION_THRESHOLD = 23;
+%constant int NSA_C_SRV_REM_RESUME_THRESHOLD = 24;
+%constant int NSA_C_SRV_REM_RESUME = 25;
+%constant int NSA_C_SRV_REM_ADD_EXCLUDE = 26;
+%constant int NSA_C_SRV_REM_DEL_EXCLUDE = 27;
+%constant int NSA_C_SRV_LISTENER_ENABLE = 28;
+%constant int NSA_C_SRV_LISTENER_DISABLE = 29;
+%constant int NSA_C_SRV_NEW_LOG = 30;
+%constant int NSA_C_SRV_RESTART = 31;
+%constant int NSA_C_SRV_LOCK_SERVER = 32;
+%constant int NSA_C_SRV_RESERVED_1 = 33;
+%constant int NSA_C_SRV_RESERVED_2 = 34;
+%constant int NSA_C_SRV_RESERVED_3 = 35;
+%constant int NSA_C_SRV_RESERVED_4 = 36;
+%constant int NSA_C_SRV_FAILURE_MODE = 37;
+%constant int NSA_C_SRV_SNAPSHOT = 38;
+%constant int NSA_C_SRV_BACKLOG_TOTAL = 39;
+%constant int NSA_C_SRV_BACKLOG_PROCESS = 40;
+%constant int NSA_C_SRV_INITIATE = 41;
+%constant int NSA_C_SRV_RESTART_ALL = 42;
+%constant int NSA_C_SRV_RESTART_OBJECT = 43;
+%constant int NSA_C_SRV_MAX_CODE = 44;
+%constant int NSA_C_REM_SPACE = 1;
+%constant int NSA_C_REM_PERCENTAGE = 2;
+%constant int NSA_C_REM_COUNT = 3;
+%constant int NSA_C_REM_TIME = 4;
+%constant int NSA_C_REM_MAX_MODE = 5;
+%constant int NSA_C_REM_PURGE_OLD = 1;
+%constant int NSA_C_REM_IGNORE_NEW = 2;
+%constant int NSA_C_REM_RESTART = 3;
+%constant int NSA_C_REM_CRASH = 4;
+%constant int NSA_C_REM_MAX_FINAL = 5;
+%constant int NSA_C_AUDIT_DISABLED = 1;
+%constant int NSA_C_AUDIT_ENABLED = 2;
+%constant int NSA_C_AUDIT_TERMINATE = 3;
+%constant int NSA_C_AUDIT_INITIATE = 4;
+%constant int NSA_C_SNAPSHOT_SAVE = 5;
+%constant int NSA_C_SNAPSHOT_ABORT = 6;
+%constant int NSA_C_SNAPSHOT_STARTUP = 7;
+%constant int NSA_C_SNAPSHOT_ACCESS = 8;
+%constant int NSA_C_AUDIT_STATE = 9;
+%constant int NSA_C_ALARM_STATE = 10;
+%constant int NSA_C_AUDIT_LOG_FINAL = 11;
+%constant int NSA_C_AUDIT_LOG_FIRST = 12;
+%constant int NSA_C_AUDIT_BAD_TCB_AUDIT = 13;
+%constant int NSA_C_AUDIT_MAX_CODE = 14;
+%constant int NSA_C_FAIL_WAIT = 1;
+%constant int NSA_C_FAIL_CRASH = 2;
+%constant int NSA_C_FAIL_IGNORE = 3;
+%constant int NSA_C_FAIL_MAX_MODE = 4;
+%constant int NSA_C_BATCH = 1;
+%constant int NSA_C_DETACHED = 2;
+%constant int NSA_C_DIALUP = 3;
+%constant int NSA_C_LOCAL = 4;
+%constant int NSA_C_NETWORK = 5;
+%constant int NSA_C_REMOTE = 6;
+%constant int NSA_C_SUBPROCESS = 7;
+%constant int NSA_C_SERVER = 8;
+%constant int NSA_C_JOBTYPE_MAX_CODE = 9;
+%constant int NSA_C_INSTALL_ADD = 1;
+%constant int NSA_C_INSTALL_REMOVE = 2;
+%constant int NSA_C_INSTALL_MAX_CODE = 3;
+%constant int NSA_M_INS_SPARE_0 = 0x1L;
+%constant int NSA_M_INS_OPEN = 0x2L;
+%constant int NSA_M_INS_HEADER_RESIDENT = 0x4L;
+%constant int NSA_M_INS_SHARED = 0x8L;
+%constant int NSA_M_INS_EXECUTE_ONLY = 0x10L;
+%constant int NSA_M_INS_WRITEABLE = 0x20L;
+%constant int NSA_M_INS_PRIVILEGED = 0x40L;
+%constant int NSA_M_INS_PROTECTED = 0x80L;
+%constant int NSA_M_INS_NOPURGE = 0x100L;
+%constant int NSA_M_INS_ACCOUNTING = 0x200L;
+%constant int NSA_M_INS_AUTHORIZED = 0x400L;
+%constant int NSA_M_INS_SIGNAL = 0x800L;
+%constant int NSA_S_FILL_223_ = 4;
+%constant int NSA_C_INS_SPARE_0 = 1;
+%constant int NSA_C_INS_OPEN = 2;
+%constant int NSA_C_INS_HEADER_RESIDENT = 3;
+%constant int NSA_C_INS_SHARED = 4;
+%constant int NSA_C_INS_EXECUTE_ONLY = 5;
+%constant int NSA_C_INS_WRITEABLE = 6;
+%constant int NSA_C_INS_PRIVILEGED = 7;
+%constant int NSA_C_INS_PROTECTED = 8;
+%constant int NSA_C_INS_NOPURGE = 9;
+%constant int NSA_C_INS_ACCOUNTING = 10;
+%constant int NSA_C_INS_AUTHORIZED = 11;
+%constant int NSA_C_INS_SIGNAL = 12;
+%constant int NSA_C_INS_MAX_CODE = 13;
+%constant int NSA_C_VOL_DISMOUNT = 1;
+%constant int NSA_C_VOL_MOUNT = 2;
+%constant int NSA_C_VOL_MAX_CODE = 3;
+%constant int NSA_M_MNT_FOREIGN = 0x1L;
+%constant int NSA_M_MNT_GROUP = 0x2L;
+%constant int NSA_M_MNT_NOASSIST = 0x4L;
+%constant int NSA_M_MNT_NODISKQ = 0x8L;
+%constant int NSA_M_MNT_NOHDR3 = 0x10L;
+%constant int NSA_M_MNT_NOLABEL = 0x20L;
+%constant int NSA_M_MNT_NOWRITE = 0x40L;
+%constant int NSA_M_MNT_OVR_ACCESS = 0x80L;
+%constant int NSA_M_MNT_OVR_EXP = 0x100L;
+%constant int NSA_M_MNT_OVR_IDENT = 0x200L;
+%constant int NSA_M_MNT_OVR_SETID = 0x400L;
+%constant int NSA_M_MNT_READCHECK = 0x800L;
+%constant int NSA_M_MNT_SHARE = 0x1000L;
+%constant int NSA_M_MNT_MESSAGE = 0x2000L;
+%constant int NSA_M_MNT_SYSTEM = 0x4000L;
+%constant int NSA_M_MNT_WRITECHECK = 0x8000L;
+%constant int NSA_M_MNT_WRITETHRU = 0x10000L;
+%constant int NSA_M_MNT_NOCACHE = 0x20000L;
+%constant int NSA_M_MNT_OVR_LOCK = 0x40000L;
+%constant int NSA_M_MNT_NOMNTVER = 0x80000L;
+%constant int NSA_M_MNT_NOUNLOAD = 0x100000L;
+%constant int NSA_M_MNT_TAPE_DATA_WRITE = 0x200000L;
+%constant int NSA_M_MNT_NOCOPY = 0x400000L;
+%constant int NSA_M_MNT_NOAUTO = 0x800000L;
+%constant int NSA_M_MNT_INIT_ALL = 0x1000000L;
+%constant int NSA_M_MNT_INIT_CONT = 0x2000000L;
+%constant int NSA_M_MNT_OVR_VOLO = 0x4000000L;
+%constant int NSA_M_MNT_INTERCHG = 0x8000000L;
+%constant int NSA_M_MNT_CLUSTER = 0x10000000L;
+%constant int NSA_M_MNT_NOREBUILD = 0x20000000L;
+%constant int NSA_M_MNT_OVR_SHAMEM = 0x40000000L;
+%constant int NSA_M_MNT_MULTI_VOL = 0x80000000L;
+%constant int NSA_S_FILL_226_ = 8;
+%constant int NSA_C_MNT_MAX_CODE = 47;
+%constant int NSA_C_DMT_MAX_CODE = 5;
+%constant int NSA_M_DMT_NOUNLOAD = 0x1L;
+%constant int NSA_M_DMT_UNIT = 0x2L;
+%constant int NSA_M_DMT_ABORT = 0x4L;
+%constant int NSA_M_DMT_CLUSTER = 0x8L;
+%constant int NSA_S_FILL_229_ = 4;
+%constant int NSA_C_NETPROXY_ADD = 1;
+%constant int NSA_C_NETPROXY_DELETE = 2;
+%constant int NSA_C_NETPROXY_MODIFY = 3;
+%constant int NSA_C_NETPROXY_NCP = 4;
+%constant int NSA_C_NETPROXY_SHUTDOWN = 5;
+%constant int NSA_C_NETPROXY_STARTUP = 6;
+%constant int NSA_C_NETPROXY_CREATE = 7;
+%constant int NSA_C_NETPROXY_MAX_CODE = 8;
+%constant int NSA_C_PERSONA_CREATE = 1;
+%constant int NSA_C_PERSONA_DELETE = 2;
+%constant int NSA_C_PERSONA_MODIFY = 3;
+%constant int NSA_C_PERSONA_MAX_CODE = 4;
+%constant int NSA_C_FILE_ACCESS = 1;
+%constant int NSA_C_DEVICE_ACCESS = 2;
+%constant int NSA_C_QUEUE_ACCESS = 3;
+%constant int NSA_C_CEF_ACCESS = 4;
+%constant int NSA_C_LNM_ACCESS = 5;
+%constant int NSA_C_PROCESS_ACCESS = 6;
+%constant int NSA_C_GRPGBL_ACCESS = 7;
+%constant int NSA_C_SYSGBL_ACCESS = 8;
+%constant int NSA_C_CAPABILITY_ACCESS = 9;
+%constant int NSA_C_EVENT_ACCESS = 10;
+%constant int NSA_C_LOCK_ACCESS = 11;
+%constant int NSA_C_VOLUME_ACCESS = 12;
+%constant int NSA_C_OBJECT_MAX_CODE = 13;
+%constant int NSA_C_SYSUAF_ADD = 1;
+%constant int NSA_C_SYSUAF_COPY = 2;
+%constant int NSA_C_SYSUAF_DELETE = 3;
+%constant int NSA_C_SYSUAF_MODIFY = 4;
+%constant int NSA_C_SYSUAF_RENAME = 5;
+%constant int NSA_C_SYSUAF_MAX_CODE = 6;
+%constant int NSA_C_RDB_ADD_ID = 1;
+%constant int NSA_C_RDB_CREATE = 2;
+%constant int NSA_C_RDB_GRANT_ID = 3;
+%constant int NSA_C_RDB_MOD_HOLDER = 4;
+%constant int NSA_C_RDB_MOD_ID = 5;
+%constant int NSA_C_RDB_REM_ID = 6;
+%constant int NSA_C_RDB_REVOKE_ID = 7;
+%constant int NSA_C_RDB_MAX_CODE = 8;
+%constant int NSA_C_PRVAUD_SUCCESS = 1;
+%constant int NSA_C_PRVAUD_FAILURE = 2;
+%constant int NSA_C_PRVAUD_MAX_CODE = 3;
+%constant int NSA_C_SYSTIM_SET = 1;
+%constant int NSA_C_SYSTIM_CAL = 2;
+%constant int NSA_C_SYSTIM_MAX_CODE = 3;
+%constant int NSA_C_SYSGEN_SET = 1;
+%constant int NSA_C_SYSGEN_MAX_CODE = 2;
+%constant int NSA_C_OBJ_CREATE = 1;
+%constant int NSA_C_CREATE_MAX_CODE = 2;
+%constant int NSA_C_OBJ_DELETE = 1;
+%constant int NSA_C_DELETE_MAX_CODE = 2;
+%constant int NSA_C_OBJ_ACCESS = 1;
+%constant int NSA_C_ACCESS_MAX_CODE = 2;
+%constant int NSA_C_OBJ_DEACCESS = 1;
+%constant int NSA_C_DEACCESS_MAX_CODE = 2;
+%constant int NSA_C_CNX_REQUEST = 1;
+%constant int NSA_C_CNX_ACCEPT = 2;
+%constant int NSA_C_CNX_REJECT = 3;
+%constant int NSA_C_CNX_DISCONNECT = 4;
+%constant int NSA_C_CNX_ABORT = 5;
+%constant int NSA_C_CNX_DECNET_CREATE = 6;
+%constant int NSA_C_CNX_DECNET_DELETE = 7;
+%constant int NSA_C_CNX_IPC_OPEN = 8;
+%constant int NSA_C_CNX_IPC_CLOSE = 9;
+%constant int NSA_C_CNX_INC_REQUEST = 10;
+%constant int NSA_C_CNX_INC_ACCEPT = 11;
+%constant int NSA_C_CNX_INC_REJECT = 12;
+%constant int NSA_C_CNX_INC_DISCONNECT = 13;
+%constant int NSA_C_CNX_INC_ABORT = 14;
+%constant int NSA_C_CNX_MAX_CODE = 15;
+%constant int NSA_C_NCP_COMMAND = 1;
+%constant int NSA_C_NCP_MAX_CODE = 2;
+%constant int NSA_C_PRC_CREPRC = 1;
+%constant int NSA_C_PRC_DELPRC = 2;
+%constant int NSA_C_PRC_SCHDWK = 3;
+%constant int NSA_C_PRC_CANWAK = 4;
+%constant int NSA_C_PRC_WAKE = 5;
+%constant int NSA_C_PRC_SUSPND = 6;
+%constant int NSA_C_PRC_RESUME = 7;
+%constant int NSA_C_PRC_GRANTID = 8;
+%constant int NSA_C_PRC_REVOKID = 9;
+%constant int NSA_C_PRC_GETJPI = 10;
+%constant int NSA_C_PRC_FORCEX = 11;
+%constant int NSA_C_PRC_SIGPRC = 12;
+%constant int NSA_C_PRC_SETPRI = 13;
+%constant int NSA_C_PRC_PRCTERM = 14;
+%constant int NSA_C_PRC_CPU_CAPABILITIES = 15;
+%constant int NSA_C_PRC_PROCESS_CAPABILITIES = 16;
+%constant int NSA_C_PRC_PROCESS_AFFINITY = 17;
+%constant int NSA_C_PRC_SET_IMPLICIT_AFFINITY = 18;
+%constant int NSA_C_PRC_MAX_CODE = 19;
+%constant int NSA_C_INSTANTIATE_ORB = 1;
+%constant int NSA_C_DISTRIBUTE_ORB = 2;
+%constant int NSA_C_OBJECT_AUDIT_CHANGE = 3;
+%constant int NSA_C_DISTRIBUTE_NOTICE = 4;
+%constant int NSA_C_OBJSRV_MAX_CODE = 5;
+%constant int NSA_C_AUTH_NETWORK_LOGIN = 2;
+%constant int NSA_C_AUTH_RENEW_LOGIN = 3;
+%constant int NSA_C_AUTH_INIT_SEC_CTX = 4;
+%constant int NSA_C_AUTH_ACC_SEC_CTX = 5;
+%constant int NSA_C_AUTH_INSTALL_DEF_CRED = 6;
+%constant int NSA_C_AUTH_ACQUIRE_CRED = 7;
+%constant int NSA_C_AUTH_GRANT_CRED = 8;
+%constant int NSA_C_AUTH_RELEASE_CRED = 9;
+%constant int NSA_C_AUTH_DEL_SEC_CTX = 10;
+%constant int NSA_C_AUTH_PROC_CTX_TOKEN = 11;
+%constant int NSA_C_AUTH_VERIFY = 12;
+%constant int NSA_C_AUTH_SIGN = 13;
+%constant int NSA_C_AUTH_SEAL = 14;
+%constant int NSA_C_AUTH_UNSEAL = 15;
+%constant int NSA_C_CA_STARTUP = 16;
+%constant int NSA_C_CA_EXIT = 17;
+%constant int NSA_C_CA_ADD_DIRECTORY = 18;
+%constant int NSA_C_CA_ADD_PRINCIPAL = 19;
+%constant int NSA_C_CA_LINK_DIRECTORY = 20;
+%constant int NSA_C_CA_CHANGE_LINK = 21;
+%constant int NSA_C_CA_CHANGE_PRINCIPAL = 22;
+%constant int NSA_C_CA_REMOVE_DIRECTORY = 23;
+%constant int NSA_C_CA_REMOVE_PRINCIPAL = 24;
+%constant int NSA_C_CA_CERTIFICATE_DELETED = 25;
+%constant int NSA_C_CA_REVOKED_CERT_FOUND = 26;
+%constant int NSA_C_CA_PASSWORD_CHANGE = 27;
+%constant int NSA_C_CSS_OBJECT_CREATED = 28;
+%constant int NSA_C_CSS_OBJECT_DELETED = 29;
+%constant int NSA_C_CSS_CERTIFICATE_DELETED = 30;
+%constant int NSA_C_CSS_CREDENTIAL_READ = 31;
+%constant int NSA_C_CSS_CERTIFICATE_ADDED = 32;
+%constant int NSA_C_CSS_CREDENTIAL_WRITTEN = 33;
+%constant int NSA_C_CSS_USER_CHANGED_PASSWORD = 34;
+%constant int NSA_C_CSS_UPDATED_SECONDARY = 35;
+%constant int NSA_C_CSS_DATABASE_UPDATED = 36;
+%constant int NSA_C_CSS_STARTED = 37;
+%constant int NSA_C_CSS_WINDOW_OPEN = 38;
+%constant int NSA_C_CSS_WINDOW_CLOSED = 39;
+%constant int NSA_C_CSS_LOCTABLE_UPDATED = 40;
+%constant int NSA_C_AUTH_MAX_CODE = 41;
+%constant int NSA_C_PKT_ACCESS_DESIRED = 1;
+%constant int NSA_C_PKT_ACCOUNT = 2;
+%constant int NSA_C_PKT_ALARM_NAME = 3;
+%constant int NSA_C_PKT_APPL_DATA = 4;
+%constant int NSA_C_PKT_AUDIT_FLAGS = 5;
+%constant int NSA_C_PKT_AUDIT_NAME = 6;
+%constant int NSA_C_PKT_SYSTEM_NAME = 7;
+%constant int NSA_C_PKT_SYSTEM_ID = 8;
+%constant int NSA_C_PKT_DEVICE_NAME = 9;
+%constant int NSA_C_PKT_DISMOUNT_FLAGS = 10;
+%constant int NSA_C_PKT_HOLDER_NAME = 11;
+%constant int NSA_C_PKT_HOLDER_OWNER = 12;
+%constant int NSA_C_PKT_ID_ATTRIBUTES = 13;
+%constant int NSA_C_PKT_ID_NAME = 14;
+%constant int NSA_C_PKT_ID_NEW_NAME = 15;
+%constant int NSA_C_PKT_ID_VALUE = 16;
+%constant int NSA_C_PKT_ID_NEW_VALUE = 17;
+%constant int NSA_C_PKT_IDENTIFIERS_USED = 18;
+%constant int NSA_C_PKT_IMAGE_NAME = 19;
+%constant int NSA_C_PKT_INSTALL_FILE = 20;
+%constant int NSA_C_PKT_INSTALL_FLAGS = 21;
+%constant int NSA_C_PKT_INSTALL_PRIVS = 22;
+%constant int NSA_C_PKT_LOGICAL_NAME = 23;
+%constant int NSA_C_PKT_MOUNT_FLAGS = 24;
+%constant int NSA_C_PKT_NEW_DATA = 25;
+%constant int NSA_C_PKT_FILE_ID = 26;
+%constant int NSA_C_PKT_OBJECT_MIN_CLASS = 27;
+%constant int NSA_C_PKT_OBJECT_MAX_CLASS = 28;
+%constant int NSA_C_PKT_OBJECT_NAME = 29;
+%constant int NSA_C_PKT_OBJECT_NAME_2 = 30;
+%constant int NSA_C_PKT_OBJECT_OWNER = 31;
+%constant int NSA_C_PKT_OBJECT_PROTECTION = 32;
+%constant int NSA_C_PKT_OBJECT_TYPE = 33;
+%constant int NSA_C_PKT_ORIGINAL_DATA = 34;
+%constant int NSA_C_PKT_PARENT_ID = 35;
+%constant int NSA_C_PKT_PARENT_NAME = 36;
+%constant int NSA_C_PKT_PARENT_OWNER = 37;
+%constant int NSA_C_PKT_PARENT_USERNAME = 38;
+%constant int NSA_C_PKT_PASSWORD = 39;
+%constant int NSA_C_PKT_PRIVS_USED = 40;
+%constant int NSA_C_PKT_PROCESS_ID = 41;
+%constant int NSA_C_PKT_PROCESS_NAME = 42;
+%constant int NSA_C_PKT_REMOTE_NODE_ID = 43;
+%constant int NSA_C_PKT_REMOTE_NODENAME = 44;
+%constant int NSA_C_PKT_REMOTE_USERNAME = 45;
+%constant int NSA_C_PKT_SUBJECT_CLASS = 46;
+%constant int NSA_C_PKT_SUBJECT_OWNER = 47;
+%constant int NSA_C_PKT_FINAL_STATUS = 48;
+%constant int NSA_C_PKT_TERMINAL = 49;
+%constant int NSA_C_PKT_TIME_STAMP = 50;
+%constant int NSA_C_PKT_UAF_ADD = 51;
+%constant int NSA_C_PKT_UAF_DELETE = 52;
+%constant int NSA_C_PKT_UAF_MODIFY = 53;
+%constant int NSA_C_PKT_UAF_COPY = 54;
+%constant int NSA_C_PKT_UAF_FIELDS = 55;
+%constant int NSA_C_PKT_USERNAME = 56;
+%constant int NSA_C_PKT_UAF_SOURCE = 57;
+%constant int NSA_C_PKT_UAF_RENAME = 58;
+%constant int NSA_C_PKT_VOLUME_NAME = 59;
+%constant int NSA_C_PKT_VOLUME_SET_NAME = 60;
+%constant int NSA_C_PKT_SERVER_ACCOUNT = 61;
+%constant int NSA_C_PKT_SERVER_SYSTEM_ID = 62;
+%constant int NSA_C_PKT_SERVER_SYSTEM_NAME = 63;
+%constant int NSA_C_PKT_SERVER_FINAL_STATUS = 64;
+%constant int NSA_C_PKT_SERVER_IMAGE_NAME = 65;
+%constant int NSA_C_PKT_SERVER_PARENT_ID = 66;
+%constant int NSA_C_PKT_SERVER_PARENT_OWNER = 67;
+%constant int NSA_C_PKT_SERVER_PARENT_NAME = 68;
+%constant int NSA_C_PKT_SERVER_PROCESS_ID = 69;
+%constant int NSA_C_PKT_SERVER_PROCESS_NAME = 70;
+%constant int NSA_C_PKT_SERVER_SUBJECT_CLASS = 71;
+%constant int NSA_C_PKT_SERVER_SUBJECT_OWNER = 72;
+%constant int NSA_C_PKT_SERVER_TERMINAL = 73;
+%constant int NSA_C_PKT_SERVER_TIME_STAMP = 74;
+%constant int NSA_C_PKT_SERVER_USERNAME = 75;
+%constant int NSA_C_PKT_AUDIT_DISABLE = 76;
+%constant int NSA_C_PKT_AUDIT_ENABLE = 77;
+%constant int NSA_C_PKT_ALARM_DISABLE = 78;
+%constant int NSA_C_PKT_ALARM_ENABLE = 79;
+%constant int NSA_C_PKT_NOP = 80;
+%constant int NSA_C_PKT_REPLY_MAILBOX = 81;
+%constant int NSA_C_PKT_DEFAULT_USERNAME = 82;
+%constant int NSA_C_PKT_LOCAL_USERNAME = 83;
+%constant int NSA_C_PKT_FIELD_NAME = 84;
+%constant int NSA_C_PKT_LISTENER_DEVICE = 85;
+%constant int NSA_C_PKT_FIELD_TITLE_STR = 86;
+%constant int NSA_C_PKT_FIELD_DATA_STR = 87;
+%constant int NSA_C_PKT_MESSAGE_TYPE_STR = 88;
+%constant int NSA_C_PKT_EVENT_TYPE = 89;
+%constant int NSA_C_PKT_EVENT_SUBTYPE = 90;
+%constant int NSA_C_PKT_EVENT_FACILITY = 91;
+%constant int NSA_C_PKT_DIRECTORY_ENTRY = 92;
+%constant int NSA_C_PKT_DIRECTORY_ID = 93;
+%constant int NSA_C_PKT_CUSTOMER_1 = 94;
+%constant int NSA_C_PKT_CUSTOMER_2 = 95;
+%constant int NSA_C_PKT_CUSTOMER_3 = 96;
+%constant int NSA_C_PKT_CUSTOMER_4 = 97;
+%constant int NSA_C_PKT_CUSTOMER_5 = 98;
+%constant int NSA_C_PKT_CUSTOMER_6 = 99;
+%constant int NSA_C_PKT_CUSTOMER_7 = 100;
+%constant int NSA_C_PKT_CUSTOMER_8 = 101;
+%constant int NSA_C_PKT_CSS_1 = 102;
+%constant int NSA_C_PKT_CSS_2 = 103;
+%constant int NSA_C_PKT_CSS_3 = 104;
+%constant int NSA_C_PKT_CSS_4 = 105;
+%constant int NSA_C_PKT_CSS_5 = 106;
+%constant int NSA_C_PKT_CSS_6 = 107;
+%constant int NSA_C_PKT_CSS_7 = 108;
+%constant int NSA_C_PKT_CSS_8 = 109;
+%constant int NSA_C_PKT_LP_1 = 110;
+%constant int NSA_C_PKT_LP_2 = 111;
+%constant int NSA_C_PKT_LP_3 = 112;
+%constant int NSA_C_PKT_LP_4 = 113;
+%constant int NSA_C_PKT_LP_5 = 114;
+%constant int NSA_C_PKT_LP_6 = 115;
+%constant int NSA_C_PKT_LP_7 = 116;
+%constant int NSA_C_PKT_LP_8 = 117;
+%constant int NSA_C_PKT_ALARM_FAILURE = 118;
+%constant int NSA_C_PKT_AUDIT_FAILURE = 119;
+%constant int NSA_C_PKT_SEVMS_0 = 120;
+%constant int NSA_C_PKT_SEVMS_1 = 121;
+%constant int NSA_C_PKT_SEVMS_2 = 122;
+%constant int NSA_C_PKT_SEVMS_3 = 123;
+%constant int NSA_C_PKT_SEVMS_4 = 124;
+%constant int NSA_C_PKT_SEVMS_5 = 125;
+%constant int NSA_C_PKT_SEVMS_6 = 126;
+%constant int NSA_C_PKT_SEVMS_7 = 127;
+%constant int NSA_C_PKT_SEVMS_8 = 128;
+%constant int NSA_C_PKT_SEVMS_9 = 129;
+%constant int NSA_C_PKT_SEVMS_10 = 130;
+%constant int NSA_C_PKT_SEVMS_11 = 131;
+%constant int NSA_C_PKT_SEVMS_12 = 132;
+%constant int NSA_C_PKT_SEVMS_13 = 133;
+%constant int NSA_C_PKT_SEVMS_14 = 134;
+%constant int NSA_C_PKT_SEVMS_15 = 135;
+%constant int NSA_C_PKT_SEVMS_16 = 136;
+%constant int NSA_C_PKT_SEVMS_17 = 137;
+%constant int NSA_C_PKT_SEVMS_18 = 138;
+%constant int NSA_C_PKT_SNAPSHOT_TIME = 139;
+%constant int NSA_C_PKT_TRANSPORT_NAME = 140;
+%constant int NSA_C_PKT_DECNET_LINK_ID = 141;
+%constant int NSA_C_PKT_DECNET_OBJECT_NAME = 142;
+%constant int NSA_C_PKT_DECNET_OBJECT_NUMBER = 143;
+%constant int NSA_C_PKT_REMOTE_LINK_ID = 144;
+%constant int NSA_C_PKT_COMMAND_LINE = 145;
+%constant int NSA_C_PKT_ASSOCIATION_NAME = 146;
+%constant int NSA_C_PKT_REM_ASSOCIATION_NAME = 147;
+%constant int NSA_C_PKT_CONNECTION_ID = 148;
+%constant int NSA_C_PKT_MESSAGE = 149;
+%constant int NSA_C_PKT_MSGFILNAM = 150;
+%constant int NSA_C_PKT_OBJECT_POINTER = 151;
+%constant int NSA_C_PKT_ID_NEW_ATTRIBUTES = 152;
+%constant int NSA_C_PKT_SYSTIM_NEW = 153;
+%constant int NSA_C_PKT_SYSTIM_OLD = 154;
+%constant int NSA_C_PKT_PARAMS_WRITE = 155;
+%constant int NSA_C_PKT_PARAMS_INUSE = 156;
+%constant int NSA_C_PKT_MATCHING_ACE = 157;
+%constant int NSA_C_PKT_SNAPSHOT_SAVE_FILNAM = 158;
+%constant int NSA_C_PKT_MAILBOX_UNIT = 159;
+%constant int NSA_C_PKT_NEW_OWNER = 160;
+%constant int NSA_C_PKT_NEW_PRIORITY = 161;
+%constant int NSA_C_PKT_OLD_PRIORITY = 162;
+%constant int NSA_C_PKT_DIAG_FUNC = 163;
+%constant int NSA_C_PKT_RESOURCE_NAME = 164;
+%constant int NSA_C_PKT_LNM_TABLE_NAME = 165;
+%constant int NSA_C_PKT_LNM_PARENT_NAME = 166;
+%constant int NSA_C_PKT_EFC_NAME = 167;
+%constant int NSA_C_PKT_TARGET_PROCESS_CLASS = 168;
+%constant int NSA_C_PKT_TARGET_PROCESS_ID = 169;
+%constant int NSA_C_PKT_TARGET_PROCESS_NAME = 170;
+%constant int NSA_C_PKT_TARGET_PROCESS_OWNER = 171;
+%constant int NSA_C_PKT_TARGET_USERNAME = 172;
+%constant int NSA_C_PKT_NEW_PRIVILEGES = 173;
+%constant int NSA_C_PKT_OLD_PRIVILEGES = 174;
+%constant int NSA_C_PKT_REMOTE_NODE_FULLNAME = 175;
+%constant int NSA_C_PKT_UID = 176;
+%constant int NSA_C_PKT_UNUSED_3 = 177;
+%constant int NSA_C_PKT_UNUSED_4 = 178;
+%constant int NSA_C_PKT_UNUSED_5 = 179;
+%constant int NSA_C_PKT_UNUSED_6 = 180;
+%constant int NSA_C_PKT_UNUSED_7 = 181;
+%constant int NSA_C_PKT_UNUSED_8 = 182;
+%constant int NSA_C_PKT_UNUSED_9 = 183;
+%constant int NSA_C_PKT_UNUSED_10 = 184;
+%constant int NSA_C_PKT_PRIVS_MISSING = 185;
+%constant int NSA_C_PKT_TARGET_DEVICE_NAME = 186;
+%constant int NSA_C_PKT_SECTION_NAME = 187;
+%constant int NSA_C_PKT_ID_VALUE_ASCII = 188;
+%constant int NSA_C_PKT_OBJECT_CLASS = 189;
+%constant int NSA_C_PKT_SUPPRESS = 190;
+%constant int NSA_C_PKT_SNAPSHOT_BOOTFILE = 191;
+%constant int NSA_C_PKT_SOURCE_PROCESS_ID = 192;
+%constant int NSA_C_PKT_REQUEST_NUMBER = 193;
+%constant int NSA_C_PKT_ACCESS_MODE = 194;
+%constant int NSA_C_PKT_SYSTEM_SERVICE_NAME = 195;
+%constant int NSA_C_PKT_NEW_AUTH_PRIVILEGES = 196;
+%constant int NSA_C_PKT_OLD_AUTH_PRIVILEGES = 197;
+%constant int NSA_C_PKT_NEW_DEF_PRIVILEGES = 198;
+%constant int NSA_C_PKT_OLD_DEF_PRIVILEGES = 199;
+%constant int NSA_C_PKT_NEW_PROCESS_ID = 200;
+%constant int NSA_C_PKT_NEW_PROCESS_OWNER = 201;
+%constant int NSA_C_PKT_NEW_PROCESS_NAME = 202;
+%constant int NSA_C_PKT_NEW_IMAGE_NAME = 203;
+%constant int NSA_C_PKT_NEW_USERNAME = 204;
+%constant int NSA_C_PKT_DEACCESS_KEY = 205;
+%constant int NSA_C_PKT_OBJECT_RIGHTS_BLOCK = 206;
+%constant int NSA_C_PKT_OBJSRV_COMPLETE = 207;
+%constant int NSA_C_PKT_TLV_ORB = 208;
+%constant int NSA_C_PKT_FILE_NAME = 209;
+%constant int NSA_C_PKT_DIRECTORY_NAME = 210;
+%constant int NSA_C_PKT_SEQUENCE_KEY = 211;
+%constant int NSA_C_PKT_PRINCIPAL_FULLNAME = 212;
+%constant int NSA_C_PKT_TARGET_FULLNAME = 213;
+%constant int NSA_C_PKT_SOURCE_FULLNAME = 214;
+%constant int NSA_C_PKT_DESIRED_FULLNAME = 215;
+%constant int NSA_C_PKT_CLAIMED_USERNAME = 216;
+%constant int NSA_C_PKT_CLAIMED_FULLNAME = 217;
+%constant int NSA_C_PKT_CLAIMED_NODENAME = 218;
+%constant int NSA_C_PKT_TIME_REQ = 219;
+%constant int NSA_C_PKT_TIME_REC = 220;
+%constant int NSA_C_PKT_REQ_FLAGS = 221;
+%constant int NSA_C_PKT_RET_FLAGS = 222;
+%constant int NSA_C_PKT_LIFETIME_REQ = 223;
+%constant int NSA_C_PKT_LIFETIME_REC = 224;
+%constant int NSA_C_PKT_CRED_USAGE = 225;
+%constant int NSA_C_PKT_CONTEXT_HANDLE = 226;
+%constant int NSA_C_PKT_QOP_STATE = 227;
+%constant int NSA_C_PKT_CONF_STATE = 228;
+%constant int NSA_C_PKT_DELEG_CRED_HANDLE = 229;
+%constant int NSA_C_PKT_MAJOR_STATUS = 230;
+%constant int NSA_C_PKT_DAS_1 = 231;
+%constant int NSA_C_PKT_DAS_2 = 232;
+%constant int NSA_C_PKT_DAS_3 = 233;
+%constant int NSA_C_PKT_DAS_4 = 234;
+%constant int NSA_C_PKT_DAS_5 = 235;
+%constant int NSA_C_PKT_DAS_6 = 236;
+%constant int NSA_C_PKT_DAS_7 = 237;
+%constant int NSA_C_PKT_DAS_8 = 238;
+%constant int NSA_C_PKT_DAS_9 = 239;
+%constant int NSA_C_PKT_DAS_10 = 240;
+%constant int NSA_C_PKT_STATE_FILE_NAME = 241;
+%constant int NSA_C_PKT_DIRECTORY_FULLNAME = 242;
+%constant int NSA_C_PKT_FROM_DIR_FULLNAME = 243;
+%constant int NSA_C_PKT_TO_DIR_FULLNAME = 244;
+%constant int NSA_C_PKT_ISSUER_FULLNAME = 245;
+%constant int NSA_C_PKT_SUBJECT_FULLNAME = 246;
+%constant int NSA_C_PKT_CERTIF_TYPE = 247;
+%constant int NSA_C_PKT_CSS_SECONDARY_NAME = 248;
+%constant int NSA_C_PKT_CSS_OBJECT_FULLNAME = 249;
+%constant int NSA_C_PKT_CSS_REQUEST_FROM = 250;
+%constant int NSA_C_PKT_CSS_PRIMARY_NAME = 251;
+%constant int NSA_C_PKT_CERTIF_SERIAL_NUMBER = 252;
+%constant int NSA_C_PKT_WINDOW_END_TIME = 253;
+%constant int NSA_C_PKT_LOG_CLOSED = 254;
+%constant int NSA_C_PKT_LOG_OPENED = 255;
+%constant int NSA_C_PKT_IDENTIFIERS_MISSING = 256;
+%constant int NSA_C_PKT_SENSITIVE_FIELD_NAME = 257;
+%constant int NSA_C_PKT_SENSITIVE_ORIG_DATA = 258;
+%constant int NSA_C_PKT_SENSITIVE_NEW_DATA = 259;
+%constant int NSA_C_PKT_SENSITIVE_FIELD_TITLE = 260;
+%constant int NSA_C_PKT_SENSITIVE_FIELD_DATA = 261;
+%constant int NSA_C_PKT_INSTALL_AUTHPRIVS = 262;
+%constant int NSA_C_PKT_PERSONA_FLAGS = 263;
+%constant int NSA_C_PKT_PERSONA_UID = 264;
+%constant int NSA_C_PKT_PERSONA_MODE = 265;
+%constant int NSA_C_PKT_PERSONA_USERNAME = 266;
+%constant int NSA_C_PKT_PERSONA_ACCOUNT = 267;
+%constant int NSA_C_PKT_PERSONA_NOAUDIT = 268;
+%constant int NSA_C_PKT_PERSONA_UIC = 269;
+%constant int NSA_C_PKT_PERSONA_AUTHPRIV = 270;
+%constant int NSA_C_PKT_PERSONA_PERMPRIV = 271;
+%constant int NSA_C_PKT_PERSONA_WORKPRIV = 272;
+%constant int NSA_C_PKT_PERSONA_ENABLED = 273;
+%constant int NSA_C_PKT_PERSONA_RIGHTS = 274;
+%constant int NSA_C_PKT_PERSONA_MINCLASS = 275;
+%constant int NSA_C_PKT_PERSONA_MAXCLASS = 276;
+%constant int NSA_C_PKT_PERSONA_WORKCLASS = 277;
+%constant int NSA_C_PKT_PERSONA_ID = 278;
+%constant int NSA_C_PKT_PERSONA_POSIX_UID = 279;
+%constant int NSA_C_PKT_PERSONA_POSIX_GID = 280;
+%constant int NSA_C_PKT_PARENT_POSIX_UID = 281;
+%constant int NSA_C_PKT_PARENT_POSIX_GID = 282;
+%constant int NSA_C_PKT_MAX_CODE = 283;
+%constant int NSA_C_PKT_HDR_LENGTH = 4;
+%constant int NSA_K_PKT_HDR_LENGTH = 4;
+%constant int NSA__ACCESS_DESIRED = 1;
+%constant int NSA__ACCOUNT = 2;
+%constant int NSA__ALARM_NAME = 3;
+%constant int NSA__APPL_DATA = 4;
+%constant int NSA__AUDIT_FLAGS = 5;
+%constant int NSA__AUDIT_NAME = 6;
+%constant int NSA__SYSTEM_NAME = 7;
+%constant int NSA__SYSTEM_ID = 8;
+%constant int NSA__DEVICE_NAME = 9;
+%constant int NSA__DISMOUNT_FLAGS = 10;
+%constant int NSA__HOLDER_NAME = 11;
+%constant int NSA__HOLDER_OWNER = 12;
+%constant int NSA__ID_ATTRIBUTES = 13;
+%constant int NSA__ID_NAME = 14;
+%constant int NSA__ID_NEW_NAME = 15;
+%constant int NSA__ID_VALUE = 16;
+%constant int NSA__ID_NEW_VALUE = 17;
+%constant int NSA__IDENTIFIERS_USED = 18;
+%constant int NSA__IMAGE_NAME = 19;
+%constant int NSA__INSTALL_FILE = 20;
+%constant int NSA__INSTALL_FLAGS = 21;
+%constant int NSA__INSTALL_PRIVS = 22;
+%constant int NSA__LOGICAL_NAME = 23;
+%constant int NSA__MOUNT_FLAGS = 24;
+%constant int NSA__NEW_DATA = 25;
+%constant int NSA__FILE_ID = 26;
+%constant int NSA__OBJECT_MIN_CLASS = 27;
+%constant int NSA__OBJECT_MAX_CLASS = 28;
+%constant int NSA__OBJECT_NAME = 29;
+%constant int NSA__OBJECT_NAME_2 = 30;
+%constant int NSA__OBJECT_OWNER = 31;
+%constant int NSA__OBJECT_PROTECTION = 32;
+%constant int NSA__OBJECT_TYPE = 33;
+%constant int NSA__ORIGINAL_DATA = 34;
+%constant int NSA__PARENT_ID = 35;
+%constant int NSA__PARENT_NAME = 36;
+%constant int NSA__PARENT_OWNER = 37;
+%constant int NSA__PARENT_USERNAME = 38;
+%constant int NSA__PASSWORD = 39;
+%constant int NSA__PRIVS_USED = 40;
+%constant int NSA__PROCESS_ID = 41;
+%constant int NSA__PROCESS_NAME = 42;
+%constant int NSA__REMOTE_NODE_ID = 43;
+%constant int NSA__REMOTE_NODENAME = 44;
+%constant int NSA__REMOTE_USERNAME = 45;
+%constant int NSA__SUBJECT_CLASS = 46;
+%constant int NSA__SUBJECT_OWNER = 47;
+%constant int NSA__FINAL_STATUS = 48;
+%constant int NSA__TERMINAL = 49;
+%constant int NSA__TIME_STAMP = 50;
+%constant int NSA__UAF_ADD = 51;
+%constant int NSA__UAF_DELETE = 52;
+%constant int NSA__UAF_MODIFY = 53;
+%constant int NSA__UAF_COPY = 54;
+%constant int NSA__UAF_FIELDS = 55;
+%constant int NSA__USERNAME = 56;
+%constant int NSA__UAF_SOURCE = 57;
+%constant int NSA__UAF_RENAME = 58;
+%constant int NSA__VOLUME_NAME = 59;
+%constant int NSA__VOLUME_SET_NAME = 60;
+%constant int NSA__SERVER_ACCOUNT = 61;
+%constant int NSA__SERVER_SYSTEM_ID = 62;
+%constant int NSA__SERVER_SYSTEM_NAME = 63;
+%constant int NSA__SERVER_FINAL_STATUS = 64;
+%constant int NSA__SERVER_IMAGE_NAME = 65;
+%constant int NSA__SERVER_PARENT_ID = 66;
+%constant int NSA__SERVER_PARENT_OWNER = 67;
+%constant int NSA__SERVER_PARENT_NAME = 68;
+%constant int NSA__SERVER_PROCESS_ID = 69;
+%constant int NSA__SERVER_PROCESS_NAME = 70;
+%constant int NSA__SERVER_SUBJECT_CLASS = 71;
+%constant int NSA__SERVER_SUBJECT_OWNER = 72;
+%constant int NSA__SERVER_TERMINAL = 73;
+%constant int NSA__SERVER_TIME_STAMP = 74;
+%constant int NSA__SERVER_USERNAME = 75;
+%constant int NSA__AUDIT_DISABLE = 76;
+%constant int NSA__AUDIT_ENABLE = 77;
+%constant int NSA__ALARM_DISABLE = 78;
+%constant int NSA__ALARM_ENABLE = 79;
+%constant int NSA__NOP = 80;
+%constant int NSA__REPLY_MAILBOX = 81;
+%constant int NSA__DEFAULT_USERNAME = 82;
+%constant int NSA__LOCAL_USERNAME = 83;
+%constant int NSA__FIELD_NAME = 84;
+%constant int NSA__LISTENER_DEVICE = 85;
+%constant int NSA__FIELD_TITLE_STR = 86;
+%constant int NSA__FIELD_DATA_STR = 87;
+%constant int NSA__MESSAGE_TYPE_STR = 88;
+%constant int NSA__EVENT_TYPE = 89;
+%constant int NSA__EVENT_SUBTYPE = 90;
+%constant int NSA__EVENT_FACILITY = 91;
+%constant int NSA__DIRECTORY_ENTRY = 92;
+%constant int NSA__DIRECTORY_ID = 93;
+%constant int NSA__CUSTOMER_1 = 94;
+%constant int NSA__CUSTOMER_2 = 95;
+%constant int NSA__CUSTOMER_3 = 96;
+%constant int NSA__CUSTOMER_4 = 97;
+%constant int NSA__CUSTOMER_5 = 98;
+%constant int NSA__CUSTOMER_6 = 99;
+%constant int NSA__CUSTOMER_7 = 100;
+%constant int NSA__CUSTOMER_8 = 101;
+%constant int NSA__CSS_1 = 102;
+%constant int NSA__CSS_2 = 103;
+%constant int NSA__CSS_3 = 104;
+%constant int NSA__CSS_4 = 105;
+%constant int NSA__CSS_5 = 106;
+%constant int NSA__CSS_6 = 107;
+%constant int NSA__CSS_7 = 108;
+%constant int NSA__CSS_8 = 109;
+%constant int NSA__LP_1 = 110;
+%constant int NSA__LP_2 = 111;
+%constant int NSA__LP_3 = 112;
+%constant int NSA__LP_4 = 113;
+%constant int NSA__LP_5 = 114;
+%constant int NSA__LP_6 = 115;
+%constant int NSA__LP_7 = 116;
+%constant int NSA__LP_8 = 117;
+%constant int NSA__ALARM_FAILURE = 118;
+%constant int NSA__AUDIT_FAILURE = 119;
+%constant int NSA__SEVMS_0 = 120;
+%constant int NSA__SEVMS_1 = 121;
+%constant int NSA__SEVMS_2 = 122;
+%constant int NSA__SEVMS_3 = 123;
+%constant int NSA__SEVMS_4 = 124;
+%constant int NSA__SEVMS_5 = 125;
+%constant int NSA__SEVMS_6 = 126;
+%constant int NSA__SEVMS_7 = 127;
+%constant int NSA__SEVMS_8 = 128;
+%constant int NSA__SEVMS_9 = 129;
+%constant int NSA__SEVMS_10 = 130;
+%constant int NSA__SEVMS_11 = 131;
+%constant int NSA__SEVMS_12 = 132;
+%constant int NSA__SEVMS_13 = 133;
+%constant int NSA__SEVMS_14 = 134;
+%constant int NSA__SEVMS_15 = 135;
+%constant int NSA__SEVMS_16 = 136;
+%constant int NSA__SEVMS_17 = 137;
+%constant int NSA__SEVMS_18 = 138;
+%constant int NSA__SNAPSHOT_TIME = 139;
+%constant int NSA__TRANSPORT_NAME = 140;
+%constant int NSA__DECNET_LINK_ID = 141;
+%constant int NSA__DECNET_OBJECT_NAME = 142;
+%constant int NSA__DECNET_OBJECT_NUMBER = 143;
+%constant int NSA__REMOTE_LINK_ID = 144;
+%constant int NSA__COMMAND_LINE = 145;
+%constant int NSA__ASSOCIATION_NAME = 146;
+%constant int NSA__REM_ASSOCIATION_NAME = 147;
+%constant int NSA__CONNECTION_ID = 148;
+%constant int NSA__MESSAGE = 149;
+%constant int NSA__MSGFILNAM = 150;
+%constant int NSA__OBJECT_POINTER = 151;
+%constant int NSA__ID_NEW_ATTRIBUTES = 152;
+%constant int NSA__SYSTIM_NEW = 153;
+%constant int NSA__SYSTIM_OLD = 154;
+%constant int NSA__PARAMS_WRITE = 155;
+%constant int NSA__PARAMS_INUSE = 156;
+%constant int NSA__MATCHING_ACE = 157;
+%constant int NSA__SNAPSHOT_SAVE_FILNAM = 158;
+%constant int NSA__MAILBOX_UNIT = 159;
+%constant int NSA__NEW_OWNER = 160;
+%constant int NSA__NEW_PRIORITY = 161;
+%constant int NSA__OLD_PRIORITY = 162;
+%constant int NSA__DIAG_FUNC = 163;
+%constant int NSA__RESOURCE_NAME = 164;
+%constant int NSA__LNM_TABLE_NAME = 165;
+%constant int NSA__LNM_PARENT_NAME = 166;
+%constant int NSA__EFC_NAME = 167;
+%constant int NSA__TARGET_PROCESS_CLASS = 168;
+%constant int NSA__TARGET_PROCESS_ID = 169;
+%constant int NSA__TARGET_PROCESS_NAME = 170;
+%constant int NSA__TARGET_PROCESS_OWNER = 171;
+%constant int NSA__TARGET_USERNAME = 172;
+%constant int NSA__NEW_PRIVILEGES = 173;
+%constant int NSA__OLD_PRIVILEGES = 174;
+%constant int NSA__REMOTE_NODE_FULLNAME = 175;
+%constant int NSA__UID = 176;
+%constant int NSA__UNUSED_3 = 177;
+%constant int NSA__UNUSED_4 = 178;
+%constant int NSA__UNUSED_5 = 179;
+%constant int NSA__UNUSED_6 = 180;
+%constant int NSA__UNUSED_7 = 181;
+%constant int NSA__UNUSED_8 = 182;
+%constant int NSA__UNUSED_9 = 183;
+%constant int NSA__UNUSED_10 = 184;
+%constant int NSA__PRIVS_MISSING = 185;
+%constant int NSA__TARGET_DEVICE_NAME = 186;
+%constant int NSA__SECTION_NAME = 187;
+%constant int NSA__ID_VALUE_ASCII = 188;
+%constant int NSA__OBJECT_CLASS = 189;
+%constant int NSA__SUPPRESS = 190;
+%constant int NSA__SNAPSHOT_BOOTFILE = 191;
+%constant int NSA__SOURCE_PROCESS_ID = 192;
+%constant int NSA__REQUEST_NUMBER = 193;
+%constant int NSA__ACCESS_MODE = 194;
+%constant int NSA__SYSTEM_SERVICE_NAME = 195;
+%constant int NSA__NEW_AUTH_PRIVILEGES = 196;
+%constant int NSA__OLD_AUTH_PRIVILEGES = 197;
+%constant int NSA__NEW_DEF_PRIVILEGES = 198;
+%constant int NSA__OLD_DEF_PRIVILEGES = 199;
+%constant int NSA__NEW_PROCESS_ID = 200;
+%constant int NSA__NEW_PROCESS_OWNER = 201;
+%constant int NSA__NEW_PROCESS_NAME = 202;
+%constant int NSA__NEW_IMAGE_NAME = 203;
+%constant int NSA__NEW_USERNAME = 204;
+%constant int NSA__DEACCESS_KEY = 205;
+%constant int NSA__OBJECT_RIGHTS_BLOCK = 206;
+%constant int NSA__OBJSRV_COMPLETE = 207;
+%constant int NSA__TLV_ORB = 208;
+%constant int NSA__FILE_NAME = 209;
+%constant int NSA__DIRECTORY_NAME = 210;
+%constant int NSA__SEQUENCE_KEY = 211;
+%constant int NSA__PRINCIPAL_FULLNAME = 212;
+%constant int NSA__TARGET_FULLNAME = 213;
+%constant int NSA__SOURCE_FULLNAME = 214;
+%constant int NSA__DESIRED_FULLNAME = 215;
+%constant int NSA__CLAIMED_USERNAME = 216;
+%constant int NSA__CLAIMED_FULLNAME = 217;
+%constant int NSA__CLAIMED_NODENAME = 218;
+%constant int NSA__TIME_REQ = 219;
+%constant int NSA__TIME_REC = 220;
+%constant int NSA__REQ_FLAGS = 221;
+%constant int NSA__RET_FLAGS = 222;
+%constant int NSA__LIFETIME_REQ = 223;
+%constant int NSA__LIFETIME_REC = 224;
+%constant int NSA__CRED_USAGE = 225;
+%constant int NSA__CONTEXT_HANDLE = 226;
+%constant int NSA__QOP_STATE = 227;
+%constant int NSA__CONF_STATE = 228;
+%constant int NSA__DELEG_CRED_HANDLE = 229;
+%constant int NSA__MAJOR_STATUS = 230;
+%constant int NSA__DAS_1 = 231;
+%constant int NSA__DAS_2 = 232;
+%constant int NSA__DAS_3 = 233;
+%constant int NSA__DAS_4 = 234;
+%constant int NSA__DAS_5 = 235;
+%constant int NSA__DAS_6 = 236;
+%constant int NSA__DAS_7 = 237;
+%constant int NSA__DAS_8 = 238;
+%constant int NSA__DAS_9 = 239;
+%constant int NSA__DAS_10 = 240;
+%constant int NSA__STATE_FILE_NAME = 241;
+%constant int NSA__DIRECTORY_FULLNAME = 242;
+%constant int NSA__FROM_DIRECTORY_FULLNAME = 243;
+%constant int NSA__TO_DIRECTORY_FULLNAME = 244;
+%constant int NSA__ISSUER_FULLNAME = 245;
+%constant int NSA__SUBJECT_FULLNAME = 246;
+%constant int NSA__CERTIF_TYPE = 247;
+%constant int NSA__CSS_SECONDARY_NAME = 248;
+%constant int NSA__CSS_OBJECT_FULLNAME = 249;
+%constant int NSA__CSS_REQUEST_FROM = 250;
+%constant int NSA__CSS_PRIMARY_NAME = 251;
+%constant int NSA__CERTIF_SERIAL_NUMBER = 252;
+%constant int NSA__WINDOW_END_TIME = 253;
+%constant int NSA__LOG_CLOSED = 254;
+%constant int NSA__LOG_OPENED = 255;
+%constant int NSA__IDENTIFIERS_MISSING = 256;
+%constant int NSA__SENSITIVE_FIELD_NAME = 257;
+%constant int NSA__SENSITIVE_ORIG_DATA = 258;
+%constant int NSA__SENSITIVE_NEW_DATA = 259;
+%constant int NSA__SENSITIVE_FIELD_TITLE = 260;
+%constant int NSA__SENSITIVE_FIELD_DATA = 261;
+%constant int NSA__INSTALL_AUTHPRIVS = 262;
+%constant int NSA__PERSONA_FLAGS = 263;
+%constant int NSA__PERSONA_UID = 264;
+%constant int NSA__PERSONA_MODE = 265;
+%constant int NSA__PERSONA_USERNAME = 266;
+%constant int NSA__PERSONA_ACCOUNT = 267;
+%constant int NSA__PERSONA_NOAUDIT = 268;
+%constant int NSA__PERSONA_UIC = 269;
+%constant int NSA__PERSONA_AUTHPRIV = 270;
+%constant int NSA__PERSONA_PERMPRIV = 271;
+%constant int NSA__PERSONA_WORKPRIV = 272;
+%constant int NSA__PERSONA_ENABLED = 273;
+%constant int NSA__PERSONA_RIGHTS = 274;
+%constant int NSA__PERSONA_MINCLASS = 275;
+%constant int NSA__PERSONA_MAXCLASS = 276;
+%constant int NSA__PERSONA_WORKCLASS = 277;
+%constant int NSA__PERSONA_ID = 278;
+%constant int NSA__PERSONA_POSIX_UID = 279;
+%constant int NSA__PERSONA_POSIX_GID = 280;
+%constant int NSA__PARENT_POSIX_UID = 281;
+%constant int NSA__PARENT_POSIX_GID = 282;
+%constant int NSA__MAX_ITM_CODE = 283;
+%constant int NSA__CHAIN = 65535;
+%constant int NSA__CLIENT_ACCOUNT = 2;
+%constant int NSA__CLIENT_SYSTEM_ID = 8;
+%constant int NSA__CLIENT_SYSTEM_NAME = 7;
+%constant int NSA__CLIENT_FINAL_STATUS = 48;
+%constant int NSA__CLIENT_IMAGE_NAME = 19;
+%constant int NSA__CLIENT_PARENT_ID = 35;
+%constant int NSA__CLIENT_PARENT_OWNER = 37;
+%constant int NSA__CLIENT_PARENT_NAME = 36;
+%constant int NSA__CLIENT_PROCESS_ID = 41;
+%constant int NSA__CLIENT_PROCESS_NAME = 42;
+%constant int NSA__CLIENT_SUBJECT_CLASS = 46;
+%constant int NSA__CLIENT_SUBJECT_OWNER = 47;
+%constant int NSA__CLIENT_TERMINAL = 49;
+%constant int NSA__CLIENT_TIME_STAMP = 50;
+%constant int NSA__CLIENT_USERNAME = 56;
+%constant int NSA_S_NSADATADEF = 5;
+%constant int NSA_M_ACCOUNT_NAME = 0x1L;
+%constant int NSA_M_SYSTEM_ID = 0x2L;
+%constant int NSA_M_SYSTEM_NAME = 0x4L;
+%constant int NSA_M_FINAL_STATUS = 0x8L;
+%constant int NSA_M_IMAGE_NAME = 0x10L;
+%constant int NSA_M_PARENT_ID = 0x20L;
+%constant int NSA_M_PARENT_OWNER = 0x40L;
+%constant int NSA_M_PARENT_NAME = 0x80L;
+%constant int NSA_M_PROCESS_ID = 0x100L;
+%constant int NSA_M_PROCESS_NAME = 0x200L;
+%constant int NSA_M_SUBJECT_CLASS = 0x400L;
+%constant int NSA_M_SUBJECT_OWNER = 0x800L;
+%constant int NSA_M_TERMINAL = 0x1000L;
+%constant int NSA_M_TIME_STAMP = 0x2000L;
+%constant int NSA_M_USERNAME = 0x4000L;
+%constant int NSA_M_PARENT_USERNAME = 0x8000L;
+%constant int NSA_M_POSIX_UID = 0x10000L;
+%constant int NSA_M_POSIX_GID = 0x20000L;
+%constant int NSA_M_PARENT_POSIX_UID = 0x40000L;
+%constant int NSA_M_PARENT_POSIX_GID = 0x80000L;
+%constant int NSA_S_FILL_232_ = 4;
+%constant int NSA_C_REPLY_LENGTH = 4;
+%constant int NSA_K_REPLY_LENGTH = 4;
+%constant int NSA_S_NSAREPLYDEF = 4;
+%constant int NSA_C_FMTINF_NONE = 0;
+%constant int NSA_C_FMTINF_LONG_VALUE = 1;
+%constant int NSA_C_FMTINF_IDENTIFIER = 2;
+%constant int NSA_C_FMTINF_DATE = 3;
+%constant int NSA_C_FMTINF_STRING = 4;
+%constant int NSA_C_FMTINF_CLASSIFICATION = 5;
+%constant int NSA_C_FMTINF_UID = 6;
+%constant int NSA_C_FMTINF_RIGHTS = 7;
+%constant int NSA_C_FMTINF_SPECIAL = 8;
+%constant int NSA_M_FMTINF_CHECK_PREVIOUS = 0x1L;
+%constant int NSA_M_FMTINF_NTH_NEW_LINE = 0x2L;
+%constant int NSA_M_FMTINF_NOFORMAT = 0x4L;
+%constant int NSA_M_FMTINF_SENSITIVE = 0x8L;
+%constant int NSA_K_FMTINF_LENGTH = 28;
+%constant int NSA_C_FMTINF_LENGTH = 28;
+%constant int NSA_C_FORMAT_STYLE_BRIEF = 1;
+%constant int NSA_C_FORMAT_STYLE_FULL = 2;
+%constant int NSA_C_FORMAT_STYLE_PACKET_TYPE = 3;
+%constant int NSA_C_FMTINF_MAX_SINGLE_SEC_STR = 3895;
+%constant int NSA_C_FMTINF_MAX_SINGLE_INT_STR = 1977;
+%constant int NSA_C_FMTINF_MAX_RANGE_SEC_STR = 7801;
+%constant int NSA_C_FMTINF_MAX_RANGE_INT_STR = 3963;
+%constant int NSA_S_FMTTBLDEF = 28;
+%constant int NSA_K_IMGXFR_LENGTH = 53;
+%constant int NSA_C_IMGXFR_LENGTH = 53;
+%constant int NSA_S_FMTCALLDEF = 53;
+%constant int NSA_S_IMGXFR_IMAGE_NAME = 1;
+%constant int NSA_M_FMTARG_SENSITIVE = 0x1L;
+%constant int NSA_M_FMTARG_DISPLAY_TITLE = 0x2L;
+%constant int NSA_M_FMTARG_CHECK_PREVIOUS = 0x1L;
+%constant int NSA_M_FMTARG_NTH_NEW_LINE = 0x2L;
+%constant int NSA_M_FMTARG_NOFORMAT = 0x4L;
+%constant int NSA_K_FMTARG_LENGTH = 36;
+%constant int NSA_C_FMTARG_LENGTH = 36;
+%constant int NSA_S_FMTARGDEF = 36;
+%constant int NSA_S_FMTARG_BUFFER = 8;
+%constant int NSA_S_FMTARG_TERMINATOR = 8;
+%constant int NSA_C_IMGXFR_MESSAGE_INFO = 0;
+%constant int NSA_C_IMGXFR_VALIDATE_PACKET = 1;
+%constant int NSA_C_IMGXFR_DISPLAY_INFO = 2;
+%constant int NSA_C_IMGXFR_LINE_BREAK = 3;
+%constant int NSA_C_IMGXFR_FORMAT_SPECIAL = 4;
+%constant int NSA_C_IMGXFR_FORMAT_INFO = 5;
+%constant int NSA_C_IMGXFR_FORMAT_BRIEF = 6;
+%constant int NSA_C_IMGXFR_FORMAT_PACKET_TYPE = 7;
+%constant int NSA_C_IMGXFR_FORMAT_EVENT_TYPE = 8;
+%constant int NSA_S_FMTXFERDEF = 72;
+%constant int NSA_S_IMGXFR_MESSAGE_INFO = 8;
+%constant int NSA_S_IMGXFR_VALIDATE_PACKET = 8;
+%constant int NSA_S_IMGXFR_DISPLAY_INFO = 8;
+%constant int NSA_S_IMGXFR_LINE_BREAK = 8;
+%constant int NSA_S_IMGXFR_FORMAT_SPECIAL = 8;
+%constant int NSA_S_IMGXFR_FORMAT_INFO = 8;
+%constant int NSA_S_IMGXFR_FORMAT_BRIEF = 8;
+%constant int NSA_S_IMGXFR_FORMAT_PACKET_TYPE = 8;
+%constant int NSA_S_IMGXFR_FORMAT_EVENT_TYPE = 8;
+%constant int NSA_K_ACCNAM_LENGTH = 139;
+%constant int NSA_C_ACCNAM_LENGTH = 139;
+%constant int NSA_S_FMTACCNAMDEF = 139;
+%constant int NSA_S_ACCNAM_CODES = 128;
+%constant int NSA_S_ACCNAM_OBJECT_TYPE = 1;
+%constant int NSA_K_MSGINF_LENGTH = 8;
+%constant int NSA_C_MSGINF_LENGTH = 8;
+%constant int NSA_S_MSGINFODEF = 8;
+%constant int NSA_K_SUBTBL_LENGTH = 8;
+%constant int NSA_C_SUBTBL_LENGTH = 8;
+%constant int NSA_S_SUBFMTTBLDEF = 8;
+%constant int NSA_C_MSG_NETUAF = 9;
+%constant int NSA_C_MSG_PRIV_AUDIT = 16;
+%constant int NSA_C_PRIV_AUDIT = 1;
+%constant int NSA_C_JOBCTL_QUEUE_ACCESS = 3;
+%constant int NSA_C_NETUAF_ADD = 1;
+%constant int NSA_C_NETUAF_DELETE = 2;
+%constant int NSA_C_NETUAF_MODIFY = 3;
+%constant int NSA_C_NETUAF_NCP = 4;
+%constant int NSA_C_NETUAF_MAX_CODE = 8;
+%constant int NSA_C_PKT_OBJECT_ID = 26;
+%constant int NSA__OBJECT_ID = 26;
+%constant int NSA_C_PKT_PRIV_MASK = 22;
+%constant int NSA__PRIV_MASK = 22;
+%constant int NSA_C_PKT_PRIVILEGES = 22;
+%constant int NSA__PRIVILEGES = 22;
+%constant int NSA_C_PKT_SNAPSHOT_FILNAM = 158;
+%constant int NSA__SNAPSHOT_FILNAM = 158;
+%constant int NSA_C_PKT_PERFORMANCE_NOP = 80;
+%constant int NSA__PERFORMANCE_NOP = 80;
+%constant int NSA_C_PKT_SUPPLIED_FLAGS = 190;
+%constant int NSA__SUPPLIED_FLAGS = 190;
diff --git a/Modules/vms/ossdef/ossdef.i b/Modules/vms/ossdef/ossdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvb3NzZGVmL29zc2RlZi5p
--- /dev/null
+++ b/Modules/vms/ossdef/ossdef.i
@@ -0,0 +1,54 @@
+%module ossdef
+
+%constant int OSS_M_WLOCK = 0x1L;
+%constant int OSS_M_RELCTX = 0x2L;
+%constant int OSS_M_LOCAL = 0x4L;
+%constant int OSS_S_OSSDEF = 1;
+%constant int OSS__ACCESS_NAMES = 1;
+%constant int OSS__ACCESS_NAMES_LENGTH = 2;
+%constant int OSS__ACL_ADD_ENTRY = 3;
+%constant int OSS__ACL_DELETE_ENTRY = 4;
+%constant int OSS__ACL_DELETE = 5;
+%constant int OSS__ACL_DELETE_ALL = 6;
+%constant int OSS__ACL_FIND_ENTRY = 7;
+%constant int OSS__ACL_FIND_NEXT = 8;
+%constant int OSS__ACL_FIND_TYPE = 9;
+%constant int OSS__ACL_GRANT_ACE = 10;
+%constant int OSS__ACL_LENGTH = 11;
+%constant int OSS__ACL_MODIFY_ENTRY = 12;
+%constant int OSS__ACL_POSITION = 13;
+%constant int OSS__ACL_POSITION_TOP = 14;
+%constant int OSS__ACL_POSITION_BOTTOM = 15;
+%constant int OSS__ACL_READ_ENTRY = 16;
+%constant int OSS__ACL_READ = 17;
+%constant int OSS__MAX_CLASS = 18;
+%constant int OSS__MIN_CLASS = 19;
+%constant int OSS__NEXT_OBJECT = 20;
+%constant int OSS__OWNER = 21;
+%constant int OSS__PROTECTION = 22;
+%constant int OSS__SYS_PROT = 23;
+%constant int OSS__OWN_PROT = 24;
+%constant int OSS__GRP_PROT = 25;
+%constant int OSS__WOR_PROT = 26;
+%constant int OSS__CLASS_NAME = 27;
+%constant int OSS__FIRST_TEMPLATE = 28;
+%constant int OSS__NEXT_TEMPLATE = 29;
+%constant int OSS__OBJECT_NAME = 30;
+%constant int OSS__ACCESS_CLASS_NAME = 31;
+%constant int OSS__DAMAGED_ACL = 32;
+%constant int OSS__IN_TRANSITION = 33;
+%constant int OSS__TRANQUILITY_COUNT = 34;
+%constant int OSS__POSIX_GID = 35;
+%constant int OSS__POSIX_GRP_MODE = 36;
+%constant int OSS__POSIX_MODE = 37;
+%constant int OSS__POSIX_SGID = 38;
+%constant int OSS__POSIX_SUID = 39;
+%constant int OSS__ACCESS_BITNAMES = 1;
+%constant int OSS__ACCESS_BITNAMES_LENGTH = 2;
+%constant int OSS__ACL_ADDACE = 3;
+%constant int OSS__ACL_DELACE = 4;
+%constant int OSS__ACL_FNDACE = 7;
+%constant int OSS__ACL_FNDNXT = 8;
+%constant int OSS__ACL_FNDTYP = 9;
+%constant int OSS__ACL_MODACE = 12;
+%constant int OSS__ACL_READACE = 16;
diff --git a/Modules/vms/pcbdef/pcbdef.i b/Modules/vms/pcbdef/pcbdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcGNiZGVmL3BjYmRlZi5p
--- /dev/null
+++ b/Modules/vms/pcbdef/pcbdef.i
@@ -0,0 +1,222 @@
+%module pcbdef
+
+%constant int PCB_M_RES = 0x1L;
+%constant int PCB_M_DELPEN = 0x2L;
+%constant int PCB_M_FORCPEN = 0x4L;
+%constant int PCB_M_INQUAN = 0x8L;
+%constant int PCB_M_PSWAPM = 0x10L;
+%constant int PCB_M_RESPEN = 0x20L;
+%constant int PCB_M_SSFEXC = 0x40L;
+%constant int PCB_M_SSFEXCE = 0x80L;
+%constant int PCB_M_SSFEXCS = 0x100L;
+%constant int PCB_M_SSFEXCU = 0x200L;
+%constant int PCB_M_SSRWAIT = 0x400L;
+%constant int PCB_M_SUSPEN = 0x800L;
+%constant int PCB_M_WALL = 0x2000L;
+%constant int PCB_M_BATCH = 0x4000L;
+%constant int PCB_M_NOACNT = 0x8000L;
+%constant int PCB_M_NOSUSPEND = 0x10000L;
+%constant int PCB_M_ASTPEN = 0x20000L;
+%constant int PCB_M_PHDRES = 0x40000L;
+%constant int PCB_M_HIBER = 0x80000L;
+%constant int PCB_M_LOGIN = 0x100000L;
+%constant int PCB_M_NETWRK = 0x200000L;
+%constant int PCB_M_PWRAST = 0x400000L;
+%constant int PCB_M_NODELET = 0x800000L;
+%constant int PCB_M_DISAWS = 0x1000000L;
+%constant int PCB_M_INTER = 0x2000000L;
+%constant int PCB_M_RECOVER = 0x4000000L;
+%constant int PCB_M_HARDAFF = 0x10000000L;
+%constant int PCB_M_ERDACT = 0x20000000L;
+%constant int PCB_M_SOFTSUSP = 0x40000000L;
+%constant int PCB_M_PREEMPTED = 0x80000000L;
+%constant int PCB_M_QUANTUM_RESCHED = 0x1L;
+%constant int PCB_M_DISABLE_PREEMPT_PKTA_LOCK = 0x2L;
+%constant int PCB_M_FREDLOCK = 0x4L;
+%constant int PCB_M_PHDLOCK = 0x8L;
+%constant int PCB_M_TCB = 0x10L;
+%constant int PCB_M_TBS_STATE_PENDING = 0x20L;
+%constant int PCB_M_SS_LOGGING_ENABLE = 0x40L;
+%constant int PCB_M_SS_LOGGING_PERM = 0x80L;
+%constant int PCB_M_BRK_RUNDOWN_LOADED = 0x100L;
+%constant int PCB_M_CLASS_SCHED_PERM = 0x8000L;
+%constant int PCB_M_TERM_NOTIFY = 0x10000L;
+%constant int PCB_M_BYTLM_LOAN = 0x20000L;
+%constant int PCB_M_DISABLE_PREEMPT = 0x40000L;
+%constant int PCB_M_NOUNSHELVE = 0x80000L;
+%constant int PCB_M_SHELVING_RESERVED = 0x100000L;
+%constant int PCB_M_CLASS_SCHEDULED = 0x200000L;
+%constant int PCB_M_CLASS_SUPPLIED = 0x400000L;
+%constant int PCB_M_IN_TBS_STATE = 0x800000L;
+%constant int PCB_M_WINDFALL = 0x1000000L;
+%constant int PCB_M_NOTIFY = 0x2000000L;
+%constant int PCB_M_SINGLE_THREADED = 0x3C000000L;
+%constant int PCB_M_RWAST = 0x40000000L;
+%constant int PCB_M_SOFT_SINGLE_THREAD = 0x80000000L;
+%constant int PCB_M_EPID_WILD = 0x80000000L;
+%constant int PCB_M_FORK = 0x1L;
+%constant int PCB_K_SCHED_OTHER = 0;
+%constant int PCB_K_SCHED_FIFO = 1;
+%constant int PCB_K_SCHED_RR = 2;
+%constant int PCB_K_SCHED_POLICY_CNT = 3;
+%constant int PCB_K_ALL_THREADS = -2147483648;
+%constant int PCB_K_MAX_KT_COUNT = 256;
+%constant int PCB_M_EVENT_NO_FLAG = 0x1L;
+%constant int PCB_M_IN_DELPAG = 0x1L;
+%constant int PCB_M_WAKEPEN = 0x1000L;
+%constant int PCB_M_SECAUDIT = 0x8000000L;
+%constant int PCB_M_UPCALL_AST_BLOCKED = 0x80000000L;
+%constant int PCB_M_SUGID_IMAGE = 0x1L;
+%constant int PCB_M_SUGID_PROCESS = 0x2L;
+%constant int PCB_S_PCB = 2352;
+%constant int PCB_S_PHYPCB = 8;
+%constant int PCB_S_LEFC_SWAPPED = 8;
+%constant int PCB_S_PRVASN = 64;
+%constant int PCB_S_PRVASNSEQ = 8;
+%constant int PCB_S_ONCPUCNT = 8;
+%constant int PCB_S_SINGLE_THREADED = 4;
+%constant int PCB_S_EPID_PROC = 21;
+%constant int PCB_S_EPID_NODE_IDX = 8;
+%constant int PCB_S_EPID_NODE_SEQ = 2;
+%constant int PCB_S_PCBARB = 124;
+%constant int PCB_S_PRIV = 8;
+%constant int PCB_S_LNAME = 16;
+%constant int PCB_S_CWPSSRV_QUEUE = 8;
+%constant int PCB_S_BUFOBJ_LIST = 8;
+%constant int PCB_S_XSCB_QUE = 8;
+%constant int PCB_S_RMCB_QUE = 8;
+%constant int PCB_S_CD_QUE = 8;
+%constant int PCB_S_PSX_ACTPRM = 8;
+%constant int PCB_S_RDPB_QUE = 8;
+%constant int PCB_S_FILES_64 = 8;
+%constant int PCB_S_KEEP_IN_WS = 8;
+%constant int PCB_S_KEEP_IN_WS2 = 8;
+%constant int PCB_S_POSTEF = 8;
+%constant int PCB_S_ST_KT_ARRAY = 8;
+%constant int PCB_S_LOCKQFL = 8;
+%constant int PCB_S_LOCKQBL = 8;
+%constant int PCB_S_TQE_FLAGS = 8;
+%constant int PCB_S_CBB_PERM_CPU_AFFINITY = 48;
+%constant int PCB_S_PERMANENT_CPU_AFFINITY = 8;
+%constant int PCB_S_CBB_CURRENT_AFFINITY = 48;
+%constant int PCB_S_CURRENT_AFFINITY = 8;
+%constant int PCB_S_CBB_ACTIVE_CPUS = 48;
+%constant int PCB_S_ACTIVE_CPUS = 8;
+%constant int PCB_S_CBB_AFFINITIES = 48;
+%constant int PCB_S_AFFINITIES = 8;
+%constant int PCB_S_CBB_PERMANENT_AFFINITIES = 48;
+%constant int PCB_S_PERMANENT_AFFINITIES = 8;
+%constant int PCB_S_CBB_SAVED_AFFINITIES = 48;
+%constant int PCB_S_SAVED_AFFINITIES = 8;
+%constant int PCB_S_TERMINAL = 16;
+%constant int PCB_S_KERNEL_COUNTER_FRAC = 8;
+%constant int PCB_S_EXEC_COUNTER_FRAC = 8;
+%constant int PCB_S_SUPER_COUNTER_FRAC = 8;
+%constant int PCB_S_USER_COUNTER_FRAC = 8;
+%constant int PCB_K_LENGTH = 2352;
+%constant int PCB_C_LENGTH = 2352;
+%constant int PCB_S_PCBDEF = 2352;
+%constant int KTB_M_RES = 0x1L;
+%constant int KTB_M_DELPEN = 0x2L;
+%constant int KTB_M_FORCPEN = 0x4L;
+%constant int KTB_M_INQUAN = 0x8L;
+%constant int KTB_M_PSWAPM = 0x10L;
+%constant int KTB_M_RESPEN = 0x20L;
+%constant int KTB_M_SSFEXC = 0x40L;
+%constant int KTB_M_SSFEXCE = 0x80L;
+%constant int KTB_M_SSFEXCS = 0x100L;
+%constant int KTB_M_SSFEXCU = 0x200L;
+%constant int KTB_M_SSRWAIT = 0x400L;
+%constant int KTB_M_SUSPEN = 0x800L;
+%constant int KTB_M_WALL = 0x2000L;
+%constant int KTB_M_BATCH = 0x4000L;
+%constant int KTB_M_NOACNT = 0x8000L;
+%constant int KTB_M_NOSUSPEND = 0x10000L;
+%constant int KTB_M_ASTPEN = 0x20000L;
+%constant int KTB_M_PHDRES = 0x40000L;
+%constant int KTB_M_HIBER = 0x80000L;
+%constant int KTB_M_LOGIN = 0x100000L;
+%constant int KTB_M_NETWRK = 0x200000L;
+%constant int KTB_M_PWRAST = 0x400000L;
+%constant int KTB_M_NODELET = 0x800000L;
+%constant int KTB_M_DISAWS = 0x1000000L;
+%constant int KTB_M_INTER = 0x2000000L;
+%constant int KTB_M_RECOVER = 0x4000000L;
+%constant int KTB_M_HARDAFF = 0x10000000L;
+%constant int KTB_M_ERDACT = 0x20000000L;
+%constant int KTB_M_SOFTSUSP = 0x40000000L;
+%constant int KTB_M_PREEMPTED = 0x80000000L;
+%constant int KTB_M_QUANTUM_RESCHED = 0x1L;
+%constant int KTB_M_PHDLOCK = 0x8L;
+%constant int KTB_M_TCB = 0x10L;
+%constant int KTB_M_TBS_STATE_PENDING = 0x20L;
+%constant int KTB_M_CLASS_SCHED_PERM = 0x8000L;
+%constant int KTB_M_TERM_NOTIFY = 0x10000L;
+%constant int KTB_M_BYTLM_LOAN = 0x20000L;
+%constant int KTB_M_NOUNSHELVE = 0x80000L;
+%constant int KTB_M_SHELVING_RESERVED = 0x100000L;
+%constant int KTB_M_CLASS_SCHEDULED = 0x200000L;
+%constant int KTB_M_CLASS_SUPPLIED = 0x400000L;
+%constant int KTB_M_IN_TBS_STATE = 0x800000L;
+%constant int KTB_M_WINDFALL = 0x1000000L;
+%constant int KTB_M_NOTIFY = 0x2000000L;
+%constant int KTB_M_SINGLE_THREADED = 0x3C000000L;
+%constant int KTB_M_EPID_WILD = 0x80000000L;
+%constant int KTB_K_SCHED_OTHER = 0;
+%constant int KTB_K_SCHED_FIFO = 1;
+%constant int KTB_K_SCHED_RR = 2;
+%constant int KTB_K_SCHED_POLICY_CNT = 3;
+%constant int KTB_M_WAKEPEN = 0x1000L;
+%constant int KTB_M_SECAUDIT = 0x8000000L;
+%constant int KTB_M_UPCALL_AST_BLOCKED = 0x80000000L;
+%constant int KTB_M_DELETE_PENDING = 0x1L;
+%constant int KTB_M_SCHED_CONTEXT_SAVED = 0x2L;
+%constant int KTB_M_SINGLE_THREAD_ACT = 0x3CL;
+%constant int KTB_M_TOLERANT = 0x40L;
+%constant int KTB_M_SOFT_RAD_AFFINITY = 0x80L;
+%constant int KTB_S_KTB = 2352;
+%constant int KTB_S_PHYPCB = 8;
+%constant int KTB_S_SINGLE_THREADED = 4;
+%constant int KTB_S_EPID_PROC = 21;
+%constant int KTB_S_EPID_NODE_IDX = 8;
+%constant int KTB_S_EPID_NODE_SEQ = 2;
+%constant int KTB_S_SINGLE_THREAD_ACT = 4;
+%constant int KTB_S_CAPABILITIES = 8;
+%constant int KTB_S_PERMANENT_CAPABILITIES = 8;
+%constant int KTB_S_SAVED_CAPABILITIES = 8;
+%constant int KTB_S_VOL_WAITS = 8;
+%constant int KTB_S_COMQ_WAIT = 8;
+%constant int KTB_S_RUNTIME_START = 8;
+%constant int KTB_S_INTTIME_START = 8;
+%constant int KTB_S_ACC_RUN = 8;
+%constant int KTB_S_ACC_WAIT = 8;
+%constant int KTB_S_ACC_INTERRUPT = 8;
+%constant int KTB_S_GLOCK = 8;
+%constant int KTB_S_SCHED_COUNT = 8;
+%constant int KTB_S_FRED = 8;
+%constant int KTB_S_VIRPCB = 8;
+%constant int KTB_S_TQE_FLAGS = 8;
+%constant int KTB_S_CBB_PERM_CPU_AFFINITY = 48;
+%constant int KTB_S_PERMANENT_CPU_AFFINITY = 8;
+%constant int KTB_S_CBB_CURRENT_AFFINITY = 48;
+%constant int KTB_S_CURRENT_AFFINITY = 8;
+%constant int KTB_S_CBB_ACTIVE_CPUS = 48;
+%constant int KTB_S_ACTIVE_CPUS = 8;
+%constant int KTB_S_CBB_AFFINITIES = 48;
+%constant int KTB_S_AFFINITIES = 8;
+%constant int KTB_S_CBB_PERMANENT_AFFINITIES = 48;
+%constant int KTB_S_PERMANENT_AFFINITIES = 8;
+%constant int KTB_S_CBB_SAVED_AFFINITIES = 48;
+%constant int KTB_S_SAVED_AFFINITIES = 8;
+%constant int KTB_S_FP_DISABLED_ACTION = 8;
+%constant int KTB_S_KT_KERNEL_COUNTER_FRAC = 8;
+%constant int KTB_S_KT_EXEC_COUNTER_FRAC = 8;
+%constant int KTB_S_KT_SUPER_COUNTER_FRAC = 8;
+%constant int KTB_S_KT_USER_COUNTER_FRAC = 8;
+%constant int KTB_S_FP_LOW_SEQUENCE_NUMBER = 8;
+%constant int KTB_S_FP_HIGH_SEQUENCE_NUMBER = 8;
+%constant int KTB_S_POWER_ACCOUNTING = 8;
+%constant int KTB_S_DEF_SCHED_FKB = 48;
+%constant int KTB_K_LENGTH = 2352;
+%constant int KTB_C_LENGTH = 2352;
+%constant int KTB_S_KTBDEF = 2352;
diff --git a/Modules/vms/ppropdef/ppropdef.i b/Modules/vms/ppropdef/ppropdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHByb3BkZWYvcHByb3BkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/ppropdef/ppropdef.i
@@ -0,0 +1,27 @@
+%module ppropdef
+
+%constant int PPROP_C_PARSE_STYLE_TEMP = 0;
+%constant int PPROP_C_PARSE_STYLE_PERM = 1;
+%constant int PPROP_C_HOME_RAD = 2;
+%constant int PPROP_C_CASE_LOOKUP_TEMP = 3;
+%constant int PPROP_C_CASE_LOOKUP_PERM = 4;
+%constant int PPROP_C_MEDDLE_ENABLE = 5;
+%constant int PPROP_C_MEDDLE = 6;
+%constant int PPROP_C_UNITS = 7;
+%constant int PPROP_C_SS_LOG_ENABLE = 8;
+%constant int PPROP_C_SS_LOG_DISABLE = 9;
+%constant int PPROP_C_SS_LOG_UNLOAD = 10;
+%constant int PPROP_C_TOKEN = 11;
+%constant int PPROP_C_DEADLOCK_WAIT = 12;
+%constant int PPROP_C_SEARCH_SYMLINK_TEMP = 13;
+%constant int PPROP_C_SEARCH_SYMLINK_PERM = 14;
+%constant int PPROP_C_KERNEL_THREAD_LIMIT = 15;
+%constant int PARSE_STYLE_C_ODS2 = 0;
+%constant int PARSE_STYLE_C_ODS5 = 1;
+%constant int PARSE_STYLE_C_TRADITIONAL = 0;
+%constant int PARSE_STYLE_C_EXTENDED = 1;
+%constant int PPROP_K_CASE_BLIND = 0;
+%constant int PPROP_K_CASE_SENSITIVE = 1;
+%constant int PPROP_K_SEARCH_SYMLINK_NONE = 1;
+%constant int PPROP_K_SEARCH_SYMLINK_ALL = 2;
+%constant int PPROP_K_SEARCH_SYMLINK_NOELLIPS = 3;
diff --git a/Modules/vms/pqldef/pqldef.i b/Modules/vms/pqldef/pqldef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHFsZGVmL3BxbGRlZi5p
--- /dev/null
+++ b/Modules/vms/pqldef/pqldef.i
@@ -0,0 +1,18 @@
+%module pqldef
+
+%constant int PQL__LISTEND = 0;
+%constant int PQL__ASTLM = 1;
+%constant int PQL__BIOLM = 2;
+%constant int PQL__BYTLM = 3;
+%constant int PQL__CPULM = 4;
+%constant int PQL__DIOLM = 5;
+%constant int PQL__FILLM = 6;
+%constant int PQL__PGFLQUOTA = 7;
+%constant int PQL__PRCLM = 8;
+%constant int PQL__TQELM = 9;
+%constant int PQL__WSQUOTA = 10;
+%constant int PQL__WSDEFAULT = 11;
+%constant int PQL__ENQLM = 12;
+%constant int PQL__WSEXTENT = 13;
+%constant int PQL__JTQUOTA = 14;
+%constant int PQL__LENGTH = 15;
diff --git a/Modules/vms/prcdef/prcdef.i b/Modules/vms/prcdef/prcdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJjZGVmL3ByY2RlZi5p
--- /dev/null
+++ b/Modules/vms/prcdef/prcdef.i
@@ -0,0 +1,42 @@
+%module prcdef
+
+%constant int PRC_M_SSRWAIT = 0x1L;
+%constant int PRC_M_SSFEXCU = 0x2L;
+%constant int PRC_M_PSWAPM = 0x4L;
+%constant int PRC_M_NOACNT = 0x8L;
+%constant int PRC_M_BATCH = 0x10L;
+%constant int PRC_M_HIBER = 0x20L;
+%constant int PRC_M_NOUAF = 0x40L;
+%constant int PRC_M_NETWRK = 0x80L;
+%constant int PRC_M_DISAWS = 0x100L;
+%constant int PRC_M_DETACH = 0x200L;
+%constant int PRC_M_INTER = 0x400L;
+%constant int PRC_M_IMGDMP = 0x800L;
+%constant int PRC_M_CLISPEC = 0x1000L;
+%constant int PRC_M_NOPASSWORD = 0x2000L;
+%constant int PRC_M_DEBUG = 0x4000L;
+%constant int PRC_M_DBGTRU = 0x8000L;
+%constant int PRC_M_SUBSYSTEM = 0x10000L;
+%constant int PRC_M_TCB = 0x20000L;
+%constant int PRC_M_NO_IMAGE_PRIVS = 0x40000L;
+%constant int PRC_M_PERM_SUBSYSTEM = 0x80000L;
+%constant int PRC_M_PARSE_EXTENDED = 0x100000L;
+%constant int PRC_M_INHERIT_PERSONA = 0x200000L;
+%constant int PRC_M_HOME_RAD = 0x400000L;
+%constant int PRC_M_CASE_SENSITIVE = 0x800000L;
+%constant int PRC_M_SPAWN_DETACHED = 0x1000000L;
+%constant int PRC_M_SSLOG_ENABLE = 0x2000000L;
+%constant int PRC_M_KT_LIMIT = 0x4000000L;
+%constant int PRC_M_LOGIN = 0x40L;
+%constant int PRC_S_PRCDEF = 4;
+%constant int PRC_M_IMPERSONATE = 512;
+%constant int PRC__LISTEND = 0;
+%constant int PRC__PGFLCHAR = 1;
+%constant int PRC__PGFLINDEX = 2;
+%constant int PRC__INPUT_ATT = 3;
+%constant int PRC__OUTPUT_ATT = 4;
+%constant int PRC__ERROR_ATT = 5;
+%constant int PRC__CLASS = 6;
+%constant int PRC__SSLOG_FLAGS = 7;
+%constant int PRC__SSLOG_BUFSIZE = 8;
+%constant int PRC__SSLOG_BUFCNT = 9;
diff --git a/Modules/vms/prdef/prdef.i b/Modules/vms/prdef/prdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJkZWYvcHJkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/prdef/prdef.i
@@ -0,0 +1,221 @@
+%module prdef
+
+%constant int PR__ESP = 1;
+%constant int PR__SSP = 2;
+%constant int PR__USP = 3;
+%constant int PR__ASN = 6;
+%constant int PR__ASTEN = 48;
+%constant int PR__ASTSR = 49;
+%constant int PR__DATFX = 23;
+%constant int PR__IPIR = 22;
+%constant int PR__IPL = 18;
+%constant int PR__MCES = 38;
+%constant int PR__PCBB = 16;
+%constant int PR__PME = 61;
+%constant int PR__PRBR = 15;
+%constant int PR__SCBB = 17;
+%constant int PR__SIRR = 20;
+%constant int PR__SISR = 21;
+%constant int PR__TBIA = 57;
+%constant int PR__TBIAP = 50;
+%constant int PR__TBIS = 58;
+%constant int PR__TBIS_64 = 60;
+%constant int PR__TBISD = 59;
+%constant int PR__TBISI = 47;
+%constant int PR__VPTB = 12;
+%constant int PR__SID_TYP780 = 1;
+%constant int PR__SID_TYP750 = 2;
+%constant int PR__SID_TYP730 = 3;
+%constant int PR__SID_TYP790 = 4;
+%constant int PR__SID_TYP8SS = 5;
+%constant int PR__SID_TYP8NN = 6;
+%constant int PR__SID_TYPUV1 = 7;
+%constant int PR__SID_TYPUV2 = 8;
+%constant int PR__SID_TYP410 = 8;
+%constant int PR__SID_TYP009 = 9;
+%constant int PR__SID_TYP420 = 10;
+%constant int PR__SID_TYP520 = 10;
+%constant int PR__SID_TYP650 = 10;
+%constant int PR__SID_TYP9CC = 10;
+%constant int PR__SID_TYP9CI = 10;
+%constant int PR__SID_TYP60 = 10;
+%constant int PR__SID_TYP670 = 11;
+%constant int PR__SID_TYP9RR = 11;
+%constant int PR__SID_TYP43 = 11;
+%constant int PR__SID_TYP9AQ = 14;
+%constant int PR__SID_TYP8PS = 17;
+%constant int PR__SID_TYP1202 = 18;
+%constant int PR__SID_TYP46 = 18;
+%constant int PR__SID_TYP600 = 19;
+%constant int PR__SID_TYP690 = 19;
+%constant int PR__SID_TYP700 = 19;
+%constant int PR__SID_TYP1302 = 19;
+%constant int PR__SID_TYP49 = 19;
+%constant int PR__SID_TYP1303 = 19;
+%constant int PR__SID_TYP660 = 20;
+%constant int PR__SID_TYP440 = 20;
+%constant int PR__SID_TYP4A = 20;
+%constant int PR__SID_TYP550 = 20;
+%constant int PR__SID_TYP1701 = 23;
+%constant int PR__SID_TYPMAX = 23;
+%constant int PR__SID_TYP_NOTAVAX = 128;
+%constant int PR__SID_TYPUV = 8;
+%constant int PR__XSID_UV_UV = 0;
+%constant int PR__XSID_UV_UV2 = 1;
+%constant int PR__XSID_UV_410 = 4;
+%constant int PR__SID_TYPCV = 10;
+%constant int PR__XSID_CV_CV = 0;
+%constant int PR__XSID_CV_650 = 1;
+%constant int PR__XSID_CV_9CC = 2;
+%constant int PR__XSID_CV_60 = 3;
+%constant int PR__XSID_CV_420 = 4;
+%constant int PR__XSID_CV_9CI = 5;
+%constant int PR__XSID_CV_520 = 7;
+%constant int PR__SID_TYPRV = 11;
+%constant int PR__XSID_RV_RV = 0;
+%constant int PR__XSID_RV_670 = 1;
+%constant int PR__XSID_RV_9RR = 2;
+%constant int PR__XSID_RV_43 = 4;
+%constant int PR__SID_TYPV12 = 18;
+%constant int PR__XSID_V12_V12 = 0;
+%constant int PR__XSID_V12_1202 = 2;
+%constant int PR__XSID_V12_46 = 4;
+%constant int PR__SID_TYPV13 = 19;
+%constant int PR__XSID_V13_V13 = 0;
+%constant int PR__XSID_V13_690 = 1;
+%constant int PR__XSID_V13_1302 = 2;
+%constant int PR__XSID_V13_1303 = 3;
+%constant int PR__XSID_V13_49 = 4;
+%constant int PR__XSID_V13_700 = 5;
+%constant int PR__XSID_V13_600 = 6;
+%constant int PR__SID_TYPV14 = 20;
+%constant int PR__XSID_V14_V14 = 0;
+%constant int PR__XSID_V14_660 = 1;
+%constant int PR__XSID_V14_440 = 4;
+%constant int PR__XSID_V14_4A = 5;
+%constant int PR__XSID_V14_550 = 7;
+%constant int PR__SID_TYPV17 = 23;
+%constant int PR__XSID_V17_V17 = 0;
+%constant int PR__XSID_V17_1701 = 1;
+%constant int PR__XSID_N8800 = 0;
+%constant int PR__XSID_N8700 = 1;
+%constant int PR__XSID_N2 = 2;
+%constant int PR__XSID_N3 = 3;
+%constant int PR__XSID_N4 = 4;
+%constant int PR__XSID_N5 = 5;
+%constant int PR__XSID_N8550 = 6;
+%constant int PR__XSID_N8500 = 7;
+%constant int PR__XSID_N8NNN = -1;
+%constant int PR_M_ASTEN = 0xFL;
+%constant int PR_M_ASTEN_KEN = 0x1L;
+%constant int PR_M_ASTEN_EEN = 0x2L;
+%constant int PR_M_ASTEN_SEN = 0x4L;
+%constant int PR_M_ASTEN_UEN = 0x8L;
+%constant int PR_M_ASTEN_DSBL_ALL = 0;
+%constant int PR_M_ASTEN_ENBL_ALL = 255;
+%constant int PR_M_ASTEN_ENBL_K = 17;
+%constant int PR_M_ASTEN_ENBL_E = 34;
+%constant int PR_M_ASTEN_ENBL_S = 68;
+%constant int PR_M_ASTEN_ENBL_U = 136;
+%constant int PR_M_ASTEN_PRSRV_ALL = 15;
+%constant int PR_M_ASTEN_PRSRV_K = 1;
+%constant int PR_M_ASTEN_PRSRV_E = 2;
+%constant int PR_M_ASTEN_PRSRV_S = 4;
+%constant int PR_M_ASTEN_PRSRV_U = 8;
+%constant int PR_M_ASTSR = 0xFL;
+%constant int PR_M_ASTSR_KPD = 0x1L;
+%constant int PR_M_ASTSR_EPD = 0x2L;
+%constant int PR_M_ASTSR_SPD = 0x4L;
+%constant int PR_M_ASTSR_UPD = 0x8L;
+%constant int PR_M_ASTSR_CLR_ALL = 0;
+%constant int PR_M_ASTSR_SET_ALL = 255;
+%constant int PR_M_ASTSR_SET_K = 17;
+%constant int PR_M_ASTSR_SET_E = 34;
+%constant int PR_M_ASTSR_SET_S = 68;
+%constant int PR_M_ASTSR_SET_U = 136;
+%constant int PR_M_ASTSR_PRSRV_ALL = 15;
+%constant int PR_M_ASTSR_PRSRV_K = 1;
+%constant int PR_M_ASTSR_PRSRV_E = 2;
+%constant int PR_M_ASTSR_PRSRV_S = 4;
+%constant int PR_M_ASTSR_PRSRV_U = 8;
+%constant int PR_M_FEN_FEN = 0x1L;
+%constant int PR_M_DATFX_DATFX = 0x1L;
+%constant int PR_M_IPL_IPL = 0x1FL;
+%constant int PR_M_MCES_MCK = 0x1L;
+%constant int PR_M_MCES_SCE = 0x2L;
+%constant int PR_M_MCES_PCE = 0x4L;
+%constant int PR_M_MCES_DPC = 0x8L;
+%constant int PR_M_MCES_DSC = 0x10L;
+%constant int PR_V_PCBB_PA = 0;
+%constant int PR_S_PCBB_PA = 48;
+%constant int PR_M_PS_SW = 0x3L;
+%constant int PR_M_PS_PRVMOD = 0x3L;
+%constant int PR_M_PS_SYSSTATE = 0x4L;
+%constant int PR_M_PS_CURMOD = 0x18L;
+%constant int PR_M_PS_VMM = 0x80L;
+%constant int PR_M_PS_IPL = 0x1F00L;
+%constant int PR_M_PS_SP_ALIGN = 0x3F00000000000000L;
+%constant int PR_M_PS_MBZ_62 = 0x4000000000000000L;
+%constant int PR_M_PS_MBZ_63 = 0x8000000000000000L;
+%constant int PR_V_PS_MAX_PS_REG_BIT = 13;
+%constant int PR_C_PS_KERNEL = 0;
+%constant int PR_C_PS_EXEC = 1;
+%constant int PR_C_PS_SUPER = 2;
+%constant int PR_C_PS_USER = 3;
+%constant int PR_M_PTBR_PFN = 0xFFFFFFFFL;
+%constant int PR_M_SCBB_PFN = 0xFFFFFFFFL;
+%constant int PR_M_SIRR_LVL = 0xFL;
+%constant int PR_M_SISR_SUMMARY = 0xFFFFL;
+%constant int PR_M_SISR_RAZ = 0x1L;
+%constant int PR_M_SISR_IR1 = 0x2L;
+%constant int PR_M_SISR_IR2 = 0x4L;
+%constant int PR_M_SISR_IR3 = 0x8L;
+%constant int PR_M_SISR_IR4 = 0x10L;
+%constant int PR_M_SISR_IR5 = 0x20L;
+%constant int PR_M_SISR_IR6 = 0x40L;
+%constant int PR_M_SISR_IR7 = 0x80L;
+%constant int PR_M_SISR_IR8 = 0x100L;
+%constant int PR_M_SISR_IR9 = 0x200L;
+%constant int PR_M_SISR_IR10 = 0x400L;
+%constant int PR_M_SISR_IR11 = 0x800L;
+%constant int PR_M_SISR_IR12 = 0x1000L;
+%constant int PR_M_SISR_IR13 = 0x2000L;
+%constant int PR_M_SISR_IR14 = 0x4000L;
+%constant int PR_M_SISR_IR15 = 0x8000L;
+%constant int PR_M_TBCHK_VA_PRESENT = 0x1L;
+%constant int PR_M_IEEE_DNOD = 0x800000000000L;
+%constant int PR_M_IEEE_DNZ = 0x1000000000000L;
+%constant int PR_M_IEEE_INVD = 0x2000000000000L;
+%constant int PR_M_IEEE_DZED = 0x4000000000000L;
+%constant int PR_M_IEEE_OVFD = 0x8000000000000L;
+%constant int PR_M_IEEE_INV = 0x10000000000000L;
+%constant int PR_M_IEEE_DZE = 0x20000000000000L;
+%constant int PR_M_IEEE_OVF = 0x40000000000000L;
+%constant int PR_M_IEEE_UNF = 0x80000000000000L;
+%constant int PR_M_IEEE_INE = 0x100000000000000L;
+%constant int PR_M_IEEE_IOV = 0x200000000000000L;
+%constant int PR_M_IEEE_UNDZ = 0x1000000000000000L;
+%constant int PR_M_IEEE_UNFD = 0x2000000000000000L;
+%constant int PR_M_IEEE_INED = 0x4000000000000000L;
+%constant int PR_M_IEEE_SUMMARY = 0x8000000000000000L;
+%constant int PR_S_PRDEF = 8;
+%constant int PR_S_QUAD_ACCESS = 8;
+%constant int PR_S_LONG_ACCESS = 8;
+%constant int PR_S_SID_SN = 12;
+%constant int PR_S_SID_PL = 3;
+%constant int PR_S_SID_ECO = 9;
+%constant int PR_S_SID_TYPE = 8;
+%constant int PR_S_XSID_TYPE = 8;
+%constant int PR_S_ASTEN = 4;
+%constant int PR_S_ASTSR = 4;
+%constant int PR_S_IPL_IPL = 5;
+%constant int PR_S_PS_SW = 2;
+%constant int PR_S_PS_PRVMOD = 2;
+%constant int PR_S_PS_CURMOD = 2;
+%constant int PR_S_PS_IPL = 5;
+%constant int PR_S_PS_SP_ALIGN = 6;
+%constant int PR_S_PTBR_PFN = 32;
+%constant int PR_S_SCBB_PFN = 32;
+%constant int PR_S_SIRR_LVL = 4;
+%constant int PR_S_SISR_SUMMARY = 16;
+%constant int PR_S_IEEE_DYN_RND = 2;
diff --git a/Modules/vms/prvdef/prvdef.i b/Modules/vms/prvdef/prvdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJ2ZGVmL3BydmRlZi5p
--- /dev/null
+++ b/Modules/vms/prvdef/prvdef.i
@@ -0,0 +1,53 @@
+%module prvdef
+
+%constant int PRV_M_CMKRNL = 0x1L;
+%constant int PRV_M_CMEXEC = 0x2L;
+%constant int PRV_M_SYSNAM = 0x4L;
+%constant int PRV_M_GRPNAM = 0x8L;
+%constant int PRV_M_ALLSPOOL = 0x10L;
+%constant int PRV_M_IMPERSONATE = 0x20L;
+%constant int PRV_M_DIAGNOSE = 0x40L;
+%constant int PRV_M_LOG_IO = 0x80L;
+%constant int PRV_M_GROUP = 0x100L;
+%constant int PRV_M_NOACNT = 0x200L;
+%constant int PRV_M_PRMCEB = 0x400L;
+%constant int PRV_M_PRMMBX = 0x800L;
+%constant int PRV_M_PSWAPM = 0x1000L;
+%constant int PRV_M_SETPRI = 0x2000L;
+%constant int PRV_M_SETPRV = 0x4000L;
+%constant int PRV_M_TMPMBX = 0x8000L;
+%constant int PRV_M_WORLD = 0x10000L;
+%constant int PRV_M_MOUNT = 0x20000L;
+%constant int PRV_M_OPER = 0x40000L;
+%constant int PRV_M_EXQUOTA = 0x80000L;
+%constant int PRV_M_NETMBX = 0x100000L;
+%constant int PRV_M_VOLPRO = 0x200000L;
+%constant int PRV_M_PHY_IO = 0x400000L;
+%constant int PRV_M_BUGCHK = 0x800000L;
+%constant int PRV_M_PRMGBL = 0x1000000L;
+%constant int PRV_M_SYSGBL = 0x2000000L;
+%constant int PRV_M_PFNMAP = 0x4000000L;
+%constant int PRV_M_SHMEM = 0x8000000L;
+%constant int PRV_M_SYSPRV = 0x10000000L;
+%constant int PRV_M_BYPASS = 0x20000000L;
+%constant int PRV_M_SYSLCK = 0x40000000L;
+%constant int PRV_M_SHARE = 0x80000000L;
+%constant int PRV_M_UPGRADE = 0x100000000L;
+%constant int PRV_M_DOWNGRADE = 0x200000000L;
+%constant int PRV_M_GRPPRV = 0x400000000L;
+%constant int PRV_M_READALL = 0x800000000L;
+%constant int PRV_M_IMPORT = 0x1000000000L;
+%constant int PRV_M_AUDIT = 0x2000000000L;
+%constant int PRV_M_SECURITY = 0x4000000000L;
+%constant int PRV_K_NUMBER_OF_PRIVS = 39;
+%constant int PRV_M_ACNT = 0x200L;
+%constant int PRV_M_ALTPRI = 0x2000L;
+%constant int PRV_M_DETACH = 0x20L;
+%constant int PRV_S_PRVDEF = 8;
+%constant int PRV_M_SORTED = 0x1L;
+%constant int PRV_M_BRIEF = 0x2L;
+%constant int PRV_M_FILLED = 0x4L;
+%constant int PRV_S_PRVDSP_BITS = 1;
+%constant int PRV_K_PRVMASK_WORKING = 0;
+%constant int PRV_K_PRVMASK_PERMANENT = 1;
+%constant int PRV_K_PRVMASK_IMAGE = 2;
diff --git a/Modules/vms/prxdef/prxdef.i b/Modules/vms/prxdef/prxdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJ4ZGVmL3ByeGRlZi5p
--- /dev/null
+++ b/Modules/vms/prxdef/prxdef.i
@@ -0,0 +1,42 @@
+%module prxdef
+
+%constant int PRX_K_ADD = 1;
+%constant int PRX_K_DELETE = 2;
+%constant int PRX_K_SHOW = 3;
+%constant int PRX_K_VERIFY = 4;
+%constant int PRX_K_PERFORMANCE = 5;
+%constant int PRX_K_ZERO_PERFORMANCE = 6;
+%constant int PRX_K_CREATE = 7;
+%constant int PRX_K_STOP = 8;
+%constant int PRX_K_START = 9;
+%constant int PRX_K_MAX_PROXY_CODE = 10;
+%constant int PRX_K_PERFORMANCE_LENGTH = 48;
+%constant int PRX_S_PERFORMANCE = 48;
+%constant int PRX_M_IGNORE_RETURN = 0x1L;
+%constant int PRX_M_BYPASS_EXPAND = 0x2L;
+%constant int PRX_M_RESERVE_1 = 0xFCL;
+%constant int PRX_M_DEFAULT = 0x100L;
+%constant int PRX_M_EXACT = 0x200L;
+%constant int PRX_M_DELETE_ALLOWED = 0x400L;
+%constant int PRX_M_FILL_1 = 0xFFFFF800L;
+%constant int PRX_K_HEADER_LENGTH = 8;
+%constant int PRX_S_HEADER = 8;
+%constant int PRX_S_FILL_1 = 21;
+%constant int PRX_S_PRX_GENERIC_DESC1 = 5;
+%constant int PRX_K_USER_NAME_LENGTH = 32;
+%constant int PRX_K_REMOTE_NODE_NAME_LENGTH = 1024;
+%constant int PRX_K_MAX_LOCAL_USERS = 16;
+%constant int PRX_K_LOCAL_USER_ENTRY = 36;
+%constant int PRX_S_DATA = 1100;
+%constant int PRX_S_LOCAL_USER_NAME = 32;
+%constant int PRX_S_REMOTE_USER_NAME = 32;
+%constant int PRX_S_REMOTE_NODE_NAME = 1024;
+%constant int PRX_K_DATA_LENGTH = 1100;
+%constant int PRX_S_BUFSIZ_SUMMARY = 8;
+%constant int PRX_K_MAX_REPLY = 1692;
+%constant int PRX_S_REPLY_UNION = 88;
+%constant int PRX_S_VALID_USER = 32;
+%constant int PRX_S_SHOW_DEF_USER = 32;
+%constant int PRX_S_SHOW_REM_USER = 32;
+%constant int PRX_S_SHOW_LOCAL_DATA = 4;
+%constant int PRX_K_MAX_LENGTH = 1108;
diff --git a/Modules/vms/pscandef/pscandef.i b/Modules/vms/pscandef/pscandef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHNjYW5kZWYvcHNjYW5kZWYuaQ==
--- /dev/null
+++ b/Modules/vms/pscandef/pscandef.i
@@ -0,0 +1,48 @@
+%module pscandef
+
+%constant int pscan__BEGIN = 0;
+%constant int pscan__ACCOUNT = 1;
+%constant int pscan__AUTHPRI = 2;
+%constant int pscan__CURPRIV = 3;
+%constant int pscan__GRP = 4;
+%constant int pscan__HW_MODEL = 5;
+%constant int pscan__HW_NAME = 6;
+%constant int pscan__JOBPRCCNT = 7;
+%constant int pscan__JOBTYPE = 8;
+%constant int pscan__MASTER_PID = 9;
+%constant int pscan__MEM = 10;
+%constant int pscan__MODE = 11;
+%constant int pscan__NODE_CSID = 12;
+%constant int pscan__NODENAME = 13;
+%constant int pscan__OWNER = 14;
+%constant int pscan__PRCCNT = 15;
+%constant int pscan__PRCNAM = 16;
+%constant int pscan__PRI = 17;
+%constant int pscan__PRIB = 18;
+%constant int pscan__STATE = 19;
+%constant int pscan__STS = 20;
+%constant int pscan__TERMINAL = 21;
+%constant int pscan__UIC = 22;
+%constant int pscan__USERNAME = 23;
+%constant int pscan__GETJPI_BUFFER_SIZE = 24;
+%constant int pscan__PSCAN_CONTROL_FLAGS = 25;
+%constant int pscan__KT_COUNT = 26;
+%constant int pscan__MULTITHREAD = 27;
+%constant int pscan__SCHED_CLASS_NAME = 28;
+%constant int pscan__END = 29;
+%constant int pscan_k_type = 129;
+%constant int PSCAN_M_THREAD = 0x1L;
+%constant int PSCAN_S_PSCANCTLDEF = 4;
+%constant int pscan_M_OR = 0x1L;
+%constant int pscan_M_BIT_ALL = 0x2L;
+%constant int pscan_M_BIT_ANY = 0x4L;
+%constant int pscan_M_GEQ = 0x8L;
+%constant int pscan_M_GTR = 0x10L;
+%constant int pscan_M_LEQ = 0x20L;
+%constant int pscan_M_LSS = 0x40L;
+%constant int pscan_M_PREFIX_MATCH = 0x80L;
+%constant int pscan_M_WILDCARD = 0x100L;
+%constant int pscan_M_CASE_BLIND = 0x200L;
+%constant int pscan_M_EQL = 0x400L;
+%constant int pscan_M_NEQ = 0x800L;
+%constant int pscan_S_item_specific_flags = 2;
diff --git a/Modules/vms/psldef/psldef.i b/Modules/vms/psldef/psldef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHNsZGVmL3BzbGRlZi5p
--- /dev/null
+++ b/Modules/vms/psldef/psldef.i
@@ -0,0 +1,14 @@
+%module psldef
+
+%constant int PSL_M_PRVMOD = 0x3L;
+%constant int PSL_M_CURMOD = 0x18L;
+%constant int PSL_M_IPL = 0x1F00L;
+%constant int PSL_V_MAX_PS_REG_BIT = 13;
+%constant int PSL_C_KERNEL = 0;
+%constant int PSL_C_EXEC = 1;
+%constant int PSL_C_SUPER = 2;
+%constant int PSL_C_USER = 3;
+%constant int PSL_S_PSLDEF = 2;
+%constant int PSL_S_PRVMOD = 2;
+%constant int PSL_S_CURMOD = 2;
+%constant int PSL_S_IPL = 5;
diff --git a/Modules/vms/pxbdef/pxbdef.i b/Modules/vms/pxbdef/pxbdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHhiZGVmL3B4YmRlZi5p
--- /dev/null
+++ b/Modules/vms/pxbdef/pxbdef.i
@@ -0,0 +1,48 @@
+%module pxbdef
+
+%constant int PXB_S_PXB = 12;
+%constant int PXB_K_LENGTH = 12;
+%constant int PXB_ARRAY_ELEMENTS = 16;
+%constant int PXB_ARRAY_K_PXB_ARRAY_HEADER = 12;
+%constant int PXB_ARRAY_S_PXB_ARRAY = 76;
+%constant int PXB_ARRAY_S_ELEMENTS = 64;
+%constant int DELBK_S_DELBK = 40;
+%constant int DELBK_C_DELEGATE_BLOCK_SIZE = 40;
+%constant int PXRB_S_PXRB = 88;
+%constant int PXRB_S_NAME_DESC = 8;
+%constant int PXRB_S_NAME = 32;
+%constant int PXRB_K_LENGTH = 88;
+%constant int PXDV_K_version = 1;
+%constant int PXDV_K_min_version = 1;
+%constant int PXDV_K_max_version = 1;
+%constant int PXDV_S_PXDV = 40;
+%constant int PXBNT_K_VERSION_1 = 1;
+%constant int PXBNT_K_CURRENT_VERSION = 1;
+%constant int PXBNT_M_CLONE = 0x1L;
+%constant int PXBNT_M_DELEGATE = 0x2L;
+%constant int PXBNT_M_FILL_3 = 0x4L;
+%constant int PXBNT_M_FILL_4 = 0x8L;
+%constant int PXBNT_M_FILL_5 = 0x10L;
+%constant int PXBNT_M_FILL_6 = 0x20L;
+%constant int PXBNT_M_FILL_7 = 0x40L;
+%constant int PXBNT_M_DEBIT = 0x80L;
+%constant int PXBNT_K_LENGTH = 88;
+%constant int PXBNT_S_PXBNT = 88;
+%constant int PXBNT_S_DOI = 8;
+%constant int PXBNT_S_NT_OWF_PASSWORD = 16;
+%constant int PXBNT_S_LM_OWF_PASSWORD = 16;
+%constant int PXB_M_FILL_1 = 0x1L;
+%constant int PXB_M_FILL_2 = 0x2L;
+%constant int PXB_M_FILL_3 = 0x4L;
+%constant int PXB_M_FILL_4 = 0x8L;
+%constant int PXB_M_FILL_5 = 0x10L;
+%constant int PXB_M_FILL_6 = 0x20L;
+%constant int PXB_M_FILL_7 = 0x40L;
+%constant int PXB_M_DEBIT = 0x80L;
+%constant int PXB_S_PXB_FLAGS = 4;
+%constant int PXB_M_PRIMARY_EXTENSION = 0x1L;
+%constant int PXB_S_CREATE_FLAGS = 4;
+%constant int TOKEN_K_USERSESSIONKEY_OFFSET = 120;
+%constant int TOKEN_K_USERSESSIONKEY_SIZE = 16;
+%constant int TOKEN_K_LMSESSIONKEY_OFFSET = 136;
+%constant int TOKEN_K_LMSESSIONKEY_SIZE = 8;
diff --git a/Modules/vms/quidef/quidef.i b/Modules/vms/quidef/quidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcXVpZGVmL3F1aWRlZi5p
--- /dev/null
+++ b/Modules/vms/quidef/quidef.i
@@ -0,0 +1,346 @@
+%module quidef
+
+%constant int QUI__CANCEL_OPERATION = 1;
+%constant int QUI__DISPLAY_CHARACTERISTIC = 2;
+%constant int QUI__DISPLAY_FILE = 3;
+%constant int QUI__DISPLAY_FORM = 4;
+%constant int QUI__DISPLAY_JOB = 5;
+%constant int QUI__DISPLAY_QUEUE = 6;
+%constant int QUI__TRANSLATE_QUEUE = 7;
+%constant int QUI__DISPLAY_ENTRY = 8;
+%constant int QUI__DISPLAY_QMAN = 9;
+%constant int QUI__DISPLAY_MANAGER = 10;
+%constant int QUI_K_MIN_FUNC = 1;
+%constant int QUI_K_MAX_FUNC = 10;
+%constant int QUI__ACCOUNT_NAME = 1;
+%constant int QUI__AFTER_TIME = 2;
+%constant int QUI__ASSIGNED_QUEUE_NAME = 3;
+%constant int QUI__BASE_PRIORITY = 4;
+%constant int QUI__CHARACTERISTIC_NAME = 5;
+%constant int QUI__CHARACTERISTIC_NUMBER = 6;
+%constant int QUI__CHARACTERISTICS = 7;
+%constant int QUI__CHECKPOINT_DATA = 8;
+%constant int QUI__CLI = 9;
+%constant int QUI__COMPLETED_BLOCKS = 10;
+%constant int QUI__CONDITION_VECTOR = 11;
+%constant int QUI__CPU_DEFAULT = 12;
+%constant int QUI__CPU_LIMIT = 13;
+%constant int QUI__DEVICE_NAME = 14;
+%constant int QUI__ENTRY_NUMBER = 15;
+%constant int QUI__FILE_COPIES = 16;
+%constant int QUI__FILE_COPIES_CHKPT = 17;
+%constant int QUI__FILE_COPIES_DONE = 18;
+%constant int QUI__FILE_FLAGS = 19;
+%constant int QUI__FILE_SETUP_MODULES = 20;
+%constant int QUI__FILE_SPECIFICATION = 21;
+%constant int QUI__FILE_STATUS = 22;
+%constant int QUI__FIRST_PAGE = 23;
+%constant int QUI__FORM_DESCRIPTION = 24;
+%constant int QUI__FORM_FLAGS = 25;
+%constant int QUI__FORM_LENGTH = 26;
+%constant int QUI__FORM_MARGIN_BOTTOM = 27;
+%constant int QUI__FORM_MARGIN_LEFT = 28;
+%constant int QUI__FORM_MARGIN_RIGHT = 29;
+%constant int QUI__FORM_MARGIN_TOP = 30;
+%constant int QUI__FORM_NAME = 31;
+%constant int QUI__FORM_NUMBER = 32;
+%constant int QUI__FORM_SETUP_MODULES = 33;
+%constant int QUI__FORM_STOCK = 34;
+%constant int QUI__FORM_WIDTH = 35;
+%constant int QUI__GENERIC_TARGET = 36;
+%constant int QUI__INTERVENING_BLOCKS = 37;
+%constant int QUI__INTERVENING_JOBS = 38;
+%constant int QUI__JOB_COPIES = 39;
+%constant int QUI__JOB_COPIES_CHKPT = 40;
+%constant int QUI__JOB_COPIES_DONE = 41;
+%constant int QUI__JOB_FLAGS = 42;
+%constant int QUI__JOB_LIMIT = 43;
+%constant int QUI__JOB_NAME = 44;
+%constant int QUI__JOB_RESET_MODULES = 45;
+%constant int QUI__JOB_SIZE = 46;
+%constant int QUI__JOB_SIZE_MAXIMUM = 47;
+%constant int QUI__JOB_SIZE_MINIMUM = 48;
+%constant int QUI__JOB_STATUS = 49;
+%constant int QUI__LAST_PAGE = 50;
+%constant int QUI__LIBRARY_SPECIFICATION = 51;
+%constant int QUI__LOG_QUEUE = 52;
+%constant int QUI__LOG_SPECIFICATION = 53;
+%constant int QUI__NOTE = 54;
+%constant int QUI__OPERATOR_REQUEST = 55;
+%constant int QUI__OWNER_UIC = 56;
+%constant int QUI__PAGE_SETUP_MODULES = 57;
+%constant int QUI__PARAMETER_1 = 58;
+%constant int QUI__PARAMETER_2 = 59;
+%constant int QUI__PARAMETER_3 = 60;
+%constant int QUI__PARAMETER_4 = 61;
+%constant int QUI__PARAMETER_5 = 62;
+%constant int QUI__PARAMETER_6 = 63;
+%constant int QUI__PARAMETER_7 = 64;
+%constant int QUI__PARAMETER_8 = 65;
+%constant int QUI__PRIORITY = 66;
+%constant int QUI__PROCESSOR = 67;
+%constant int QUI__PROTECTION = 68;
+%constant int QUI__QUEUE_FLAGS = 69;
+%constant int QUI__QUEUE_NAME = 70;
+%constant int QUI__QUEUE_STATUS = 71;
+%constant int QUI__REFUSAL_REASON = 72;
+%constant int QUI__REQUEUE_PRIORITY = 73;
+%constant int QUI__REQUEUE_QUEUE_NAME = 74;
+%constant int QUI__SCSNODE_NAME = 75;
+%constant int QUI__SEARCH_FLAGS = 76;
+%constant int QUI__SEARCH_NAME = 77;
+%constant int QUI__SEARCH_NUMBER = 78;
+%constant int QUI__SUBMISSION_TIME = 79;
+%constant int QUI__UIC = 80;
+%constant int QUI__USERNAME = 81;
+%constant int QUI__WSDEFAULT = 82;
+%constant int QUI__WSEXTENT = 83;
+%constant int QUI__WSQUOTA = 84;
+%constant int QUI__RAD = 85;
+%constant int QUI__RESERVED_OUTPUT_86 = 86;
+%constant int QUI__JOB_CONTROL_GQC = 87;
+%constant int QUI__SEARCH_USERNAME = 88;
+%constant int QUI__DEFAULT_FORM_NAME = 89;
+%constant int QUI__DEFAULT_FORM_NUMBER = 90;
+%constant int QUI__DEFAULT_FORM_STOCK = 91;
+%constant int QUI__JOB_PID = 92;
+%constant int QUI__FILE_IDENTIFICATION = 93;
+%constant int QUI__PENDING_JOB_BLOCK_COUNT = 94;
+%constant int QUI__JOB_RETENTION_TIME = 95;
+%constant int QUI__JOB_COMPLETION_TIME = 96;
+%constant int QUI__JOB_COMPLETION_QUEUE = 97;
+%constant int QUI__RESERVED_OUTPUT_98 = 98;
+%constant int QUI__RESERVED_OUTPUT_99 = 99;
+%constant int QUI__RESERVED_OUTPUT_100 = 100;
+%constant int QUI__RESERVED_OUTPUT_101 = 101;
+%constant int QUI__RESERVED_OUTPUT_102 = 102;
+%constant int QUI__SEARCH_BATCH_EPID = 103;
+%constant int QUI__SEARCH_JOB_NAME = 104;
+%constant int QUI__RESERVED_INPUT_105 = 105;
+%constant int QUI__RESERVED_INPUT_106 = 106;
+%constant int QUI__EXECUTING_JOB_COUNT = 107;
+%constant int QUI__HOLDING_JOB_COUNT = 108;
+%constant int QUI__TIMED_RELEASE_JOB_COUNT = 109;
+%constant int QUI__PENDING_JOB_REASON = 110;
+%constant int QUI__ORB = 111;
+%constant int QUI__QUEUE_DESCRIPTION = 112;
+%constant int QUI__SYMBIONT_FLAGS = 113;
+%constant int QUI__JOB_ACCESS_CLASS = 114;
+%constant int QUI__ORB_LOCK_KEY = 115;
+%constant int QUI__CHECKPOINT_FREQUENCY = 116;
+%constant int QUI__PENDING_JOB_COUNT = 117;
+%constant int QUI__RETAINED_JOB_COUNT = 118;
+%constant int QUI__RESTART_QUEUE_NAME = 119;
+%constant int QUI__FILE_COUNT = 120;
+%constant int QUI__ATTRIBUTES = 121;
+%constant int QUI__ATTRIBUTES_SIZE = 122;
+%constant int QUI__QUEUE_SUPPORT = 123;
+%constant int QUI__QUEUE_ATTRIBUTES = 124;
+%constant int QUI__QUEUE_ATTRIBUTES_SIZE = 125;
+%constant int QUI__JOB_ATTRIBUTES = 126;
+%constant int QUI__JOB_ATTRIBUTES_SIZE = 127;
+%constant int QUI__FILE_ATTRIBUTES = 128;
+%constant int QUI__FILE_ATTRIBUTES_SIZE = 129;
+%constant int QUI__AUTOSTART_ON = 130;
+%constant int QUI__AGENT_PROFILE = 131;
+%constant int QUI__MANAGER_NAME = 132;
+%constant int QUI__MANAGER_STATUS = 133;
+%constant int QUI__RESERVED_OUTPUT_134 = 134;
+%constant int QUI__MANAGER_NODES = 135;
+%constant int QUI__MANAGER_AUTOSTART = 136;
+%constant int QUI__QUEUE_DIRECTORY = 137;
+%constant int QUI__RESERVED_OUTPUT_138 = 138;
+%constant int QUI__RESERVED_OUTPUT_139 = 139;
+%constant int QUI__RESERVED_OUTPUT_140 = 140;
+%constant int QUI__RESERVED_OUTPUT_141 = 141;
+%constant int QUI__RESERVED_OUTPUT_142 = 142;
+%constant int QUI__RESERVED_OUTPUT_143 = 143;
+%constant int QUI__RESERVED_OUTPUT_144 = 144;
+%constant int QUI__RESERVED_OUTPUT_145 = 145;
+%constant int QUI__RESERVED_OUTPUT_146 = 146;
+%constant int QUI__RESERVED_OUTPUT_147 = 147;
+%constant int QUI__RESERVED_OUTPUT_148 = 148;
+%constant int QUI__RESERVED_OUTPUT_149 = 149;
+%constant int QUI__RESERVED_OUTPUT_150 = 150;
+%constant int QUI__RESERVED_OUTPUT_151 = 151;
+%constant int QUI__RESERVED_OUTPUT_152 = 152;
+%constant int QUI__RESERVED_OUTPUT_153 = 153;
+%constant int QUI__RESERVED_OUTPUT_154 = 154;
+%constant int QUI__RESERVED_OUTPUT_155 = 155;
+%constant int QUI__RESERVED_OUTPUT_156 = 156;
+%constant int QUI__RESERVED_OUTPUT_157 = 157;
+%constant int QUI__RESERVED_OUTPUT_158 = 158;
+%constant int QUI__RESERVED_OUTPUT_159 = 159;
+%constant int QUI__RESERVED_INPUT_160 = 160;
+%constant int QUI__RESERVED_INPUT_161 = 161;
+%constant int QUI__RESERVED_INPUT_162 = 162;
+%constant int QUI__RESERVED_INPUT_163 = 163;
+%constant int QUI__RESERVED_INPUT_164 = 164;
+%constant int QUI__RESERVED_INPUT_165 = 165;
+%constant int QUI_K_MIN_ITEM = 1;
+%constant int QUI_K_MAX_ITEM = 165;
+%constant int QUI__CHARGE_CODE = 1;
+%constant int QUI_M_FILE_BURST = 0x1L;
+%constant int QUI_M_FILE_BURST_EXP = 0x2L;
+%constant int QUI_M_FILE_DELETE = 0x4L;
+%constant int QUI_M_FILE_DOUBLE_SPACE = 0x8L;
+%constant int QUI_M_FILE_FLAG = 0x10L;
+%constant int QUI_M_FILE_FLAG_EXP = 0x20L;
+%constant int QUI_M_FILE_TRAILER = 0x40L;
+%constant int QUI_M_FILE_TRAILER_EXP = 0x80L;
+%constant int QUI_M_FILE_PAGE_HEADER = 0x100L;
+%constant int QUI_M_FILE_PAGINATE = 0x200L;
+%constant int QUI_M_FILE_PASSALL = 0x400L;
+%constant int QUI_M_FILE_PAGINATE_EXP = 0x800L;
+%constant int QUI_M_FILE_DELETE_ALWAYS = 0x1000L;
+%constant int QUI_S_FILE_FLAGS = 4;
+%constant int QUI_M_FILE_CHECKPOINTED = 0x1L;
+%constant int QUI_M_FILE_EXECUTING = 0x2L;
+%constant int QUI_S_FILE_STATUS = 4;
+%constant int QUI_M_FORM_SHEET_FEED = 0x1L;
+%constant int QUI_M_FORM_TRUNCATE = 0x2L;
+%constant int QUI_M_FORM_WRAP = 0x4L;
+%constant int QUI_S_FORM_FLAGS = 4;
+%constant int QUI_M_JOB_CPU_LIMIT = 0x1L;
+%constant int QUI_M_JOB_FILE_BURST = 0x2L;
+%constant int QUI_M_JOB_FILE_BURST_ONE = 0x4L;
+%constant int QUI_M_JOB_FILE_BURST_EXP = 0x8L;
+%constant int QUI_M_JOB_FILE_FLAG = 0x10L;
+%constant int QUI_M_JOB_FILE_FLAG_ONE = 0x20L;
+%constant int QUI_M_JOB_FILE_FLAG_EXP = 0x40L;
+%constant int QUI_M_JOB_FILE_TRAILER = 0x80L;
+%constant int QUI_M_JOB_FILE_TRAILER_ONE = 0x100L;
+%constant int QUI_M_JOB_FILE_TRAILER_EXP = 0x200L;
+%constant int QUI_M_JOB_LOG_DELETE = 0x400L;
+%constant int QUI_M_JOB_LOG_NULL = 0x800L;
+%constant int QUI_M_JOB_LOG_SPOOL = 0x1000L;
+%constant int QUI_M_JOB_LOWERCASE = 0x2000L;
+%constant int QUI_M_JOB_NOTIFY = 0x4000L;
+%constant int QUI_M_JOB_RESTART = 0x8000L;
+%constant int QUI_M_JOB_WSDEFAULT = 0x10000L;
+%constant int QUI_M_JOB_WSEXTENT = 0x20000L;
+%constant int QUI_M_JOB_WSQUOTA = 0x40000L;
+%constant int QUI_M_JOB_FILE_PAGINATE = 0x80000L;
+%constant int QUI_M_JOB_FILE_PAGINATE_EXP = 0x100000L;
+%constant int QUI_M_JOB_RETENTION = 0x200000L;
+%constant int QUI_M_JOB_ERROR_RETENTION = 0x400000L;
+%constant int QUI_M_JOB_RAD = 0x800000L;
+%constant int QUI_S_JOB_FLAGS = 4;
+%constant int QUI_M_JOB_ABORTING = 0x1L;
+%constant int QUI_M_JOB_EXECUTING = 0x2L;
+%constant int QUI_M_JOB_HOLDING = 0x4L;
+%constant int QUI_M_JOB_INACCESSIBLE = 0x8L;
+%constant int QUI_M_JOB_REFUSED = 0x10L;
+%constant int QUI_M_JOB_REQUEUE = 0x20L;
+%constant int QUI_M_JOB_RESTARTING = 0x40L;
+%constant int QUI_M_JOB_RETAINED = 0x80L;
+%constant int QUI_M_JOB_STARTING = 0x100L;
+%constant int QUI_M_JOB_TIMED_RELEASE = 0x200L;
+%constant int QUI_M_JOB_SUSPENDED = 0x400L;
+%constant int QUI_M_JOB_PENDING = 0x800L;
+%constant int QUI_M_JOB_UNDEFINED = 0x1000L;
+%constant int QUI_M_JOB_STALLED = 0x2000L;
+%constant int QUI_M_JOB_INCOMPLETE = 0x4000L;
+%constant int QUI_M_JOB_COMPLETING = 0x8000L;
+%constant int QUI_S_JOB_STATUS = 4;
+%constant int QUI_V_JOB_TIMED = 9;
+%constant int QUI_M_JOB_TIMED = 512;
+%constant int QUI_M_PEND_CHAR_MISMATCH = 0x1L;
+%constant int QUI_M_PEND_JOB_SIZE_MAX = 0x2L;
+%constant int QUI_M_PEND_JOB_SIZE_MIN = 0x4L;
+%constant int QUI_M_PEND_LOWERCASE_MISMATCH = 0x8L;
+%constant int QUI_M_PEND_NO_ACCESS = 0x10L;
+%constant int QUI_M_PEND_QUEUE_BUSY = 0x20L;
+%constant int QUI_M_PEND_QUEUE_STATE = 0x40L;
+%constant int QUI_M_PEND_STOCK_MISMATCH = 0x80L;
+%constant int QUI_S_PENDING_JOB_REASON = 4;
+%constant int QUI_M_QUEUE_BATCH = 0x1L;
+%constant int QUI_M_QUEUE_CPU_DEFAULT = 0x2L;
+%constant int QUI_M_QUEUE_CPU_LIMIT = 0x4L;
+%constant int QUI_M_QUEUE_FILE_BURST = 0x8L;
+%constant int QUI_M_QUEUE_FILE_BURST_ONE = 0x10L;
+%constant int QUI_M_QUEUE_FILE_FLAG = 0x20L;
+%constant int QUI_M_QUEUE_FILE_FLAG_ONE = 0x40L;
+%constant int QUI_M_QUEUE_FILE_TRAILER = 0x80L;
+%constant int QUI_M_QUEUE_FILE_TRAILER_ONE = 0x100L;
+%constant int QUI_M_QUEUE_GENERIC = 0x200L;
+%constant int QUI_M_QUEUE_GENERIC_SELECTION = 0x400L;
+%constant int QUI_M_QUEUE_JOB_BURST = 0x800L;
+%constant int QUI_M_QUEUE_JOB_FLAG = 0x1000L;
+%constant int QUI_M_QUEUE_JOB_SIZE_SCHED = 0x2000L;
+%constant int QUI_M_QUEUE_JOB_TRAILER = 0x4000L;
+%constant int QUI_M_QUEUE_RETAIN_ALL = 0x8000L;
+%constant int QUI_M_QUEUE_RETAIN_ERROR = 0x10000L;
+%constant int QUI_M_QUEUE_SWAP = 0x20000L;
+%constant int QUI_M_QUEUE_TERMINAL = 0x40000L;
+%constant int QUI_M_QUEUE_WSDEFAULT = 0x80000L;
+%constant int QUI_M_QUEUE_WSEXTENT = 0x100000L;
+%constant int QUI_M_QUEUE_WSQUOTA = 0x200000L;
+%constant int QUI_M_QUEUE_FILE_PAGINATE = 0x400000L;
+%constant int QUI_M_QUEUE_RECORD_BLOCKING = 0x800000L;
+%constant int QUI_M_QUEUE_PRINTER = 0x1000000L;
+%constant int QUI_M_QUEUE_ACL_SPECIFIED = 0x2000000L;
+%constant int QUI_M_QUEUE_NOTIFY_ON_INTERRUPT = 0x4000000L;
+%constant int QUI_M_QUEUE_CHECKPOINT_FREQ = 0x8000000L;
+%constant int QUI_M_QUEUE_AUTOSTART = 0x10000000L;
+%constant int QUI_M_SECURITY_INACCESSIBLE = 0x20000000L;
+%constant int QUI_M_QUEUE_NO_INITIAL_FF = 0x40000000L;
+%constant int QUI_M_QUEUE_RAD = 0x80000000L;
+%constant int QUI_S_QUEUE_FLAGS = 4;
+%constant int QUI_M_QUEUE_ALIGNING = 0x1L;
+%constant int QUI_M_QUEUE_IDLE = 0x2L;
+%constant int QUI_M_QUEUE_LOWERCASE = 0x4L;
+%constant int QUI_M_QUEUE_OPERATOR_REQUEST = 0x8L;
+%constant int QUI_M_QUEUE_PAUSED = 0x10L;
+%constant int QUI_M_QUEUE_PAUSING = 0x20L;
+%constant int QUI_M_QUEUE_REMOTE = 0x40L;
+%constant int QUI_M_QUEUE_RESETTING = 0x80L;
+%constant int QUI_M_QUEUE_RESUMING = 0x100L;
+%constant int QUI_M_QUEUE_SERVER = 0x200L;
+%constant int QUI_M_QUEUE_STALLED = 0x400L;
+%constant int QUI_M_QUEUE_STARTING = 0x800L;
+%constant int QUI_M_QUEUE_STOPPED = 0x1000L;
+%constant int QUI_M_QUEUE_STOPPING = 0x2000L;
+%constant int QUI_M_QUEUE_UNAVAILABLE = 0x4000L;
+%constant int QUI_M_QUEUE_CLOSED = 0x8000L;
+%constant int QUI_M_QUEUE_BUSY = 0x10000L;
+%constant int QUI_M_QUEUE_UNDEFINED = 0x20000L;
+%constant int QUI_M_QUEUE_AVAILABLE = 0x40000L;
+%constant int QUI_M_QUEUE_DISABLED = 0x80000L;
+%constant int QUI_M_QUEUE_AUTOSTART_INACTIVE = 0x100000L;
+%constant int QUI_M_QUEUE_STOP_PENDING = 0x200000L;
+%constant int QUI_S_QUEUE_STATUS = 4;
+%constant int QUI_M_SEARCH_ALL_JOBS = 0x1L;
+%constant int QUI_M_SEARCH_WILDCARD = 0x2L;
+%constant int QUI_M_SEARCH_BATCH = 0x4L;
+%constant int QUI_M_SEARCH_SYMBIONT = 0x8L;
+%constant int QUI_M_SEARCH_THIS_JOB = 0x10L;
+%constant int QUI_M_SEARCH_PRINTER = 0x20L;
+%constant int QUI_M_SEARCH_SERVER = 0x40L;
+%constant int QUI_M_SEARCH_TERMINAL = 0x80L;
+%constant int QUI_M_SEARCH_GENERIC = 0x100L;
+%constant int QUI_M_SEARCH_GENERIC_TARGET = 0x200L;
+%constant int QUI_M_SEARCH_PENDING_JOBS = 0x400L;
+%constant int QUI_M_SEARCH_EXECUTING_JOBS = 0x800L;
+%constant int QUI_M_SEARCH_TIMED_RELEASE_JOBS = 0x1000L;
+%constant int QUI_M_SEARCH_HOLDING_JOBS = 0x2000L;
+%constant int QUI_M_SEARCH_RETAINED_JOBS = 0x4000L;
+%constant int QUI_M_SEARCH_FREEZE_CONTEXT = 0x8000L;
+%constant int QUI_M_SEARCH_OPEN_JOBS = 0x10000L;
+%constant int QUI_M_SEARCH_RESERVED_BIT1 = 0x20000L;
+%constant int QUI_M_SEARCH_RESERVED_BIT2 = 0x40000L;
+%constant int QUI_S_SEARCH_FLAGS = 4;
+%constant int QUI_M_SYM_NOTIFIES = 0x1L;
+%constant int QUI_M_SYM_REQUESTS_OPER = 0x2L;
+%constant int QUI_M_SYM_COPIES_FILE = 0x4L;
+%constant int QUI_M_SYM_COPIES_JOB = 0x8L;
+%constant int QUI_M_SYM_ACCEPTS_ALL_FORMS = 0x10L;
+%constant int QUI_M_SYM_NO_JOB_CHECKPOINT = 0x20L;
+%constant int QUI_S_SYMBIONT_FLAGS = 4;
+%constant int QUI_M_MANAGER_START_PENDING = 0x1L;
+%constant int QUI_M_MANAGER_STARTING = 0x2L;
+%constant int QUI_M_MANAGER_RUNNING = 0x4L;
+%constant int QUI_M_MANAGER_FAILOVER = 0x8L;
+%constant int QUI_M_MANAGER_STOPPING = 0x10L;
+%constant int QUI_M_MANAGER_STOPPED = 0x20L;
+%constant int QUI_S_MANAGER_STATUS = 4;
diff --git a/Modules/vms/rabdef/rabdef.i b/Modules/vms/rabdef/rabdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcmFiZGVmL3JhYmRlZi5p
--- /dev/null
+++ b/Modules/vms/rabdef/rabdef.i
@@ -0,0 +1,128 @@
+%module rabdef
+
+%constant int RAB_C_BID = 1;
+%constant int RAB_M_PPF_RAT = 0x3FC0L;
+%constant int RAB_M_PPF_IND = 0x4000L;
+%constant int RAB_M_PPISI = 0x8000L;
+%constant int RAB_M_ASY = 0x1L;
+%constant int RAB_M_TPT = 0x2L;
+%constant int RAB_M_REA = 0x4L;
+%constant int RAB_M_RRL = 0x8L;
+%constant int RAB_M_UIF = 0x10L;
+%constant int RAB_M_MAS = 0x20L;
+%constant int RAB_M_FDL = 0x40L;
+%constant int RAB_M_REV = 0x80L;
+%constant int RAB_M_EOF = 0x100L;
+%constant int RAB_M_RAH = 0x200L;
+%constant int RAB_M_WBH = 0x400L;
+%constant int RAB_M_BIO = 0x800L;
+%constant int RAB_M_CDK = 0x1000L;
+%constant int RAB_M_LOA = 0x2000L;
+%constant int RAB_M_LIM = 0x4000L;
+%constant int RAB_M_SYNCSTS = 0x8000L;
+%constant int RAB_M_LOC = 0x10000L;
+%constant int RAB_M_WAT = 0x20000L;
+%constant int RAB_M_ULK = 0x40000L;
+%constant int RAB_M_RLK = 0x80000L;
+%constant int RAB_M_NLK = 0x100000L;
+%constant int RAB_M_KGE = 0x200000L;
+%constant int RAB_M_KGT = 0x400000L;
+%constant int RAB_M_NXR = 0x800000L;
+%constant int RAB_M_RNE = 0x1000000L;
+%constant int RAB_M_TMO = 0x2000000L;
+%constant int RAB_M_CVT = 0x4000000L;
+%constant int RAB_M_RNF = 0x8000000L;
+%constant int RAB_M_ETO = 0x10000000L;
+%constant int RAB_M_PTA = 0x20000000L;
+%constant int RAB_M_PMT = 0x40000000L;
+%constant int RAB_M_CCO = 0x80000000L;
+%constant int RAB_M_EQNXT = 0x200000L;
+%constant int RAB_M_NXT = 0x400000L;
+%constant int RAB_M_NQL = 0x1L;
+%constant int RAB_M_NODLCKWT = 0x2L;
+%constant int RAB_M_NODLCKBLK = 0x4L;
+%constant int RAB_C_SEQ = 0;
+%constant int RAB_C_KEY = 1;
+%constant int RAB_C_RFA = 2;
+%constant int RAB_C_STM = 3;
+%constant int RAB_C_MAXRAC = 2;
+%constant int RAB_S_RABDEF = 68;
+%constant int RAB_S_PPF_RAT = 8;
+%constant int RAB_S_RFA = 6;
+%constant int RAB_K_BLN = 68;
+%constant int RAB_C_BLN = 68;
+%constant int RAB64_C_BID = 1;
+%constant int RAB64_M_PPF_RAT = 0x3FC0L;
+%constant int RAB64_M_PPF_IND = 0x4000L;
+%constant int RAB64_M_PPISI = 0x8000L;
+%constant int RAB64_M_ASY = 0x1L;
+%constant int RAB64_M_TPT = 0x2L;
+%constant int RAB64_M_REA = 0x4L;
+%constant int RAB64_M_RRL = 0x8L;
+%constant int RAB64_M_UIF = 0x10L;
+%constant int RAB64_M_MAS = 0x20L;
+%constant int RAB64_M_FDL = 0x40L;
+%constant int RAB64_M_REV = 0x80L;
+%constant int RAB64_M_EOF = 0x100L;
+%constant int RAB64_M_RAH = 0x200L;
+%constant int RAB64_M_WBH = 0x400L;
+%constant int RAB64_M_BIO = 0x800L;
+%constant int RAB64_M_CDK = 0x1000L;
+%constant int RAB64_M_LOA = 0x2000L;
+%constant int RAB64_M_LIM = 0x4000L;
+%constant int RAB64_M_SYNCSTS = 0x8000L;
+%constant int RAB64_M_LOC = 0x10000L;
+%constant int RAB64_M_WAT = 0x20000L;
+%constant int RAB64_M_ULK = 0x40000L;
+%constant int RAB64_M_RLK = 0x80000L;
+%constant int RAB64_M_NLK = 0x100000L;
+%constant int RAB64_M_KGE = 0x200000L;
+%constant int RAB64_M_KGT = 0x400000L;
+%constant int RAB64_M_NXR = 0x800000L;
+%constant int RAB64_M_RNE = 0x1000000L;
+%constant int RAB64_M_TMO = 0x2000000L;
+%constant int RAB64_M_CVT = 0x4000000L;
+%constant int RAB64_M_RNF = 0x8000000L;
+%constant int RAB64_M_ETO = 0x10000000L;
+%constant int RAB64_M_PTA = 0x20000000L;
+%constant int RAB64_M_PMT = 0x40000000L;
+%constant int RAB64_M_CCO = 0x80000000L;
+%constant int RAB64_M_EQNXT = 0x200000L;
+%constant int RAB64_M_NXT = 0x400000L;
+%constant int RAB64_M_NQL = 0x1L;
+%constant int RAB64_M_NODLCKWT = 0x2L;
+%constant int RAB64_M_NODLCKBLK = 0x4L;
+%constant int RAB64_C_SEQ = 0;
+%constant int RAB64_C_KEY = 1;
+%constant int RAB64_C_RFA = 2;
+%constant int RAB64_C_STM = 3;
+%constant int RAB64_C_MAXRAC = 2;
+%constant int RAB64_M_RESERVED29 = 0x20000000L;
+%constant int RAB64_M_RESERVED30 = 0x40000000L;
+%constant int RAB64_M_RESERVED31 = 0x80000000L;
+%constant int RAB_M_RESERVED29 = 536870912;
+%constant int RAB_M_RESERVED30 = 1073741824;
+%constant int RAB_M_RESERVED31 = -2147483648;
+%constant int RAB64_S_RAB64DEF = 144;
+%constant int RAB64_S_PPF_RAT = 8;
+%constant int RAB64_S_RFA = 6;
+%constant int RAB64_S_UBF = 8;
+%constant int RAB_S_UBF = 8;
+%constant int RAB64_S_USZ = 8;
+%constant int RAB_S_USZ = 8;
+%constant int RAB64_S_RBF = 8;
+%constant int RAB_S_RBF = 8;
+%constant int RAB64_S_RSZ = 8;
+%constant int RAB_S_RSZ = 8;
+%constant int RAB64_S_KBF = 8;
+%constant int RAB_S_KBF = 8;
+%constant int RAB64_S_RHB = 8;
+%constant int RAB_S_RHB = 8;
+%constant int RAB64_S_CTX = 8;
+%constant int RAB_S_CTX = 8;
+%constant int RAB64_K_BLN64 = 144;
+%constant int RAB64_C_BLN64 = 144;
+%constant int RAB_K_BLN64 = 144;
+%constant int RAB_C_BLN64 = 144;
+%constant int RAB_K_MAXBLN = 144;
+%constant int RAB_C_MAXBLN = 144;
diff --git a/Modules/vms/regdef/regdef.i b/Modules/vms/regdef/regdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcmVnZGVmL3JlZ2RlZi5p
--- /dev/null
+++ b/Modules/vms/regdef/regdef.i
@@ -0,0 +1,193 @@
+%module regdef
+
+%constant int REG_FC_CLOSE_KEY = 1;
+%constant int REG_FC_CREATE_KEY = 2;
+%constant int REG_FC_DELETE_KEY = 3;
+%constant int REG_FC_DELETE_VALUE = 4;
+%constant int REG_FC_ENUM_KEY = 5;
+%constant int REG_FC_ENUM_VALUE = 6;
+%constant int REG_FC_FLUSH_KEY = 7;
+%constant int REG_FC_LOAD_KEY = 8;
+%constant int REG_FC_MODIFY_KEY = 9;
+%constant int REG_FC_MODIFY_TREE_KEY = 10;
+%constant int REG_FC_NOTIFY_CHANGE_KEY_VALUE = 11;
+%constant int REG_FC_OPEN_KEY = 12;
+%constant int REG_FC_QUERY_KEY = 13;
+%constant int REG_FC_QUERY_VALUE = 14;
+%constant int REG_FC_REPLACE_KEY = 15;
+%constant int REG_FC_RESTORE_KEY = 16;
+%constant int REG_FC_SAVE_KEY = 17;
+%constant int REG_FC_SEARCH_TREE_DATA = 18;
+%constant int REG_FC_SEARCH_TREE_KEY = 19;
+%constant int REG_FC_SEARCH_TREE_VALUE = 20;
+%constant int REG_FC_SET_VALUE = 21;
+%constant int REG_FC_UNLOAD_KEY = 22;
+%constant int REG_FC_GET_KEY_SECURITY = 23;
+%constant int REG_FC_SET_KEY_SECURITY = 24;
+%constant int REG_FC_GET_PERFORMANCE = 25;
+%constant int REG_FC_GET_FILE_INFO = 26;
+%constant int REG_FC_GET_FILE_UPDATE = 27;
+%constant int REG_FC_CREATE_DATABASE = 28;
+%constant int REG_FC_MAKE_SNAPSHOT = 29;
+%constant int REG_FC_ARCHIVE = 30;
+%constant int REG_FC_LAST = 31;
+%constant int REG_M_UNICODE_STRING = 8192;
+%constant int REG__TERMINATOR = 0;
+%constant int REG__SEPARATOR = 1;
+%constant int REG__SECPROFILE = 514;
+%constant int REG__REQUEST = 515;
+%constant int REG__ACMODE = 1284;
+%constant int REG__ACTIONCODE = 1285;
+%constant int REG__CACHEACTION = 1286;
+%constant int REG__CANCELNOTIFICATION = 519;
+%constant int REG__CLASSNAME = 264;
+%constant int REG__CLASSNAMEMAX = 1289;
+%constant int REG__CLASSNAMESIZE = 1290;
+%constant int REG__DATAFLAGS = 1547;
+%constant int REG__DATATYPE = 1292;
+%constant int REG__DISPOSITION = 1293;
+%constant int REG__FILEINFODATA = 526;
+%constant int REG__FILELOAD = 1807;
+%constant int REG__FILESAVE = 1808;
+%constant int REG__FILEUPDATEDATA = 529;
+%constant int REG__FLAGOPCODE = 1298;
+%constant int REG__FLAGSUBKEY = 1299;
+%constant int REG__KEYID = 1300;
+%constant int REG__KEYID_INTERNAL = 533;
+%constant int REG__KEYFLAGS = 1302;
+%constant int REG__KEYPATH = 279;
+%constant int REG__KEYRESULT = 1304;
+%constant int REG__KEYRESULT_INTERNAL = 537;
+%constant int REG__LASTWRITE = 1562;
+%constant int REG__LINKCOUNT = 1307;
+%constant int REG__LINKPATH = 284;
+%constant int REG__LINKPATHSIZE = 1309;
+%constant int REG__LINKTYPE = 1310;
+%constant int REG__LOCK = 1311;
+%constant int REG__NEWNAME = 288;
+%constant int REG__NOTIFYFILTER = 1313;
+%constant int REG__PATHBUFFER = 546;
+%constant int REG__PERFORMANCEDATA = 547;
+%constant int REG__REQLENGTH = 1316;
+%constant int REG__RETURNSTATUS = 1317;
+%constant int REG__SECACCESS = 1318;
+%constant int REG__SECONDSTATUS = 1319;
+%constant int REG__SECURITYPOLICY = 1320;
+%constant int REG__SEGMENTNUMBER = 1321;
+%constant int REG__SNAPSHOTDESTINATION = 1834;
+%constant int REG__SNAPSHOTVERSIONS = 1323;
+%constant int REG__SUBKEYINDEX = 1324;
+%constant int REG__SUBKEYNAME = 301;
+%constant int REG__SUBKEYNAMEMAX = 1326;
+%constant int REG__SUBKEYNAMESIZE = 1327;
+%constant int REG__SUBKEYSNUMBER = 1328;
+%constant int REG__SECURITYINFORMATION = 1329;
+%constant int REG__SECURITYDESCRIPTOR = 562;
+%constant int REG__VALUEINDEX = 1331;
+%constant int REG__VALUEDATA = 564;
+%constant int REG__VALUEDATAMAX = 1333;
+%constant int REG__VALUEDATASIZE = 1334;
+%constant int REG__VALUENAME = 311;
+%constant int REG__VALUENAMEMAX = 1336;
+%constant int REG__VALUENAMESIZE = 1337;
+%constant int REG__VALUENUMBER = 1338;
+%constant int REG__VOLATILE = 1339;
+%constant int REG__WILDASTERISK = 316;
+%constant int REG__WILDPERCENT = 317;
+%constant int REG__WILDPERIODS = 318;
+%constant int REG__INSTRUMENTFILE = 575;
+%constant int REG__INSTRUMENTKEY = 576;
+%constant int REG__INSTRUMENTDATA = 577;
+%constant int REG__FILENAME = 1858;
+%constant int REG__COUNTER = 1347;
+%constant int REG__SECDESCRIPTORLEN = 1348;
+%constant int REG__SECDESCLEN_INTERNAL = 1349;
+%constant int REG__VALUEDATASIZE_INTERNAL = 1350;
+%constant int REG__SAMDESIRED = 1351;
+%constant int REG__DATABASE_VERSION = 1352;
+%constant int REG__LAST = 73;
+%constant int REG_K_NONE = 0;
+%constant int REG_K_CLUSTER = 1;
+%constant int REG_K_SYSTEM = 2;
+%constant int REG_K_PROCESS = 3;
+%constant int REG_K_IMAGE = 4;
+%constant int REG_K_WRITEBEHIND = 5;
+%constant int REG_K_WRITETHRU = 6;
+%constant int REG_K_CREATENEWKEY = 7;
+%constant int REG_K_OPENEXISTINGKEY = 8;
+%constant int REG_K_POLICY_OPENVMS = 9;
+%constant int REG_K_POLICY_NT_40 = 10;
+%constant int REG_K_INTERNAL = 11;
+%constant int REG_K_HARDLINK = 12;
+%constant int REG_K_SYMBOLICLINK = 13;
+%constant int REG_K_BINARY = 14;
+%constant int REG_K_DWORD = 15;
+%constant int REG_K_DWLITTLEENDIAN = 16;
+%constant int REG_K_DWBIGENDIAN = 17;
+%constant int REG_K_EXPAND_SZ = 18;
+%constant int REG_K_LINK = 19;
+%constant int REG_K_MULTI_SZ = 20;
+%constant int REG_K_QWORD = 21;
+%constant int REG_K_RESOURCELIST = 22;
+%constant int REG_K_SZ = 23;
+%constant int REG_K_START_FILE = 24;
+%constant int REG_K_START_PERF = 25;
+%constant int REG_K_STOP_FILE = 26;
+%constant int REG_K_STOP_PERF = 27;
+%constant int REG_K_ZERO_FILE = 28;
+%constant int REG_K_ZERO_PERF = 29;
+%constant int REG_K_SHOW_CTR_FILE = 30;
+%constant int REG_K_SHOW_CTR_PERF = 31;
+%constant int REG_K_SHOW_FILE = 32;
+%constant int REG_K_NORMAL = 33;
+%constant int REG_K_LARGE = 34;
+%constant int REG_K_EXACTMATCH = 35;
+%constant int REG_K_INCLUDE = 36;
+%constant int REG_K_EXCLUDE = 37;
+%constant int REG_K_ANY = 38;
+%constant int REG_K_NOTANY = 39;
+%constant int REG_M_FC = 0x3FFL;
+%constant int REG_M_CASE_SENSITIVE = 0x400L;
+%constant int REG_M_DISABLE_WILDCARDS = 0x800L;
+%constant int REG_M_IGNORE_LINKS = 0x1000L;
+%constant int REG_M_NOW = 0x2000L;
+%constant int REG_M_NOWAIT = 0x4000L;
+%constant int REG_M_UNICODE_VALUES = 0x8000L;
+%constant int REG_M_BYPASS = 0x10000L;
+%constant int REG_M_INTERNAL = 0x20000L;
+%constant int REG_S_REGDEF = 3;
+%constant int REG_S_FC = 10;
+%constant int REG_M_CHANGENAME = 0x1L;
+%constant int REG_M_CHANGEATTRIBUTES = 0x2L;
+%constant int REG_M_CHANGELASTSET = 0x4L;
+%constant int REG_M_CHANGESECURITY = 0x8L;
+%constant int REG_S_KEYCHANGEDEF = 1;
+%constant int REG_M_ALLACCESS = 0x1L;
+%constant int REG_M_CREATELINK = 0x2L;
+%constant int REG_M_CREATESUBKEY = 0x4L;
+%constant int REG_M_ENUMSUBKEYS = 0x8L;
+%constant int REG_M_EXECUTE = 0x10L;
+%constant int REG_M_NOTIFY = 0x20L;
+%constant int REG_M_QUERYVALUE = 0x40L;
+%constant int REG_M_READ = 0x80L;
+%constant int REG_M_SETVALUE = 0x100L;
+%constant int REG_M_WRITE = 0x200L;
+%constant int REG_M_DELETEACCESS = 0x400L;
+%constant int REG_M_READCONTROL = 0x800L;
+%constant int REG_M_WRITEDAC = 0x1000L;
+%constant int REG_M_WRITEOWNER = 0x2000L;
+%constant int REG_M_SYNCHRONIZE = 0x4000L;
+%constant int REG_M_ACCESSSYSTEMSECURITY = 0x8000L;
+%constant int REG_M_MAXIMUMALLOWED = 0x10000L;
+%constant int REG_M_GENERICALL = 0x20000L;
+%constant int REG_M_GENERICEXECUTE = 0x40000L;
+%constant int REG_M_GENERICWRITE = 0x80000L;
+%constant int REG_M_GENERICREAD = 0x100000L;
+%constant int REG_S_SECACCESSDEF = 3;
+%constant int REG__HKEY_NONE = 0;
+%constant int REG__HKEY_CLASSES_ROOT = -2147483648;
+%constant int REG__HKEY_CURRENT_USER = -2147483647;
+%constant int REG__HKEY_LOCAL_MACHINE = -2147483646;
+%constant int REG__HKEY_USERS = -2147483645;
+%constant int REG__HKEY_PERFORMANCE_DATA = -2147483644;
+%constant int REG__HKEY_LAST_ROOT_KEY = 5;
diff --git a/Modules/vms/rmidef/rmidef.i b/Modules/vms/rmidef/rmidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1pZGVmL3JtaWRlZi5p
--- /dev/null
+++ b/Modules/vms/rmidef/rmidef.i
@@ -0,0 +1,1190 @@
+%module rmidef
+
+%constant int RMI_C_EXETYPE = 1;
+%constant int RMI_C_EWSTYPE = 2;
+%constant int RMI_C_MONTYPE = 3;
+%constant int RMI_C_RMSTYPE = 4;
+%constant int RMI_C_EX2TYPE = 5;
+%constant int RMI_C_LISTEND = 0;
+%constant int RMI__initial = -1;
+%constant int RMI__data_collection = -2;
+%constant int RMI__sysinfo = -3;
+%constant int RMI__version_number = -4;
+%constant int RMI__rms_file = -5;
+%constant int RMI__rms_gs = -6;
+%constant int RMI__last_type = -7;
+%constant int RMI__server_version = 5;
+%constant int RMI_S_rmi_pms_flags = 4;
+%constant int RMI_s_flags = 4;
+%constant int RMI_s_filler1 = 7;
+%constant int RMI_s_filler2 = 23;
+%constant int RMI_k_max_packet = 500;
+%constant int RMI_k_pool_ovf = -2147483647;
+%constant int RMI__MODES = 4096;
+%constant int RMI__INTERRUPT = 4097;
+%constant int RMI__KERNEL = 4098;
+%constant int RMI__EXEC = 4099;
+%constant int RMI__SUPER = 4100;
+%constant int RMI__USER = 4101;
+%constant int RMI__COMPAT = 4102;
+%constant int RMI__INTERRUPT_BUSY = 4103;
+%constant int RMI__KERNEL_BUSY = 4104;
+%constant int RMI__IDLE = 4105;
+%constant int RMI__CPUBUSY = 4106;
+%constant int RMI__COLPG = 4107;
+%constant int RMI__MWAIT = 4108;
+%constant int RMI__CEF = 4109;
+%constant int RMI__PFW = 4110;
+%constant int RMI__LEF = 4111;
+%constant int RMI__LEFO = 4112;
+%constant int RMI__HIB = 4113;
+%constant int RMI__HIBO = 4114;
+%constant int RMI__SUSP = 4115;
+%constant int RMI__SUSPO = 4116;
+%constant int RMI__FPG = 4117;
+%constant int RMI__COM = 4118;
+%constant int RMI__COMO = 4119;
+%constant int RMI__CUR = 4120;
+%constant int RMI__OTHSTAT = 4121;
+%constant int RMI__PROCS = 4122;
+%constant int RMI__PROC = 4123;
+%constant int RMI__FRLIST = 4124;
+%constant int RMI__MODLIST = 4125;
+%constant int RMI__FAULTS = 4126;
+%constant int RMI__PREADS = 4127;
+%constant int RMI__PWRITES = 4128;
+%constant int RMI__PWRITIO = 4129;
+%constant int RMI__PREADIO = 4130;
+%constant int RMI__GVALFLTS = 4131;
+%constant int RMI__WRTINPROG = 4132;
+%constant int RMI__FREFLTS = 4133;
+%constant int RMI__MFYFLTS = 4134;
+%constant int RMI__DZROFLTS = 4135;
+%constant int RMI__SYSFAULTS = 4136;
+%constant int RMI__LRPCNT = 4137;
+%constant int RMI__LRPINUSE = 4138;
+%constant int RMI__IRPCNT = 4139;
+%constant int RMI__IRPINUSE = 4140;
+%constant int RMI__SRPCNT = 4141;
+%constant int RMI__SRPINUSE = 4142;
+%constant int RMI__HOLECNT = 4143;
+%constant int RMI__BIGHOLE = 4144;
+%constant int RMI__SMALLHOLE = 4145;
+%constant int RMI__HOLESUM = 4146;
+%constant int RMI__DYNINUSE = 4147;
+%constant int RMI__SMALLCNT = 4148;
+%constant int RMI__ISWPCNT = 4149;
+%constant int RMI__DIRIO = 4150;
+%constant int RMI__BUFIO = 4151;
+%constant int RMI__MBREADS = 4152;
+%constant int RMI__MBWRITES = 4153;
+%constant int RMI__LOGNAM = 4154;
+%constant int RMI__FCPCALLS = 4155;
+%constant int RMI__FCPREAD = 4156;
+%constant int RMI__FCPWRITE = 4157;
+%constant int RMI__FCPCACHE = 4158;
+%constant int RMI__FCPCPU = 4159;
+%constant int RMI__FCPHIT = 4160;
+%constant int RMI__FCPSPLIT = 4161;
+%constant int RMI__FCPFAULT = 4162;
+%constant int RMI__ENQNEW = 4163;
+%constant int RMI__ENQCVT = 4164;
+%constant int RMI__DEQ = 4165;
+%constant int RMI__BLKAST = 4166;
+%constant int RMI__ENQWAIT = 4167;
+%constant int RMI__ENQNOTQD = 4168;
+%constant int RMI__DLCKSRCH = 4169;
+%constant int RMI__DLCKFND = 4170;
+%constant int RMI__NUMLOCKS = 4171;
+%constant int RMI__NUMRES = 4172;
+%constant int RMI__ARRLOCPK = 4173;
+%constant int RMI__DEPLOCPK = 4174;
+%constant int RMI__ARRTRAPK = 4175;
+%constant int RMI__TRCNGLOS = 4176;
+%constant int RMI__RCVBUFFL = 4177;
+%constant int RMI__RESERVED1 = 4178;
+%constant int RMI__RESERVED2 = 4179;
+%constant int RMI__RESERVED3 = 4180;
+%constant int RMI__RESERVED4 = 4181;
+%constant int RMI__RESERVED5 = 4182;
+%constant int RMI__RESERVED6 = 4183;
+%constant int RMI__RESERVED7 = 4184;
+%constant int RMI__RESERVED8 = 4185;
+%constant int RMI__RESERVED9 = 4186;
+%constant int RMI__RESERVED10 = 4187;
+%constant int RMI__RESERVED11 = 4188;
+%constant int RMI__RESERVED12 = 4189;
+%constant int RMI__RESERVED13 = 4190;
+%constant int RMI__RESERVED14 = 4191;
+%constant int RMI__RESERVED15 = 4192;
+%constant int RMI__RESERVED16 = 4193;
+%constant int RMI__RESERVED17 = 4194;
+%constant int RMI__RESERVED18 = 4195;
+%constant int RMI__FID_TRIES = 4196;
+%constant int RMI__FILHDR_TRIES = 4197;
+%constant int RMI__DIRFCB_TRIES = 4198;
+%constant int RMI__DIRDATA_TRIES = 4199;
+%constant int RMI__EXT_TRIES = 4200;
+%constant int RMI__QUO_TRIES = 4201;
+%constant int RMI__STORAGMAP_TRIES = 4202;
+%constant int RMI__DISKS = 4203;
+%constant int RMI__TOTAL_LOCKS = 4204;
+%constant int RMI__ENQNEWLOC = 4205;
+%constant int RMI__ENQNEWIN = 4206;
+%constant int RMI__ENQNEWOUT = 4207;
+%constant int RMI__ENQCVTLOC = 4208;
+%constant int RMI__ENQCVTIN = 4209;
+%constant int RMI__ENQCVTOUT = 4210;
+%constant int RMI__DEQLOC = 4211;
+%constant int RMI__DEQIN = 4212;
+%constant int RMI__DEQOUT = 4213;
+%constant int RMI__BLKLOC = 4214;
+%constant int RMI__BLKIN = 4215;
+%constant int RMI__BLKOUT = 4216;
+%constant int RMI__DIRIN = 4217;
+%constant int RMI__DIROUT = 4218;
+%constant int RMI__DLCKMSGS = 4219;
+%constant int RMI__SCS = 4220;
+%constant int RMI__SYSTIME = 4221;
+%constant int RMI__MSCP_REQUEST = 4222;
+%constant int RMI__MSCP_READ = 4223;
+%constant int RMI__MSCP_WRITE = 4224;
+%constant int RMI__MSCP_FRAGMENT = 4225;
+%constant int RMI__MSCP_SPLIT = 4226;
+%constant int RMI__MSCP_BUFWAIT = 4227;
+%constant int RMI__MSCP_SIZE1 = 4228;
+%constant int RMI__MSCP_SIZE2 = 4229;
+%constant int RMI__MSCP_SIZE3 = 4230;
+%constant int RMI__MSCP_SIZE4 = 4231;
+%constant int RMI__MSCP_SIZE5 = 4232;
+%constant int RMI__MSCP_SIZE6 = 4233;
+%constant int RMI__MSCP_SIZE7 = 4234;
+%constant int RMI__MSCP_ALL = 4235;
+%constant int RMI__DDTM_STARTS = 4236;
+%constant int RMI__DDTM_PREPARES = 4237;
+%constant int RMI__DDTM_ONE_PHASE = 4238;
+%constant int RMI__DDTM_COMMITS = 4239;
+%constant int RMI__DDTM_ABORTS = 4240;
+%constant int RMI__DDTM_ENDS = 4241;
+%constant int RMI__DDTM_BRANCHS = 4242;
+%constant int RMI__DDTM_ADDS = 4243;
+%constant int RMI__DDTM_BUCKETS1 = 4244;
+%constant int RMI__DDTM_BUCKETS2 = 4245;
+%constant int RMI__DDTM_BUCKETS3 = 4246;
+%constant int RMI__DDTM_BUCKETS4 = 4247;
+%constant int RMI__DDTM_BUCKETS5 = 4248;
+%constant int RMI__DDTM_BUCKETS6 = 4249;
+%constant int RMI__DDTM_ALL = 4250;
+%constant int RMI__VECTORP = 4251;
+%constant int RMI__VBYTE_READ = 4252;
+%constant int RMI__VBYTE_WRITE = 4253;
+%constant int RMI__VVBS_TRAN = 4254;
+%constant int RMI__VRBS_TRAN = 4255;
+%constant int RMI__VDIO_SEL = 4256;
+%constant int RMI__VDIOMAP_ALLOC = 4257;
+%constant int RMI__VRBS_AVAIL = 4258;
+%constant int RMI__VSEL_FAIL = 4259;
+%constant int RMI__VVBSM_HIT = 4260;
+%constant int RMI__VVBSM_CACHE = 4261;
+%constant int RMI__VFLUIDBAL = 4262;
+%constant int RMI__VRECOPY = 4263;
+%constant int RMI__VCPUTICKS = 4264;
+%constant int RMI__MSCP_EVERYTHING = 4265;
+%constant int RMI__TMSCP_EVERYTHING = 4266;
+%constant int RMI__DDTM_TWOPHASE_ACKRCV = 4267;
+%constant int RMI__DDTM_TWOPHASE_ACKSNT = 4268;
+%constant int RMI__DDTM_TWOPHASE_CANRCV = 4269;
+%constant int RMI__DDTM_TWOPHASE_CANSNT = 4270;
+%constant int RMI__DDTM_TWOPHASE_RDYRCV = 4271;
+%constant int RMI__DDTM_TWOPHASE_RDYSNT = 4272;
+%constant int RMI__DDTM_TWOPHASE_REQRCV = 4273;
+%constant int RMI__DDTM_TWOPHASE_REQSNT = 4274;
+%constant int RMI__DDTM_TWOPHASE_COMMITS = 4275;
+%constant int RMI__DDTM_DECLARES = 4276;
+%constant int RMI__DDTM_JOINS = 4277;
+%constant int RMI__DDTM_FORGETS = 4278;
+%constant int RMI__DDTM_SEQNO = 4279;
+%constant int RMI__DDTM_LOG_COMMITS = 4280;
+%constant int RMI__DDTM_LOG_PREPARES = 4281;
+%constant int RMI__DDTM_LOG_FORGETS = 4282;
+%constant int RMI__DDTM_WRITES_STARTED = 4283;
+%constant int RMI__DDTM_WRITES_FORKED = 4284;
+%constant int RMI__DDTM_BAD_TYPECODE = 4285;
+%constant int RMI__DDTM_BAD_LINKS = 4286;
+%constant int RMI__DDTM_FOR_UNLINKS = 4287;
+%constant int RMI__DDTM_VOL_UNLINKS = 4288;
+%constant int RMI__DDTM_DISC_COMP = 4289;
+%constant int RMI__DDTM_BAD_PARTS = 4290;
+%constant int RMI__LCKMGR_CPU = 4291;
+%constant int RMI__LCKMGR_PID = 4292;
+%constant int RMI__LCKMGR_REQCNT = 4293;
+%constant int RMI__LCKMGR_REQTIME = 4294;
+%constant int RMI__LCKMGR_SPINCNT = 4295;
+%constant int RMI__LCKMGR_SPINTIME = 4296;
+%constant int RMI__LOCK_MAX = 4297;
+%constant int RMI__LPZ_PAKSIZ = 4298;
+%constant int RMI__LPZ_PAGCNT = 4299;
+%constant int RMI__LPZ_MAXPAG = 4300;
+%constant int RMI__LPZ_FREEPGCNT = 4301;
+%constant int RMI__LPZ_HITS = 4302;
+%constant int RMI__LPZ_MISSES = 4303;
+%constant int RMI__LPZ_EXPCNT = 4304;
+%constant int RMI__LPZ_ALLOCF = 4305;
+%constant int RMI__LPZ_ALLOC2 = 4306;
+%constant int RMI__LPZ_EMPTY = 4307;
+%constant int RMI__RML_ACQUIRE = 4308;
+%constant int RMI__RML_BETTER = 4309;
+%constant int RMI__RML_MORE_ACT = 4310;
+%constant int RMI__RML_MSGRCV = 4311;
+%constant int RMI__RML_MSGSENT = 4312;
+%constant int RMI__RML_NOQUOTA = 4313;
+%constant int RMI__RML_NOTAKER = 4314;
+%constant int RMI__RML_OPCNT = 4315;
+%constant int RMI__RML_RBLDMSGRCV = 4316;
+%constant int RMI__RML_RBLDMSGSENT = 4317;
+%constant int RMI__RML_SINGLE = 4318;
+%constant int RMI__RML_UNLOAD = 4319;
+%constant int RMI__RESERVEDEXE1 = 4320;
+%constant int RMI__RESERVEDEXE2 = 4321;
+%constant int RMI__RESERVEDEXE3 = 4322;
+%constant int RMI__RESERVEDEXE4 = 4323;
+%constant int RMI__RESERVEDEXE5 = 4324;
+%constant int RMI__RESERVEDEXE6 = 4325;
+%constant int RMI__RESERVEDEXE7 = 4326;
+%constant int RMI__RESERVEDEXE8 = 4327;
+%constant int RMI__RESERVEDEXE9 = 4328;
+%constant int RMI__RESERVEDEXE10 = 4329;
+%constant int RMI__RESERVEDEXE11 = 4330;
+%constant int RMI__RESERVEDEXE12 = 4331;
+%constant int RMI__RESERVEDEXE13 = 4332;
+%constant int RMI__RESERVEDEXE14 = 4333;
+%constant int RMI__RESERVEDEXE15 = 4334;
+%constant int RMI__RESERVEDEXE16 = 4335;
+%constant int RMI__LASTEXE = 4336;
+%constant int RMI__ACCESS = 8432;
+%constant int RMI__ALLOC = 8433;
+%constant int RMI__FCPCREATE = 8434;
+%constant int RMI__VOLWAIT = 8435;
+%constant int RMI__FCPTURN = 8436;
+%constant int RMI__FCPERASE = 8437;
+%constant int RMI__OPENS = 8438;
+%constant int RMI__FIDHIT = 8439;
+%constant int RMI__FIDMISS = 8440;
+%constant int RMI__FILHDR_HIT = 8441;
+%constant int RMI__DIRFCB_HIT = 8442;
+%constant int RMI__DIRFCB_MISS = 8443;
+%constant int RMI__DIRDATA_HIT = 8444;
+%constant int RMI__EXTHIT = 8445;
+%constant int RMI__EXTMISS = 8446;
+%constant int RMI__QUOHIT = 8447;
+%constant int RMI__QUOMISS = 8448;
+%constant int RMI__STORAGMAP_HIT = 8449;
+%constant int RMI__VOLLCK = 8450;
+%constant int RMI__SYNCHLCK = 8451;
+%constant int RMI__SYNCHWAIT = 8452;
+%constant int RMI__ACCLCK = 8453;
+%constant int RMI__XQPCACHEWAIT = 8454;
+%constant int RMI__DIRDATA_MISS = 8455;
+%constant int RMI__FILHDR_MISS = 8456;
+%constant int RMI__STORAGMAP_MISS = 8457;
+%constant int RMI__RESERVEDEWS1 = 8458;
+%constant int RMI__RESERVEDEWS2 = 8459;
+%constant int RMI__RESERVEDEWS3 = 8460;
+%constant int RMI__RESERVEDEWS4 = 8461;
+%constant int RMI__RESERVEDEWS5 = 8462;
+%constant int RMI__RESERVEDEWS6 = 8463;
+%constant int RMI__RESERVEDEWS7 = 8464;
+%constant int RMI__RESERVEDEWS8 = 8465;
+%constant int RMI__RESERVEDEWS9 = 8466;
+%constant int RMI__RESERVEDEWS10 = 8467;
+%constant int RMI__RESERVEDEWS11 = 8468;
+%constant int RMI__RESERVEDEWS12 = 8469;
+%constant int RMI__RESERVEDEWS13 = 8470;
+%constant int RMI__RESERVEDEWS14 = 8471;
+%constant int RMI__RESERVEDEWS15 = 8472;
+%constant int RMI__RESERVEDEWS16 = 8473;
+%constant int RMI__RESERVEDEWS17 = 8474;
+%constant int RMI__RESERVEDEWS18 = 8475;
+%constant int RMI__RESERVEDEWS19 = 8476;
+%constant int RMI__RESERVEDEWS20 = 8477;
+%constant int RMI__RESERVEDEWS21 = 8478;
+%constant int RMI__RESERVEDEWS22 = 8479;
+%constant int RMI__RESERVEDEWS23 = 8480;
+%constant int RMI__RESERVEDEWS24 = 8481;
+%constant int RMI__RESERVEDEWS25 = 8482;
+%constant int RMI__RESERVEDEWS26 = 8483;
+%constant int RMI__RESERVEDEWS27 = 8484;
+%constant int RMI__RESERVEDEWS28 = 8485;
+%constant int RMI__RESERVEDEWS29 = 8486;
+%constant int RMI__RESERVEDEWS30 = 8487;
+%constant int RMI__RESERVEDEWS31 = 8488;
+%constant int RMI__RESERVEDEWS32 = 8489;
+%constant int RMI__RESERVEDEWS33 = 8490;
+%constant int RMI__RESERVEDEWS34 = 8491;
+%constant int RMI__RESERVEDEWS35 = 8492;
+%constant int RMI__RESERVEDEWS36 = 8493;
+%constant int RMI__RESERVEDEWS37 = 8494;
+%constant int RMI__RESERVEDEWS38 = 8495;
+%constant int RMI__RESERVEDEWS39 = 8496;
+%constant int RMI__RESERVEDEWS40 = 8497;
+%constant int RMI__RESERVEDEWS41 = 8498;
+%constant int RMI__RESERVEDEWS42 = 8499;
+%constant int RMI__RESERVEDEWS43 = 8500;
+%constant int RMI__RESERVEDEWS44 = 8501;
+%constant int RMI__RESERVEDEWS45 = 8502;
+%constant int RMI__RESERVEDEWS46 = 8503;
+%constant int RMI__RESERVEDEWS47 = 8504;
+%constant int RMI__RESERVEDEWS48 = 8505;
+%constant int RMI__RESERVEDEWS49 = 8506;
+%constant int RMI__RESERVEDEWS50 = 8507;
+%constant int RMI__RESERVEDEWS51 = 8508;
+%constant int RMI__RESERVEDEWS52 = 8509;
+%constant int RMI__RESERVEDEWS53 = 8510;
+%constant int RMI__RESERVEDEWS54 = 8511;
+%constant int RMI__RESERVEDEWS55 = 8512;
+%constant int RMI__RESERVEDEWS56 = 8513;
+%constant int RMI__RESERVEDEWS57 = 8514;
+%constant int RMI__RESERVEDEWS58 = 8515;
+%constant int RMI__RESERVEDEWS59 = 8516;
+%constant int RMI__RESERVEDEWS60 = 8517;
+%constant int RMI__RESERVEDEWS61 = 8518;
+%constant int RMI__RESERVEDEWS62 = 8519;
+%constant int RMI__RESERVEDEWS63 = 8520;
+%constant int RMI__RESERVEDEWS64 = 8521;
+%constant int RMI__RESERVEDEWS65 = 8522;
+%constant int RMI__RESERVEDEWS66 = 8523;
+%constant int RMI__RESERVEDEWS67 = 8524;
+%constant int RMI__RESERVEDEWS68 = 8525;
+%constant int RMI__RESERVEDEWS69 = 8526;
+%constant int RMI__RESERVEDEWS70 = 8527;
+%constant int RMI__RESERVEDEWS71 = 8528;
+%constant int RMI__RESERVEDEWS72 = 8529;
+%constant int RMI__RESERVEDEWS73 = 8530;
+%constant int RMI__RESERVEDEWS74 = 8531;
+%constant int RMI__RESERVEDEWS75 = 8532;
+%constant int RMI__RESERVEDEWS76 = 8533;
+%constant int RMI__RESERVEDEWS77 = 8534;
+%constant int RMI__RESERVEDEWS78 = 8535;
+%constant int RMI__RESERVEDEWS79 = 8536;
+%constant int RMI__RESERVEDEWS80 = 8537;
+%constant int RMI__RESERVEDEWS81 = 8538;
+%constant int RMI__RESERVEDEWS82 = 8539;
+%constant int RMI__RESERVEDEWS83 = 8540;
+%constant int RMI__RESERVEDEWS84 = 8541;
+%constant int RMI__RESERVEDEWS85 = 8542;
+%constant int RMI__RESERVEDEWS86 = 8543;
+%constant int RMI__RESERVEDEWS87 = 8544;
+%constant int RMI__RESERVEDEWS88 = 8545;
+%constant int RMI__RESERVEDEWS89 = 8546;
+%constant int RMI__RESERVEDEWS90 = 8547;
+%constant int RMI__RESERVEDEWS91 = 8548;
+%constant int RMI__RESERVEDEWS92 = 8549;
+%constant int RMI__RESERVEDEWS93 = 8550;
+%constant int RMI__RESERVEDEWS94 = 8551;
+%constant int RMI__RESERVEDEWS95 = 8552;
+%constant int RMI__RESERVEDEWS96 = 8553;
+%constant int RMI__RESERVEDEWS97 = 8554;
+%constant int RMI__LASTEWS = 8555;
+%constant int RMI__FIDHITPCNT = 12651;
+%constant int RMI__FILHDR_HITPCNT = 12652;
+%constant int RMI__DIRFCB_HITPCNT = 12653;
+%constant int RMI__DIRDATA_HITPCNT = 12654;
+%constant int RMI__EXTHITPCNT = 12655;
+%constant int RMI__QUOHITPCNT = 12656;
+%constant int RMI__STORAGMAP_HITPCNT = 12657;
+%constant int RMI__OPCNT = 12658;
+%constant int RMI__IOQUELEN = 12659;
+%constant int RMI__IOAQUELEN = 12660;
+%constant int RMI__DISKRESPTIM = 12661;
+%constant int RMI__JNLIOCNT = 12662;
+%constant int RMI__JDNQLEN = 12663;
+%constant int RMI__JDWQLEN = 12664;
+%constant int RMI__JDFQLEN = 12665;
+%constant int RMI__JDEXCNT = 12666;
+%constant int RMI__JNLWRTSS = 12667;
+%constant int RMI__JNLBUFWR = 12668;
+%constant int RMI__DGSENT = 12669;
+%constant int RMI__DGRCVD = 12670;
+%constant int RMI__DGDISCARD = 12671;
+%constant int RMI__MSGSENT = 12672;
+%constant int RMI__MSGRCVD = 12673;
+%constant int RMI__SNDATS = 12674;
+%constant int RMI__KBYTSENT = 12675;
+%constant int RMI__REQDATS = 12676;
+%constant int RMI__KBYTREQD = 12677;
+%constant int RMI__KBYTMAPD = 12678;
+%constant int RMI__QCR_CNT = 12679;
+%constant int RMI__QBDT_CNT = 12680;
+%constant int RMI__DIRLOOK = 12681;
+%constant int RMI__DIRINS = 12682;
+%constant int RMI__DIRDEL = 12683;
+%constant int RMI__PACKETS = 12684;
+%constant int RMI__KBYTES = 12685;
+%constant int RMI__PACKETSIZE = 12686;
+%constant int RMI__MPACKETS = 12687;
+%constant int RMI__MKBYTES = 12688;
+%constant int RMI__MPACKETSIZE = 12689;
+%constant int RMI__SINGLECOLL = 12690;
+%constant int RMI__MULTICOLL = 12691;
+%constant int RMI__INITDEFER = 12692;
+%constant int RMI__INTERNALBUFERR = 12693;
+%constant int RMI__LOCBUFERR = 12694;
+%constant int RMI__BUFFUNAVAIL = 12695;
+%constant int RMI__FILLER = 12696;
+%constant int RMI__RESERVEDMON1 = 12697;
+%constant int RMI__RESERVEDMON2 = 12698;
+%constant int RMI__RESERVEDMON3 = 12699;
+%constant int RMI__RESERVEDMON4 = 12700;
+%constant int RMI__RESERVEDMON5 = 12701;
+%constant int RMI__RESERVEDMON6 = 12702;
+%constant int RMI__RESERVEDMON7 = 12703;
+%constant int RMI__RESERVEDMON8 = 12704;
+%constant int RMI__RESERVEDMON9 = 12705;
+%constant int RMI__RESERVEDMON10 = 12706;
+%constant int RMI__RESERVEDMON11 = 12707;
+%constant int RMI__RESERVEDMON12 = 12708;
+%constant int RMI__RESERVEDMON13 = 12709;
+%constant int RMI__RESERVEDMON14 = 12710;
+%constant int RMI__RESERVEDMON15 = 12711;
+%constant int RMI__RESERVEDMON16 = 12712;
+%constant int RMI__RESERVEDMON17 = 12713;
+%constant int RMI__RESERVEDMON18 = 12714;
+%constant int RMI__RESERVEDMON19 = 12715;
+%constant int RMI__RESERVEDMON20 = 12716;
+%constant int RMI__RESERVEDMON21 = 12717;
+%constant int RMI__RESERVEDMON22 = 12718;
+%constant int RMI__RESERVEDMON23 = 12719;
+%constant int RMI__RESERVEDMON24 = 12720;
+%constant int RMI__RESERVEDMON25 = 12721;
+%constant int RMI__RESERVEDMON26 = 12722;
+%constant int RMI__RESERVEDMON27 = 12723;
+%constant int RMI__RESERVEDMON28 = 12724;
+%constant int RMI__RESERVEDMON29 = 12725;
+%constant int RMI__RESERVEDMON30 = 12726;
+%constant int RMI__RESERVEDMON31 = 12727;
+%constant int RMI__RESERVEDMON32 = 12728;
+%constant int RMI__RESERVEDMON33 = 12729;
+%constant int RMI__RESERVEDMON34 = 12730;
+%constant int RMI__RESERVEDMON35 = 12731;
+%constant int RMI__RESERVEDMON36 = 12732;
+%constant int RMI__RESERVEDMON37 = 12733;
+%constant int RMI__RESERVEDMON38 = 12734;
+%constant int RMI__RESERVEDMON39 = 12735;
+%constant int RMI__RESERVEDMON40 = 12736;
+%constant int RMI__RESERVEDMON41 = 12737;
+%constant int RMI__RESERVEDMON42 = 12738;
+%constant int RMI__RESERVEDMON43 = 12739;
+%constant int RMI__RESERVEDMON44 = 12740;
+%constant int RMI__RESERVEDMON45 = 12741;
+%constant int RMI__RESERVEDMON46 = 12742;
+%constant int RMI__RESERVEDMON47 = 12743;
+%constant int RMI__RESERVEDMON48 = 12744;
+%constant int RMI__RESERVEDMON49 = 12745;
+%constant int RMI__RESERVEDMON50 = 12746;
+%constant int RMI__RESERVEDMON51 = 12747;
+%constant int RMI__RESERVEDMON52 = 12748;
+%constant int RMI__RESERVEDMON53 = 12749;
+%constant int RMI__RESERVEDMON54 = 12750;
+%constant int RMI__RESERVEDMON55 = 12751;
+%constant int RMI__RESERVEDMON56 = 12752;
+%constant int RMI__RESERVEDMON57 = 12753;
+%constant int RMI__RESERVEDMON58 = 12754;
+%constant int RMI__RESERVEDMON59 = 12755;
+%constant int RMI__RESERVEDMON60 = 12756;
+%constant int RMI__RESERVEDMON61 = 12757;
+%constant int RMI__RESERVEDMON62 = 12758;
+%constant int RMI__RESERVEDMON63 = 12759;
+%constant int RMI__RESERVEDMON64 = 12760;
+%constant int RMI__RESERVEDMON65 = 12761;
+%constant int RMI__RESERVEDMON66 = 12762;
+%constant int RMI__RESERVEDMON67 = 12763;
+%constant int RMI__RESERVEDMON68 = 12764;
+%constant int RMI__RESERVEDMON69 = 12765;
+%constant int RMI__RESERVEDMON70 = 12766;
+%constant int RMI__RESERVEDMON71 = 12767;
+%constant int RMI__RESERVEDMON72 = 12768;
+%constant int RMI__RESERVEDMON73 = 12769;
+%constant int RMI__RESERVEDMON74 = 12770;
+%constant int RMI__RESERVEDMON75 = 12771;
+%constant int RMI__RESERVEDMON76 = 12772;
+%constant int RMI__RESERVEDMON77 = 12773;
+%constant int RMI__RESERVEDMON78 = 12774;
+%constant int RMI__RESERVEDMON79 = 12775;
+%constant int RMI__RESERVEDMON80 = 12776;
+%constant int RMI__RESERVEDMON81 = 12777;
+%constant int RMI__RESERVEDMON82 = 12778;
+%constant int RMI__RESERVEDMON83 = 12779;
+%constant int RMI__RESERVEDMON84 = 12780;
+%constant int RMI__RESERVEDMON85 = 12781;
+%constant int RMI__RESERVEDMON86 = 12782;
+%constant int RMI__RESERVEDMON87 = 12783;
+%constant int RMI__RESERVEDMON88 = 12784;
+%constant int RMI__RESERVEDMON89 = 12785;
+%constant int RMI__RESERVEDMON90 = 12786;
+%constant int RMI__RESERVEDMON91 = 12787;
+%constant int RMI__RESERVEDMON92 = 12788;
+%constant int RMI__RESERVEDMON93 = 12789;
+%constant int RMI__RESERVEDMON94 = 12790;
+%constant int RMI__RESERVEDMON95 = 12791;
+%constant int RMI__RESERVEDMON96 = 12792;
+%constant int RMI__RESERVEDMON97 = 12793;
+%constant int RMI__RESERVEDMON98 = 12794;
+%constant int RMI__RESERVEDMON99 = 12795;
+%constant int RMI__RESERVEDMON100 = 12796;
+%constant int RMI__LASTMON = 12797;
+%constant int RMI__RMS_STATS = 16893;
+%constant int RMI__SEQGETS = 16894;
+%constant int RMI__KEYGETS = 16895;
+%constant int RMI__RFAGETS = 16896;
+%constant int RMI__GETBYTES = 16897;
+%constant int RMI__SEQPUTS = 16898;
+%constant int RMI__KEYPUTS = 16899;
+%constant int RMI__PUTBYTES = 16900;
+%constant int RMI__UPDATES = 16901;
+%constant int RMI__UPDATEBYTES = 16902;
+%constant int RMI__DELETES = 16903;
+%constant int RMI__TRUNCATES = 16904;
+%constant int RMI__TRUNCBLKS = 16905;
+%constant int RMI__SEQFINDS = 16906;
+%constant int RMI__KEYFINDS = 16907;
+%constant int RMI__RFAFINDS = 16908;
+%constant int RMI__READS = 16909;
+%constant int RMI__READBYTES = 16910;
+%constant int RMI__CONNECTS = 16911;
+%constant int RMI__DISCONNECTS = 16912;
+%constant int RMI__EXTENDS = 16913;
+%constant int RMI__EXTBLOCKS = 16914;
+%constant int RMI__FLUSHES = 16915;
+%constant int RMI__REWINDS = 16916;
+%constant int RMI__WRITES = 16917;
+%constant int RMI__WRITEBYTES = 16918;
+%constant int RMI__FLCKENQS = 16919;
+%constant int RMI__FLCKDEQS = 16920;
+%constant int RMI__FLCKCNVS = 16921;
+%constant int RMI__LBLCKENQS = 16922;
+%constant int RMI__LBLCKDEQS = 16923;
+%constant int RMI__LBLCKCNVS = 16924;
+%constant int RMI__GBLCKENQS = 16925;
+%constant int RMI__GBLCKDEQS = 16926;
+%constant int RMI__GBLCKCNVS = 16927;
+%constant int RMI__GSLCKENQS = 16928;
+%constant int RMI__GSLCKDEQS = 16929;
+%constant int RMI__GSLCKCNVS = 16930;
+%constant int RMI__RLCKENQS = 16931;
+%constant int RMI__RLCKDEQS = 16932;
+%constant int RMI__RLCKCNVS = 16933;
+%constant int RMI__APPLCKENQS = 16934;
+%constant int RMI__APPLCKDEQS = 16935;
+%constant int RMI__APPLCKCNVS = 16936;
+%constant int RMI__FLBLKASTS = 16937;
+%constant int RMI__LBLBLKASTS = 16938;
+%constant int RMI__GBLBLKASTS = 16939;
+%constant int RMI__APPBLKASTS = 16940;
+%constant int RMI__LCACHEHITS = 16941;
+%constant int RMI__LCACHETRIES = 16942;
+%constant int RMI__GCACHEHITS = 16943;
+%constant int RMI__GCACHETRIES = 16944;
+%constant int RMI__GBRDIRIOS = 16945;
+%constant int RMI__GBWDIRIOS = 16946;
+%constant int RMI__LBRDIRIOS = 16947;
+%constant int RMI__LBWDIRIOS = 16948;
+%constant int RMI__BKTSPLT = 16949;
+%constant int RMI__MBKTSPLT = 16950;
+%constant int RMI__RMSOPENS = 16951;
+%constant int RMI__CLOSES = 16952;
+%constant int RMI__GSBLKASTS = 16953;
+%constant int RMI__FLWAITS = 16954;
+%constant int RMI__LBWAITS = 16955;
+%constant int RMI__GBWAITS = 16956;
+%constant int RMI__GSWAITS = 16957;
+%constant int RMI__RLWAITS = 16958;
+%constant int RMI__APWAITS = 16959;
+%constant int RMI__TOTWAITS = 16960;
+%constant int RMI__OUTBUFQUO = 16961;
+%constant int RMI__RMSDEV1 = 16962;
+%constant int RMI__RMSDEV2 = 16963;
+%constant int RMI__RMSDEV3 = 16964;
+%constant int RMI__RMSDEV4 = 16965;
+%constant int RMI__RMSDEV5 = 16966;
+%constant int RMI__RMSDEV6 = 16967;
+%constant int RMI__RMSDEV7 = 16968;
+%constant int RMI__RMSDEV8 = 16969;
+%constant int RMI__RMSDEV9 = 16970;
+%constant int RMI__RMSDEV10 = 16971;
+%constant int RMI__RMSDEV11 = 16972;
+%constant int RMI__RMSDEV12 = 16973;
+%constant int RMI__RMSDEV13 = 16974;
+%constant int RMI__RMSDEV14 = 16975;
+%constant int RMI__RMSDEV15 = 16976;
+%constant int RMI__XQPQIOS = 16977;
+%constant int RMI__LCACHEHITPCNT = 16978;
+%constant int RMI__GCACHEHITPCNT = 16979;
+%constant int RMI__TOTALGET = 16980;
+%constant int RMI__TOTALPUT = 16981;
+%constant int RMI__TOTALFIND = 16982;
+%constant int RMI__BYTESGET = 16983;
+%constant int RMI__BYTESPUT = 16984;
+%constant int RMI__BYTESUPDATE = 16985;
+%constant int RMI__BYTESREAD = 16986;
+%constant int RMI__BYTESWRITE = 16987;
+%constant int RMI__BLOCKSTRUNCATE = 16988;
+%constant int RMI__BLOCKSEXTEND = 16989;
+%constant int RMI__ACTIVE_STREAMS = 16990;
+%constant int RMI__TOTAL_ENQS = 16991;
+%constant int RMI__TOTAL_DEQS = 16992;
+%constant int RMI__TOTAL_CNVS = 16993;
+%constant int RMI__TOTAL_BLKAST = 16994;
+%constant int RMI__RMS_ORG = 16995;
+%constant int RMI__INTCOL_GBHSH = 16996;
+%constant int RMI__INTCOL_GBH = 16997;
+%constant int RMI__INTRNDWN_GBHSH = 16998;
+%constant int RMI__INTRNDWN_GBH = 16999;
+%constant int RMI__RESERVEDRMS5 = 17000;
+%constant int RMI__RESERVEDRMS6 = 17001;
+%constant int RMI__RESERVEDRMS7 = 17002;
+%constant int RMI__RESERVEDRMS8 = 17003;
+%constant int RMI__RESERVEDRMS9 = 17004;
+%constant int RMI__RESERVEDRMS10 = 17005;
+%constant int RMI__RESERVEDRMS11 = 17006;
+%constant int RMI__RESERVEDRMS12 = 17007;
+%constant int RMI__RESERVEDRMS13 = 17008;
+%constant int RMI__RESERVEDRMS14 = 17009;
+%constant int RMI__RESERVEDRMS15 = 17010;
+%constant int RMI__RESERVEDRMS16 = 17011;
+%constant int RMI__RESERVEDRMS17 = 17012;
+%constant int RMI__RESERVEDRMS18 = 17013;
+%constant int RMI__RESERVEDRMS19 = 17014;
+%constant int RMI__RESERVEDRMS20 = 17015;
+%constant int RMI__RESERVEDRMS21 = 17016;
+%constant int RMI__RESERVEDRMS22 = 17017;
+%constant int RMI__RESERVEDRMS23 = 17018;
+%constant int RMI__RESERVEDRMS24 = 17019;
+%constant int RMI__RESERVEDRMS25 = 17020;
+%constant int RMI__RESERVEDRMS26 = 17021;
+%constant int RMI__RESERVEDRMS27 = 17022;
+%constant int RMI__RESERVEDRMS28 = 17023;
+%constant int RMI__RESERVEDRMS29 = 17024;
+%constant int RMI__RESERVEDRMS30 = 17025;
+%constant int RMI__RESERVEDRMS31 = 17026;
+%constant int RMI__RESERVEDRMS32 = 17027;
+%constant int RMI__RESERVEDRMS33 = 17028;
+%constant int RMI__RESERVEDRMS34 = 17029;
+%constant int RMI__RESERVEDRMS35 = 17030;
+%constant int RMI__RESERVEDRMS36 = 17031;
+%constant int RMI__RESERVEDRMS37 = 17032;
+%constant int RMI__RESERVEDRMS38 = 17033;
+%constant int RMI__RESERVEDRMS39 = 17034;
+%constant int RMI__RESERVEDRMS40 = 17035;
+%constant int RMI__RESERVEDRMS41 = 17036;
+%constant int RMI__RESERVEDRMS42 = 17037;
+%constant int RMI__RESERVEDRMS43 = 17038;
+%constant int RMI__RESERVEDRMS44 = 17039;
+%constant int RMI__RESERVEDRMS45 = 17040;
+%constant int RMI__RESERVEDRMS46 = 17041;
+%constant int RMI__RESERVEDRMS47 = 17042;
+%constant int RMI__RESERVEDRMS48 = 17043;
+%constant int RMI__RESERVEDRMS49 = 17044;
+%constant int RMI__RESERVEDRMS50 = 17045;
+%constant int RMI__RESERVEDRMS51 = 17046;
+%constant int RMI__RESERVEDRMS52 = 17047;
+%constant int RMI__RESERVEDRMS53 = 17048;
+%constant int RMI__RESERVEDRMS54 = 17049;
+%constant int RMI__RESERVEDRMS55 = 17050;
+%constant int RMI__RESERVEDRMS56 = 17051;
+%constant int RMI__RESERVEDRMS57 = 17052;
+%constant int RMI__RESERVEDRMS58 = 17053;
+%constant int RMI__RESERVEDRMS59 = 17054;
+%constant int RMI__RESERVEDRMS60 = 17055;
+%constant int RMI__RESERVEDRMS61 = 17056;
+%constant int RMI__RESERVEDRMS62 = 17057;
+%constant int RMI__RESERVEDRMS63 = 17058;
+%constant int RMI__RESERVEDRMS64 = 17059;
+%constant int RMI__RESERVEDRMS65 = 17060;
+%constant int RMI__RESERVEDRMS66 = 17061;
+%constant int RMI__RESERVEDRMS67 = 17062;
+%constant int RMI__RESERVEDRMS68 = 17063;
+%constant int RMI__RESERVEDRMS69 = 17064;
+%constant int RMI__RESERVEDRMS70 = 17065;
+%constant int RMI__RESERVEDRMS71 = 17066;
+%constant int RMI__RESERVEDRMS72 = 17067;
+%constant int RMI__RESERVEDRMS73 = 17068;
+%constant int RMI__RESERVEDRMS74 = 17069;
+%constant int RMI__RESERVEDRMS75 = 17070;
+%constant int RMI__RESERVEDRMS76 = 17071;
+%constant int RMI__RESERVEDRMS77 = 17072;
+%constant int RMI__RESERVEDRMS78 = 17073;
+%constant int RMI__RESERVEDRMS79 = 17074;
+%constant int RMI__RESERVEDRMS80 = 17075;
+%constant int RMI__RESERVEDRMS81 = 17076;
+%constant int RMI__RESERVEDRMS82 = 17077;
+%constant int RMI__RESERVEDRMS83 = 17078;
+%constant int RMI__RESERVEDRMS84 = 17079;
+%constant int RMI__RESERVEDRMS85 = 17080;
+%constant int RMI__RESERVEDRMS86 = 17081;
+%constant int RMI__RESERVEDRMS87 = 17082;
+%constant int RMI__RESERVEDRMS88 = 17083;
+%constant int RMI__RESERVEDRMS89 = 17084;
+%constant int RMI__RESERVEDRMS90 = 17085;
+%constant int RMI__RESERVEDRMS91 = 17086;
+%constant int RMI__RESERVEDRMS92 = 17087;
+%constant int RMI__RESERVEDRMS93 = 17088;
+%constant int RMI__RESERVEDRMS94 = 17089;
+%constant int RMI__RESERVEDRMS95 = 17090;
+%constant int RMI__RESERVEDRMS96 = 17091;
+%constant int RMI__RESERVEDRMS97 = 17092;
+%constant int RMI__RESERVEDRMS98 = 17093;
+%constant int RMI__RESERVEDRMS99 = 17094;
+%constant int RMI__RESERVEDRMS100 = 17095;
+%constant int RMI__LASTRMS = 17096;
+%constant int RMI__CPUID = 21192;
+%constant int RMI__CPUCOMPAT = 21193;
+%constant int RMI__CPUINTSTK = 21194;
+%constant int RMI__CPUMPSYNCH = 21195;
+%constant int RMI__CPUKERNEL = 21196;
+%constant int RMI__CPUEXEC = 21197;
+%constant int RMI__CPUSUPER = 21198;
+%constant int RMI__CPUUSER = 21199;
+%constant int RMI__CPUIDLE = 21200;
+%constant int RMI__PROCCNTMAX = 21201;
+%constant int RMI__PROCBATCNT = 21202;
+%constant int RMI__PROCINTCNT = 21203;
+%constant int RMI__PROCNETCNT = 21204;
+%constant int RMI__PROCSWITCHCNT = 21205;
+%constant int RMI__PROCBALSETCNT = 21206;
+%constant int RMI__PROCLOADCNT = 21207;
+%constant int RMI__BADFLTS = 21208;
+%constant int RMI__EXEFAULTS = 21209;
+%constant int RMI__HDRINSWAPS = 21210;
+%constant int RMI__HDROUTSWAPS = 21211;
+%constant int RMI__IOPAGCNT = 21212;
+%constant int RMI__ISWPCNTPG = 21213;
+%constant int RMI__OSWPCNT = 21214;
+%constant int RMI__OSWPCNTPG = 21215;
+%constant int RMI__RDFAULTS = 21216;
+%constant int RMI__TRANSFLTS = 21217;
+%constant int RMI__WRTFAULTS = 21218;
+%constant int RMI__USERPAGES = 21219;
+%constant int RMI__VMSPAGES = 21220;
+%constant int RMI__LOGNAMCRE = 21221;
+%constant int RMI__LOGNAMDEL = 21222;
+%constant int RMI__LOGNAMFAIL = 21223;
+%constant int RMI__LOGNAMTBLCRE = 21224;
+%constant int RMI__TTREADCNT = 21225;
+%constant int RMI__TTREADS = 21226;
+%constant int RMI__TTWRITECNT = 21227;
+%constant int RMI__TTWRITES = 21228;
+%constant int RMI__BUFOBJPAG = 21229;
+%constant int RMI__BUFOBJPAGPEAK = 21230;
+%constant int RMI__BUFOBJPAGS01 = 21231;
+%constant int RMI__BUFOBJPAGS2 = 21232;
+%constant int RMI__BUFOBJPAGMAXS01 = 21233;
+%constant int RMI__BUFOBJPAGMAXS2 = 21234;
+%constant int RMI__BUFOBJPAGPEAKS01 = 21235;
+%constant int RMI__BUFOBJPAGPEAKS2 = 21236;
+%constant int RMI__BUFOBJPGLTMAXS01 = 21237;
+%constant int RMI__BUFOBJPGLTMAXS2 = 21238;
+%constant int RMI__DLCK_INCMPLT = 21239;
+%constant int RMI__DLCKMSGS_IN = 21240;
+%constant int RMI__DLCKMSGS_OUT = 21241;
+%constant int RMI__TQETOTAL = 21242;
+%constant int RMI__TQESYSUB = 21243;
+%constant int RMI__TQEUSRTIMR = 21244;
+%constant int RMI__TQEUSRWAKE = 21245;
+%constant int RMI__CWPSBYTESIN = 21246;
+%constant int RMI__CWPSBYTESOUT = 21247;
+%constant int RMI__CWPSJPISIN = 21248;
+%constant int RMI__CWPSJPISOUT = 21249;
+%constant int RMI__CWPSMSGSIN = 21250;
+%constant int RMI__CWPSMSGSOUT = 21251;
+%constant int RMI__CWPSPCNTRLIN = 21252;
+%constant int RMI__CWPSPCNTRLOUT = 21253;
+%constant int RMI__CWPSRSRCIN = 21254;
+%constant int RMI__CWPSRSRCOUT = 21255;
+%constant int RMI__CHME = 21256;
+%constant int RMI__CHMK = 21257;
+%constant int RMI__MCHKERRS = 21258;
+%constant int RMI__MEMERRS = 21259;
+%constant int RMI__RESMASK = 21260;
+%constant int RMI__CACHE_STATE = 21261;
+%constant int RMI__CACHE_MEMORY = 21262;
+%constant int RMI__CACHE_FREE = 21263;
+%constant int RMI__CACHE_READ_HITS = 21264;
+%constant int RMI__CACHE_VIRT_READS = 21265;
+%constant int RMI__CACHE_VIRT_WRITES = 21266;
+%constant int RMI__CACHE_R_ARND_MOD = 21267;
+%constant int RMI__CACHE_R_ARND_SIZ = 21268;
+%constant int RMI__CACHE_W_ARND_MOD = 21269;
+%constant int RMI__CACHE_W_ARND_SIZ = 21270;
+%constant int RMI__CACHE_LIMBO_LEN = 21271;
+%constant int RMI__CACHE_MIN_SIZE = 21272;
+%constant int RMI__CACHE_MAX_SIZE = 21273;
+%constant int RMI__CACHE_MAX_LIMIT = 21274;
+%constant int RMI__CACHE_MAX_IO_SIZE = 21275;
+%constant int RMI__CACHE_MAX_LOCKS = 21276;
+%constant int RMI__CACHE_READAHEAD = 21277;
+%constant int RMI__CACHE_WRITEBEHIND = 21278;
+%constant int RMI__CACHE_WRITEDELAY = 21279;
+%constant int RMI__CACHE_VOLS_FXFC_MODE = 21280;
+%constant int RMI__CACHE_VOLS_RXFC_MODE = 21281;
+%constant int RMI__CACHE_VOLS_NC_MODE = 21282;
+%constant int RMI__CACHE_VOLS_PNC_MODE = 21283;
+%constant int RMI__CACHE_OPEN_FILES = 21284;
+%constant int RMI__CACHE_UNSYNCHED_IOS = 21285;
+%constant int RMI__CACHE_DELAYED_WRITES = 21286;
+%constant int RMI__CACHE_LOST_WRITES = 21287;
+%constant int RMI__CACHE_FULL_BARRIERS = 21288;
+%constant int RMI__CACHE_PARTIAL_BARRIERS = 21289;
+%constant int RMI__CACHE_READS_AROUND = 21290;
+%constant int RMI__CACHE_WRITES_AROUND = 21291;
+%constant int RMI__CACHE_CURRENT_LOCKS = 21292;
+%constant int RMI__CACHE_BARRIER_COUNT = 21293;
+%constant int RMI__CACHE_SUPER_WRITES = 21294;
+%constant int RMI__CACHE_NON_PAGED_POOL = 21295;
+%constant int RMI__CACHE_EVERYTHING = 21296;
+%constant int RMI__GBP_CURMAP = 21297;
+%constant int RMI__GBP_CURMAP_GRP = 21298;
+%constant int RMI__GBP_CURMAP_GRPWRT = 21299;
+%constant int RMI__GBP_CURMAP_SYS = 21300;
+%constant int RMI__GBP_CURMAP_SYSWRT = 21301;
+%constant int RMI__GBP_MAXMAP = 21302;
+%constant int RMI__GBS_CURMAP = 21303;
+%constant int RMI__GBS_CURMAP_GRP = 21304;
+%constant int RMI__GBS_CURMAP_GRPWRT = 21305;
+%constant int RMI__GBS_CURMAP_SYS = 21306;
+%constant int RMI__GBS_CURMAP_SYSWRT = 21307;
+%constant int RMI__GBS_MAXMAP = 21308;
+%constant int RMI__GBS_NOREF = 21309;
+%constant int RMI__NP_POOL_ALLOC = 21310;
+%constant int RMI__NP_POOL_ALLOCF = 21311;
+%constant int RMI__NP_POOL_EXP = 21312;
+%constant int RMI__NP_POOL_EXPF = 21313;
+%constant int RMI__PG_POOL_ALLOC = 21314;
+%constant int RMI__PG_POOL_ALLOCF = 21315;
+%constant int RMI__PG_POOL_EXPF = 21316;
+%constant int RMI__SMP_CURMAP = 21317;
+%constant int RMI__SMP_CURMAP_GRP = 21318;
+%constant int RMI__SMP_CURMAP_GRPWRT = 21319;
+%constant int RMI__SMP_CURMAP_SYS = 21320;
+%constant int RMI__SMP_CURMAP_SYSWRT = 21321;
+%constant int RMI__SMS_CURMAP = 21322;
+%constant int RMI__SMS_CURMAP_GRP = 21323;
+%constant int RMI__SMS_CURMAP_GRPWRT = 21324;
+%constant int RMI__SMS_CURMAP_SYS = 21325;
+%constant int RMI__SMS_CURMAP_SYSWRT = 21326;
+%constant int RMI__SMS_NOREF = 21327;
+%constant int RMI__RESERVEDEXT1 = 21328;
+%constant int RMI__RESERVEDEXT2 = 21329;
+%constant int RMI__RESERVEDEXT3 = 21330;
+%constant int RMI__RESERVEDEXT4 = 21331;
+%constant int RMI__RESERVEDEXT5 = 21332;
+%constant int RMI__RESERVEDEXT6 = 21333;
+%constant int RMI__RESERVEDEXT7 = 21334;
+%constant int RMI__RESERVEDEXT8 = 21335;
+%constant int RMI__RESERVEDEXT9 = 21336;
+%constant int RMI__RESERVEDEXT10 = 21337;
+%constant int RMI__RESERVEDEXT11 = 21338;
+%constant int RMI__RESERVEDEXT12 = 21339;
+%constant int RMI__RESERVEDEXT13 = 21340;
+%constant int RMI__RESERVEDEXT14 = 21341;
+%constant int RMI__RESERVEDEXT15 = 21342;
+%constant int RMI__RESERVEDEXT16 = 21343;
+%constant int RMI__RESERVEDEXT17 = 21344;
+%constant int RMI__RESERVEDEXT18 = 21345;
+%constant int RMI__RESERVEDEXT19 = 21346;
+%constant int RMI__RESERVEDEXT20 = 21347;
+%constant int RMI__RESERVEDEXT21 = 21348;
+%constant int RMI__RESERVEDEXT22 = 21349;
+%constant int RMI__RESERVEDEXT23 = 21350;
+%constant int RMI__RESERVEDEXT24 = 21351;
+%constant int RMI__RESERVEDEXT25 = 21352;
+%constant int RMI__RESERVEDEXT26 = 21353;
+%constant int RMI__RESERVEDEXT27 = 21354;
+%constant int RMI__RESERVEDEXT28 = 21355;
+%constant int RMI__RESERVEDEXT29 = 21356;
+%constant int RMI__RESERVEDEXT30 = 21357;
+%constant int RMI__RESERVEDEXT31 = 21358;
+%constant int RMI__RESERVEDEXT32 = 21359;
+%constant int RMI__RESERVEDEXT33 = 21360;
+%constant int RMI__RESERVEDEXT34 = 21361;
+%constant int RMI__RESERVEDEXT35 = 21362;
+%constant int RMI__RESERVEDEXT36 = 21363;
+%constant int RMI__RESERVEDEXT37 = 21364;
+%constant int RMI__RESERVEDEXT38 = 21365;
+%constant int RMI__RESERVEDEXT39 = 21366;
+%constant int RMI__RESERVEDEXT40 = 21367;
+%constant int RMI__RESERVEDEXT41 = 21368;
+%constant int RMI__RESERVEDEXT42 = 21369;
+%constant int RMI__RESERVEDEXT43 = 21370;
+%constant int RMI__RESERVEDEXT44 = 21371;
+%constant int RMI__RESERVEDEXT45 = 21372;
+%constant int RMI__RESERVEDEXT46 = 21373;
+%constant int RMI__RESERVEDEXT47 = 21374;
+%constant int RMI__RESERVEDEXT48 = 21375;
+%constant int RMI__RESERVEDEXT49 = 21376;
+%constant int RMI__RESERVEDEXT50 = 21377;
+%constant int RMI__RESERVEDEXT51 = 21378;
+%constant int RMI__RESERVEDEXT52 = 21379;
+%constant int RMI__RESERVEDEXT53 = 21380;
+%constant int RMI__RESERVEDEXT54 = 21381;
+%constant int RMI__RESERVEDEXT55 = 21382;
+%constant int RMI__RESERVEDEXT56 = 21383;
+%constant int RMI__RESERVEDEXT57 = 21384;
+%constant int RMI__RESERVEDEXT58 = 21385;
+%constant int RMI__RESERVEDEXT59 = 21386;
+%constant int RMI__RESERVEDEXT60 = 21387;
+%constant int RMI__RESERVEDEXT61 = 21388;
+%constant int RMI__RESERVEDEXT62 = 21389;
+%constant int RMI__RESERVEDEXT63 = 21390;
+%constant int RMI__RESERVEDEXT64 = 21391;
+%constant int RMI__RESERVEDEXT65 = 21392;
+%constant int RMI__RESERVEDEXT66 = 21393;
+%constant int RMI__RESERVEDEXT67 = 21394;
+%constant int RMI__RESERVEDEXT68 = 21395;
+%constant int RMI__RESERVEDEXT69 = 21396;
+%constant int RMI__RESERVEDEXT70 = 21397;
+%constant int RMI__RESERVEDEXT71 = 21398;
+%constant int RMI__RESERVEDEXT72 = 21399;
+%constant int RMI__RESERVEDEXT73 = 21400;
+%constant int RMI__RESERVEDEXT74 = 21401;
+%constant int RMI__RESERVEDEXT75 = 21402;
+%constant int RMI__RESERVEDEXT76 = 21403;
+%constant int RMI__RESERVEDEXT77 = 21404;
+%constant int RMI__RESERVEDEXT78 = 21405;
+%constant int RMI__RESERVEDEXT79 = 21406;
+%constant int RMI__RESERVEDEXT80 = 21407;
+%constant int RMI__RESERVEDEXT81 = 21408;
+%constant int RMI__RESERVEDEXT82 = 21409;
+%constant int RMI__RESERVEDEXT83 = 21410;
+%constant int RMI__RESERVEDEXT84 = 21411;
+%constant int RMI__RESERVEDEXT85 = 21412;
+%constant int RMI__RESERVEDEXT86 = 21413;
+%constant int RMI__RESERVEDEXT87 = 21414;
+%constant int RMI__RESERVEDEXT88 = 21415;
+%constant int RMI__RESERVEDEXT89 = 21416;
+%constant int RMI__RESERVEDEXT90 = 21417;
+%constant int RMI__RESERVEDEXT91 = 21418;
+%constant int RMI__RESERVEDEXT92 = 21419;
+%constant int RMI__RESERVEDEXT93 = 21420;
+%constant int RMI__RESERVEDEXT94 = 21421;
+%constant int RMI__RESERVEDEXT95 = 21422;
+%constant int RMI__RESERVEDEXT96 = 21423;
+%constant int RMI__RESERVEDEXT97 = 21424;
+%constant int RMI__RESERVEDEXT98 = 21425;
+%constant int RMI__RESERVEDEXT99 = 21426;
+%constant int RMI__RESERVEDEXT100 = 21427;
+%constant int RMI__RESERVEDEXT101 = 21428;
+%constant int RMI__RESERVEDEXT102 = 21429;
+%constant int RMI__RESERVEDEXT103 = 21430;
+%constant int RMI__RESERVEDEXT104 = 21431;
+%constant int RMI__RESERVEDEXT105 = 21432;
+%constant int RMI__RESERVEDEXT106 = 21433;
+%constant int RMI__RESERVEDEXT107 = 21434;
+%constant int RMI__RESERVEDEXT108 = 21435;
+%constant int RMI__RESERVEDEXT109 = 21436;
+%constant int RMI__RESERVEDEXT110 = 21437;
+%constant int RMI__RESERVEDEXT111 = 21438;
+%constant int RMI__RESERVEDEXT112 = 21439;
+%constant int RMI__RESERVEDEXT113 = 21440;
+%constant int RMI__RESERVEDEXT114 = 21441;
+%constant int RMI__RESERVEDEXT115 = 21442;
+%constant int RMI__RESERVEDEXT116 = 21443;
+%constant int RMI__RESERVEDEXT117 = 21444;
+%constant int RMI__RESERVEDEXT118 = 21445;
+%constant int RMI__RESERVEDEXT119 = 21446;
+%constant int RMI__RESERVEDEXT120 = 21447;
+%constant int RMI__RESERVEDEXT121 = 21448;
+%constant int RMI__RESERVEDEXT122 = 21449;
+%constant int RMI__RESERVEDEXT123 = 21450;
+%constant int RMI__RESERVEDEXT124 = 21451;
+%constant int RMI__RESERVEDEXT125 = 21452;
+%constant int RMI__RESERVEDEXT126 = 21453;
+%constant int RMI__RESERVEDEXT127 = 21454;
+%constant int RMI__RESERVEDEXT128 = 21455;
+%constant int RMI__RESERVEDEXT129 = 21456;
+%constant int RMI__RESERVEDEXT130 = 21457;
+%constant int RMI__RESERVEDEXT131 = 21458;
+%constant int RMI__RESERVEDEXT132 = 21459;
+%constant int RMI__RESERVEDEXT133 = 21460;
+%constant int RMI__RESERVEDEXT134 = 21461;
+%constant int RMI__RESERVEDEXT135 = 21462;
+%constant int RMI__RESERVEDEXT136 = 21463;
+%constant int RMI__RESERVEDEXT137 = 21464;
+%constant int RMI__RESERVEDEXT138 = 21465;
+%constant int RMI__RESERVEDEXT139 = 21466;
+%constant int RMI__RESERVEDEXT140 = 21467;
+%constant int RMI__RESERVEDEXT141 = 21468;
+%constant int RMI__RESERVEDEXT142 = 21469;
+%constant int RMI__RESERVEDEXT143 = 21470;
+%constant int RMI__RESERVEDEXT144 = 21471;
+%constant int RMI__RESERVEDEXT145 = 21472;
+%constant int RMI__RESERVEDEXT146 = 21473;
+%constant int RMI__RESERVEDEXT147 = 21474;
+%constant int RMI__RESERVEDEXT148 = 21475;
+%constant int RMI__RESERVEDEXT149 = 21476;
+%constant int RMI__RESERVEDEXT150 = 21477;
+%constant int RMI__RESERVEDEXT151 = 21478;
+%constant int RMI__RESERVEDEXT152 = 21479;
+%constant int RMI__RESERVEDEXT153 = 21480;
+%constant int RMI__RESERVEDEXT154 = 21481;
+%constant int RMI__RESERVEDEXT155 = 21482;
+%constant int RMI__RESERVEDEXT156 = 21483;
+%constant int RMI__RESERVEDEXT157 = 21484;
+%constant int RMI__RESERVEDEXT158 = 21485;
+%constant int RMI__RESERVEDEXT159 = 21486;
+%constant int RMI__RESERVEDEXT160 = 21487;
+%constant int RMI__RESERVEDEXT161 = 21488;
+%constant int RMI__RESERVEDEXT162 = 21489;
+%constant int RMI__RESERVEDEXT163 = 21490;
+%constant int RMI__RESERVEDEXT164 = 21491;
+%constant int RMI__RESERVEDEXT165 = 21492;
+%constant int RMI__RESERVEDEXT166 = 21493;
+%constant int RMI__RESERVEDEXT167 = 21494;
+%constant int RMI__RESERVEDEXT168 = 21495;
+%constant int RMI__RESERVEDEXT169 = 21496;
+%constant int RMI__RESERVEDEXT170 = 21497;
+%constant int RMI__RESERVEDEXT171 = 21498;
+%constant int RMI__RESERVEDEXT172 = 21499;
+%constant int RMI__RESERVEDEXT173 = 21500;
+%constant int RMI__RESERVEDEXT174 = 21501;
+%constant int RMI__RESERVEDEXT175 = 21502;
+%constant int RMI__RESERVEDEXT176 = 21503;
+%constant int RMI__RESERVEDEXT177 = 21504;
+%constant int RMI__RESERVEDEXT178 = 21505;
+%constant int RMI__RESERVEDEXT179 = 21506;
+%constant int RMI__RESERVEDEXT180 = 21507;
+%constant int RMI__RESERVEDEXT181 = 21508;
+%constant int RMI__RESERVEDEXT182 = 21509;
+%constant int RMI__RESERVEDEXT183 = 21510;
+%constant int RMI__RESERVEDEXT184 = 21511;
+%constant int RMI__RESERVEDEXT185 = 21512;
+%constant int RMI__RESERVEDEXT186 = 21513;
+%constant int RMI__RESERVEDEXT187 = 21514;
+%constant int RMI__RESERVEDEXT188 = 21515;
+%constant int RMI__RESERVEDEXT189 = 21516;
+%constant int RMI__RESERVEDEXT190 = 21517;
+%constant int RMI__RESERVEDEXT191 = 21518;
+%constant int RMI__RESERVEDEXT192 = 21519;
+%constant int RMI__RESERVEDEXT193 = 21520;
+%constant int RMI__RESERVEDEXT194 = 21521;
+%constant int RMI__RESERVEDEXT195 = 21522;
+%constant int RMI__RESERVEDEXT196 = 21523;
+%constant int RMI__RESERVEDEXT197 = 21524;
+%constant int RMI__RESERVEDEXT198 = 21525;
+%constant int RMI__RESERVEDEXT199 = 21526;
+%constant int RMI__RESERVEDEXT200 = 21527;
+%constant int RMI__RESERVEDEXT201 = 21528;
+%constant int RMI__RESERVEDEXT202 = 21529;
+%constant int RMI__RESERVEDEXT203 = 21530;
+%constant int RMI__RESERVEDEXT204 = 21531;
+%constant int RMI__RESERVEDEXT205 = 21532;
+%constant int RMI__RESERVEDEXT206 = 21533;
+%constant int RMI__RESERVEDEXT207 = 21534;
+%constant int RMI__RESERVEDEXT208 = 21535;
+%constant int RMI__RESERVEDEXT209 = 21536;
+%constant int RMI__RESERVEDEXT210 = 21537;
+%constant int RMI__RESERVEDEXT211 = 21538;
+%constant int RMI__RESERVEDEXT212 = 21539;
+%constant int RMI__RESERVEDEXT213 = 21540;
+%constant int RMI__RESERVEDEXT214 = 21541;
+%constant int RMI__RESERVEDEXT215 = 21542;
+%constant int RMI__RESERVEDEXT216 = 21543;
+%constant int RMI__RESERVEDEXT217 = 21544;
+%constant int RMI__RESERVEDEXT218 = 21545;
+%constant int RMI__RESERVEDEXT219 = 21546;
+%constant int RMI__RESERVEDEXT220 = 21547;
+%constant int RMI__RESERVEDEXT221 = 21548;
+%constant int RMI__RESERVEDEXT222 = 21549;
+%constant int RMI__RESERVEDEXT223 = 21550;
+%constant int RMI__RESERVEDEXT224 = 21551;
+%constant int RMI__RESERVEDEXT225 = 21552;
+%constant int RMI__RESERVEDEXT226 = 21553;
+%constant int RMI__RESERVEDEXT227 = 21554;
+%constant int RMI__RESERVEDEXT228 = 21555;
+%constant int RMI__RESERVEDEXT229 = 21556;
+%constant int RMI__RESERVEDEXT230 = 21557;
+%constant int RMI__RESERVEDEXT231 = 21558;
+%constant int RMI__RESERVEDEXT232 = 21559;
+%constant int RMI__RESERVEDEXT233 = 21560;
+%constant int RMI__RESERVEDEXT234 = 21561;
+%constant int RMI__RESERVEDEXT235 = 21562;
+%constant int RMI__RESERVEDEXT236 = 21563;
+%constant int RMI__RESERVEDEXT237 = 21564;
+%constant int RMI__RESERVEDEXT238 = 21565;
+%constant int RMI__RESERVEDEXT239 = 21566;
+%constant int RMI__RESERVEDEXT240 = 21567;
+%constant int RMI__RESERVEDEXT241 = 21568;
+%constant int RMI__RESERVEDEXT242 = 21569;
+%constant int RMI__RESERVEDEXT243 = 21570;
+%constant int RMI__RESERVEDEXT244 = 21571;
+%constant int RMI__RESERVEDEXT245 = 21572;
+%constant int RMI__RESERVEDEXT246 = 21573;
+%constant int RMI__RESERVEDEXT247 = 21574;
+%constant int RMI__RESERVEDEXT248 = 21575;
+%constant int RMI__RESERVEDEXT249 = 21576;
+%constant int RMI__RESERVEDEXT250 = 21577;
+%constant int RMI__RESERVEDEXT251 = 21578;
+%constant int RMI__RESERVEDEXT252 = 21579;
+%constant int RMI__RESERVEDEXT253 = 21580;
+%constant int RMI__RESERVEDEXT254 = 21581;
+%constant int RMI__RESERVEDEXT255 = 21582;
+%constant int RMI__RESERVEDEXT256 = 21583;
+%constant int RMI__RESERVEDEXT257 = 21584;
+%constant int RMI__RESERVEDEXT258 = 21585;
+%constant int RMI__RESERVEDEXT259 = 21586;
+%constant int RMI__RESERVEDEXT260 = 21587;
+%constant int RMI__RESERVEDEXT261 = 21588;
+%constant int RMI__RESERVEDEXT262 = 21589;
+%constant int RMI__RESERVEDEXT263 = 21590;
+%constant int RMI__RESERVEDEXT264 = 21591;
+%constant int RMI__RESERVEDEXT265 = 21592;
+%constant int RMI__RESERVEDEXT266 = 21593;
+%constant int RMI__RESERVEDEXT267 = 21594;
+%constant int RMI__RESERVEDEXT268 = 21595;
+%constant int RMI__RESERVEDEXT269 = 21596;
+%constant int RMI__RESERVEDEXT270 = 21597;
+%constant int RMI__RESERVEDEXT271 = 21598;
+%constant int RMI__RESERVEDEXT272 = 21599;
+%constant int RMI__RESERVEDEXT273 = 21600;
+%constant int RMI__RESERVEDEXT274 = 21601;
+%constant int RMI__RESERVEDEXT275 = 21602;
+%constant int RMI__RESERVEDEXT276 = 21603;
+%constant int RMI__RESERVEDEXT277 = 21604;
+%constant int RMI__RESERVEDEXT278 = 21605;
+%constant int RMI__RESERVEDEXT279 = 21606;
+%constant int RMI__RESERVEDEXT280 = 21607;
+%constant int RMI__RESERVEDEXT281 = 21608;
+%constant int RMI__RESERVEDEXT282 = 21609;
+%constant int RMI__RESERVEDEXT283 = 21610;
+%constant int RMI__RESERVEDEXT284 = 21611;
+%constant int RMI__RESERVEDEXT285 = 21612;
+%constant int RMI__RESERVEDEXT286 = 21613;
+%constant int RMI__RESERVEDEXT287 = 21614;
+%constant int RMI__RESERVEDEXT288 = 21615;
+%constant int RMI__RESERVEDEXT289 = 21616;
+%constant int RMI__RESERVEDEXT290 = 21617;
+%constant int RMI__RESERVEDEXT291 = 21618;
+%constant int RMI__RESERVEDEXT292 = 21619;
+%constant int RMI__RESERVEDEXT293 = 21620;
+%constant int RMI__RESERVEDEXT294 = 21621;
+%constant int RMI__RESERVEDEXT295 = 21622;
+%constant int RMI__RESERVEDEXT296 = 21623;
+%constant int RMI__RESERVEDEXT297 = 21624;
+%constant int RMI__RESERVEDEXT298 = 21625;
+%constant int RMI__RESERVEDEXT299 = 21626;
+%constant int RMI__RESERVEDEXT300 = 21627;
+%constant int RMI__LASTEX2 = 21628;
+%constant int RMI__tablesize = 1148;
+%constant int RMI_S_rmi_scs_offsets = 56;
+%constant int RMI_s_scs_nodename = 8;
+%constant int RMI_c_scs_minsize = 56;
+%constant int RMI_S_rmi_disk_offsets = 37;
+%constant int RMI_s_disk_nodename = 8;
+%constant int RMI_s_disk_volnamel = 8;
+%constant int RMI_c_disk_minsize = 37;
+%constant int RMI_S_rmi_disk_offsets_rev4 = 36;
+%constant int RMI_s_disk_nodename_rev4 = 8;
+%constant int RMI_s_disk_volnamel_rev4 = 8;
+%constant int RMI_c_disk_minsize_rev4 = 36;
+%constant int RMI_S_rmi_proc_class = 67;
+%constant int RMI_s_proc_lname = 16;
+%constant int RMI_c_proc_minsize = 67;
diff --git a/Modules/vms/rms/build.com b/Modules/vms/rms/build.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL2J1aWxkLmNvbQ==
--- /dev/null
+++ b/Modules/vms/rms/build.com
@@ -0,0 +1,22 @@
+$ set verify
+$ hell:
+$ ! RMS interface
+$ define cc$include python$root:[include]
+$ ccopt = "/nolist/noopt/names=(as_is,shortened)/define=(_OSF_SOURCE,_USE_STD_STAT)/include=cc$include/warn=disable=(QUESTCOMPARE,QUESTCOMPARE1)"
+$
+$!! cc'ccopt' [.modules.vms.rms]rms.c
+$ cc'ccopt' rms.c
+$ link/share=[---.lib]_rms.exe rms.obj,sys$input/opt
+sys$library:pthread$rtl.exe/share
+python$shr/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rms=PROCEDURE)
+$ purge/log [...]
+$ delete/log/noconf rms.obj;*
+$
+$
+$!!! copy _rms.exe PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload]
+$!!! purge/log PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload]
+$ exit
+
diff --git a/Modules/vms/rms/indexedfile.py b/Modules/vms/rms/indexedfile.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL2luZGV4ZWRmaWxlLnB5
--- /dev/null
+++ b/Modules/vms/rms/indexedfile.py
@@ -0,0 +1,329 @@
+import _rms
+import vms.fabdef
+import vms.rmsdef
+import struct
+from decimal import Decimal
+
+class BCD:
+    def __init__(self, ipart, dpart):
+        self._ipart = ipart
+        self._dpart = dpart
+    def decode(self, val):
+        return Decimal(_rms.BCD2Tuple(val, self._dpart))
+    def pack(self, val):
+        return _rms.Tuple2BCD(val.as_tuple(), self._ipart,
+                                 self._dpart)
+
+class IndexedFile:
+    def __init__(self, filename, item_class, auto_open_close=True):
+        self.filename = filename
+        self._status = None
+        self._item_class = item_class
+        self._auto_init = self._auto = auto_open_close
+        self._file = None
+        self._iterkeynum = self.primary_keynum()
+
+    def __del__(self):
+        if self._file:
+            self.close()
+
+    def primary_keynum(self):
+        raise NotImplementedError('IndexedFile.primary_keynum')
+
+    def iterator_keynum(self, keynum = None):
+        prev = self._iterkeynum
+        if keynum is not None:
+            self._iterkeynum = keynum
+        return prev
+
+    def __iter__(self):
+        if self._auto and not self._file:
+            self.open()
+            self._file.usekey(self._iterkeynum)
+            self._file.rewind()
+            self._open_by_iterator = True
+        else:
+            self._open_by_iterator = False
+        return self
+
+    def __next__(self):
+        try:
+            rec = self._file.__next__()
+        except StopIteration:
+            if self._open_by_iterator:
+                self.close()
+            raise
+        return self._item_class.unpack(rec, self._item_class)
+
+    def next(self):
+        return self.__next__()
+
+    def usekey(self, keynum):
+        self._file.usekey(keynum)
+
+    def rewind(self):
+        self._file.rewind()
+
+    def find(self, keynum, keypack):
+        if not self._auto:
+            f = self._file
+        else:
+            acc = vms.fabdef.FAB_M_GET
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            f = _rms.file(self.filename, fac=acc, shr=shr)
+        if keynum is not None:
+            f.usekey(keynum)
+        try:
+            f.find(keypack)
+        except _rms.error as e:
+            if self._auto:
+                f.close()
+            if e.errno == vms.rmsdef.RMS__RNF:
+                return False
+            else:
+                raise
+        return True
+
+    def open(self,
+             acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + vms.fabdef.FAB_M_UPD,
+             shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD,
+             fop = 0):
+        self._auto = False
+        self._status = None
+        self._file = _rms.file(self.filename, fac=acc, shr=shr, fop=fop)
+
+    def close(self):
+        self._file.close()
+        self._file = None
+        self._auto = self._auto_init
+        self._iterkeynum = self.primary_keynum()
+
+    def status(self):
+        return self._status
+
+    def put(self, rec):
+        if not self._auto:
+            f = self._file
+        else:
+            # add record to the file
+            acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + vms.fabdef.FAB_M_UPD
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            fop = 0
+            f = _rms.file(self.filename, fac=acc, shr=shr, fop=fop)
+        self._status = None
+        rec = rec.pack()
+        try:
+            self._status = f.put(rec)
+        except _rms.error:
+            if self._auto:
+                f.close()
+            raise
+        else:
+            if self._auto:
+                f.close()
+
+    def delete(self, keynum, keyval):
+        if not self._auto:
+            f = self._file
+        else:
+            acc = vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            f = _rms.file(self.filename, fac=acc, shr=shr)
+        self._status = None
+        f.usekey(keynum)
+        key = self._item_class.pack_key(keynum, keyval)
+        try:
+            self._status = f.find(key)
+            self._status = f.delete()
+        except _rms.error:
+            if self._auto:
+                f.close()
+            raise
+        else:
+            if self._auto:
+                f.close()
+
+    def delete_current(self):
+        if not self._file:
+            raise "File is not open"
+        self._status = None
+        try:
+            self._status = self._file.delete()
+        except _rms.error:
+            raise
+
+    def fetch(self, keynum, keyval, item_class = None):
+        if item_class is None:
+            item_class = self._item_class
+        if not self._auto:
+            f = self._file
+        else:
+            acc = vms.fabdef.FAB_M_GET
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            f = _rms.file(self.filename, fac=acc, shr=shr)
+        f.usekey(keynum)
+        self._status = None
+        key = self._item_class.pack_key(keynum, keyval)
+        try:
+            self._status, r = f.fetch(key)
+        except _rms.error:
+            if self._auto:
+                f.close()
+            raise
+        else:
+            if self._auto:
+                f.close()
+        if self._status == vms.rmsdef.RMS__RNF:
+             return None
+        return item_class.unpack(r, item_class)
+
+    def update(self, rec):
+        if not self._auto:
+            f = self._file
+        else:
+            acc = vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_UPD
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            f = _rms.file(self.filename, fac=acc, shr=shr)
+        self._status = None
+        f.usekey(self.primary_keynum())
+        key = self._item_class.pack_key(self.primary_keynum(),
+                                        rec.keyval(self.primary_keynum()))
+        try:
+            self._status, r = f.fetch(key)
+            rec = rec.pack()
+            self._status = f.update(rec)
+        except _rms.error:
+            if self._auto:
+                f.close()
+            raise
+        else:
+            if self._auto:
+                f.close()
+
+    def update_current(self, rec):
+        if not self._file:
+            raise "File is not open"
+        self._status = None
+        try:
+            rec = rec.pack()
+            self._status = self._file.update(rec)
+        except _rms.error:
+            raise
+
+    def reset(self):
+        if not self._auto:
+            f = self._file
+        else:
+            acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + vms.fabdef.FAB_M_UPD
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            f = _rms.file(self.filename, fac=acc, shr=shr)
+        self._status = None
+        f.rewind()
+        s = f.find()
+        while(s != vms.rmsdef.RMS__EOF):
+            f.delete()
+            s = f.find()
+        if self._auto:
+            f.close()
+
+    def fetchall(self, keynum, keypack = None, stop = None, limit = None):
+        if not self._auto:
+            f = self._file
+        else:
+            acc = vms.fabdef.FAB_M_GET
+            shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+            f = _rms.file(self.filename, fac=acc, shr=shr)
+        self._status = None
+        f.usekey(keynum)
+        f.rewind()
+        if keypack:
+            try:
+                f.find(keypack)
+            except _rms.error as e:
+                if self._auto:
+                    f.close()
+                if e.errno == vms.rmsdef.RMS__RNF:
+                    return []
+                else:
+                    raise
+        res = []
+        n = 0
+        for r in f:
+            rec = self._item_class.unpack(r, self._item_class)
+            if stop and stop(rec):
+                break
+            res.append(rec)
+            n += 1
+            if limit is not None and n >= limit:
+                break
+        if self._auto:
+            f.close()
+        return res
+
+class Record:
+    autoDecodeRecord = True
+    _field = []
+    _fixsize = 0
+    _fmt = ''
+    _varsize = 0
+    def __init__(self, data, conv = True, rec = None, opt = None):
+        for i in range(len(self._field)):
+            setattr(self, self._field[i][0], data[i])
+        self._varrec = []
+#        self._rec = rec
+        self._conv = conv
+        if self._varsize > 0:
+            vartbl = data[-1]
+            for i in range(len(vartbl) / self._varsize):
+                self._varrec.append(
+                    self._varclass.unpack(vartbl[i * self._varsize : (i + 1) * self._varsize],
+                                          self._varclass))
+        if self.autoDecodeRecord:
+            self.decode()
+
+    def pack_key(keynum, keyval):
+        raise NotImplementedError('Record.pack_key')
+    pack_key = staticmethod(pack_key)
+
+    def keyval(self, keynum):
+        raise NotImplementedError('Record.keyval')
+
+    def decode(self):
+        if not self._conv:
+            for i in range(len(self._field)):
+                if len(self._field[i]) > 2:
+                    v = getattr(self, self._field[i][0])
+                    v = self._field[i][2].decode(v)
+                    setattr(self, self._field[i][0], v)
+            self._conv = True
+
+    def pack(self):
+        val = []
+        for i in range(len(self._field)):
+            v = getattr(self, self._field[i][0])
+            if len(self._field[i]) > 2:
+                if self._conv:
+                    v = self._field[i][2].pack(v)
+            if isinstance(v, str):
+                 val.append(v.encode())
+            else:
+                 val.append(v)
+        # print(*val)
+        lst = [struct.pack(self._fmt, *val)]
+        for v in self._varrec:
+            lst.append(v.pack())
+        r = b''.join(lst)
+#        if (r != self._rec):
+#            print 'OOps!'
+#            print repr(r)
+#            print repr(self.rec)
+
+        return r
+
+    def unpack(rec, classe, opt = None):
+        varfmt = ''
+        if len(rec) > classe._fixsize:
+            varfmt = '%ds' % (len(rec) - classe._fixsize)
+        lst = list(struct.unpack(classe._fmt + varfmt, rec))
+        return classe(lst, False, rec, opt)
+    unpack = staticmethod(unpack)
diff --git a/Modules/vms/rms/pyrms.c b/Modules/vms/rms/pyrms.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3B5cm1zLmM=
--- /dev/null
+++ b/Modules/vms/rms/pyrms.c
@@ -0,0 +1,1524 @@
+#define __NEW_STARLET
+#include <rms.h>
+#include <ssdef.h>
+#include <stsdef.h>
+#include <descrip.h>
+#include <starlet.h>
+#include <fdl$routines.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "Python.h"
+#include "structmember.h"
+
+#include "pyrms.h"
+
+
+#define RMSATTR_K_ORG  0
+#define RMSATTR_K_RFM  1
+#define RMSATTR_K_RAT  2
+#define RMSATTR_K_MRS  3
+#define RMSATTR_K_LRL  4
+
+/* update next if items are added */
+#define RMSATTR_K_LAST RMSATTR_K_LRL
+
+#define PARSE_K_NODE   0
+#define PARSE_K_DEV    1
+#define PARSE_K_DIR    2
+#define PARSE_K_NAME   3
+#define PARSE_K_TYPE   4
+#define PARSE_K_VER    5
+
+static PyObject *RMSError;
+PyDoc_STRVAR(RMSError__doc__, "OpenVMS RMS call failed");
+
+PyTypeObject RmsFile_Type;
+
+static void insint(PyObject * d, char *name, int value)
+{
+    PyObject *v = PyLong_FromLong((long) value);
+    if (!v || PyDict_SetItemString(d, name, v))
+	Py_FatalError("can't initialize sane module");
+
+    Py_DECREF(v);
+}
+
+static void getmsg(int cond, char *buf, int buflen)
+{
+    int s;
+    struct dsc$descriptor_s bufD;
+    char *tmp;
+    unsigned short int msglen;
+
+    tmp = malloc(buflen);
+    assert(tmp);
+
+    bufD.dsc$w_length = buflen - 1;
+    bufD.dsc$b_dtype = DSC$K_DTYPE_T;
+    bufD.dsc$b_class = DSC$K_CLASS_S;
+    bufD.dsc$a_pointer = tmp;
+
+    s = sys$getmsg(cond, &msglen, &bufD, 15, 0);
+
+    if (!$VMS_STATUS_SUCCESS(s)) {
+	strncpy(buf, "sys$getmsg failure", buflen);
+	buf[buflen - 1] = '\0';
+    } else {
+	strcpy(buf, tmp);
+    }
+
+    free(tmp);
+    buf[msglen] = '\0';
+}
+
+static long long_converter(PyObject * o)
+{
+    long res;
+
+    if (PyLong_Check(o))
+	res = PyLong_AsLong(o);
+    else if (PyLong_Check(o))
+	res = PyLong_AsUnsignedLong(o);
+    else {
+	res = 0;
+	PyErr_SetString(PyExc_TypeError, "an integer is required");
+    }
+
+    return res;
+}
+
+static unsigned long ulong_converter(PyObject * o)
+{
+    unsigned long res;
+
+    if (PyLong_Check(o))
+	res = PyLong_AsLong(o);
+    else if (PyLong_Check(o))
+	res = PyLong_AsUnsignedLong(o);
+    else {
+	res = 0;
+	PyErr_SetString(PyExc_TypeError, "an integer is required");
+    }
+
+    return res;
+}
+
+static void
+fill_fields(RmsFileObject * self, char *fn, int access, int share,
+	    unsigned int fop)
+{
+    self->fab = cc$rms_fab;
+    self->rab = cc$rms_rab;
+    self->sum = cc$rms_xabsum;
+    self->naml = cc$rms_naml;
+    self->area = 0;
+    self->key = 0;
+    self->flags = 0;
+    self->fab.fab$b_fac = access;
+    self->fab.fab$b_shr = share;
+    self->fab.fab$l_fna = (char *) -1;
+    self->fab.fab$b_fns = 0;
+    self->fab.fab$l_fop = fop;
+    self->fab.fab$l_xab = (void *) & self->sum;
+
+    self->fab.fab$l_naml = (void *) & self->naml;
+
+    strncpy(self->primarySpec, fn, sizeof(self->primarySpec) - 1);
+    self->primarySpec[sizeof(self->primarySpec) - 1] = '\0';
+
+    self->naml.naml$l_long_filename = (void *) self->primarySpec;
+    self->naml.naml$l_long_filename_size = strlen(self->primarySpec);
+
+    self->naml.naml$l_esa = (void *) self->Naml_Shrt_Esa;
+    self->naml.naml$b_ess = sizeof(self->Naml_Shrt_Esa) - 1;
+    self->naml.naml$l_rsa = (void *) self->Naml_Shrt_Rsa;
+    self->naml.naml$b_rss = sizeof(self->Naml_Shrt_Rsa) - 1;
+
+    self->naml.naml$l_long_expand = (void *) self->Naml_Long_Esa;
+    self->naml.naml$l_long_expand_alloc = sizeof(self->Naml_Long_Esa) - 1;
+    self->naml.naml$l_long_result = (void *) self->Naml_Long_Rsa;
+    self->naml.naml$l_long_result_alloc = sizeof(self->Naml_Long_Rsa) - 1;
+
+    self->naml.naml$v_synchk = 0;	// Have $PARSE do directory existence check
+
+    self->naml.naml$v_no_short_upcase = 1;	// Don't upcase short expanded spec.
+}
+
+static int open_file(RmsFileObject * self)
+{
+    int stat;
+    int i;
+    XABKEYDEF *key;
+    XABALLDEF *area;
+    void **xab_chain;
+
+    stat = sys$open((void *) & self->fab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    if (self->fab.fab$b_org != FAB$C_IDX) {
+	return RMS$_ORG;
+    }
+
+    xab_chain = (void *) & self->fab.fab$l_xab;
+
+    i = self->sum.xab$b_nok;
+
+    self->key = key = calloc(i, sizeof(XABKEYDEF));
+    assert(self->key);
+    while (--i >= 0) {
+	*key = cc$rms_xabkey;
+	key->xab$b_ref = i;
+	key->xab$l_nxt = *xab_chain;
+	*xab_chain = key;
+	key++;
+    }
+
+    i = self->sum.xab$b_noa;
+    self->area = area = calloc(i, sizeof(XABALLDEF));
+    assert(self->area);
+    while (--i >= 0) {
+	*area = cc$rms_xaball;
+	area->xab$b_aid = i;
+	area->xab$l_nxt = *xab_chain;
+	*xab_chain = area;
+	area++;
+    }
+
+    stat = sys$display((void *) & self->fab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    self->naml.naml$l_esa[self->naml.naml$b_esl] = '\0';
+    self->naml.naml$l_rsa[self->naml.naml$b_rsl] = '\0';
+    self->naml.naml$l_long_expand[self->naml.naml$l_long_expand_size] =
+	'\0';
+    self->naml.naml$l_long_result[self->naml.naml$l_long_result_size] =
+	'\0';
+
+    self->flags |= PYRMS_M_OPEN;
+
+    self->rab.rab$l_fab = (void *) & self->fab;
+
+    /* default to primary index */
+    self->rab.rab$b_krf = 0;
+    self->rab.rab$l_ubf = NULL;
+    self->rab.rab$w_usz = self->fab.fab$w_mrs;
+
+    stat = sys$connect((void *) & self->rab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+static int close_file(RmsFileObject * self)
+{
+    int stat;
+
+    stat = sys$disconnect((void *) & self->rab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    stat = sys$close((void *) & self->fab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+
+static int flush_file(RmsFileObject * self)
+{
+    int stat;
+
+    stat = sys$flush((void *) & self->rab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+
+static int free_file(RmsFileObject * self)
+{
+    int stat;
+
+    stat = sys$free((void *) & self->rab);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+
+static int release_file(RmsFileObject * self)
+{
+    int stat;
+
+    stat = sys$release((void *) & self->rab);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+
+static int usekey(RmsFileObject * self, int keynum)
+{
+    if (keynum >= self->sum.xab$b_nok) {
+	return SS$_INVARG;
+    }
+
+    self->rab.rab$b_krf = keynum;
+    return RMS$_NORMAL;
+}
+
+
+static int put(RmsFileObject * self, char *buf, int len)
+{
+    char *tmp;
+    int stat;
+
+    tmp = malloc(len);
+    assert(tmp);
+    memcpy(tmp, buf, len);
+    self->rab.rab$b_rac = RAB$C_KEY;
+    self->rab.rab$l_rbf = tmp;
+    self->rab.rab$w_rsz = len;
+
+    stat = sys$put((void *) & self->rab);
+    free(tmp);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+
+static int update(RmsFileObject * self, char *buf, int len)
+{
+    char *tmp;
+    int stat;
+
+    tmp = malloc(len);
+    assert(tmp);
+    memcpy(tmp, buf, len);
+    self->rab.rab$l_rbf = tmp;
+    self->rab.rab$w_rsz = len;
+
+    stat = sys$update((void *) & self->rab);
+    free(tmp);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+static int
+fetch(RmsFileObject * self, char *keyval, int len, char *buf, int *retlen)
+{
+    char *key = NULL;
+    int stat;
+
+    if (keyval) {
+        key = malloc(len);
+	assert(key);
+	memcpy(key, keyval, len);
+	self->rab.rab$l_kbf = key;
+	self->rab.rab$b_ksz = len;
+	self->rab.rab$b_rac = RAB$C_KEY;
+    } else {
+	self->rab.rab$b_rac = RAB$C_SEQ;
+    }
+
+    self->rab.rab$l_ubf = (void *) buf;
+
+    stat = sys$get((void *) & self->rab);
+
+    if (key) {
+	free(key);
+    }
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    *retlen = self->rab.rab$w_rsz;
+    return stat;
+}
+
+
+static int find(RmsFileObject * self, char *keyval, int len)
+{
+    char *tmp = NULL;
+    int stat;
+
+    if (keyval) {
+        tmp = malloc(len);
+	assert(tmp);
+	memcpy(tmp, keyval, len);
+	self->rab.rab$l_kbf = tmp;
+	self->rab.rab$b_ksz = len;
+	self->rab.rab$b_rac = RAB$C_KEY;
+    } else {
+	self->rab.rab$b_rac = RAB$C_SEQ;
+    }
+
+    stat = sys$find((void *) & self->rab);
+
+    if (tmp) {
+	free(tmp);
+    }
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+
+static int delrec(RmsFileObject * self, char *keyval, int len)
+{
+    char *tmp = NULL;
+    int stat;
+
+    if (keyval) {
+        tmp = malloc(len);
+	assert(tmp);
+	memcpy(tmp, keyval, len);
+	self->rab.rab$l_kbf = tmp;
+	self->rab.rab$b_ksz = len;
+	self->rab.rab$b_rac = RAB$C_KEY;
+
+	stat = sys$find((void *) & self->rab);
+
+	if (!$VMS_STATUS_SUCCESS(stat)) {
+	    free(tmp);
+	    return stat;
+	}
+    } else {
+	self->rab.rab$b_rac = RAB$C_SEQ;
+    }
+
+    stat = sys$delete((void *) & self->rab);
+
+    if (tmp) {
+	free(tmp);
+    }
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	return stat;
+    }
+
+    return stat;
+}
+
+// BRC
+#define PyFileObject PyObject
+
+static PyObject *file_getiter(PyFileObject * f)
+{
+    Py_INCREF(f);
+    return (PyObject *) f;
+}
+
+static PyObject *file_iternext(PyFileObject * self)
+{
+    int stat;
+    int retlen = 0;
+    PyObject *res;
+    char buf[((RmsFileObject *) self)->fab.fab$w_mrs];
+
+    stat = fetch((RmsFileObject *) self, NULL, 0, buf, &retlen);
+
+    if (stat == RMS$_EOF) {
+	return NULL;
+    }
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    if (stat == RMS$_EOF) {
+	Py_INCREF(Py_None);
+	res = Py_None;
+    } else {
+	res = PyBytes_FromStringAndSize(buf, retlen);
+    }
+
+    return res;
+}
+
+
+static RmsFileObject *newRmsFileObject(char *fn, int access, int share,
+				       unsigned int fop)
+{
+    RmsFileObject *self;
+    self = PyObject_New(RmsFileObject, &RmsFile_Type);
+    if (self == NULL)
+	return NULL;
+
+    fill_fields(self, fn, access, share, fop);
+    return (self);
+}
+
+static void RmsFile_dealloc(RmsFileObject * self)
+{
+    if (self->flags & PYRMS_M_OPEN) {
+	int stat;
+	stat = close_file(self);
+	if (!$VMS_STATUS_SUCCESS(stat)) {
+	    char msg[256];
+	    PyObject *v;
+	    getmsg(stat, msg, sizeof(msg));
+	    v = Py_BuildValue("(is)", stat, msg);
+	    if (v != NULL) {
+		PyErr_SetObject(RMSError, v);
+		Py_DECREF(v);
+	    }
+	}
+	self->flags ^= PYRMS_M_OPEN;
+    }
+
+    if (self->area) {
+	free(self->area);
+	self->area = NULL;
+    }
+
+    if (self->key) {
+	free(self->key);
+	self->key = NULL;
+    }
+
+    PyObject_Del(self);
+}
+
+
+static PyObject *rmsFile_close(RmsFileObject * self, PyObject * args)
+{
+    int stat;
+
+    if (!PyArg_ParseTuple(args, ":close")) {
+	return NULL;
+    }
+
+    stat = close_file(self);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    self->flags ^= PYRMS_M_OPEN;
+    return (PyLong_FromLong(stat));
+}
+
+
+static PyObject *rmsFile_flush(RmsFileObject * self, PyObject * args)
+{
+    int stat;
+
+    if (!PyArg_ParseTuple(args, ":flush")) {
+	return NULL;
+    }
+
+    stat = flush_file(self);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return (PyLong_FromLong(stat));
+}
+
+
+static PyObject *rmsFile_free(RmsFileObject * self, PyObject * args)
+{
+    int stat;
+
+    if (!PyArg_ParseTuple(args, ":free")) {
+	return NULL;
+    }
+
+    stat = free_file(self);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return (PyLong_FromLong(stat));
+}
+
+
+
+static PyObject *rmsFile_release(RmsFileObject * self, PyObject * args)
+{
+    int stat;
+
+    if (!PyArg_ParseTuple(args, ":release")) {
+	return NULL;
+    }
+
+    stat = release_file(self);
+
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return (PyLong_FromLong(stat));
+}
+
+
+static PyObject *rmsFile_rewind(RmsFileObject * self, PyObject * args,
+				PyObject * kwargs)
+{
+    int stat;
+    int keynum = -1;
+    char *kwnames[] = {
+	"keynum", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:rewind",
+				     kwnames, &keynum))
+	return NULL;
+
+
+    if (keynum >= 0) {
+	stat = usekey((RmsFileObject *) self, keynum);
+	if (!$VMS_STATUS_SUCCESS(stat)) {
+	    char msg[256];
+	    PyObject *v;
+	    getmsg(stat, msg, sizeof(msg));
+	    v = Py_BuildValue("(is)", stat, msg);
+	    if (v != NULL) {
+		PyErr_SetObject(RMSError, v);
+		Py_DECREF(v);
+	    }
+	    return NULL;
+	}
+    }
+    stat = sys$rewind((void *) & self->rab, 0, 0);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong(stat);
+}
+
+static PyObject *rmsFile_usekey(RmsFileObject * self, PyObject * args,
+				PyObject * kwargs)
+{
+    int stat;
+    int keynum = 0;
+    PyObject *res;
+    char *kwnames[] = {
+	"keynum", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:usekey",
+				     kwnames, &keynum))
+	return NULL;
+
+    stat = usekey((RmsFileObject *) self, keynum);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong(stat);
+}
+
+static PyObject *rmsFile_put(RmsFileObject * self, PyObject * args,
+			     PyObject * kwargs)
+{
+    int stat;
+    char *buf = NULL;
+    int len = 0;
+    PyObject *res;
+    char *kwnames[] = {
+	"record", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:put",
+				     kwnames, &buf, &len))
+	return NULL;
+
+    stat = put((RmsFileObject *) self, buf, len);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong(stat);
+}
+
+static PyObject *rmsFile_update(RmsFileObject * self, PyObject * args,
+				PyObject * kwargs)
+{
+    int stat;
+    char *buf = NULL;
+    int len = 0;
+    PyObject *res;
+    char *kwnames[] = {
+	"record", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:update",
+				     kwnames, &buf, &len))
+	return NULL;
+
+    stat = update((RmsFileObject *) self, buf, len);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong(stat);
+}
+
+static PyObject *rmsFile_fetch(RmsFileObject * self, PyObject * args,
+			       PyObject * kwargs)
+{
+    int stat;
+    char *keyval = NULL;
+    int len = 0;
+    PyObject *res;
+    char *kwnames[] = {
+	"key", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:fetch",
+				     kwnames, &keyval, &len))
+	return NULL;
+
+    char buf[((RmsFileObject *) self)->fab.fab$w_mrs];
+    int retlen = 0;
+
+    stat = fetch((RmsFileObject *) self, keyval, len, buf, &retlen);
+    if (stat != RMS$_EOF && stat != RMS$_RNF && !$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    {
+	PyObject *o1 = PyLong_FromLong(stat);
+	PyObject *o2;
+	if (stat == RMS$_EOF || stat == RMS$_RNF) {
+	    Py_INCREF(Py_None);
+	    o2 = Py_None;
+	} else {
+	    o2 = PyBytes_FromStringAndSize(buf, retlen);
+	}
+	res = PyTuple_New(2);
+	PyTuple_SetItem(res, 0, o1);
+	PyTuple_SetItem(res, 1, o2);
+    }
+    return res;
+}
+
+static PyObject *rmsFile_find(RmsFileObject * self, PyObject * args,
+			      PyObject * kwargs)
+{
+    int stat;
+    char *keyval = NULL;
+    int len = 0;
+    char *kwnames[] = {
+	"key", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:find",
+				     kwnames, &keyval, &len))
+	return NULL;
+
+    stat = find((RmsFileObject *) self, keyval, len);
+    if (stat != RMS$_EOF && !$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong(stat);
+}
+
+static PyObject *rmsFile_delete(RmsFileObject * self, PyObject * args,
+				PyObject * kwargs)
+{
+    int stat;
+    char *keyval = NULL;
+    int len = 0;
+    char *kwnames[] = {
+	"key", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:delete",
+				     kwnames, &keyval, &len))
+	return NULL;
+
+    stat = delrec((RmsFileObject *) self, keyval, len);
+    if (stat != RMS$_EOF && !$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong(stat);
+}
+
+static PyMethodDef RmsFile_methods[] = {
+    {"close", (PyCFunction) rmsFile_close, METH_VARARGS,
+     PyDoc_STR("close() -> status")},
+    {"delete", (PyCFunction) rmsFile_delete, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("delete([key]) -> status")},
+    {"fetch", (PyCFunction) rmsFile_fetch, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("get([key]) -> status, record")},
+    {"find", (PyCFunction) rmsFile_find, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("find([key]) -> status")},
+    {"flush", (PyCFunction) rmsFile_flush, METH_VARARGS,
+     PyDoc_STR("flush() -> status")},
+    {"free", (PyCFunction) rmsFile_free, METH_VARARGS,
+     PyDoc_STR("free() -> status")},
+    {"put", (PyCFunction) rmsFile_put, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("put(record) -> status")},
+    {"release", (PyCFunction) rmsFile_release, METH_VARARGS,
+     PyDoc_STR("release() -> status")},
+    {"rewind", (PyCFunction) rmsFile_rewind, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("rewind([keynum]) -> status")},
+    {"update", (PyCFunction) rmsFile_update, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("update(record) -> status")},
+    {"usekey", (PyCFunction) rmsFile_usekey, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("use_key([keynum]) -> status")},
+    {NULL, NULL}		/* sentinel */
+
+};
+
+#define OFF(x) offsetof(RmsFileObject, x)
+
+static PyMemberDef RmsFile_memberlist[] = {
+    {"longname", T_STRING_INPLACE, OFF(Naml_Long_Rsa), READONLY,
+     "long filename"},
+    {"nok", T_UBYTE, OFF(sum.xab$b_nok), READONLY,
+     "number of keys"},
+    {"org", T_UBYTE, OFF(fab.fab$b_org), READONLY,
+     "file organization"},
+    {NULL}			/* Sentinel */
+
+};
+
+PyTypeObject RmsFile_Type = {
+    PyObject_HEAD_INIT(NULL)
+	"rmsFile",		/*tp_name */
+    sizeof(RmsFileObject),	/*tp_basicsize */
+    0,				/*tp_itemsize */
+    /* methods */
+    (destructor) RmsFile_dealloc,	/*tp_dealloc */
+    0,				/*tp_print */
+    0,				/*tp_getattr */
+    0,				/*tp_setattr */
+    NULL,			/*formerly known as tp_compare or tp_reserved */
+    0,				/*tp_repr */
+    0,				/*tp_as_number */
+    0,				/*tp_as_sequence */
+    0,				/*tp_as_mapping */
+    0,				/*tp_hash */
+    0,				/*tp_call */
+    0,				/*tp_str */
+    PyObject_GenericGetAttr,	/*tp_getattro */
+    0,				/*tp_setattro */
+    0,				/*tp_as_buffer */
+    Py_TPFLAGS_DEFAULT,		/*tp_flags */
+    0,				/*tp_doc */
+    0,				/*tp_traverse */
+    0,				/*tp_clear */
+    0,				/*tp_richcompare */
+    0,				/*tp_weaklistoffset */
+    (getiterfunc) file_getiter,	/*tp_iter */
+    (iternextfunc) file_iternext,	/*tp_iternext */
+    RmsFile_methods,		/*tp_methods */
+    RmsFile_memberlist,		/* tp_members */
+    0,				/*tp_getset */
+    0,				/*tp_base */
+    0,				/*tp_dict */
+    0,				/*tp_descr_get */
+    0,				/*tp_descr_set */
+    0,				/*tp_dictoffset */
+    0,				/*tp_init */
+    0,				/*tp_alloc */
+    0,				/*tp_new */
+    0,				/*tp_free */
+    0,				/*tp_is_gc */
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    0,
+    NULL
+};
+
+static PyObject *rmsFile_new(PyObject * self, PyObject * args,
+			     PyObject * kwargs)
+{
+    char *name;
+    unsigned int alq = 0;
+    unsigned short bls = 0;
+    unsigned short deq = 0;
+    unsigned int fop = cc$rms_fab.fab$l_fop;
+    unsigned short gbc = 0;
+    unsigned char mbc = 0;
+    char mbf = 0;
+    unsigned char rat = 0;
+    unsigned char rfm = 0;
+    unsigned int rop = 0;
+    char rtv = 0;
+    int fac = FAB$M_GET;
+    int shr = FAB$M_SHRPUT | FAB$M_SHRGET | FAB$M_SHRDEL | FAB$M_SHRUPD;
+    PyObject *res;
+#if 0
+    char *kwnames[] = {
+	"name", "alq", "bls", "deq", "fac", "fop", "gbc",
+	"mbc", "mbf", "rat", "rfm", "rop", "rtv", "shr", NULL
+    };
+#else
+    char *kwnames[] = {
+	"name", "fac", "shr", "fop", NULL
+    };
+#endif
+
+    if (!PyArg_ParseTupleAndKeywords
+	(args, kwargs, (char *) "s|iiI:open_file", kwnames, &name, &fac,
+	 &shr, &fop))
+	return NULL;
+
+    res = (PyObject *) newRmsFileObject(name, fac, shr, fop);
+
+    if (res) {
+	int stat;
+	stat = open_file((RmsFileObject *) res);
+	if (!$VMS_STATUS_SUCCESS(stat)) {
+	    char msg[256];
+	    PyObject *v;
+	    getmsg(stat, msg, sizeof(msg));
+	    v = Py_BuildValue("(is)", stat, msg);
+	    if (v != NULL) {
+		PyErr_SetObject(RMSError, v);
+		Py_DECREF(v);
+	    }
+	    Py_DECREF(res);
+	    return NULL;
+	}
+    }
+
+    return res;
+}
+
+static PyObject *rms_bcd2string(PyObject * dummy, PyObject * args)
+{
+    PyObject *result = NULL;
+    char *temp;
+    char *str;
+    int len;
+    int prec;
+    int i, j, k;
+    char c;
+
+    if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) {
+	return NULL;
+    }
+    str = PyMem_Malloc(2 * len + 2);
+    c = (temp[len - 1] & 0x0F);
+    if ((c != 0x0C) && (c != 0x0D)) {
+	PyMem_Free(str);
+	PyErr_SetString(PyExc_TypeError, "Invalid sign");
+	return NULL;
+    }
+    if ((temp[len - 1] & 0x0F) == 0x0C)
+	str[0] = '+';
+    else
+	str[0] = '-';
+    for (j = 0, i = 1; i < (2 * len - prec); ++i) {
+	if (i & 1) {
+	    str[i] = '0' + ((temp[j] & 0xF0) >> 4);
+	} else {
+	    str[i] = '0' + (temp[j] & 0x0F);
+	    ++j;
+	}
+    }
+    i = 2 * len - prec;
+    str[i++] = '.';
+    for (; i < 2 * len + 1 + 1; ++i) {
+	if (i & 1) {
+	    str[i] = '0' + (temp[j] & 0x0F);
+	    ++j;
+	} else {
+	    str[i] = '0' + ((temp[j] & 0xF0) >> 4);
+	}
+    }
+
+    result = PyBytes_FromStringAndSize(str, 2 * len + 1);
+    PyMem_Free(str);
+    return result;
+}
+
+static PyObject *rms_string2bcd(PyObject * dummy, PyObject * args)
+{
+    PyObject *result = NULL;
+    char *temp;
+    int len;
+    int prec;
+    int n;
+    char *p = NULL;
+    int i;
+
+    if (!PyArg_ParseTuple(args, "sii", &temp, &n, &prec)) {
+	return NULL;
+    }
+
+    if ((n + prec + 1) & 1)
+	++n;
+    len = strlen(temp);
+    if ((n + prec > 31) || (len > 33)) {
+	PyErr_SetString(PyExc_TypeError, "Invalid len");
+	return NULL;
+    }
+    if (strchr("+-0123456789", *temp) == NULL) {
+	PyErr_SetString(PyExc_TypeError, "Invalid first character");
+	return NULL;
+    }
+
+    for (i = 1; i < len; ++i) {
+	if ((temp[i] == '.') && (p == NULL))
+	    p = &(temp[i]) + 1;
+	else if (!isdigit(temp[i])) {
+	    PyErr_SetString(PyExc_TypeError, "Invalid numeric");
+	    return NULL;
+	}
+    }
+
+    {
+	long long in;
+	long long id = 0;
+	char astr[34];
+	char rstr[16];
+	char fmt[20];
+	char sign = 0x0C;
+	int alen;
+
+	sscanf(temp, "%lld", &in);
+	if (p)
+	    sscanf(p, "%lld", &id);
+	if (in < 0) {
+	    in = -in;
+	    sign = 0x0D;
+	}
+	sprintf(fmt, "%%0%dlld%%lld", n);
+	sprintf(astr, fmt, in, id);
+	alen = strlen(astr);
+	if (alen > n + prec)
+	    astr[n + prec] = '\0';
+	else if (alen < n + prec) {
+	    for (i = n + prec - 1; i >= alen; --i)
+		astr[i] = '0';
+	    astr[n + prec] = '\0';
+	}
+	for (i = 0; i < (n + prec - 1) / 2; ++i) {
+	    rstr[i] = (astr[2 * i] - '0') * 16 + (astr[2 * i + 1] - '0');
+	}
+	rstr[(n + prec - 1) / 2] = (astr[n + prec - 1] - '0') * 16 + sign;
+	result = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2);
+	return result;
+    }
+}
+
+static PyObject *rms_bcd2tuple(PyObject * dummy, PyObject * args)
+{
+    PyObject *result = NULL;
+    char *temp;
+    int len;
+    int prec;
+    int i, j, k;
+    char c;
+    int sign;
+    PyObject *pdigit = NULL;
+
+    if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) {
+	return NULL;
+    }
+    c = (temp[len - 1] & 0x0F);
+    if ((c != 0x0C) && (c != 0x0D)) {
+	PyErr_SetString(PyExc_TypeError, "Invalid sign");
+	return NULL;
+    }
+    result = PyTuple_New(3);
+    pdigit = PyTuple_New(2 * len - 1);
+    if ((temp[len - 1] & 0x0F) == 0x0C)
+	sign = 0;
+    else
+	sign = 1;
+    PyTuple_SetItem(result, 0, (PyObject *) PyLong_FromLong(sign));
+    PyTuple_SetItem(result, 1, pdigit);
+    PyTuple_SetItem(result, 2, (PyObject *) PyLong_FromLong(-prec));
+    for (j = 0, i = 0; i < (2 * len - 1); ++i) {
+	int v;
+	if (i & 1) {
+	    v = (temp[j] & 0x0F);
+	    ++j;
+	} else {
+	    v = ((temp[j] & 0xF0) >> 4);
+	}
+	PyTuple_SetItem(pdigit, i, (PyObject *) PyLong_FromLong(v));
+    }
+    return result;
+}
+
+static PyObject *rms_tuple2bcd(PyObject * dummy, PyObject * args)
+{
+    PyObject *result = NULL;
+    PyObject *lst;
+    char *temp;
+    int sign;
+    int len;
+    int dprec;
+    int prec;
+    int n;
+
+    if (!PyArg_ParseTuple(args, "(iO!i)ii", &sign, &PyTuple_Type, &lst,
+			  &dprec, &n, &prec)) {
+	return NULL;
+    }
+    len = PyTuple_Size(lst);
+    if (len > 31) {
+	PyErr_SetString(PyExc_TypeError, "Invalid digits tuple length");
+	return NULL;
+    }
+
+    if (((n + prec) & 1) == 0)
+	++n;
+    if (n + prec > 31) {
+	PyErr_SetString(PyExc_TypeError, "Invalid BCD length");
+	return NULL;
+    }
+
+    dprec = -dprec;
+    if (len - dprec > n) {
+	PyErr_SetString(PyExc_TypeError, "BCD integer part too short");
+	return NULL;
+    }
+
+    {
+	char rstr[16];
+	char digit[n + prec + 1];
+	int i, j, k;
+	for (i = 0; i < n - len + dprec; ++i)
+	    digit[i] = 0;
+	for (j = 0; j < len - dprec; ++j, ++i)
+	    digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j));
+	if (dprec > prec)
+	    dprec = prec;
+	for (; i < n + dprec; ++i, ++j)
+	    digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j));
+	for (; i < n + prec; ++i)
+	    digit[i] = 0;
+	digit[n + prec] = 0;
+
+	for (i = 0; i < (n + prec - 1) / 2; ++i) {
+	    rstr[i] = (digit[2 * i]) * 16 + (digit[2 * i + 1]);
+	}
+	if (sign == 0)
+	    sign = 0x0C;
+	else
+	    sign = 0x0D;
+	rstr[(n + prec - 1) / 2] = (digit[n + prec - 1]) * 16 + sign;
+	result = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2);
+	return result;
+    }
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static int getrmsattr(char *name, int attr, int *result)
+{
+    int stat;
+    unsigned int fop = 0;
+    int fac = 0;
+    int shr = FAB$M_SHRGET;
+    RmsFileObject *fo;
+    XABFHCDEF *fhc;
+
+    fo = malloc(sizeof(RmsFileObject));
+    assert(fo);
+    fill_fields(fo, name, fac, shr, fop);
+
+    if (attr == RMSATTR_K_LRL) {
+        fhc = malloc(sizeof(XABFHCDEF));
+	assert(fhc);
+	*fhc = cc$rms_xabfhc;
+	fo->fab.fab$l_xab = fhc;
+    }
+
+    stat = sys$open((void *) & fo->fab);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	if (attr == RMSATTR_K_LRL) {
+	    free(fhc);
+	}
+	free(fo);
+	return stat;
+    }
+
+    stat = sys$display((void *) & fo->fab);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	free(fo);
+	return stat;
+    }
+
+    *result = 0;
+    switch (attr) {
+    case RMSATTR_K_ORG:
+	*result = fo->fab.fab$b_org;
+	break;
+    case RMSATTR_K_RFM:
+	*result = fo->fab.fab$b_rfm;
+	break;
+    case RMSATTR_K_MRS:
+	*result = fo->fab.fab$w_mrs;
+	break;
+    case RMSATTR_K_RAT:
+	*result = fo->fab.fab$b_rat;
+	break;
+    case RMSATTR_K_LRL:
+	*result = fhc->xab$w_lrl;
+	break;
+    }
+
+    stat = sys$close((void *) & fo->fab);
+
+    if (attr == RMSATTR_K_LRL) {
+	free(fhc);
+    }
+    free(fo);
+    return stat;
+}
+
+static PyObject *rms_getrmsattr(PyObject * dummy, PyObject * args)
+{
+    char *name;
+    int attr;
+    int result;
+
+    if (!PyArg_ParseTuple(args, "si:getrmsattr", &name, &attr))
+	return NULL;
+
+    if (attr < 0 || attr > RMSATTR_K_LAST) {
+	PyErr_Format(RMSError, "invalid attr value: %d", attr);
+	return NULL;
+    }
+
+    int stat;
+    stat = getrmsattr(name, attr, &result);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+
+    return PyLong_FromLong((long) result);
+}
+
+static int
+parse(char *path, char *node, char *dev, char *dir, char *name, char *type,
+      char *ver)
+{
+    int stat;
+    unsigned int fop = NAM$M_SYNCHK;
+    int fac = 0;
+    int shr = 0;
+    RmsFileObject *fo;
+
+    fo = PyMem_NEW(RmsFileObject, 1);
+    fill_fields(fo, path, fac, shr, fop);
+
+    stat = sys$parse((void *) & fo->fab);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	PyMem_FREE(fo);
+	return stat;
+    }
+
+    fo->naml.naml$l_esa[fo->naml.naml$b_esl] = '\0';
+    fo->naml.naml$l_long_expand[fo->naml.naml$l_long_expand_size] = '\0';
+
+    int p1, p2, p3, p4, p5, p6;
+    p1 = fo->naml.naml$b_node;
+    p2 = fo->naml.naml$b_dev;
+    p3 = fo->naml.naml$b_dir;
+    p4 = fo->naml.naml$b_name;
+    p5 = fo->naml.naml$b_type;
+    p6 = fo->naml.naml$b_ver;
+
+    *node = *dev = *dir = *name = *type = *ver = '\0';
+    if (p1) {
+	strncpy(node, fo->naml.naml$l_long_expand, p1);
+	node[p1] = '\0';
+    }
+    if (p2) {
+	strncpy(dev, fo->naml.naml$l_long_expand + p1, p2);
+	dev[p2] = '\0';
+    }
+    if (p3) {
+	strncpy(dir, fo->naml.naml$l_long_expand + p1 + p2, p3);
+	dir[p3] = '\0';
+    }
+    if (p4) {
+	strncpy(name, fo->naml.naml$l_long_expand + p1 + p2 + p3, p4);
+	name[p4] = '\0';
+    }
+    if (p5) {
+	strncpy(type, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4, p5);
+	type[p5] = '\0';
+    }
+    if (p6) {
+	strncpy(ver, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4 + p5,
+		p6);
+	ver[p6] = '\0';
+    }
+
+    PyMem_FREE(fo);
+    return stat;
+}
+
+static PyObject *rms_parse(PyObject * dummy, PyObject * args)
+{
+    char *path;
+    char node[NAML$C_MAXRSS + 1];
+    char dev[NAML$C_MAXRSS + 1];
+    char dir[NAML$C_MAXRSS + 1];
+    char name[NAML$C_MAXRSS + 1];
+    char type[NAML$C_MAXRSS + 1];
+    char ver[NAML$C_MAXRSS + 1];
+    PyObject *res;
+
+    if (!PyArg_ParseTuple(args, "s:parse", &path))
+	return NULL;
+
+    int stat;
+    stat = parse(path, node, dev, dir, name, type, ver);
+    if (!$VMS_STATUS_SUCCESS(stat)) {
+	char msg[256];
+	PyObject *v;
+	getmsg(stat, msg, sizeof(msg));
+	v = Py_BuildValue("(is)", stat, msg);
+	if (v != NULL) {
+	    PyErr_SetObject(RMSError, v);
+	    Py_DECREF(v);
+	}
+	return NULL;
+    }
+    res = PyTuple_New(6);
+    PyTuple_SetItem(res, 0, PyBytes_FromString(node));
+    PyTuple_SetItem(res, 1, PyBytes_FromString(dev));
+    PyTuple_SetItem(res, 2, PyBytes_FromString(dir));
+    PyTuple_SetItem(res, 3, PyBytes_FromString(name));
+    PyTuple_SetItem(res, 4, PyBytes_FromString(type));
+    PyTuple_SetItem(res, 5, PyBytes_FromString(ver));
+    return res;
+}
+
+
+/* List of functions defined in the module */
+
+static PyMethodDef _rmsFile_methods[] = {
+    {"file", (PyCFunction) rmsFile_new, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("file(name [,fac] [,shr], [fop]) -> new RMS file object")},
+    {"BCD2String", (PyCFunction) rms_bcd2string, METH_VARARGS,
+     PyDoc_STR("BCD2String(s) -> string")},
+    {"String2BCD", (PyCFunction) rms_string2bcd, METH_VARARGS,
+     PyDoc_STR("String2BCD(v) -> BCD string")},
+    {"BCD2Tuple", (PyCFunction) rms_bcd2tuple, METH_VARARGS,
+     PyDoc_STR("BCD2Tuple(s) -> tuple")},
+    {"Tuple2BCD", (PyCFunction) rms_tuple2bcd, METH_VARARGS,
+     PyDoc_STR("Tuple2BCD(v) -> BCD string")},
+    {"getrmsattr", (PyCFunction) rms_getrmsattr, METH_VARARGS,
+     PyDoc_STR("getrmsattr(path, attr) -> value")},
+    {"parse", (PyCFunction) rms_parse, METH_VARARGS,
+     PyDoc_STR("parse(path) -> (node, dev, dir, name, ext, ver)")},
+    {NULL, NULL}		/* sentinel */
+
+};
+
+static struct PyModuleDef moduledef = {
+    PyModuleDef_HEAD_INIT,
+    "_rms",			/* m_name */
+
+    "The OpenVMS RMS module",	/* m_doc */
+
+    -1,				/* m_size */
+
+    _rmsFile_methods,		/* m_methods */
+
+    NULL,			/* m_reload */
+
+    NULL,			/* m_traverse */
+
+    NULL,			/* m_clear */
+
+    NULL,			/* m_free */
+
+};
+
+
+PyMODINIT_FUNC PyInit__rms(void)
+{
+    PyObject *m;
+    PyObject *d;
+    PyObject *dict = PyDict_New();
+    PyObject *str = NULL;
+
+// BRC
+//    RmsFile_Type.ob_type = &PyType_Type;
+
+    m = PyModule_Create(&moduledef);
+    d = PyModule_GetDict(m);
+
+    insint(d, "RMSATTR_K_ORG", RMSATTR_K_ORG);
+    insint(d, "RMSATTR_K_RFM", RMSATTR_K_RFM);
+    insint(d, "RMSATTR_K_RAT", RMSATTR_K_RAT);
+    insint(d, "RMSATTR_K_MRS", RMSATTR_K_MRS);
+    insint(d, "RMSATTR_K_LRL", RMSATTR_K_LRL);
+    insint(d, "RMSATTR_K_LAST", RMSATTR_K_LAST);
+    insint(d, "PARSE_K_NODE", PARSE_K_NODE);
+    insint(d, "PARSE_K_DEV", PARSE_K_DEV);
+    insint(d, "PARSE_K_DIR", PARSE_K_DIR);
+    insint(d, "PARSE_K_NAME", PARSE_K_NAME);
+    insint(d, "PARSE_K_TYPE", PARSE_K_TYPE);
+    insint(d, "PARSE_K_VER", PARSE_K_VER);
+    str = PyBytes_FromString(RMSError__doc__);
+    PyDict_SetItemString(dict, "__doc__", str);
+    if (RMSError == NULL) {
+	if ((RMSError =
+	     PyErr_NewException("vms.rms.error", PyExc_IOError,
+				dict)) == NULL) {
+	    return (NULL);
+	}
+    }
+    Py_XDECREF(dict);
+    Py_XDECREF(str);
+    Py_INCREF(RMSError);
+    PyModule_AddObject(m, "error", RMSError);
+
+    return (m);
+}
diff --git a/Modules/vms/rms/pyrms.h b/Modules/vms/rms/pyrms.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3B5cm1zLmg=
--- /dev/null
+++ b/Modules/vms/rms/pyrms.h
@@ -0,0 +1,31 @@
+#ifndef _PYRMSFILE_H
+#define _PYRMSFILE_H
+
+#include <rms.h>
+
+#define PYRMS_M_OPEN 1
+
+typedef struct rmsfilestruct {
+  PyObject_HEAD
+  FABDEF fab;
+  RABDEF rab;
+  NAMLDEF naml;
+  XABSUMDEF sum;
+  XABALLDEF* area;
+  XABKEYDEF* key;
+  char primarySpec[NAML$C_MAXRSS + 1];
+ /*
+  *  Create the string buffers for the resultant and expanded strings
+  */
+  char Naml_Shrt_Esa[NAM$C_MAXRSS + 1],
+       Naml_Long_Esa[NAML$C_MAXRSS + 1],
+       Naml_Shrt_Rsa[NAM$C_MAXRSS + 1],
+       Naml_Long_Rsa[NAML$C_MAXRSS + 1];
+  unsigned int flags;
+} RmsFileObject;
+
+PyAPI_DATA(PyTypeObject) RmsFile_Type;
+
+#define RmsFileObject_Check(v) ((v)->ob_type == &RmsFile_Type)
+
+#endif
diff --git a/Modules/vms/rms/rms.c b/Modules/vms/rms/rms.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtcy5j
--- /dev/null
+++ b/Modules/vms/rms/rms.c
@@ -0,0 +1,1483 @@
+// Adapted from original code developed by Jean-Fran�ois Pieronne...
+//
+
+#define PY_SSIZE_T_CLEAN
+
+#define __NEW_STARLET
+#include <ssdef.h>
+#include <stsdef.h>
+#include <descrip.h>
+#include <starlet.h>
+#include <fdl$routines.h>
+#include <ctype.h>
+#include <string.h>
+#include <rms.h>
+
+#include "Python.h"
+#include "structmember.h"
+
+#define PYRMS_M_OPEN 1
+
+typedef struct {
+    PyObject_HEAD FABDEF fab;
+    RABDEF rab;
+    NAMLDEF naml;
+    XABSUMDEF sum;
+    XABALLDEF *area;
+    XABKEYDEF *key;
+    char long_filename[NAML$C_MAXRSS + 1];
+    char esa[NAM$C_MAXRSS + 1];
+    char long_esa[NAML$C_MAXRSS + 1];
+    char rsa[NAM$C_MAXRSS + 1];
+    char long_rsa[NAML$C_MAXRSS + 1];
+    unsigned int flags;
+} rms_file_t;
+
+
+#ifndef adc_Assert
+#define adc_Assert(x) \
+    do { \
+        if ((!((x)))) { \
+            fprintf (stderr, "Assertion failed: %s (%s: %d)\n", #x, __FILE__, __LINE__); \
+            abort(); \
+        } \
+    } while (0)
+#endif
+
+#ifndef OKAY
+#define OKAY(STATUS) (((STATUS) & 1) != 0)
+#endif
+
+
+#define RMSATTR_K_ORG  0
+#define RMSATTR_K_RFM  1
+#define RMSATTR_K_RAT  2
+#define RMSATTR_K_MRS  3
+#define RMSATTR_K_LRL  4
+#define RMSATTR_K_LAST RMSATTR_K_LRL
+
+
+#define PARSE_K_NODE   0
+#define PARSE_K_DEV    1
+#define PARSE_K_DIR    2
+#define PARSE_K_NAME   3
+#define PARSE_K_TYPE   4
+#define PARSE_K_VER    5
+
+static PyObject *RMS_error;
+PyDoc_STRVAR(RMS_error__doc__, "RMS error");
+static rms_file_t *_new(char *, int, int, unsigned int);
+
+
+
+static void addint(PyObject * d, char *name, int val)
+{
+    PyObject *obj = PyLong_FromLong((long) val);
+
+    if (!obj || (PyDict_SetItemString(d, name, obj) == -1)) {
+	Py_FatalError("can't initialize sane module");
+    }
+
+    Py_DECREF(obj);
+}
+
+
+static void getmsg(unsigned int cond, char *buf, int buflen)
+{
+    unsigned int status;
+    struct dsc$descriptor_s bufD;
+    unsigned short int msglen;
+
+    bufD.dsc$w_length = buflen - 1;
+    bufD.dsc$b_dtype = DSC$K_DTYPE_T;
+    bufD.dsc$b_class = DSC$K_CLASS_S;
+    bufD.dsc$a_pointer = buf;
+
+    status = sys$getmsg(cond, &msglen, &bufD, 15, 0);
+
+    if (!OKAY(status)) {
+	strncpy(buf, "sys$getmsg failure", buflen);
+	buf[buflen - 1] = '\0';
+    }
+
+    buf[msglen] = '\0';
+}
+
+
+static void
+fill(rms_file_t * self, char *fn, int access, int share, unsigned int fop)
+{
+    self->fab = cc$rms_fab;
+    self->rab = cc$rms_rab;
+    self->sum = cc$rms_xabsum;
+    self->naml = cc$rms_naml;
+    self->area = 0;
+    self->key = 0;
+    self->flags = 0;
+    self->fab.fab$b_fac = access;
+    self->fab.fab$b_shr = share;
+    self->fab.fab$l_fna = (char *) -1;
+    self->fab.fab$b_fns = 0;
+    self->fab.fab$l_fop = fop;
+    self->fab.fab$l_xab = (void *) &self->sum;
+
+    self->fab.fab$l_naml = (void *) &self->naml;
+
+    strncpy(self->long_filename, fn, sizeof(self->long_filename) - 1);
+    self->long_filename[sizeof(self->long_filename) - 1] = '\0';
+
+    self->naml.naml$l_long_filename = (void *) self->long_filename;
+    self->naml.naml$l_long_filename_size = strlen(self->long_filename);
+
+    self->naml.naml$l_esa = (void *) self->esa;
+    self->naml.naml$b_ess = sizeof(self->esa) - 1;
+    self->naml.naml$l_rsa = (void *) self->rsa;
+    self->naml.naml$b_rss = sizeof(self->rsa) - 1;
+
+    self->naml.naml$l_long_expand = (void *) self->long_esa;
+    self->naml.naml$l_long_expand_alloc = sizeof(self->long_esa) - 1;
+    self->naml.naml$l_long_result = (void *) self->long_rsa;
+    self->naml.naml$l_long_result_alloc = sizeof(self->long_rsa) - 1;
+
+    self->naml.naml$v_synchk = 0;	        // Have $PARSE do directory existence check
+    self->naml.naml$v_no_short_upcase = 1;	// Don't uppercase short expanded file specification
+
+}
+
+
+static unsigned int _open(rms_file_t * self)
+{
+    unsigned int status;
+    int i;
+    XABKEYDEF *key;
+    XABALLDEF *area;
+    void **xab_chain;
+
+    status = sys$open((void *) &self->fab);
+
+    if (!OKAY(status)) {
+	return (status);
+    }
+
+    if (self->fab.fab$b_org != FAB$C_IDX) {
+	return (RMS$_ORG);
+    }
+
+    xab_chain = (void *) &self->fab.fab$l_xab;
+
+    i = self->sum.xab$b_nok;
+
+    adc_Assert((self->key = key = calloc(i, sizeof(XABKEYDEF))));
+    while (--i >= 0) {
+	*key = cc$rms_xabkey;
+	key->xab$b_ref = i;
+	key->xab$l_nxt = *xab_chain;
+	*xab_chain = key;
+	key++;
+    }
+
+    i = self->sum.xab$b_noa;
+    adc_Assert((self->area = area = calloc(i, sizeof(XABALLDEF))));
+    while (--i >= 0) {
+	*area = cc$rms_xaball;
+	area->xab$b_aid = i;
+	area->xab$l_nxt = *xab_chain;
+	*xab_chain = area;
+	area++;
+    }
+
+    status = sys$display((void *) &self->fab);
+
+    if (!OKAY(status)) {
+	return (status);
+    }
+
+    self->naml.naml$l_esa[self->naml.naml$b_esl] = '\0';
+    self->naml.naml$l_rsa[self->naml.naml$b_rsl] = '\0';
+    self->naml.naml$l_long_expand[self->naml.naml$l_long_expand_size] =
+	'\0';
+    self->naml.naml$l_long_result[self->naml.naml$l_long_result_size] =
+	'\0';
+
+    self->flags |= PYRMS_M_OPEN;
+
+    self->rab.rab$l_fab = (void *) &self->fab;
+
+    /* default to primary index */
+
+
+    self->rab.rab$b_krf = 0;
+    self->rab.rab$l_ubf = NULL;
+    self->rab.rab$w_usz = self->fab.fab$w_mrs;
+
+    return (sys$connect((void *) &self->rab));
+}
+
+
+static unsigned int _close(rms_file_t * self)
+{
+    unsigned int status;
+
+    status = sys$disconnect((void *) &self->rab);
+
+    if (!OKAY(status)) {
+	return (status);
+    }
+
+    return (sys$close((void *) &self->fab));
+}
+
+
+static unsigned int _flush(rms_file_t * self)
+{
+    return (sys$flush((void *) &self->rab));
+}
+
+
+static unsigned int _free(rms_file_t * self)
+{
+    return (sys$free((void *) &self->rab));
+}
+
+
+static unsigned int _release(rms_file_t * self)
+{
+    return (sys$release((void *) &self->rab));
+}
+
+
+static unsigned int _usekey(rms_file_t * self, int keynum)
+{
+    if (keynum >= self->sum.xab$b_nok) {
+	return (SS$_INVARG);
+    }
+
+    self->rab.rab$b_krf = keynum;
+    return (RMS$_NORMAL);
+}
+
+
+static int _put(rms_file_t * self, char *buf, int len)
+{
+    self->rab.rab$b_rac = RAB$C_KEY;
+    self->rab.rab$l_rbf = buf;
+    self->rab.rab$w_rsz = len;
+    return (sys$put((void *) &self->rab));
+}
+
+
+static unsigned int _update(rms_file_t * self, char *buf, int len)
+{
+    self->rab.rab$l_rbf = buf;
+    self->rab.rab$w_rsz = len;
+    return (sys$update((void *) &self->rab));
+}
+
+
+static unsigned int _fetch(rms_file_t * self, char *key, int len,
+			   char *buf, int *retlen)
+{
+    unsigned int status;
+
+    if (key) {
+	self->rab.rab$l_kbf = key;
+	self->rab.rab$b_ksz = len;
+	self->rab.rab$b_rac = RAB$C_KEY;
+    } else {
+	self->rab.rab$b_rac = RAB$C_SEQ;
+    }
+
+    self->rab.rab$l_ubf = (void *) buf;
+
+    status = sys$get((void *) &self->rab);
+
+    if (!OKAY(status)) {
+	return (status);
+    }
+
+    *retlen = self->rab.rab$w_rsz;
+    return (status);
+}
+
+
+static unsigned int _find(rms_file_t * self, char *key, int len)
+{
+    if (key) {
+	self->rab.rab$l_kbf = key;
+	self->rab.rab$b_ksz = len;
+	self->rab.rab$b_rac = RAB$C_KEY;
+    } else {
+	self->rab.rab$b_rac = RAB$C_SEQ;
+    }
+
+    return (sys$find((void *) &self->rab));
+}
+
+
+static unsigned int _delete(rms_file_t * self, char *key, int len)
+{
+    unsigned int status;
+
+    if (key) {
+	self->rab.rab$l_kbf = key;
+	self->rab.rab$b_ksz = len;
+	self->rab.rab$b_rac = RAB$C_KEY;
+
+	status = sys$find((void *) &self->rab);
+
+	if (!OKAY(status)) {
+	    return (status);
+	}
+    } else {
+	self->rab.rab$b_rac = RAB$C_SEQ;
+    }
+
+    return (sys$delete((void *) &self->rab));
+}
+
+
+
+#define PyFileObject PyObject
+
+static PyObject *getiter(PyFileObject * obj)
+{
+    Py_INCREF(obj);
+    return (PyObject *) obj;
+}
+
+
+static PyObject *iternext(PyFileObject * self)
+{
+    unsigned int status;
+    int len = 0;
+    PyObject *obj;
+    char msg[256];
+    char buf[((rms_file_t *) self)->fab.fab$w_mrs];
+
+    status = _fetch((rms_file_t *) self, NULL, 0, buf, &len);
+
+    if (status == RMS$_EOF) {
+	return (NULL);
+    }
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    if (status == RMS$_EOF) {
+	Py_INCREF(Py_None);
+	obj = Py_None;
+    } else {
+	obj = PyBytes_FromStringAndSize(buf, len);
+    }
+
+    return (obj);
+}
+
+
+
+static void dealloc(rms_file_t * self)
+{
+    unsigned int status;
+    PyObject *obj;
+    char msg[256];
+
+    if (self->flags & PYRMS_M_OPEN) {
+	status = _close(self);
+
+	if (!OKAY(status)) {
+	    getmsg(status, msg, sizeof(msg));
+	    if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+		PyErr_SetObject(RMS_error, obj);
+		Py_DECREF(obj);
+	    }
+	}
+
+	self->flags ^= PYRMS_M_OPEN;
+    }
+
+    if (self->area) {
+	free(self->area);
+	self->area = NULL;
+    }
+
+    if (self->key) {
+	free(self->key);
+	self->key = NULL;
+    }
+
+    PyObject_Del(self);
+}
+
+
+
+static PyObject *RMS_close(rms_file_t * self, PyObject * args)
+{
+    unsigned int status;
+    char msg[256];
+    PyObject *obj;
+
+    if (!PyArg_ParseTuple(args, ":close")) {
+	return (NULL);
+    }
+
+    status = _close(self);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    self->flags ^= PYRMS_M_OPEN;
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_flush(rms_file_t * self, PyObject * args)
+{
+    unsigned int status;
+    char msg[256];
+    PyObject *obj;
+
+    if (!PyArg_ParseTuple(args, ":flush")) {
+	return (NULL);
+    }
+
+    status = _flush(self);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_free(rms_file_t * self, PyObject * args)
+{
+    unsigned int status;
+    char msg[256];
+    PyObject *obj;
+
+    if (!PyArg_ParseTuple(args, ":free")) {
+	return (NULL);
+    }
+
+    status = _free(self);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+
+static PyObject *RMS_release(rms_file_t * self, PyObject * args)
+{
+    unsigned int status;
+    char msg[256];
+    PyObject *obj;
+
+    if (!PyArg_ParseTuple(args, ":release")) {
+	return (NULL);
+    }
+
+    status = _release(self);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_rewind(rms_file_t * self, PyObject * args,
+			    PyObject * kwargs)
+{
+    unsigned int status;
+    int keynum = -1;
+    char msg[256];
+    PyObject *obj;
+    char *kwnames[] = {
+	"keynum", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:rewind",
+				     kwnames, &keynum)) {
+	return (NULL);
+    }
+
+    if (keynum >= 0) {
+	status = _usekey((rms_file_t *) self, keynum);
+
+	if (!OKAY(status)) {
+	    getmsg(status, msg, sizeof(msg));
+	    if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+		PyErr_SetObject(RMS_error, obj);
+		Py_DECREF(obj);
+	    }
+
+	    return (NULL);
+	}
+    }
+
+    status = sys$rewind((void *) &self->rab, 0, 0);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_usekey(rms_file_t * self, PyObject * args,
+			    PyObject * kwargs)
+{
+    unsigned int status;
+    int keynum = 0;
+    PyObject *res, *obj;
+    char msg[256];
+    char *kwnames[] = {
+	"keynum", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:usekey",
+				     kwnames, &keynum)) {
+	return (NULL);
+    }
+
+    status = _usekey((rms_file_t *) self, keynum);
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_put(rms_file_t * self, PyObject * args,
+			 PyObject * kwargs)
+{
+    unsigned int status;
+    char *buf = NULL;
+    int len = 0;
+    PyObject *res, *obj;
+    char msg[256];
+    char *kwnames[] = {
+	"record", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:put",
+				     kwnames, &buf, &len)) {
+	return (NULL);
+    }
+
+    status = _put((rms_file_t *) self, buf, len);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_update(rms_file_t * self, PyObject * args,
+			    PyObject * kwargs)
+{
+    unsigned int status;
+    char *buf = NULL;
+    int len = 0;
+    PyObject *res, *obj;
+    char msg[256];
+    char *kwnames[] = {
+	"record", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:update",
+				     kwnames, &buf, &len)) {
+	return (NULL);
+    }
+
+    status = _update((rms_file_t *) self, buf, len);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_fetch(rms_file_t * self, PyObject * args,
+			   PyObject * kwargs)
+{
+    unsigned int status;
+    char *keyval = NULL;
+    int len = 0;
+    PyObject *res, *obj, *o1, *o2;
+    char msg[256];
+    char *kwnames[] = {
+	"key", NULL
+    };
+
+    char buf[((rms_file_t *) self)->fab.fab$w_mrs];
+    int retlen = 0;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:fetch",
+				     kwnames, &keyval, &len)) {
+	return (NULL);
+    }
+
+    status = _fetch((rms_file_t *) self, keyval, len, buf, &retlen);
+
+    if (status != RMS$_EOF && status != RMS$_RNF && !OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    o1 = PyLong_FromLong(status);
+
+    if (status == RMS$_EOF || status == RMS$_RNF) {
+	Py_INCREF(Py_None);
+	o2 = Py_None;
+    } else {
+	o2 = PyBytes_FromStringAndSize(buf, retlen);
+    }
+
+    res = PyTuple_New(2);
+    PyTuple_SetItem(res, 0, o1);
+    PyTuple_SetItem(res, 1, o2);
+
+    return (res);
+}
+
+
+static PyObject *RMS_find(rms_file_t * self, PyObject * args,
+			  PyObject * kwargs)
+{
+    unsigned int status;
+    char *keyval = NULL;
+    int len = 0;
+    char msg[256];
+    PyObject *obj;
+    char *kwnames[] = {
+	"key", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:find",
+				     kwnames, &keyval, &len)) {
+	return (NULL);
+    }
+
+    status = _find((rms_file_t *) self, keyval, len);
+
+    if (status != RMS$_EOF && !OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+static PyObject *RMS_delete(rms_file_t * self, PyObject * args,
+			    PyObject * kwargs)
+{
+    unsigned int status;
+    char *keyval = NULL;
+    int len = 0;
+    char msg[256];
+    PyObject *obj;
+    char *kwnames[] = {
+	"key", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:delete",
+				     kwnames, &keyval, &len)) {
+	return (NULL);
+    }
+
+    status = _delete((rms_file_t *) self, keyval, len);
+
+    if (status != RMS$_EOF && !OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    return (PyLong_FromLong(status));
+}
+
+
+
+static PyMethodDef tp_methods[] = {
+    {"close", (PyCFunction) RMS_close, METH_VARARGS,
+     PyDoc_STR("close() -> status")},
+    {"delete", (PyCFunction) RMS_delete, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("delete([key]) -> status")},
+    {"fetch", (PyCFunction) RMS_fetch, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("get([key]) -> status, record")},
+    {"find", (PyCFunction) RMS_find, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("find([key]) -> status")},
+    {"flush", (PyCFunction) RMS_flush, METH_VARARGS,
+     PyDoc_STR("flush() -> status")},
+    {"free", (PyCFunction) RMS_free, METH_VARARGS,
+     PyDoc_STR("free() -> status")},
+    {"put", (PyCFunction) RMS_put, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("put(record) -> status")},
+    {"release", (PyCFunction) RMS_release, METH_VARARGS,
+     PyDoc_STR("release() -> status")},
+    {"rewind", (PyCFunction) RMS_rewind, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("rewind([keynum]) -> status")},
+    {"update", (PyCFunction) RMS_update, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("update(record) -> status")},
+    {"usekey", (PyCFunction) RMS_usekey, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("use_key([keynum]) -> status")},
+    {NULL, NULL}
+};
+
+
+#define OFF(x) offsetof(rms_file_t, x)
+
+static PyMemberDef tp_members[] = {
+    {"longname", T_STRING_INPLACE, OFF(long_rsa), READONLY,
+     "long filename"},
+    {"nok", T_UBYTE, OFF(sum.xab$b_nok), READONLY,
+     "number of keys"},
+    {"org", T_UBYTE, OFF(fab.fab$b_org), READONLY,
+     "file organization"},
+    {NULL}
+};
+
+
+
+static PyObject *RMS_new(PyObject * self, PyObject * args,
+			 PyObject * kwargs)
+{
+    unsigned int status;
+    char *name;
+    unsigned int alq = 0;
+    unsigned short bls = 0;
+    unsigned short deq = 0;
+    unsigned int fop = cc$rms_fab.fab$l_fop;
+    unsigned short gbc = 0;
+    unsigned char mbc = 0;
+    char mbf = 0;
+    unsigned char rat = 0;
+    unsigned char rfm = 0;
+    unsigned int rop = 0;
+    char rtv = 0;
+    int fac = FAB$M_GET;
+    int shr = FAB$M_SHRPUT | FAB$M_SHRGET | FAB$M_SHRDEL | FAB$M_SHRUPD;
+    rms_file_t *res;
+    char msg[256];
+    PyObject *obj;
+    char *kwnames[] = {
+	"name", "fac", "shr", "fop", NULL
+    };
+
+    if (!PyArg_ParseTupleAndKeywords
+	(args, kwargs, (char *) "s|iiI:open_file", kwnames, &name, &fac,
+	 &shr, &fop)) {
+	return (NULL);
+    }
+
+    res = _new(name, fac, shr, fop);
+
+    if (res) {
+	status = _open(res);
+
+	if (!OKAY(status)) {
+	    getmsg(status, msg, sizeof(msg));
+	    if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) {
+		PyErr_SetObject(RMS_error, obj);
+		Py_DECREF(obj);
+	    }
+
+	    Py_DECREF(res);
+	    return (NULL);
+	}
+    }
+
+    return ((PyObject *) res);
+}
+
+
+static PyObject *bcd2string(PyObject * dummy, PyObject * args)
+{
+    PyObject *res = NULL;
+    char c;
+    char *temp, *str;
+    int len, prec;
+    int i, j, k;
+
+    if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) {
+	return NULL;
+    }
+
+    str = PyMem_Malloc(2 * len + 2);
+    c = (temp[len - 1] & 0x0F);
+
+    if ((c != 0x0C) && (c != 0x0D)) {
+	PyMem_Free(str);
+	PyErr_SetString(PyExc_TypeError, "Invalid sign");
+	return NULL;
+    }
+
+    if ((temp[len - 1] & 0x0F) == 0x0C) {
+	str[0] = '+';
+    } else {
+	str[0] = '-';
+    }
+
+    for (j = 0, i = 1; i < (2 * len - prec); ++i) {
+	if (i & 1) {
+	    str[i] = '0' + ((temp[j] & 0xF0) >> 4);
+	} else {
+	    str[i] = '0' + (temp[j] & 0x0F);
+	    ++j;
+	}
+    }
+
+    i = 2 * len - prec;
+    str[i++] = '.';
+
+    for (; i < 2 * len + 1 + 1; ++i) {
+	if (i & 1) {
+	    str[i] = '0' + (temp[j] & 0x0F);
+	    ++j;
+	} else {
+	    str[i] = '0' + ((temp[j] & 0xF0) >> 4);
+	}
+    }
+
+    res = PyBytes_FromStringAndSize(str, 2 * len + 1);
+    PyMem_Free(str);
+
+    return (res);
+}
+
+
+static PyObject *string2bcd(PyObject * dummy, PyObject * args)
+{
+    PyObject *res = NULL;
+    char *temp;
+    int len, prec;
+    int n;
+    char *p = NULL;
+    int i;
+
+    if (!PyArg_ParseTuple(args, "sii", &temp, &n, &prec)) {
+	return (NULL);
+    }
+
+    if ((n + prec + 1) & 1) {
+	++n;
+    }
+
+    len = strlen(temp);
+    if ((n + prec > 31) || (len > 33)) {
+	PyErr_SetString(PyExc_TypeError, "Invalid len");
+	return (NULL);
+    }
+    if (strchr("+-0123456789", *temp) == NULL) {
+	PyErr_SetString(PyExc_TypeError, "Invalid first character");
+	return (NULL);
+    }
+
+    for (i = 1; i < len; ++i) {
+	if ((temp[i] == '.') && (p == NULL)) {
+	    p = &(temp[i]) + 1;
+	} else if (!isdigit(temp[i])) {
+	    PyErr_SetString(PyExc_TypeError, "Invalid numeric");
+	    return (NULL);
+	}
+    }
+
+    {
+	long long in;
+	long long id = 0;
+	char astr[34];
+	char rstr[16];
+	char fmt[20];
+	char sign = 0x0C;
+	int alen;
+
+	sscanf(temp, "%lld", &in);
+	if (p) {
+	    sscanf(p, "%lld", &id);
+	}
+	if (in < 0) {
+	    in = -in;
+	    sign = 0x0D;
+	}
+	sprintf(fmt, "%%0%dlld%%lld", n);
+	sprintf(astr, fmt, in, id);
+	alen = strlen(astr);
+	if (alen > n + prec) {
+	    astr[n + prec] = '\0';
+	} else if (alen < n + prec) {
+	    for (i = n + prec - 1; i >= alen; --i) {
+		astr[i] = '0';
+	    }
+      	    astr[n + prec] = '\0';
+	}
+	for (i = 0; i < (n + prec - 1) / 2; ++i) {
+	    rstr[i] = (astr[2 * i] - '0') * 16 + (astr[2 * i + 1] - '0');
+	}
+	rstr[(n + prec - 1) / 2] = (astr[n + prec - 1] - '0') * 16 + sign;
+	res = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2);
+	return (res);
+    }
+}
+
+
+static PyObject *bcd2tuple(PyObject * dummy, PyObject * args)
+{
+    PyObject *res = NULL, *pdigit = NULL;
+    char *temp;
+    int len, prec, sign;
+    int i, j, k, v;
+    char c;
+
+    if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) {
+	return (NULL);
+    }
+
+    c = (temp[len - 1] & 0x0F);
+
+    if ((c != 0x0C) && (c != 0x0D)) {
+	PyErr_SetString(PyExc_TypeError, "Invalid sign");
+	return (NULL);
+    }
+
+    res = PyTuple_New(3);
+    pdigit = PyTuple_New(2 * len - 1);
+
+    if ((temp[len - 1] & 0x0F) == 0x0C) {
+	sign = 0;
+    } else {
+	sign = 1;
+    }
+
+    PyTuple_SetItem(res, 0, (PyObject *) PyLong_FromLong(sign));
+    PyTuple_SetItem(res, 1, pdigit);
+    PyTuple_SetItem(res, 2, (PyObject *) PyLong_FromLong(-prec));
+
+    for (j = 0, i = 0; i < (2 * len - 1); ++i) {
+	if (i & 1) {
+	    v = (temp[j] & 0x0F);
+	    ++j;
+	} else {
+	    v = ((temp[j] & 0xF0) >> 4);
+	}
+	PyTuple_SetItem(pdigit, i, (PyObject *) PyLong_FromLong(v));
+    }
+
+    return (res);
+}
+
+
+static PyObject *tuple2bcd(PyObject * dummy, PyObject * args)
+{
+    PyObject *res = NULL;
+    PyObject *lst;
+    char *temp;
+    int len, dprec, prec, sign;
+    int n;
+
+    if (!PyArg_ParseTuple(args, "(iO!i)ii", &sign, &PyTuple_Type, &lst,
+			  &dprec, &n, &prec)) {
+	return (NULL);
+    }
+
+    len = PyTuple_Size(lst);
+
+    if (len > 31) {
+	PyErr_SetString(PyExc_TypeError, "Invalid digits tuple length");
+	return (NULL);
+    }
+
+    if (((n + prec) & 1) == 0) {
+	++n;
+    }
+    if (n + prec > 31) {
+	PyErr_SetString(PyExc_TypeError, "Invalid BCD length");
+	return (NULL);
+    }
+
+    dprec = -dprec;
+
+    if (len - dprec > n) {
+	PyErr_SetString(PyExc_TypeError, "BCD integer part too short");
+	return (NULL);
+    }
+
+    {
+	char rstr[16];
+	char digit[n + prec + 1];
+	int i, j, k;
+
+	for (i = 0; i < n - len + dprec; ++i) {
+	    digit[i] = 0;
+	}
+
+	for (j = 0; j < len - dprec; ++j, ++i) {
+	    digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j));
+	}
+
+	if (dprec > prec) {
+	    dprec = prec;
+	}
+
+	for (; i < n + dprec; ++i, ++j) {
+	    digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j));
+	}
+
+	for (; i < n + prec; ++i) {
+	    digit[i] = 0;
+	}
+
+	digit[n + prec] = 0;
+
+	for (i = 0; i < (n + prec - 1) / 2; ++i) {
+	    rstr[i] = (digit[2 * i]) * 16 + (digit[2 * i + 1]);
+	}
+
+	if (sign == 0) {
+	    sign = 0x0C;
+	} else {
+	    sign = 0x0D;
+	}
+
+	rstr[(n + prec - 1) / 2] = (digit[n + prec - 1]) * 16 + sign;
+	res = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2);
+
+	return (res);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+
+static unsigned int _getrmsattr(char *name, int attr, int *res)
+{
+    int status;
+    unsigned int fop = 0;
+    int fac = 0;
+    int shr = FAB$M_SHRGET;
+    rms_file_t *fo;
+    XABFHCDEF *fhc;
+
+    adc_Assert((fo = malloc(sizeof(rms_file_t))));
+    fill(fo, name, fac, shr, fop);
+
+    if (attr == RMSATTR_K_LRL) {
+	adc_Assert((fhc = malloc(sizeof(XABFHCDEF))));
+	*fhc = cc$rms_xabfhc;
+	fo->fab.fab$l_xab = fhc;
+    }
+
+    status = sys$open((void *) &fo->fab);
+
+    if (!OKAY(status)) {
+	if (attr == RMSATTR_K_LRL) {
+	    free(fhc);
+	}
+	free(fo);
+	return (status);
+    }
+
+    status = sys$display((void *) &fo->fab);
+
+    if (!OKAY(status)) {
+	free(fo);
+	return (status);
+    }
+
+    *res = 0;
+
+    switch (attr) {
+    case RMSATTR_K_ORG:
+	*res = fo->fab.fab$b_org;
+	break;
+    case RMSATTR_K_RFM:
+	*res = fo->fab.fab$b_rfm;
+	break;
+    case RMSATTR_K_MRS:
+	*res = fo->fab.fab$w_mrs;
+	break;
+    case RMSATTR_K_RAT:
+	*res = fo->fab.fab$b_rat;
+	break;
+    case RMSATTR_K_LRL:
+	*res = fhc->xab$w_lrl;
+	break;
+    default:
+	abort();
+	break;
+    }
+
+    status = sys$close((void *) &fo->fab);
+
+    if (attr == RMSATTR_K_LRL) {
+	free(fhc);
+    }
+
+    free(fo);
+    return (status);
+}
+
+
+static PyObject *RMS_getrmsattr(PyObject * dummy, PyObject * args)
+{
+    unsigned int status;
+    char *name;
+    int attr, res;
+    char msg[256];
+    PyObject *obj;
+
+    if (!PyArg_ParseTuple(args, "si:getrmsattr", &name, &attr)) {
+	return (NULL);
+    }
+
+    if (attr < 0 || attr > RMSATTR_K_LAST) {
+	PyErr_Format(RMS_error, "invalid attribute value: %d", attr);
+	return (NULL);
+    }
+
+    status = _getrmsattr(name, attr, &res);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", stat, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+	return (NULL);
+    }
+
+    return PyLong_FromLong((long) res);
+}
+
+
+static unsigned int
+_parse(char *path, char *node, char *dev, char *dir, char *name,
+       char *type, char *ver)
+{
+    unsigned int status;
+    unsigned int fop = NAM$M_SYNCHK;
+    int fac = 0;
+    int shr = 0;
+    rms_file_t *fo;
+    int p1, p2, p3, p4, p5, p6;
+
+    fo = PyMem_NEW(rms_file_t, 1);
+    fill(fo, path, fac, shr, fop);
+
+    status = sys$parse((void *) &fo->fab);
+
+    if (!OKAY(status)) {
+	PyMem_FREE(fo);
+	return (status);
+    }
+
+    fo->naml.naml$l_esa[fo->naml.naml$b_esl] = '\0';
+    fo->naml.naml$l_long_expand[fo->naml.naml$l_long_expand_size] = '\0';
+
+    p1 = fo->naml.naml$b_node;
+    p2 = fo->naml.naml$b_dev;
+    p3 = fo->naml.naml$b_dir;
+    p4 = fo->naml.naml$b_name;
+    p5 = fo->naml.naml$b_type;
+    p6 = fo->naml.naml$b_ver;
+
+    *node = *dev = *dir = *name = *type = *ver = '\0';
+
+    if (p1) {
+	strncpy(node, fo->naml.naml$l_long_expand, p1);
+	node[p1] = '\0';
+    }
+
+    if (p2) {
+	strncpy(dev, fo->naml.naml$l_long_expand + p1, p2);
+	dev[p2] = '\0';
+    }
+
+    if (p3) {
+	strncpy(dir, fo->naml.naml$l_long_expand + p1 + p2, p3);
+	dir[p3] = '\0';
+    }
+
+    if (p4) {
+	strncpy(name, fo->naml.naml$l_long_expand + p1 + p2 + p3, p4);
+	name[p4] = '\0';
+    }
+
+    if (p5) {
+	strncpy(type, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4, p5);
+	type[p5] = '\0';
+    }
+
+    if (p6) {
+	strncpy(ver, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4 + p5,
+		p6);
+	ver[p6] = '\0';
+    }
+
+    PyMem_FREE(fo);
+    return (status);
+}
+
+
+static PyObject *RMS_parse(PyObject * dummy, PyObject * args)
+{
+    unsigned int status;
+    char *path;
+    char node[NAML$C_MAXRSS + 1];
+    char dev[NAML$C_MAXRSS + 1];
+    char dir[NAML$C_MAXRSS + 1];
+    char name[NAML$C_MAXRSS + 1];
+    char type[NAML$C_MAXRSS + 1];
+    char ver[NAML$C_MAXRSS + 1];
+    PyObject *obj;
+    char msg[256];
+
+    if (!PyArg_ParseTuple(args, "s:parse", &path)) {
+	return (NULL);
+    }
+
+    status = _parse(path, node, dev, dir, name, type, ver);
+
+    if (!OKAY(status)) {
+	getmsg(status, msg, sizeof(msg));
+	if ((obj = Py_BuildValue("(is)", stat, msg)) != NULL) {
+	    PyErr_SetObject(RMS_error, obj);
+	    Py_DECREF(obj);
+	}
+
+	return (NULL);
+    }
+
+    obj = PyTuple_New(6);
+    PyTuple_SetItem(obj, 0, PyBytes_FromString(node));
+    PyTuple_SetItem(obj, 1, PyBytes_FromString(dev));
+    PyTuple_SetItem(obj, 2, PyBytes_FromString(dir));
+    PyTuple_SetItem(obj, 3, PyBytes_FromString(name));
+    PyTuple_SetItem(obj, 4, PyBytes_FromString(type));
+    PyTuple_SetItem(obj, 5, PyBytes_FromString(ver));
+
+    return (obj);
+}
+
+
+PyTypeObject RmsFile_Type = {
+    PyObject_HEAD_INIT(NULL)
+	"rmsFile",		// tp_name
+    sizeof(rms_file_t),		// tp_basicsize
+    0,				// tp_itemsize
+    (destructor) dealloc,	// tp_dealloc
+    0,				// tp_print
+    0,				// tp_getattr
+    0,				// tp_setattr
+    NULL,			// formerly known as tp_compare or tp_reserved
+    0,				// tp_repr
+    0,				// tp_as_number
+    0,				// tp_as_sequence
+    0,				// tp_as_mapping
+    0,				// tp_hash
+    0,				// tp_call
+    0,				// tp_str
+    PyObject_GenericGetAttr,	// tp_getattro
+    0,				// tp_setattro
+    0,				// tp_as_buffer
+    Py_TPFLAGS_DEFAULT,		// tp_flags
+    0,				// tp_doc
+    0,				// tp_traverse
+    0,				// tp_clear
+    0,				// tp_richcompare
+    0,				// tp_weaklistoffset
+    (getiterfunc) getiter,	// tp_iter
+    (iternextfunc) iternext,	// tp_iternext
+    tp_methods,			// tp_methods
+    tp_members,			// tp_members
+    0,				// tp_getset
+    0,				// tp_base
+    0,				// tp_dict
+    0,				// tp_descr_get
+    0,				// tp_descr_set
+    0,				// tp_dictoffset
+    0,				// tp_init
+    0,				// tp_alloc
+    0,				// tp_new
+    0,				// tp_free
+    0,				// tp_is_gc
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    0,
+    NULL
+};
+
+
+static rms_file_t *_new(char *fn, int access, int share, unsigned int fop)
+{
+    rms_file_t *self = PyObject_New(rms_file_t, &RmsFile_Type);
+
+    if (self) {
+	fill(self, fn, access, share, fop);
+    }
+
+    return (self);
+}
+
+
+
+static PyMethodDef m_methods[] = {
+    {"file", (PyCFunction) RMS_new, METH_VARARGS | METH_KEYWORDS,
+     PyDoc_STR("file(name [,fac] [,shr], [fop]) -> new RMS file object")},
+    {"BCD2String", (PyCFunction) bcd2string, METH_VARARGS,
+     PyDoc_STR("BCD2String(s) -> string")},
+    {"String2BCD", (PyCFunction) string2bcd, METH_VARARGS,
+     PyDoc_STR("String2BCD(obj) -> BCD string")},
+    {"BCD2Tuple", (PyCFunction) bcd2tuple, METH_VARARGS,
+     PyDoc_STR("BCD2Tuple(s) -> tuple")},
+    {"Tuple2BCD", (PyCFunction) tuple2bcd, METH_VARARGS,
+     PyDoc_STR("Tuple2BCD(obj) -> BCD string")},
+    {"getrmsattr", (PyCFunction) RMS_getrmsattr, METH_VARARGS,
+     PyDoc_STR("getrmsattr(path, attr) -> value")},
+    {"parse", (PyCFunction) RMS_parse, METH_VARARGS,
+     PyDoc_STR("parse(path) -> (node, dev, dir, name, ext, ver)")},
+    {NULL, NULL}
+};
+
+
+static struct PyModuleDef moddef = {
+    PyModuleDef_HEAD_INIT,
+    "_rms",			/* m_name */
+    "OpenVMS RMS module",	/* m_doc */
+    -1,				/* m_size */
+    m_methods,			/* m_methods */
+    NULL,			/* m_reload */
+    NULL,			/* m_traverse */
+    NULL,			/* m_clear */
+    NULL,			/* m_free */
+};
+
+
+PyMODINIT_FUNC PyInit__rms(void)
+{
+    PyObject *m, *d;
+    PyObject *dict = PyDict_New();
+    PyObject *str = NULL;
+
+    m = PyModule_Create(&moddef);
+    d = PyModule_GetDict(m);
+
+    addint(d, "RMSATTR_K_ORG", RMSATTR_K_ORG);
+    addint(d, "RMSATTR_K_RFM", RMSATTR_K_RFM);
+    addint(d, "RMSATTR_K_RAT", RMSATTR_K_RAT);
+    addint(d, "RMSATTR_K_MRS", RMSATTR_K_MRS);
+    addint(d, "RMSATTR_K_LRL", RMSATTR_K_LRL);
+    addint(d, "RMSATTR_K_LAST", RMSATTR_K_LAST);
+    addint(d, "PARSE_K_NODE", PARSE_K_NODE);
+    addint(d, "PARSE_K_DEV", PARSE_K_DEV);
+    addint(d, "PARSE_K_DIR", PARSE_K_DIR);
+    addint(d, "PARSE_K_NAME", PARSE_K_NAME);
+    addint(d, "PARSE_K_TYPE", PARSE_K_TYPE);
+    addint(d, "PARSE_K_VER", PARSE_K_VER);
+
+    str = PyBytes_FromString(RMS_error__doc__);
+    PyDict_SetItemString(dict, "__doc__", str);
+
+    if (RMS_error == NULL) {
+	if ((RMS_error =
+	     PyErr_NewException("vms.rms.error", PyExc_IOError,
+				dict)) == NULL) {
+	    return (NULL);
+	}
+    }
+
+    Py_XDECREF(dict);
+    Py_XDECREF(str);
+    Py_INCREF(RMS_error);
+    PyModule_AddObject(m, "error", RMS_error);
+
+    return (m);
+}
diff --git a/Modules/vms/rms/rms.com b/Modules/vms/rms/rms.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtcy5jb20=
--- /dev/null
+++ b/Modules/vms/rms/rms.com
@@ -0,0 +1,22 @@
+$ set verify
+$ hell:
+$ ! RMS interface
+$ define cc$include python$root:[include]
+$ ccopt = "/nolist/noopt/names=(as_is,shortened)/define=(_OSF_SOURCE,_USE_STD_STAT)/include=cc$include/warn=disable=(QUESTCOMPARE,QUESTCOMPARE1)"
+$
+$!! cc'ccopt' [.modules.vms.rms]rms.c
+$ cc'ccopt' rms.c
+$ link/share=_rms.exe rms.obj,sys$input/opt
+sys$library:pthread$rtl.exe/share
+python$shr/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rms=PROCEDURE)
+$ purge/log [...]
+$ delete/log/noconf rms.obj;*
+$
+$
+$ copy _rms.exe PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload]
+$ purge/log PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload]
+$ exit
+
diff --git a/Modules/vms/rms/rms_demo.com b/Modules/vms/rms/rms_demo.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vLmNvbQ==
--- /dev/null
+++ b/Modules/vms/rms/rms_demo.com
@@ -0,0 +1,28 @@
+$ set verify
+$ python :== $python$root:[bin]python.exe
+$
+$ delete/log/noconfirm test.dat;*
+$ create/fdl=rms_demo_1.fdl test.dat
+$
+$ write sys$output ">>> Running rms_demo_1.py..."
+$ python rms_demo_1.py
+$ write sys$output "<<< done."
+$
+$!!! TBD - this next test currently fails due to an issue with indexedfile.py
+$ write sys$output ">>> Running rms_demo_2.py..."
+$ python rms_demo_2.py
+$ write sys$output "<<< done."
+$
+$ write sys$output ">>> Running rms_demo_3.py..."
+$ python rms_demo_3.py
+$ write sys$output "<<< done."
+$
+$ write sys$output ">>> Running rms_demo_4.py..."
+$ python rms_demo_4.py
+$ write sys$output "<<< done."
+$
+$ write sys$output ">>> Running rms_demo_5.py..."
+$ python rms_demo_5.py
+$ write sys$output "<<< done."
+$
+$ exit
diff --git a/Modules/vms/rms/rms_demo_1.fdl b/Modules/vms/rms/rms_demo_1.fdl
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzEuZmRs
--- /dev/null
+++ b/Modules/vms/rms/rms_demo_1.fdl
@@ -0,0 +1,63 @@
+IDENT	"12-NOV-2002 09:59:33  OpenVMS FDL Editor"
+
+SYSTEM
+	SOURCE			"OpenVMS"
+
+FILE
+	NAME			"Test file"
+	ORGANIZATION		indexed
+
+RECORD
+	CARRIAGE_CONTROL	none
+	FORMAT			fixed
+	SIZE			20
+
+AREA 0
+	ALLOCATION		30
+	BEST_TRY_CONTIGUOUS	yes
+	BUCKET_SIZE		1
+	EXTENSION		6
+
+AREA 1
+	ALLOCATION		3
+	BEST_TRY_CONTIGUOUS	yes
+	BUCKET_SIZE		1
+	EXTENSION		3
+
+AREA 2
+	ALLOCATION		9
+	BEST_TRY_CONTIGUOUS	yes
+	BUCKET_SIZE		1
+	EXTENSION		6
+
+KEY 0
+	CHANGES			no
+	DATA_AREA		0
+	DATA_FILL		100
+	DATA_KEY_COMPRESSION	yes
+	DATA_RECORD_COMPRESSION	yes
+	DUPLICATES		no
+	INDEX_AREA		1
+	INDEX_COMPRESSION	no
+	INDEX_FILL		100
+	LEVEL1_INDEX_AREA	1
+	NAME			"KEY_0"
+	PROLOG			3
+	SEG0_LENGTH		5
+	SEG0_POSITION		0
+	TYPE			string
+
+KEY 1
+	CHANGES			yes
+	DATA_AREA		2
+	DATA_FILL		100
+	DATA_KEY_COMPRESSION	no
+	DUPLICATES		yes
+	INDEX_AREA		2
+	INDEX_COMPRESSION	no
+	INDEX_FILL		100
+	LEVEL1_INDEX_AREA	2
+	NAME			"KEY_1"
+	SEG0_LENGTH		4
+	SEG0_POSITION		5
+	TYPE			int4
diff --git a/Modules/vms/rms/rms_demo_1.py b/Modules/vms/rms/rms_demo_1.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzEucHk=
--- /dev/null
+++ b/Modules/vms/rms/rms_demo_1.py
@@ -0,0 +1,100 @@
+import pprint
+import struct
+import _rms
+from vms.fabdef import *
+import vms.rmsdef
+
+acc = FAB_M_PUT + FAB_M_GET + FAB_M_DEL + FAB_M_UPD
+shr = FAB_M_SHRPUT + FAB_M_SHRGET + FAB_M_SHRDEL + FAB_M_SHRUPD
+f = _rms.file('test.dat',fac=acc, shr=shr)
+
+print
+print('Empty file')
+f.rewind()
+s = f.find()
+while(s != vms.rmsdef.RMS__EOF):
+    f.delete()
+    s = f.find()
+
+
+print
+print('Insert a few records')
+rec = struct.pack(b"=5si11s", b'AA5AA', 5, b'1234567890A')
+f.put(rec)
+rec = struct.pack(b"=5si11s", b'BB2BB', 2, b'1234567890B')
+f.put(rec)
+rec = struct.pack(b"=5si11s", b'CC4CC', 4, b'1234567890C')
+f.put(rec)
+rec = struct.pack(b"=5si11s", b'DD1DD', 1, b'1234567890D')
+f.put(rec)
+rec = struct.pack(b"=5si11s", b'EE1EE', 2, b'1234567890E')
+f.put(rec)
+rec = struct.pack(b"=5si11s", b'FF3FF', 3, b'1234567890F')
+f.put(rec)
+
+
+print
+print('Initial records')
+f.rewind()
+while(1):
+    s, r = f.fetch()
+    if r == None: break
+    print(struct.unpack("=5si11s", r))
+
+
+print
+print('Update all records')
+f.rewind()
+while(1):
+    s, r = f.fetch()
+    if r == None: break
+    k,n,v = struct.unpack("=5si11s", r)
+    rec = struct.pack(b"=5si11s", k, n+10, b'X' + v[1:])
+    s = f.update(rec)
+
+
+print
+print('use secondary key and an iterator')
+s = f.usekey(1)
+s = f.rewind()
+for r in f:
+    print(struct.unpack("=5si11s", r))
+
+
+print
+print('build a list of all records')
+f.usekey(0)
+f.rewind()
+pprint.pprint([struct.unpack("=5si11s", r) for r in f])
+
+
+f.usekey(1)
+
+print
+print('delete a record using delete(14)')
+key = struct.pack("=i", 14)
+s = f.delete(key)
+
+print
+print('delete all record key 12 using find(12) + delete()')
+key = struct.pack("=i", 12)
+s = f.find(key)
+while (1):
+    s, r = f.fetch()
+    if r:
+        k,n,v = struct.unpack("=5si11s", r)
+        if n == 12:
+            s = f.delete()
+        else:
+            break
+    else:
+        break
+
+print
+print('build a list of all records after delete')
+f.rewind()
+pprint.pprint([struct.unpack("=5si11s", r) for r in f])
+
+
+print('Close the file')
+f.close()
diff --git a/Modules/vms/rms/rms_demo_2.py b/Modules/vms/rms/rms_demo_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzIucHk=
--- /dev/null
+++ b/Modules/vms/rms/rms_demo_2.py
@@ -0,0 +1,117 @@
+import struct
+from vms.rmsdef import RMS__SUC, RMS__RNF, RMS__OK_DUP
+from vms.fabdef import FAB_M_PUT, FAB_M_GET, FAB_M_DEL, FAB_M_UPD, \
+       FAB_M_SHRPUT, FAB_M_SHRGET, FAB_M_SHRDEL, FAB_M_SHRUPD
+# from _rms.IndexedFile import IndexedFile, Record
+from vms.indexedfile import IndexedFile, Record
+
+class TestRec(Record):
+    _field = [
+              ('f1', '5s'),
+              ('f2', 'i'),
+              ('f3', '11s'),
+             ]
+    _fmt = '=' + ''.join([x[1] for x in _field])
+    _fixsize = struct.calcsize(_fmt)
+
+    def keyval(self, keynum):
+        if keynum == 0:
+            return self.f1
+        elif keynum == 1:
+            return self.f2
+        else:
+            raise "Invalid keynum parameter"
+
+
+class TestFile(IndexedFile):
+    Name = 'test.dat'
+    def __init__(self):
+        IndexedFile.__init__(self, TestFile.Name, TestRec)
+
+    def primary_keynum(self):
+        return 0
+
+    def pack_key(self, keynum, keyval):
+        if keynum == 0:
+            return struct.pack("=5s", keyval)
+        elif keynum == 1:
+            return struct.pack("=i", keyval)
+        else:
+           raise KeyError
+
+if __name__=='__main__':
+    f = TestFile()
+    print
+    print ('Reset file')
+    f.reset()
+
+    print
+    print ('Insert a few records')
+    rec = TestRec(('AA5AA', 5, '1234567890A'))
+    f.put(rec)
+    rec = TestRec(('BB2BB', 2, '1234567890B'))
+    f.put(rec)
+    rec = TestRec(('CC4CC', 4, '1234567890C'))
+    f.put(rec)
+    rec = TestRec(('DD1DD', 1, '1234567890D'))
+    f.put(rec)
+    rec = TestRec(('EE1EE', 2, '1234567890E'))
+    f.put(rec)
+    rec = TestRec(('FF3FF', 3, '1234567890F'))
+    f.put(rec)
+
+    print
+    print ('Initial records using an iterator, primary key order')
+    for rec in f:
+        print( rec.f1, rec.f2, rec.f3)
+
+    print
+    print ('Initial records using an iterator, secondary key order')
+    f.iterator_keynum(1)
+    for rec in f:
+        print( rec.f1, rec.f2, rec.f3)
+
+    print
+    print ('Update all records using an iterator')
+    # iterator key is automatically reset to primary key
+    for rec in f:
+        rec.f2 = rec.f2 + 10
+        f.update_current(rec)
+
+    print
+    print ('Updated records using an iterator')
+    for rec in f:
+        print( rec.f1, rec.f2, rec.f3)
+
+    print
+    print ('build a list of all records')
+    lst = f.fetchall(0)
+    print (len(lst))
+
+### Not implemented
+###    print
+###    print ('delete a record using secondary key value 14')
+###    f.delete(1, 14)
+
+    print
+    print ('Records using an iterator, secondary key order')
+    f.iterator_keynum(1)
+    for rec in f:
+        print (rec.f1, rec.f2, rec.f3)
+
+    print ('delete all records using secondary key value 12')
+    f.open(acc = FAB_M_GET + FAB_M_DEL)
+    f.usekey(1)
+    f.rewind()
+    f.find(None, f.pack_key(1, 12))
+    for rec in f:
+        if rec.f2 == 12:
+           f.delete_current()
+        else:
+           break
+    f.close()
+
+    print
+    print ('Records using an iterator, primary key order')
+    for rec in f:
+        print( rec.f1, rec.f2, rec.f3)
diff --git a/Modules/vms/rms/rms_demo_3.py b/Modules/vms/rms/rms_demo_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzMucHk=
--- /dev/null
+++ b/Modules/vms/rms/rms_demo_3.py
@@ -0,0 +1,40 @@
+import struct
+import _rms
+from vms.fabdef import *
+import vms.rmsdef
+acc = FAB_M_GET
+shr = FAB_M_SHRPUT + FAB_M_SHRGET + FAB_M_SHRDEL + FAB_M_SHRUPD
+f = _rms.file('sysuaf',fac=acc, shr=shr)
+
+
+print('Alphabetic order')
+
+for i in range(10):
+    s,r = f.fetch()
+    lst = struct.unpack("=i32shhiQ32s32p", r[:116])
+    print('%s [%o,%o]' % (lst[1], lst[3], lst[2]))
+
+print
+print('UIC order')
+
+f.usekey(1)
+f.rewind()
+i = 0
+for r in f:
+    i += 1
+    if (i > 10): break
+    lst = struct.unpack("=i32shhiQ32s32p", r[:116])
+    print('%s [%o,%o]' % (lst[1], lst[3], lst[2]))
+
+
+print
+print('Alphabetic order')
+
+f.usekey(0)
+f.rewind()
+for r in f:
+    lst = struct.unpack("=i32shhiQ32s32p", r[:116])
+    print('%s [%o,%o]' % (lst[1], lst[3], lst[2]))
+
+
+f.close()
diff --git a/Modules/vms/rms/rms_demo_4.py b/Modules/vms/rms/rms_demo_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzQucHk=
--- /dev/null
+++ b/Modules/vms/rms/rms_demo_4.py
@@ -0,0 +1,43 @@
+import struct
+import _rms
+from vms.fabdef import *
+import vms.sys
+
+acc = FAB_M_GET
+shr = FAB_M_SHRPUT + FAB_M_SHRGET + FAB_M_SHRDEL + FAB_M_SHRUPD
+f = _rms.file('sysuaf',fac=acc, shr=shr)
+
+print(f.longname)
+print('Number of keys:', f.nok)
+print
+
+print('Alphabetic order')
+print('%-32s %-20s  %s' %('Username', 'UIC', 'Last Interactive Login'))
+print('-'*78)
+
+for i in range(4):
+    s,r = f.fetch()
+    lst = struct.unpack("=i32sHHIQ32s32p32p64p64p32p32pQQHHBBBBQQQQQQQQ",
+                        r[:428])
+    uic = '[%o,%o]' % (lst[3], lst[2])
+    sts, dt = vms.sys.asctim(lst[25], 0)
+    print('%s %-16s %28s' % (lst[1], uic, dt))
+
+print
+print('UIC order')
+print('%-32s %-20s  %s' %('Username', 'UIC', 'Last Interactive Login'))
+print('-'*78)
+
+f.usekey(1)
+f.rewind()
+i = 0
+for r in f:
+    i += 1
+    if (i > 4): break
+    lst = struct.unpack("=i32sHHIQ32s32p32p64p64p32p32pQQHHBBBBQQQQQQQQ",
+                        r[:428])
+    uic = '[%o,%o]' % (lst[3], lst[2])
+    sts, dt = vms.sys.asctim(lst[25], 0)
+    print('%s %-16s %28s' % (lst[1], uic, dt))
+
+f.close()
diff --git a/Modules/vms/rms/rms_demo_5.py b/Modules/vms/rms/rms_demo_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzUucHk=
--- /dev/null
+++ b/Modules/vms/rms/rms_demo_5.py
@@ -0,0 +1,105 @@
+import struct
+import _rms
+import vms.fabdef
+import vms.rmsdef
+
+__version__ = '1.0'
+__doc__ = 'get user information from sysuaf'
+
+class user:
+    def __init__(self, username, uic_member, uic_group, sub_id, parent_id,
+                 account, owner, defdev, defdir, lgicmd, defcli, clitables,
+                 pwd, pwd2, logfails, salt, encrypt, encrypt2, pwd_length,
+                 expiration, pwd_lifetime, pwd_date, pwd2_date, lastlogin_i,
+                 lastlogin_n, priv, def_priv, min_class, max_class, flags,
+                 hourly_access, primedays, pri, quepri, maxjobs, maxacctjobs,
+                 maxdetach, prccnt, biolm, diolm, tqcnt, astlm, enqlm, fillm,
+                 shrfillm, wsquota, dfwscnt, wsextent, pgflquota, cputim,
+                 bytlm, pbytlm, jtquota, proxy_lim, proxies, account_lim,
+                 accounts, def_class):
+        self.username = username
+        self.uic_member = uic_member
+        self.uic_group = uic_group
+        self.sub_id = sub_id
+        self.parent_id = parent_id
+        self.account = account
+        self.owner = owner
+        self.defdev = defdev
+        self.defdir = defdir
+        self.lgicmd = lgicmd
+        self.defcli = defcli
+        self.clitables = clitables
+        self.pwd = pwd
+        self.pwd2 = pwd2
+        self.logfails = logfails
+        self.salt = salt
+        self.encrypt = encrypt
+        self.encrypt2 = encrypt2
+        self.pwd_length = pwd_length
+        self.expiration = expiration
+        self.pwd_lifetime = pwd_lifetime
+        # pre-expired pwd
+        if pwd_date == 18446744073709551615:
+            self.pwd_date = None
+        else:
+            self.pwd_date = pwd_date
+        # pre-expired pwd
+        if pwd2_date == 18446744073709551615:
+            self.pwd2_date = None
+        else:
+            self.pwd2_date = pwd2_date
+        self.lastlogin_i = lastlogin_i
+        self.lastlogin_n = lastlogin_n
+        self.priv = priv
+        self.def_priv = def_priv
+        self.min_class = min_class
+        self.max_class = max_class
+        self.flags = flags
+        self.hourly_access = hourly_access
+        self.primedays = primedays
+        self.pri = pri
+        self.quepri = quepri
+        self.maxjobs = maxjobs
+        self.maxacctjobs = maxacctjobs
+        self.maxdetach = maxdetach
+        self.prccnt = prccnt
+        self.biolm = biolm
+        self.diolm = diolm
+        self.tqcnt = tqcnt
+        self.astlm = astlm
+        self.enqlm = enqlm
+        self.fillm = fillm
+        self.shrfillm = shrfillm
+        self.wsquota = wsquota
+        self.dfwscnt = dfwscnt
+        self.wsextent = wsextent
+        self.pgflquota = pgflquota
+        self.cputim = cputim
+        self.bytlm = bytlm
+        self.pbytlm = pbytlm
+        self.jtquota = jtquota
+        self.proxy_lim = proxy_lim
+        self.proxies = proxies
+        self.account_lim = account_lim
+        self.accounts = accounts
+        self.def_class = def_class
+
+def all_users():
+    acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL +\
+          vms.fabdef.FAB_M_UPD
+    shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET +\
+          vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD
+    f = _rms.file('sysuaf',fac=acc, shr=shr)
+    res = {}
+    format = "=4x32sHHIQ32s32p32p64p64p32p32pQQHHBBBB8xQQQQQQQ20s20sI30s12xBx"
+    format += "BBHHHHHHHHHHHLLLLLLLLHHHH20s"
+    for r in f:
+        lst = struct.unpack(format, r[:600])
+        usr = user(*lst)
+        res[usr.username] = usr
+    f.close()
+    return res
+
+
+l = all_users()
+print(*l, sep = "\n")
diff --git a/Modules/vms/rmsdef/rmsdef.i b/Modules/vms/rmsdef/rmsdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zZGVmL3Jtc2RlZi5p
--- /dev/null
+++ b/Modules/vms/rmsdef/rmsdef.i
@@ -0,0 +1,284 @@
+%module rmsdef
+
+%constant int RMS__FACILITY = 1;
+%constant int RMS_V_STVSTATUS = 14;
+%constant int RMS__SUC = 65537;
+%constant int RMS__NORMAL = 65537;
+%constant int RMS__STALL = 98305;
+%constant int RMS__PENDING = 98313;
+%constant int RMS__OK_DUP = 98321;
+%constant int RMS__OK_IDX = 98329;
+%constant int RMS__OK_RLK = 98337;
+%constant int RMS__OK_RRL = 98345;
+%constant int RMS__KFF = 98353;
+%constant int RMS__OK_ALK = 98361;
+%constant int RMS__OK_DEL = 98369;
+%constant int RMS__OK_RNF = 98377;
+%constant int RMS__OK_LIM = 98385;
+%constant int RMS__OK_NOP = 98393;
+%constant int RMS__OK_WAT = 98401;
+%constant int RMS__CRE_STM = 98409;
+%constant int RMS__OK_RULK = 98417;
+%constant int RMS__SYNCH = 98425;
+%constant int RMS__OK_ACT = 98433;
+%constant int RMS__OK_NOCURTID = 98441;
+%constant int RMS__CONTROLC = 67153;
+%constant int RMS__CONTROLO = 67081;
+%constant int RMS__CONTROLY = 67089;
+%constant int RMS__CREATED = 67097;
+%constant int RMS__SUPERSEDE = 67121;
+%constant int RMS__OVRDSKQUOTA = 67177;
+%constant int RMS__FILEPURGED = 67193;
+%constant int RMS__BOF = 98712;
+%constant int RMS__RNL = 98720;
+%constant int RMS__RTB = 98728;
+%constant int RMS__TMO = 98736;
+%constant int RMS__TNS = 98744;
+%constant int RMS__BES = 98752;
+%constant int RMS__PES = 98760;
+%constant int RMS__ACT = 98906;
+%constant int RMS__DEL = 98914;
+%constant int RMS__INCOMPSHR = 98922;
+%constant int RMS__DNR = 98930;
+%constant int RMS__EOF = 98938;
+%constant int RMS__FEX = 98946;
+%constant int RMS__FLK = 98954;
+%constant int RMS__FNF = 98962;
+%constant int RMS__PRV = 98970;
+%constant int RMS__REX = 98978;
+%constant int RMS__RLK = 98986;
+%constant int RMS__RNF = 98994;
+%constant int RMS__WLK = 99002;
+%constant int RMS__EXP = 99010;
+%constant int RMS__NMF = 99018;
+%constant int RMS__SUP = 99026;
+%constant int RMS__RSA = 99034;
+%constant int RMS__CRC = 99042;
+%constant int RMS__WCC = 99050;
+%constant int RMS__IDR = 99058;
+%constant int RMS__LWC = 99066;
+%constant int RMS__UNUSED1 = 99074;
+%constant int RMS__NOVALPRS = 99082;
+%constant int RMS__KEY_MISMATCH = 99090;
+%constant int RMS__RUH = 99098;
+%constant int RMS__JND = 99106;
+%constant int RMS__BADPHASE = 99114;
+%constant int RMS__TOWDR = 99122;
+%constant int RMS__NEXDR = 99130;
+%constant int RMS__INVDRMSG = 99138;
+%constant int RMS__RU_ACTIVE = 99146;
+%constant int RMS__UNKRUFAC = 99154;
+%constant int RMS__LIMBO = 99162;
+%constant int RMS__IVATRACE = 99170;
+%constant int RMS__OPNOTSUP = 99178;
+%constant int RMS__EXTNOTFOU = 99186;
+%constant int RMS__EXT_ERR = 99194;
+%constant int RMS__SEMANTICS = 99202;
+%constant int RMS__LSCAN = 99210;
+%constant int RMS__ROOTSRCH = 99218;
+%constant int RMS__IDXSEARCH = 99226;
+%constant int RMS__NETBTS = 99234;
+%constant int RMS__NXR = 99242;
+%constant int RMS__EOFASY_SYNCH = 99250;
+%constant int RMS__ELOOP = 99258;
+%constant int RMS__ACC = 114690;
+%constant int RMS__CRE = 114698;
+%constant int RMS__DAC = 114706;
+%constant int RMS__ENT = 114714;
+%constant int RMS__EXT = 114722;
+%constant int RMS__FND = 114730;
+%constant int RMS__MKD = 114738;
+%constant int RMS__DPE = 114746;
+%constant int RMS__SPL = 114754;
+%constant int RMS__DNF = 114762;
+%constant int RMS__RUF = 114770;
+%constant int RMS__WRTJNL_AIJ = 114778;
+%constant int RMS__WRTJNL_BIJ = 114786;
+%constant int RMS__WRTJNL_ATJ = 114794;
+%constant int RMS__WRTJNL_RUJ = 114802;
+%constant int RMS__RRF = 114810;
+%constant int RMS__DDTM_ERR = 114818;
+%constant int RMS__DTFCDDREC = 99308;
+%constant int RMS__AID = 99316;
+%constant int RMS__ALN = 99324;
+%constant int RMS__ALQ = 99332;
+%constant int RMS__ANI = 99340;
+%constant int RMS__AOP = 99348;
+%constant int RMS__BKS = 99356;
+%constant int RMS__BKZ = 99364;
+%constant int RMS__BLN = 99372;
+%constant int RMS__BUG = 99380;
+%constant int RMS__BUG_DDI = 99388;
+%constant int RMS__BUG_DAP = 99396;
+%constant int RMS__BUG_RU_ACTIVE = 99404;
+%constant int RMS__BUG_RURECERR = 99412;
+%constant int RMS__BUG_FLUSH_JNL_FAILED = 99420;
+%constant int RMS__BUG_RU_ABORT_FAIL = 99428;
+%constant int RMS__BUG_RU_COMMIT_FAIL = 99436;
+%constant int RMS__BUG_XX6 = 99444;
+%constant int RMS__BUG_XX7 = 99452;
+%constant int RMS__BUG_XX8 = 99460;
+%constant int RMS__BUSY = 99468;
+%constant int RMS__CCR = 99476;
+%constant int RMS__CHG = 99484;
+%constant int RMS__CHK = 99492;
+%constant int RMS__COD = 99500;
+%constant int RMS__CUR = 99508;
+%constant int RMS__DAN = 99516;
+%constant int RMS__DEV = 99524;
+%constant int RMS__DIR = 99532;
+%constant int RMS__DME = 99540;
+%constant int RMS__DNA = 99548;
+%constant int RMS__DTP = 99556;
+%constant int RMS__DUP = 99564;
+%constant int RMS__DVI = 99572;
+%constant int RMS__ESA = 99580;
+%constant int RMS__ESS = 99588;
+%constant int RMS__FAB = 99596;
+%constant int RMS__FAC = 99604;
+%constant int RMS__FLG = 99612;
+%constant int RMS__FNA = 99620;
+%constant int RMS__FNM = 99628;
+%constant int RMS__FSZ = 99636;
+%constant int RMS__FOP = 99644;
+%constant int RMS__FUL = 99652;
+%constant int RMS__IAL = 99660;
+%constant int RMS__IAN = 99668;
+%constant int RMS__IDX = 99676;
+%constant int RMS__IFI = 99684;
+%constant int RMS__IMX = 99692;
+%constant int RMS__IOP = 99700;
+%constant int RMS__IRC = 99708;
+%constant int RMS__ISI = 99716;
+%constant int RMS__KBF = 99724;
+%constant int RMS__KEY = 99732;
+%constant int RMS__KRF = 99740;
+%constant int RMS__KSZ = 99748;
+%constant int RMS__LAN = 99756;
+%constant int RMS__RUNDOWN = 99764;
+%constant int RMS__LNE = 99772;
+%constant int RMS__DTFCVT = 99780;
+%constant int RMS__MRN = 99788;
+%constant int RMS__MRS = 99796;
+%constant int RMS__NAM = 99804;
+%constant int RMS__NEF = 99812;
+%constant int RMS__DTFQUASYN = 99820;
+%constant int RMS__NOD = 99828;
+%constant int RMS__NPK = 99836;
+%constant int RMS__ORD = 99844;
+%constant int RMS__ORG = 99852;
+%constant int RMS__PBF = 99860;
+%constant int RMS__PLG = 99868;
+%constant int RMS__POS = 99876;
+%constant int RMS__DTFQUAVAL = 99884;
+%constant int RMS__QUO = 99892;
+%constant int RMS__RAB = 99900;
+%constant int RMS__RAC = 99908;
+%constant int RMS__RAT = 99916;
+%constant int RMS__RBF = 99924;
+%constant int RMS__RFA = 99932;
+%constant int RMS__RFM = 99940;
+%constant int RMS__RHB = 99948;
+%constant int RMS__RLF = 99956;
+%constant int RMS__ROP = 99964;
+%constant int RMS__RRV = 99972;
+%constant int RMS__RVU = 99980;
+%constant int RMS__RSS = 99988;
+%constant int RMS__RST = 99996;
+%constant int RMS__RSZ = 100004;
+%constant int RMS__SEQ = 100012;
+%constant int RMS__SHR = 100020;
+%constant int RMS__SIZ = 100028;
+%constant int RMS__SQO = 100036;
+%constant int RMS__DTFSESEST = 100044;
+%constant int RMS__SYN = 100052;
+%constant int RMS__TRE = 100060;
+%constant int RMS__TYP = 100068;
+%constant int RMS__UBF = 100076;
+%constant int RMS__USZ = 100084;
+%constant int RMS__VER = 100092;
+%constant int RMS__XNF = 100100;
+%constant int RMS__XAB = 100108;
+%constant int RMS__ESL = 100116;
+%constant int RMS__DTFSESTER = 100124;
+%constant int RMS__ENV = 100132;
+%constant int RMS__PLV = 100140;
+%constant int RMS__MBC = 100148;
+%constant int RMS__RSL = 100156;
+%constant int RMS__WLD = 100164;
+%constant int RMS__NET = 100172;
+%constant int RMS__IBF = 100180;
+%constant int RMS__REF = 100188;
+%constant int RMS__IFL = 100196;
+%constant int RMS__DFL = 100204;
+%constant int RMS__KNM = 100212;
+%constant int RMS__IBK = 100220;
+%constant int RMS__KSI = 100228;
+%constant int RMS__LEX = 100236;
+%constant int RMS__SEG = 100244;
+%constant int RMS__SNE = 100252;
+%constant int RMS__SPE = 100260;
+%constant int RMS__UPI = 100268;
+%constant int RMS__ACS = 100276;
+%constant int RMS__STR = 100284;
+%constant int RMS__FTM = 100292;
+%constant int RMS__GBC = 100300;
+%constant int RMS__DEADLOCK = 100308;
+%constant int RMS__EXENQLM = 100316;
+%constant int RMS__JOP = 100324;
+%constant int RMS__RUM = 100332;
+%constant int RMS__JNS = 100340;
+%constant int RMS__NRU = 100348;
+%constant int RMS__IFF = 100356;
+%constant int RMS__DTFTRATBL = 100364;
+%constant int RMS__DTFUNSTYP = 100372;
+%constant int RMS__DTFVERMIS = 100380;
+%constant int RMS__DTFACC = 100386;
+%constant int RMS__BOGUSCOL = 100396;
+%constant int RMS__ERRREADCOL = 100404;
+%constant int RMS__ERRWRITECOL = 100412;
+%constant int RMS__SNS = 100420;
+%constant int RMS__NOEXTEND = 100428;
+%constant int RMS__DTFCRE = 100434;
+%constant int RMS__DELJNS = 100444;
+%constant int RMS__NOTSAMEJNL = 100452;
+%constant int RMS__SNPPF = 100460;
+%constant int RMS__NAML = 100468;
+%constant int RMS__NAMLESS = 100476;
+%constant int RMS__NAMLRSS = 100484;
+%constant int RMS__NAMLFSSIZ = 100492;
+%constant int RMS__NAMLFSINV = 100500;
+%constant int RMS__BADGBH = 100508;
+%constant int RMS__BADGBD = 100516;
+%constant int RMS__FOPEXTMBZ = 100524;
+%constant int RMS__INVOP_SSIO = 100532;
+%constant int RMS__IVSF = 100540;
+%constant int RMS__ATR = 114892;
+%constant int RMS__ATW = 114900;
+%constant int RMS__CCF = 114908;
+%constant int RMS__CDA = 114916;
+%constant int RMS__CHN = 114924;
+%constant int RMS__RER = 114932;
+%constant int RMS__RMV = 114940;
+%constant int RMS__RPL = 114948;
+%constant int RMS__SYS = 114956;
+%constant int RMS__WER = 114964;
+%constant int RMS__WPL = 114972;
+%constant int RMS__IFA = 114980;
+%constant int RMS__WBE = 114988;
+%constant int RMS__ENQ = 114996;
+%constant int RMS__NETFAIL = 115004;
+%constant int RMS__SUPPORT = 115012;
+%constant int RMS__CRMP = 115020;
+%constant int RMS__DTFCFGFIL = 115028;
+%constant int RMS__REENT = 115036;
+%constant int RMS__ACC_RUJ = 115044;
+%constant int RMS__TMR = 115052;
+%constant int RMS__ACC_AIJ = 115060;
+%constant int RMS__ACC_BIJ = 115068;
+%constant int RMS__ACC_ATJ = 115076;
+%constant int RMS__DTFDEFFIL = 115084;
+%constant int RMS__DTFREGFIL = 115092;
+%constant int RMS__JNLNOTAUTH = 115100;
+%constant int RMS__CRBUFOBJ = 115108;
+%constant int RMS__RSESTK_ALLOC = 115116;
diff --git a/Modules/vms/rsdmdef/rsdmdef.i b/Modules/vms/rsdmdef/rsdmdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcnNkbWRlZi9yc2RtZGVmLmk=
--- /dev/null
+++ b/Modules/vms/rsdmdef/rsdmdef.i
@@ -0,0 +1,12 @@
+%module rsdmdef
+
+%constant int RSDM__JOIN_SYSTEM = 1;
+%constant int RSDM__JOIN_DEFAULT = 2;
+%constant int RSDM__JOIN_DOMAIN = 3;
+%constant int RSDM__LEAVE = 4;
+%constant int RSDM_K_SYSTEM_RSDM_ID = 1;
+%constant int RSDM_K_PROCESS_RSDM_ID = 2;
+%constant int RSDM_M_READ = 0x1L;
+%constant int RSDM_M_WRITE = 0x2L;
+%constant int RSDM_M_LOCK = 0x4L;
+%constant int RSDM_S_RSDMBITS = 4;
diff --git a/Modules/vms/sdvdef/sdvdef.i b/Modules/vms/sdvdef/sdvdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc2R2ZGVmL3NkdmRlZi5p
--- /dev/null
+++ b/Modules/vms/sdvdef/sdvdef.i
@@ -0,0 +1,5 @@
+%module sdvdef
+
+%constant int SDV__MP_SWITCH_PATH = 1;
+%constant int SDV__MP_ENABLE_PATH = 2;
+%constant int SDV__MP_DISABLE_PATH = 3;
diff --git a/Modules/vms/sjcdef/sjcdef.i b/Modules/vms/sjcdef/sjcdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc2pjZGVmL3NqY2RlZi5p
--- /dev/null
+++ b/Modules/vms/sjcdef/sjcdef.i
@@ -0,0 +1,343 @@
+%module sjcdef
+
+%constant int SJC__ABORT_JOB = 1;
+%constant int SJC__ADD_FILE = 2;
+%constant int SJC__ALTER_JOB = 3;
+%constant int SJC__ALTER_QUEUE = 4;
+%constant int SJC__ASSIGN_QUEUE = 5;
+%constant int SJC__BATCH_CHECKPOINT = 6;
+%constant int SJC__BATCH_SERVICE = 7;
+%constant int SJC__CLOSE_DELETE = 8;
+%constant int SJC__CLOSE_JOB = 9;
+%constant int SJC__CREATE_JOB = 10;
+%constant int SJC__CREATE_QUEUE = 11;
+%constant int SJC__DEASSIGN_QUEUE = 12;
+%constant int SJC__DEFINE_CHARACTERISTIC = 13;
+%constant int SJC__DEFINE_FORM = 14;
+%constant int SJC__DELETE_CHARACTERISTIC = 15;
+%constant int SJC__DELETE_FORM = 16;
+%constant int SJC__DELETE_JOB = 17;
+%constant int SJC__DELETE_QUEUE = 18;
+%constant int SJC__ENTER_FILE = 19;
+%constant int SJC__MERGE_QUEUE = 20;
+%constant int SJC__PAUSE_QUEUE = 21;
+%constant int SJC__RESET_QUEUE = 22;
+%constant int SJC__START_ACCOUNTING = 23;
+%constant int SJC__START_QUEUE = 24;
+%constant int SJC__START_QUEUE_MANAGER = 25;
+%constant int SJC__STOP_ACCOUNTING = 26;
+%constant int SJC__STOP_QUEUE = 27;
+%constant int SJC__STOP_QUEUE_MANAGER = 28;
+%constant int SJC__SYNCHRONIZE_JOB = 29;
+%constant int SJC__WRITE_ACCOUNTING = 30;
+%constant int SJC__CONTROL_DIAGNOSTICS = 31;
+%constant int SJC__DELETE_QUEUE_MANAGER = 32;
+%constant int SJC__ALTER_FILE = 33;
+%constant int SJC__STOP_ALL_QUEUES_ON_NODE = 34;
+%constant int SJC__DISABLE_QUEUE = 35;
+%constant int SJC__ENABLE_QUEUE = 36;
+%constant int SJC__SYMBIONT_SERVICE = 37;
+%constant int SJC__JOBCTL_SERVICE = 38;
+%constant int SJC__ENABLE_AUTOSTART = 39;
+%constant int SJC__DISABLE_AUTOSTART = 40;
+%constant int SJC__SHUTDOWN_NODE = 41;
+%constant int SJC__RESERVED_FUNC_42 = 42;
+%constant int SJC__RESERVED_FUNC_43 = 43;
+%constant int SJC__RESERVED_FUNC_44 = 44;
+%constant int SJC__RESERVED_FUNC_45 = 45;
+%constant int SJC__RESERVED_FUNC_46 = 46;
+%constant int SJC__RESERVED_FUNC_47 = 47;
+%constant int SJC__RESERVED_FUNC_48 = 48;
+%constant int SJC__RESERVED_FUNC_49 = 49;
+%constant int SJC__RESERVED_FUNC_50 = 50;
+%constant int SJC_K_MIN_FUNC = 1;
+%constant int SJC_K_MAX_FUNC = 50;
+%constant int SJC__ACCOUNTING_MESSAGE = 1;
+%constant int SJC__ACCOUNTING_TYPES = 2;
+%constant int SJC__AFTER_TIME = 3;
+%constant int SJC__NO_AFTER_TIME = 4;
+%constant int SJC__ALIGNMENT_MASK = 5;
+%constant int SJC__ALIGNMENT_PAGES = 6;
+%constant int SJC__BASE_PRIORITY = 7;
+%constant int SJC__BATCH = 8;
+%constant int SJC__NO_BATCH = 9;
+%constant int SJC__BATCH_INPUT = 10;
+%constant int SJC__BATCH_OUTPUT = 11;
+%constant int SJC__CHARACTERISTIC_NAME = 12;
+%constant int SJC__CHARACTERISTIC_NUMBER = 13;
+%constant int SJC__NO_CHARACTERISTICS = 14;
+%constant int SJC__CHECKPOINT_DATA = 15;
+%constant int SJC__NO_CHECKPOINT_DATA = 16;
+%constant int SJC__CLI = 17;
+%constant int SJC__NO_CLI = 18;
+%constant int SJC__CPU_DEFAULT = 19;
+%constant int SJC__NO_CPU_DEFAULT = 20;
+%constant int SJC__CPU_LIMIT = 21;
+%constant int SJC__NO_CPU_LIMIT = 22;
+%constant int SJC__CREATE_START = 23;
+%constant int SJC__DELETE_FILE = 24;
+%constant int SJC__NO_DELETE_FILE = 25;
+%constant int SJC__DESTINATION_QUEUE = 26;
+%constant int SJC__DEVICE_NAME = 27;
+%constant int SJC__DOUBLE_SPACE = 28;
+%constant int SJC__NO_DOUBLE_SPACE = 29;
+%constant int SJC__ENTRY_NUMBER = 30;
+%constant int SJC__ENTRY_NUMBER_OUTPUT = 31;
+%constant int SJC__FILE_BURST = 32;
+%constant int SJC__FILE_BURST_ONE = 33;
+%constant int SJC__NO_FILE_BURST = 34;
+%constant int SJC__FILE_COPIES = 35;
+%constant int SJC__FILE_FLAG = 36;
+%constant int SJC__FILE_FLAG_ONE = 37;
+%constant int SJC__NO_FILE_FLAG = 38;
+%constant int SJC__FILE_IDENTIFICATION = 39;
+%constant int SJC__FILE_SETUP_MODULES = 40;
+%constant int SJC__NO_FILE_SETUP_MODULES = 41;
+%constant int SJC__FILE_SPECIFICATION = 42;
+%constant int SJC__FILE_TRAILER = 43;
+%constant int SJC__FILE_TRAILER_ONE = 44;
+%constant int SJC__NO_FILE_TRAILER = 45;
+%constant int SJC__FIRST_PAGE = 46;
+%constant int SJC__NO_FIRST_PAGE = 47;
+%constant int SJC__FORM_DESCRIPTION = 48;
+%constant int SJC__FORM_LENGTH = 49;
+%constant int SJC__FORM_MARGIN_BOTTOM = 50;
+%constant int SJC__FORM_MARGIN_LEFT = 51;
+%constant int SJC__FORM_MARGIN_RIGHT = 52;
+%constant int SJC__FORM_MARGIN_TOP = 53;
+%constant int SJC__FORM_NAME = 54;
+%constant int SJC__FORM_NUMBER = 55;
+%constant int SJC__FORM_SETUP_MODULES = 56;
+%constant int SJC__NO_FORM_SETUP_MODULES = 57;
+%constant int SJC__FORM_SHEET_FEED = 58;
+%constant int SJC__NO_FORM_SHEET_FEED = 59;
+%constant int SJC__FORM_STOCK = 60;
+%constant int SJC__FORM_TRUNCATE = 61;
+%constant int SJC__NO_FORM_TRUNCATE = 62;
+%constant int SJC__FORM_WIDTH = 63;
+%constant int SJC__FORM_WRAP = 64;
+%constant int SJC__NO_FORM_WRAP = 65;
+%constant int SJC__GENERIC_QUEUE = 66;
+%constant int SJC__NO_GENERIC_QUEUE = 67;
+%constant int SJC__GENERIC_SELECTION = 68;
+%constant int SJC__NO_GENERIC_SELECTION = 69;
+%constant int SJC__GENERIC_TARGET = 70;
+%constant int SJC__HOLD = 71;
+%constant int SJC__NO_HOLD = 72;
+%constant int SJC__JOB_BURST = 73;
+%constant int SJC__NO_JOB_BURST = 74;
+%constant int SJC__JOB_COPIES = 75;
+%constant int SJC__JOB_FLAG = 76;
+%constant int SJC__NO_JOB_FLAG = 77;
+%constant int SJC__JOB_LIMIT = 78;
+%constant int SJC__JOB_NAME = 79;
+%constant int SJC__JOB_RESET_MODULES = 80;
+%constant int SJC__NO_JOB_RESET_MODULES = 81;
+%constant int SJC__JOB_SIZE_MAXIMUM = 82;
+%constant int SJC__NO_JOB_SIZE_MAXIMUM = 83;
+%constant int SJC__JOB_SIZE_MINIMUM = 84;
+%constant int SJC__NO_JOB_SIZE_MINIMUM = 85;
+%constant int SJC__JOB_SIZE_SCHEDULING = 86;
+%constant int SJC__NO_JOB_SIZE_SCHEDULING = 87;
+%constant int SJC__JOB_STATUS_OUTPUT = 88;
+%constant int SJC__JOB_TRAILER = 89;
+%constant int SJC__NO_JOB_TRAILER = 90;
+%constant int SJC__LAST_PAGE = 91;
+%constant int SJC__NO_LAST_PAGE = 92;
+%constant int SJC__LIBRARY_SPECIFICATION = 93;
+%constant int SJC__NO_LIBRARY_SPECIFICATION = 94;
+%constant int SJC__LOG_DELETE = 95;
+%constant int SJC__NO_LOG_DELETE = 96;
+%constant int SJC__LOG_QUEUE = 97;
+%constant int SJC__LOG_SPECIFICATION = 98;
+%constant int SJC__NO_LOG_SPECIFICATION = 99;
+%constant int SJC__LOG_SPOOL = 100;
+%constant int SJC__NO_LOG_SPOOL = 101;
+%constant int SJC__LOWERCASE = 102;
+%constant int SJC__NO_LOWERCASE = 103;
+%constant int SJC__NEW_VERSION = 104;
+%constant int SJC__NEXT_JOB = 105;
+%constant int SJC__NOTE = 106;
+%constant int SJC__NO_NOTE = 107;
+%constant int SJC__NOTIFY = 108;
+%constant int SJC__NO_NOTIFY = 109;
+%constant int SJC__OPERATOR_REQUEST = 110;
+%constant int SJC__NO_OPERATOR_REQUEST = 111;
+%constant int SJC__OWNER_UIC = 112;
+%constant int SJC__PAGE_HEADER = 113;
+%constant int SJC__NO_PAGE_HEADER = 114;
+%constant int SJC__PAGE_SETUP_MODULES = 115;
+%constant int SJC__NO_PAGE_SETUP_MODULES = 116;
+%constant int SJC__PAGINATE = 117;
+%constant int SJC__NO_PAGINATE = 118;
+%constant int SJC__PARAMETER_1 = 119;
+%constant int SJC__PARAMETER_2 = 120;
+%constant int SJC__PARAMETER_3 = 121;
+%constant int SJC__PARAMETER_4 = 122;
+%constant int SJC__PARAMETER_5 = 123;
+%constant int SJC__PARAMETER_6 = 124;
+%constant int SJC__PARAMETER_7 = 125;
+%constant int SJC__PARAMETER_8 = 126;
+%constant int SJC__NO_PARAMETERS = 127;
+%constant int SJC__PASSALL = 128;
+%constant int SJC__NO_PASSALL = 129;
+%constant int SJC__PRIORITY = 130;
+%constant int SJC__PROCESSOR = 131;
+%constant int SJC__NO_PROCESSOR = 132;
+%constant int SJC__PROTECTION = 133;
+%constant int SJC__QUEUE = 134;
+%constant int SJC__QUEUE_FILE_SPECIFICATION = 135;
+%constant int SJC__RELATIVE_PAGE = 136;
+%constant int SJC__REQUEUE = 137;
+%constant int SJC__RESTART = 138;
+%constant int SJC__NO_RESTART = 139;
+%constant int SJC__RETAIN_ALL_JOBS = 140;
+%constant int SJC__RETAIN_ERROR_JOBS = 141;
+%constant int SJC__NO_RETAIN_JOBS = 142;
+%constant int SJC__SCSNODE_NAME = 143;
+%constant int SJC__SEARCH_STRING = 144;
+%constant int SJC__SWAP = 145;
+%constant int SJC__NO_SWAP = 146;
+%constant int SJC__TERMINAL = 147;
+%constant int SJC__NO_TERMINAL = 148;
+%constant int SJC__TOP_OF_FILE = 149;
+%constant int SJC__USER_IDENTIFICATION = 150;
+%constant int SJC__WSDEFAULT = 151;
+%constant int SJC__NO_WSDEFAULT = 152;
+%constant int SJC__WSEXTENT = 153;
+%constant int SJC__NO_WSEXTENT = 154;
+%constant int SJC__WSQUOTA = 155;
+%constant int SJC__NO_WSQUOTA = 156;
+%constant int SJC__ACCOUNT_NAME = 157;
+%constant int SJC__UIC = 158;
+%constant int SJC__USERNAME = 159;
+%constant int SJC__BUFFER_COUNT = 160;
+%constant int SJC__EXTEND_QUANTITY = 161;
+%constant int SJC__RECORD_BLOCKING = 162;
+%constant int SJC__NO_RECORD_BLOCKING = 163;
+%constant int SJC__QUEMAN_RESTART = 164;
+%constant int SJC__NO_QUEMAN_RESTART = 165;
+%constant int SJC__DEFAULT_FORM_NAME = 166;
+%constant int SJC__DEFAULT_FORM_NUMBER = 167;
+%constant int SJC__SECURITY_CLASSIFICATION = 168;
+%constant int SJC__QUEUE_SUPPORT = 169;
+%constant int SJC__JOB_COMPLETION_STATUS = 170;
+%constant int SJC__DIAGNOSTIC_BUFFER_OUTPUT = 171;
+%constant int SJC__OPEN_QUEUE = 172;
+%constant int SJC__CLOSE_QUEUE = 173;
+%constant int SJC__SERVER = 174;
+%constant int SJC__PRINTER = 175;
+%constant int SJC__UPDATE_ORB = 176;
+%constant int SJC__NO_QUEUE_DESCRIPTION = 177;
+%constant int SJC__JOB_RETAIN = 178;
+%constant int SJC__JOB_ERROR_RETAIN = 179;
+%constant int SJC__JOB_DEFAULT_RETAIN = 180;
+%constant int SJC__NOTIFY_ON_INTERRUPT = 181;
+%constant int SJC__NO_RAD = 182;
+%constant int SJC__ACCEPT_ALL_ATTRIBUTES = 183;
+%constant int SJC__DIAGNOSTIC_FLAGS = 184;
+%constant int SJC__QUEUE_DESCRIPTION = 185;
+%constant int SJC__CHECKPOINT_FREQUENCY = 186;
+%constant int SJC__DISPLAY_USERNAME = 187;
+%constant int SJC__FILE_NUMBER = 188;
+%constant int SJC__FILE_ATTRIBUTE = 189;
+%constant int SJC__JOB_ATTRIBUTE = 190;
+%constant int SJC__QUEUE_ATTRIBUTE = 191;
+%constant int SJC__REMOVE_ATTRIBUTE = 192;
+%constant int SJC__QUEUE_MANAGER_NAME = 193;
+%constant int SJC__QUEUE_MANAGER_NODES = 194;
+%constant int SJC__AUTOSTART_ON = 195;
+%constant int SJC__RESERVED_OUTPUT_196 = 196;
+%constant int SJC__RESERVED_OUTPUT_197 = 197;
+%constant int SJC__RESERVED_OUTPUT_198 = 198;
+%constant int SJC__RESERVED_OUTPUT_199 = 199;
+%constant int SJC__SET_CONDITION_VECTOR = 200;
+%constant int SJC__NOTIFY_MESSAGE = 201;
+%constant int SJC__DEFINE_FILE_ATTRIBUTES = 202;
+%constant int SJC__DEFINE_JOB_ATTRIBUTES = 203;
+%constant int SJC__DEFINE_QUEUE_ATTRIBUTES = 204;
+%constant int SJC__AGENT_PROFILE = 205;
+%constant int SJC__ADD_QUEUE_MANAGER = 206;
+%constant int SJC__OUTSTANDING_JOBS = 207;
+%constant int SJC__NO_INITIAL_FF = 208;
+%constant int SJC__NO_NO_INITIAL_FF = 209;
+%constant int SJC__DELETE_FILE_ALWAYS = 210;
+%constant int SJC__NO_DELETE_FILE_ALWAYS = 211;
+%constant int SJC__RESERVED_BOOLEAN_212 = 212;
+%constant int SJC__RESERVED_BOOLEAN_213 = 213;
+%constant int SJC__RESERVED_BOOLEAN_214 = 214;
+%constant int SJC__RESERVED_BOOLEAN_215 = 215;
+%constant int SJC__RESERVED_BOOLEAN_216 = 216;
+%constant int SJC__RESERVED_BOOLEAN_217 = 217;
+%constant int SJC__RESERVED_BOOLEAN_218 = 218;
+%constant int SJC__RESERVED_BOOLEAN_219 = 219;
+%constant int SJC__RESERVED_BOOLEAN_220 = 220;
+%constant int SJC__RESERVED_BOOLEAN_221 = 221;
+%constant int SJC__RESERVED_BOOLEAN_222 = 222;
+%constant int SJC__RESERVED_BOOLEAN_223 = 223;
+%constant int SJC__RESERVED_BOOLEAN_224 = 224;
+%constant int SJC__RESERVED_BOOLEAN_225 = 225;
+%constant int SJC__RESERVED_BOOLEAN_226 = 226;
+%constant int SJC__RESERVED_BOOLEAN_227 = 227;
+%constant int SJC__RESERVED_BOOLEAN_228 = 228;
+%constant int SJC__RESERVED_BOOLEAN_229 = 229;
+%constant int SJC__RESERVED_BOOLEAN_230 = 230;
+%constant int SJC__RESERVED_BOOLEAN_231 = 231;
+%constant int SJC__RESERVED_BOOLEAN_232 = 232;
+%constant int SJC__RESERVED_BOOLEAN_233 = 233;
+%constant int SJC__RESERVED_BOOLEAN_234 = 234;
+%constant int SJC__JOB_RETAIN_TIME = 235;
+%constant int SJC__MANAGER_ATTRIBUTE = 236;
+%constant int SJC__RAD = 237;
+%constant int SJC__RESERVED_INPUT_238 = 238;
+%constant int SJC__RESERVED_INPUT_239 = 239;
+%constant int SJC__RESERVED_INPUT_240 = 240;
+%constant int SJC__RESERVED_INPUT_241 = 241;
+%constant int SJC__RESERVED_INPUT_242 = 242;
+%constant int SJC__RESERVED_INPUT_243 = 243;
+%constant int SJC__RESERVED_INPUT_244 = 244;
+%constant int SJC__RESERVED_INPUT_245 = 245;
+%constant int SJC__RESERVED_INPUT_246 = 246;
+%constant int SJC__RESERVED_INPUT_247 = 247;
+%constant int SJC__RESERVED_INPUT_248 = 248;
+%constant int SJC__RESERVED_INPUT_249 = 249;
+%constant int SJC__RESERVED_INPUT_250 = 250;
+%constant int SJC__RESERVED_OUTPUT_251 = 251;
+%constant int SJC__RESERVED_OUTPUT_252 = 252;
+%constant int SJC__RESERVED_OUTPUT_253 = 253;
+%constant int SJC__RESERVED_OUTPUT_254 = 254;
+%constant int SJC__RESERVED_OUTPUT_255 = 255;
+%constant int SJC_K_MIN_ITEM = 1;
+%constant int SJC_K_MAX_ITEM = 255;
+%constant int SJC__CHARGE_CODE = 157;
+%constant int SJC__RESERVED_INPUT_187 = 187;
+%constant int SJC__QUEUE_DIRECTORY = 135;
+%constant int SJC__SERVICE_INPUT = 10;
+%constant int SJC__SERVICE_OUTPUT = 11;
+%constant int SJC_M_ACCT_PROCESS = 0x1L;
+%constant int SJC_M_ACCT_IMAGE = 0x2L;
+%constant int SJC_M_ACCT_INTERACTIVE = 0x4L;
+%constant int SJC_M_ACCT_LOGIN_FAILURE = 0x8L;
+%constant int SJC_M_ACCT_SUBPROCESS = 0x10L;
+%constant int SJC_M_ACCT_DETACHED = 0x20L;
+%constant int SJC_M_ACCT_BATCH = 0x40L;
+%constant int SJC_M_ACCT_NETWORK = 0x80L;
+%constant int SJC_M_ACCT_PRINT = 0x100L;
+%constant int SJC_M_ACCT_MESSAGE = 0x200L;
+%constant int SJC_M_ACCT_ACM_FUNC = 0x400L;
+%constant int SJC_M_ACCT_ACM_SYS = 0x800L;
+%constant int SJC_M_ACCT_CCAENAB = 0x1000L;
+%constant int SJC_M_ACCT_CCVENAB = 0x2000L;
+%constant int SJC_S_ACCOUNTING_TYPES = 4;
+%constant int SJC_S_ACCT_UNUSED = 18;
+%constant int SJC_M_DIAG_COPY_QF = 0x1L;
+%constant int SJC_M_DIAG_CREATE_MF = 0x2L;
+%constant int SJC_M_DIAG_CLOSE_MF = 0x4L;
+%constant int SJC_M_DIAG_OPEN_MF = 0x8L;
+%constant int SJC_M_DIAG_CLEAR_FLAGS = 0x10L;
+%constant int SJC_M_DIAG_LOG_ALL_TRANS = 0x20L;
+%constant int SJC_M_DIAG_JOURNAL_PUTS = 0x40L;
+%constant int SJC_M_DIAG_DUMP_DIAG_BUFFER = 0x80L;
+%constant int SJC_M_DIAG_INIT_DIAG_BUFFER = 0x100L;
+%constant int SJC_S_DIAGNOSTIC_FLAGS = 4;
+%constant int SJC_S_DIAG_UNUSED = 23;
diff --git a/Modules/vms/ssdef/ssdef.i b/Modules/vms/ssdef/ssdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3NkZWYvc3NkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/ssdef/ssdef.i
@@ -0,0 +1,919 @@
+%module ssdef
+
+%constant int SYSTEM__FACILITY = 0;
+%constant int SS__NORMAL = 1;
+%constant int SS__CONTINUE = 1;
+%constant int SS__WASCLR = 1;
+%constant int SS__WASSET = 9;
+%constant int SS__REMEMBER = 1;
+%constant int SS__ACCVIO = 12;
+%constant int SS__BADPARAM = 20;
+%constant int SS__EXQUOTA = 28;
+%constant int SS__NOPRIV = 36;
+%constant int SS__ABORT = 44;
+%constant int SS__BADATTRIB = 52;
+%constant int SS__BADESCAPE = 60;
+%constant int SS__BADIMGHDR = 68;
+%constant int SS__CHANINTLK = 76;
+%constant int SS__CTRLERR = 84;
+%constant int SS__DATACHECK = 92;
+%constant int SS__DEVFOREIGN = 100;
+%constant int SS__DEVMOUNT = 108;
+%constant int SS__DEVNOTMBX = 116;
+%constant int SS__DEVNOTMOUNT = 124;
+%constant int SS__DEVOFFLINE = 132;
+%constant int SS__DRVERR = 140;
+%constant int SS__DUPLNAM = 148;
+%constant int SS__FILACCERR = 156;
+%constant int SS__FILALRACC = 164;
+%constant int SS__FILNOTACC = 172;
+%constant int SS__FILNOTEXP = 180;
+%constant int SS__FORMAT = 188;
+%constant int SS__GPTFULL = 196;
+%constant int SS__GSDFULL = 204;
+%constant int SS__LCKPAGFUL = 212;
+%constant int SS__ILLBLKNUM = 220;
+%constant int SS__ILLCNTRFUNC = 228;
+%constant int SS__ILLEFC = 236;
+%constant int SS__ILLIOFUNC = 244;
+%constant int SS__ILLPAGCNT = 252;
+%constant int SS__ILLSER = 260;
+%constant int SS__INCVOLLABEL = 268;
+%constant int SS__INSFARG = 276;
+%constant int SS__INSFWSL = 284;
+%constant int SS__INSFMEM = 292;
+%constant int SS__INSFRAME = 300;
+%constant int SS__IVADDR = 308;
+%constant int SS__IVCHAN = 316;
+%constant int SS__IVDEVNAM = 324;
+%constant int SS__IVGSDNAM = 332;
+%constant int SS__IVLOGNAM = 340;
+%constant int SS__IVLOGTAB = 348;
+%constant int SS__IVQUOTAL = 356;
+%constant int SS__IVSECFLG = 364;
+%constant int SS__IVSSRQ = 372;
+%constant int SS__IVSTSFLG = 380;
+%constant int SS__IVTIME = 388;
+%constant int SS__LENVIO = 396;
+%constant int SS__LKWSETFUL = 404;
+%constant int SS__MBTOOSML = 412;
+%constant int SS__MEDOFL = 420;
+%constant int SS__NODATA = 428;
+%constant int SS__NOIOCHAN = 436;
+%constant int SS__NOLOGNAM = 444;
+%constant int SS__NONEXDRV = 452;
+%constant int SS__NOTFILEDEV = 460;
+%constant int SS__NOTINTBLSZ = 468;
+%constant int SS__NOTLABELMT = 476;
+%constant int SS__NOTSQDEV = 484;
+%constant int SS__PAGOWNVIO = 492;
+%constant int SS__PARITY = 500;
+%constant int SS__PARTESCAPE = 508;
+%constant int SS__PFMBSY = 516;
+%constant int SS__PSTFULL = 524;
+%constant int SS__RESULTOVF = 532;
+%constant int SS__SECTBLFUL = 540;
+%constant int SS__TAPEPOSLOST = 548;
+%constant int SS__TIMEOUT = 556;
+%constant int SS__UNASEFC = 564;
+%constant int SS__UNSAFE = 572;
+%constant int SS__VASFULL = 580;
+%constant int SS__VECINUSE = 588;
+%constant int SS__VOLINV = 596;
+%constant int SS__WRITLCK = 604;
+%constant int SS__NOTAPEOP = 612;
+%constant int SS__IVCHNLSEC = 620;
+%constant int SS__NOMBX = 628;
+%constant int SS__NOLINKS = 636;
+%constant int SS__NOSOLICIT = 644;
+%constant int SS__NOSUCHNODE = 652;
+%constant int SS__REJECT = 660;
+%constant int SS__TOOMUCHDATA = 668;
+%constant int SS__BUGCHECK = 676;
+%constant int SS__FILNOTCNTG = 684;
+%constant int SS__BADSTACK = 692;
+%constant int SS__MCHECK = 700;
+%constant int SS__DEVACTIVE = 708;
+%constant int SS__HANGUP = 716;
+%constant int SS__OPINCOMPL = 724;
+%constant int SS__ILLSEQOP = 732;
+%constant int SS__IVSECIDCTL = 740;
+%constant int SS__NOTNETDEV = 748;
+%constant int SS__IVPROTECT = 756;
+%constant int SS__ACPVAFUL = 764;
+%constant int SS__MTLBLLONG = 772;
+%constant int SS__BUFBYTALI = 780;
+%constant int SS__NOAQB = 788;
+%constant int SS__WRONGACP = 796;
+%constant int SS__BUFNOTALIGN = 804;
+%constant int SS__DEVCMDERR = 812;
+%constant int SS__DEVREQERR = 820;
+%constant int SS__INSFBUFDP = 828;
+%constant int SS__INSFMAPREG = 836;
+%constant int SS__IVBUFLEN = 844;
+%constant int SS__IVMODE = 852;
+%constant int SS__MCNOTVALID = 860;
+%constant int SS__POWERFAIL = 868;
+%constant int SS__SHMGSNOTMAP = 876;
+%constant int SS__TOOMANYLNAM = 884;
+%constant int SS__SHMNOTCNCT = 892;
+%constant int SS__NOTCREATOR = 900;
+%constant int SS__INTERLOCK = 908;
+%constant int SS__BADQUEUEHDR = 916;
+%constant int SS__NOSLOT = 924;
+%constant int SS__SUSPENDED = 932;
+%constant int SS__EXPORTQUOTA = 940;
+%constant int SS__NOSHMBLOCK = 948;
+%constant int SS__BADQFILE = 956;
+%constant int SS__NOQFILE = 964;
+%constant int SS__QFACTIVE = 972;
+%constant int SS__QFNOTACT = 980;
+%constant int SS__DUPDSKQUOTA = 988;
+%constant int SS__NODISKQUOTA = 996;
+%constant int SS__EXDISKQUOTA = 1004;
+%constant int SS__IDMISMATCH = 1012;
+%constant int SS__NOWRT = 1020;
+%constant int SS__BADISD = 8196;
+%constant int SS__RELINK = 8204;
+%constant int SS__NOTINSTALL = 8212;
+%constant int SS__SHARTOOBIG = 8220;
+%constant int SS__NOP1VA = 8228;
+%constant int SS__MULTRMS = 8236;
+%constant int SS__VECFULL = 8244;
+%constant int SS__IVLVEC = 8252;
+%constant int SS__INSFSPTS = 8260;
+%constant int SS__DISCONNECT = 8268;
+%constant int SS__PRIVINSTALL = 8276;
+%constant int SS__PROTINSTALL = 8284;
+%constant int SS__BADVEC = 8292;
+%constant int SS__REMRSRC = 8300;
+%constant int SS__PROTOCOL = 8308;
+%constant int SS__THIRDPARTY = 8316;
+%constant int SS__NOSUCHUSER = 8324;
+%constant int SS__SHUT = 8332;
+%constant int SS__UNREACHABLE = 8340;
+%constant int SS__INVLOGIN = 8348;
+%constant int SS__NOSUCHOBJ = 8356;
+%constant int SS__EXCPUTIM = 8364;
+%constant int SS__OPRABORT = 8372;
+%constant int SS__SHRIDMISMAT = 8380;
+%constant int SS__COMMHARD = 8388;
+%constant int SS__IVCHAR = 8396;
+%constant int SS__DEVINACT = 8404;
+%constant int SS__CONNECFAIL = 8412;
+%constant int SS__LINKABORT = 8420;
+%constant int SS__LINKDISCON = 8428;
+%constant int SS__LINKEXIT = 8436;
+%constant int SS__PATHLOST = 8444;
+%constant int SS__CLEARED = 8452;
+%constant int SS__RESET = 8460;
+%constant int SS__UNSOLICIT = 8468;
+%constant int SS__TOOMANYREDS = 8476;
+%constant int SS__IVLOCKID = 8484;
+%constant int SS__SUBLOCKS = 8492;
+%constant int SS__PARNOTGRANT = 8500;
+%constant int SS__CVTUNGRANT = 8508;
+%constant int SS__FORCEDERROR = 8516;
+%constant int SS__ILLSELF = 8524;
+%constant int SS__ILLCDTST = 8532;
+%constant int SS__NOLISTENER = 8540;
+%constant int SS__EXGBLPAGFIL = 8548;
+%constant int SS__BADRCT = 8556;
+%constant int SS__DIRNOTEMPTY = 8564;
+%constant int SS__FORCEDEXIT = 8572;
+%constant int SS__NOTPRINTED = 8580;
+%constant int SS__JBCERROR = 8588;
+%constant int SS__NOLICENSE = 8596;
+%constant int SS__VCBROKEN = 8604;
+%constant int SS__VCCLOSED = 8612;
+%constant int SS__INSFCDT = 8620;
+%constant int SS__DEVNOTDISM = 8628;
+%constant int SS__NOSHRIMG = 8636;
+%constant int SS__DUPUNIT = 8644;
+%constant int SS__BADACLCTX = 8652;
+%constant int SS__SERIOUSEXCP = 8660;
+%constant int SS__TEMPLATEDEV = 8668;
+%constant int SS__IVACL = 8676;
+%constant int SS__NOSUCHID = 8684;
+%constant int SS__NOLCLMEDA = 8692;
+%constant int SS__NOREGAVIL = 8700;
+%constant int SS__NOREGSUIT = 8708;
+%constant int SS__NOSUCHPGM = 8716;
+%constant int SS__PGMLDFAIL = 8724;
+%constant int SS__PGMSTDALN = 8732;
+%constant int SS__IVIDENT = 8740;
+%constant int SS__DUPIDENT = 8748;
+%constant int SS__INCSEGTRA = 8756;
+%constant int SS__NODELEAVE = 8764;
+%constant int SS__KERNELINV = 8772;
+%constant int SS__EXLNMQUOTA = 8780;
+%constant int SS__PARENT_DEL = 8788;
+%constant int SS__PARNOTSYS = 8796;
+%constant int SS__INSSWAPSPACE = 8804;
+%constant int SS__VOLOERR = 8812;
+%constant int SS__DATALATE = 8820;
+%constant int SS__OVRMAXARG = 8828;
+%constant int SS__SHACHASTA = 8836;
+%constant int SS__TERMNETDEV = 8844;
+%constant int SS__NOLOGTAB = 8852;
+%constant int SS__WRONGNAME = 8860;
+%constant int SS__NOVOLACC = 8868;
+%constant int SS__NOFILACC = 8876;
+%constant int SS__INVEXHLIST = 8884;
+%constant int SS__NOACLSUPPORT = 8892;
+%constant int SS__INVSECLASS = 8900;
+%constant int SS__INCSHAMEM = 8908;
+%constant int SS__DEVNOTSHR = 8916;
+%constant int SS__RUCONFLICT = 8924;
+%constant int SS__DATALOST = 8932;
+%constant int SS__REMOTE_PROC = 8940;
+%constant int SS__CPUNOTACT = 8948;
+%constant int SS__SRVMMAT = 8956;
+%constant int SS__EXLICENSE = 8964;
+%constant int SS__INVLICENSE = 8972;
+%constant int SS__LICENSE_LEVEL = 8980;
+%constant int SS__INV_HW_ID = 8988;
+%constant int SS__BADCONTEXT = 8996;
+%constant int SS__TOOMUCHCTX = 9004;
+%constant int SS__VA_IN_USE = 9012;
+%constant int SS__NODELETE = 9020;
+%constant int SS__NOSUCHCPU = 9028;
+%constant int SS__IMGVEXC = 9036;
+%constant int SS__NOSAVPEXC = 9044;
+%constant int SS__NOSUCHTID = 9052;
+%constant int SS__NOSUCHRM = 9060;
+%constant int SS__NOCURTID = 9068;
+%constant int SS__WRONGSTATE = 9076;
+%constant int SS__VETO = 9084;
+%constant int SS__PWDSYNTAX = 9092;
+%constant int SS__PWDNOTDIF = 9100;
+%constant int SS__INVPWDLEN = 9108;
+%constant int SS__SYSVERDIF = 9116;
+%constant int SS__HWM_STALL = 9124;
+%constant int SS__NOSUSPEND = 9132;
+%constant int SS__NOSUCHPART = 9140;
+%constant int SS__RMALRDCL = 9148;
+%constant int SS__ALRCURTID = 9156;
+%constant int SS__INVLOG = 9164;
+%constant int SS__BADLOGVER = 9172;
+%constant int SS__OPINPROG = 9180;
+%constant int SS__WRONGACMODE = 9188;
+%constant int SS__SUBTRACED = 9196;
+%constant int SS__ARCHIVING = 9204;
+%constant int SS__ARCHIVED = 9212;
+%constant int SS__SITEPWDFAIL = 9220;
+%constant int SS__NOSUCHCPB = 9228;
+%constant int SS__CPUCAP = 9236;
+%constant int SS__LOADER = 9244;
+%constant int SS__HSTBUFACC = 9252;
+%constant int SS__INCONOLCK = 9260;
+%constant int SS__INVEVENT = 9268;
+%constant int SS__NOSUCHFAC = 9276;
+%constant int SS__NOCALLPRIV = 9284;
+%constant int SS__INSFLPGS = 9292;
+%constant int SS__INSFRPGS = 9300;
+%constant int SS__BADREASON = 9308;
+%constant int SS__NOSUCHBID = 9316;
+%constant int SS__NOTORIGIN = 9324;
+%constant int SS__NOLOG = 9332;
+%constant int SS__TPDISABLED = 9340;
+%constant int SS__BRANCHENDED = 9348;
+%constant int SS__BRANCHSTARTED = 9356;
+%constant int SS__NOSUCHREPORT = 9364;
+%constant int SS__BADTIME = 9372;
+%constant int SS__PARTJOINED = 9380;
+%constant int SS__NOPRESUME = 9388;
+%constant int SS__RECOVERCANCEL = 9396;
+%constant int SS__CURTIDCHANGE = 9404;
+%constant int SS__NOREADER = 9412;
+%constant int SS__NOWRITER = 9420;
+%constant int SS__DEVNOTWS = 9428;
+%constant int SS__NOCLASS = 9436;
+%constant int SS__CONTEXTSKEW = 9444;
+%constant int SS__BADFORGEDB = 9452;
+%constant int SS__NODOMAIN = 9460;
+%constant int SS__OVRMAXAUD = 9468;
+%constant int SS__BADCHAIN = 9476;
+%constant int SS__BADBUFLEN = 9484;
+%constant int SS__BADITMCOD = 9492;
+%constant int SS__BADBUFADR = 9500;
+%constant int SS__BADRETLEN = 9508;
+%constant int SS__SSINOTHELD = 9516;
+%constant int SS__SSAMISSING = 9524;
+%constant int SS__SSANOTAUTH = 9532;
+%constant int SS__BADOWNER = 9540;
+%constant int SS__NAMESERVCOMMERR = 9548;
+%constant int SS__IVNODNAM = 9556;
+%constant int SS__CONFIG_SYNTAX = 9564;
+%constant int SS__SHELVED = 9572;
+%constant int SS__DRVNOTVALID = 9580;
+%constant int SS__SLICING_DISABLED = 9588;
+%constant int SS__NOCALLTRANS = 9596;
+%constant int SS__TRANSCALLER = 9604;
+%constant int SS__ILLPRIPOL = 9612;
+%constant int SS__ILLPOLICY = 9620;
+%constant int SS__INSFRSPID = 9628;
+%constant int SS__INSFCREDITL = 9636;
+%constant int SS__INSFCREDITH = 9644;
+%constant int SS__INSFMAP = 9652;
+%constant int SS__SIG_INVARGTYPE = 9660;
+%constant int SS__SIG_INVFLTARG = 9668;
+%constant int SS__SIG_INVARGLIST = 9676;
+%constant int SS__SIG_INVFUNCTYPE = 9684;
+%constant int SS__SIG_ARGMISMATCH = 9692;
+%constant int SS__NOTRANQUIL = 9700;
+%constant int SS__NOCALLTRANS_SUP = 9708;
+%constant int SS__DEVLISTFULL = 9716;
+%constant int SS__INSFP1POOL = 9724;
+%constant int SS__SIGNAL64 = 9732;
+%constant int SS__ZEROALLOCLS = 9740;
+%constant int SS__QUEUE_FULL = 9748;
+%constant int SS__DEVICE_RESET = 9756;
+%constant int SS__ACA_ACTIVE = 9764;
+%constant int SS__BUS_PHASE_ERROR = 9772;
+%constant int SS__NOMULTITHREAD = 9780;
+%constant int SS__MTHREADACTIVE = 9788;
+%constant int SS__MAXKTHREADS = 9796;
+%constant int SS__NOSUCHTHREAD = 9804;
+%constant int SS__NOTHREADMAN = 9812;
+%constant int SS__NOSUCHUPCALL = 9820;
+%constant int SS__BADFANDLE = 9828;
+%constant int SS__FANDLEBUSY = 9836;
+%constant int SS__UNALIGNED = 9844;
+%constant int SS__BADIOSADR = 9852;
+%constant int SS__ILLBUFOBJ = 9860;
+%constant int SS__ILLMODIFIER = 9868;
+%constant int SS__NOCCBBUFFOBJ = 9876;
+%constant int SS__NORDACC = 9884;
+%constant int SS__NOWRTACC = 9892;
+%constant int SS__NOTNOCNVRT = 9900;
+%constant int SS__UNSUPVOLSET = 9908;
+%constant int SS__ARG_GTR_32_BITS = 9916;
+%constant int SS__NOT64DEVFUNC = 9924;
+%constant int SS__CHANVIO = 9932;
+%constant int SS__GBLSEC_MISMATCH = 9940;
+%constant int SS__ILLRELPAG = 9948;
+%constant int SS__IVACMODE = 9956;
+%constant int SS__IVREGFLG = 9964;
+%constant int SS__IVREGID = 9972;
+%constant int SS__IVREGPROT = 9980;
+%constant int SS__IVVAFLG = 9988;
+%constant int SS__LEN_NOTBLKMULT = 9996;
+%constant int SS__LEN_NOTPAGMULT = 10004;
+%constant int SS__NOT_PROCESS_VA = 10012;
+%constant int SS__OFF_NOTBLKALGN = 10020;
+%constant int SS__OFF_NOTPAGALGN = 10028;
+%constant int SS__OFFSET_TOO_BIG = 10036;
+%constant int SS__REGOWNVIO = 10044;
+%constant int SS__PROTVIO = 10052;
+%constant int SS__TOO_MANY_ARGS = 10060;
+%constant int SS__VA_NOTPAGALGN = 10068;
+%constant int SS__NOEXTAUTH = 10076;
+%constant int SS__AUTHFAIL = 10084;
+%constant int SS__INVUSER = 10092;
+%constant int SS__ERRMAPAUTH = 10100;
+%constant int SS__NORAD50 = 10108;
+%constant int SS__BADMEDIA = 10116;
+%constant int SS__UNRECOVRDER = 10124;
+%constant int SS__IVFORMAT = 10132;
+%constant int SS__IVUNITFLAG = 10140;
+%constant int SS__IVPARAM = 10148;
+%constant int SS__NOSUCHENTRY = 10156;
+%constant int SS__ALLOCFAILED = 10164;
+%constant int SS__SHMEM_INCON = 10172;
+%constant int SS__IVLOCKOP = 10180;
+%constant int SS__IVLOCKTBL = 10188;
+%constant int SS__LOCKINUSE = 10196;
+%constant int SS__LOCK_TIMEOUT = 10204;
+%constant int SS__BADLCKTBL = 10212;
+%constant int SS__NOBREAK = 10220;
+%constant int SS__IVPROTOCOL = 10228;
+%constant int SS__NOWAIT = 10236;
+%constant int SS__PLHLDR = 1028;
+%constant int SS__ASTFLT = 1036;
+%constant int SS__BREAK = 1044;
+%constant int SS__CMODSUPR = 1052;
+%constant int SS__CMODUSER = 1060;
+%constant int SS__COMPAT = 1068;
+%constant int SS__OPCCUS = 1076;
+%constant int SS__OPCDEC = 1084;
+%constant int SS__PAGRDERR = 1092;
+%constant int SS__RADRMOD = 1100;
+%constant int SS__ROPRAND = 1108;
+%constant int SS__SSFAIL = 1116;
+%constant int SS__TBIT = 1124;
+%constant int SS__DEBUG = 1132;
+%constant int SS__ARTRES = 1140;
+%constant int SS__INTOVF = 1148;
+%constant int SS__INTDIV = 1156;
+%constant int SS__FLTOVF = 1164;
+%constant int SS__FLTDIV = 1172;
+%constant int SS__FLTUND = 1180;
+%constant int SS__DECOVF = 1188;
+%constant int SS__SUBRNG = 1196;
+%constant int SS__FLTOVF_F = 1204;
+%constant int SS__FLTDIV_F = 1212;
+%constant int SS__FLTUND_F = 1220;
+%constant int SS__INHCHMK = 1228;
+%constant int SS__INHCHME = 1236;
+%constant int SS__VECDIS = 1244;
+%constant int SS__VARITH = 1252;
+%constant int SS__ILLVECOP = 1260;
+%constant int SS__VECALIGN = 1268;
+%constant int SS__IMGDMP = 1276;
+%constant int SS__HPARITH = 1284;
+%constant int SS__ALIGN = 1292;
+%constant int SS__UNALIGN_SP_LOAD = 1300;
+%constant int SS__GENTRAP = 1308;
+%constant int SS__FLTINV = 1316;
+%constant int SS__FLTINE = 1324;
+%constant int SS__DECDIV = 1332;
+%constant int SS__DECINV = 1340;
+%constant int SS__ASSERTERR = 1348;
+%constant int SS__NULPTRERR = 1356;
+%constant int SS__STKOVF = 1364;
+%constant int SS__STRLENERR = 1372;
+%constant int SS__SUBSTRERR = 1380;
+%constant int SS__RANGEERR = 1388;
+%constant int SS__SUBRNG1 = 1396;
+%constant int SS__SUBRNG2 = 1404;
+%constant int SS__SUBRNG3 = 1412;
+%constant int SS__SUBRNG4 = 1420;
+%constant int SS__SUBRNG5 = 1428;
+%constant int SS__SUBRNG6 = 1436;
+%constant int SS__SUBRNG7 = 1444;
+%constant int SS__PAGRDERRXM = 1452;
+%constant int SS__ILLEGAL_SHADOW = 1460;
+%constant int SS__FLTINV_F = 1468;
+%constant int SS__FLTINE_F = 1476;
+%constant int SS__INTOVF_F = 1484;
+%constant int SS__NATFAULT = 1492;
+%constant int SS__FLTDENORMAL = 1500;
+%constant int SS__BREAK_SYS = 1508;
+%constant int SS__BREAK_ARCH = 1516;
+%constant int SS__BUFFEROVF = 1537;
+%constant int SS__CONTROLO = 1545;
+%constant int SS__CONTROLY = 1553;
+%constant int SS__CREATED = 1561;
+%constant int SS__MSGNOTFND = 1569;
+%constant int SS__NOTRAN = 1577;
+%constant int SS__SUPERSEDE = 1585;
+%constant int SS__WASECC = 1593;
+%constant int SS__DEVALRALLOC = 1601;
+%constant int SS__REMOTE = 1609;
+%constant int SS__CONTROLC = 1617;
+%constant int SS__NOTMODIFIED = 1625;
+%constant int SS__RDDELDATA = 1633;
+%constant int SS__OVRDSKQUOTA = 1641;
+%constant int SS__OBSOLETE_1 = 1649;
+%constant int SS__FILEPURGED = 1657;
+%constant int SS__NOTALLPRIV = 1665;
+%constant int SS__SYNCH = 1673;
+%constant int SS__CONCEALED = 1681;
+%constant int SS__INCOMPAT = 1689;
+%constant int SS__DBGOPCREQ = 1697;
+%constant int SS__ALRDYCLOSED = 1705;
+%constant int SS__LNMCREATED = 1713;
+%constant int SS__ACEIDMATCH = 1721;
+%constant int SS__DBGEVENT = 1729;
+%constant int SS__REMOVED = 1737;
+%constant int SS__QUEUED = 1745;
+%constant int SS__SUBDISABLED = 1753;
+%constant int SS__FORGET = 1761;
+%constant int SS__PREPARED = 1769;
+%constant int SS__NOMOREITEMS = 1777;
+%constant int SS__VOLATILE = 1785;
+%constant int SS__CLASSUPER = 1793;
+%constant int SS__CONTINUE_64 = 1801;
+%constant int SS__THREAD_UPCALL = 1809;
+%constant int SS__CREATED_SHPT = 1817;
+%constant int SS__PERSONADELPEND = 1825;
+%constant int SS__DEVAVAIL = 1833;
+%constant int SS__LONGGAP = 1841;
+%constant int SS__BROKEN = 1849;
+%constant int SS__QPOOL_DEL_INIT = 1857;
+%constant int SS__UNUSED_1 = 1865;
+%constant int SS__LOWPREC = 1873;
+%constant int SS__ACCONFLICT = 2048;
+%constant int SS__BADCHKSUM = 2056;
+%constant int SS__BADFILEHDR = 2064;
+%constant int SS__BADFILENAME = 2072;
+%constant int SS__BADFILEVER = 2080;
+%constant int SS__BADIRECTORY = 2088;
+%constant int SS__CANCEL = 2096;
+%constant int SS__DATAOVERUN = 2104;
+%constant int SS__DEVALLOC = 2112;
+%constant int SS__DEVASSIGN = 2120;
+%constant int SS__DEVICEFULL = 2128;
+%constant int SS__DEVNOTALLOC = 2136;
+%constant int SS__DIRFULL = 2144;
+%constant int SS__DUPFILENAME = 2152;
+%constant int SS__ENDOFFILE = 2160;
+%constant int SS__ENDOFTAPE = 2168;
+%constant int SS__TMACTIVE = 2176;
+%constant int SS__FCPREADERR = 2184;
+%constant int SS__FCPREWNDERR = 2192;
+%constant int SS__FCPSPACERR = 2200;
+%constant int SS__FCPWRITERR = 2208;
+%constant int SS__FILELOCKED = 2216;
+%constant int SS__FILENUMCHK = 2224;
+%constant int SS__FILESEQCHK = 2232;
+%constant int SS__FILESTRUCT = 2240;
+%constant int SS__HEADERFULL = 2248;
+%constant int SS__IDXFILEFULL = 2256;
+%constant int SS__MBFULL = 2264;
+%constant int SS__NOHOMEBLK = 2272;
+%constant int SS__NONEXPR = 2280;
+%constant int SS__NONLOCAL = 2288;
+%constant int SS__NOHANDLER = 2296;
+%constant int SS__NOSIGNAL = 2304;
+%constant int SS__NOSUCHDEV = 2312;
+%constant int SS__NOSUCHFILE = 2320;
+%constant int SS__RESIGNAL = 2328;
+%constant int SS__UNWIND = 2336;
+%constant int SS__UNWINDING = 2344;
+%constant int SS__NOMOREFILES = 2352;
+%constant int SS__BEGOFFILE = 2360;
+%constant int SS__BLOCKCNTERR = 2368;
+%constant int SS__MUSTCLOSEFL = 2376;
+%constant int SS__WAITUSRLBL = 2384;
+%constant int SS__ILLUSRLBLRD = 2392;
+%constant int SS__ILLUSRLBLWT = 2400;
+%constant int SS__ILLLBLAST = 2408;
+%constant int SS__ENDOFUSRLBL = 2416;
+%constant int SS__NOSUCHSEC = 2424;
+%constant int SS__CLIFRCEXT = 2432;
+%constant int SS__FCPREPSTN = 2440;
+%constant int SS__TOOMANYVER = 2448;
+%constant int SS__NOTVOLSET = 2456;
+%constant int SS__ENDOFVOLUME = 2464;
+%constant int SS__NOMOREPROC = 2472;
+%constant int SS__NODEVAVL = 2480;
+%constant int SS__NOTQUEUED = 2488;
+%constant int SS__DGQINCOMP = 2496;
+%constant int SS__DIRALLOC = 2504;
+%constant int SS__ACLEMPTY = 2512;
+%constant int SS__NOENTRY = 2520;
+%constant int SS__NOMOREACE = 2528;
+%constant int SS__RIGHTSFULL = 2536;
+%constant int SS__VALNOTVALID = 2544;
+%constant int SS__ACLFULL = 2552;
+%constant int SS__NOMORENODE = 2560;
+%constant int SS__NOMORELOCK = 2568;
+%constant int SS__BEGOFTAPE = 2576;
+%constant int SS__OBJLOCKHELD = 2584;
+%constant int SS__CPUSTARTIP = 2592;
+%constant int SS__ALLSTARTED = 2600;
+%constant int SS__ALRDYSTRT = 2608;
+%constant int SS__ALRDYSTPPD = 2616;
+%constant int SS__NSTPPD = 2624;
+%constant int SS__UNKRESULT = 2632;
+%constant int SS__ITEMNOTFOUND = 2640;
+%constant int SS__NOMOREDEV = 2648;
+%constant int SS__EFNOTSET = 2656;
+%constant int SS__PRIMNOSTP = 2664;
+%constant int SS__BOOTREJECT = 2672;
+%constant int SS__RMTPATH = 2680;
+%constant int SS__OBJECT_EXISTS = 2688;
+%constant int SS__NOSUCHOBJECT = 2696;
+%constant int SS__NOVOLDESC = 2704;
+%constant int SS__NOPTBLDIR = 2712;
+%constant int SS__DRVEXISTS = 2720;
+%constant int SS__DEVEXISTS = 2728;
+%constant int SS__GOTO_UNWIND = 2736;
+%constant int SS__EXIT_UNWIND = 2744;
+%constant int SS__SMALLHEADER = 2752;
+%constant int SS__FDT_COMPL = 2760;
+%constant int SS__TARGET_UNWIND = 2768;
+%constant int SS__TARGET_GOTO_UNWIND = 2776;
+%constant int SS__RESIGNAL_64 = 2784;
+%constant int SS__NOMOREREG = 2792;
+%constant int SS__PAGNOTINREG = 2800;
+%constant int SS__REGISFULL = 2808;
+%constant int SS__PAGTYPVIO = 2816;
+%constant int SS__NOSUCHPAG = 2824;
+%constant int SS__PAGNOTWRITE = 2832;
+%constant int SS__NOMORETHREAD = 2840;
+%constant int SS__NOTF11ODS5 = 2848;
+%constant int SS__NOCONVJNL = 2856;
+%constant int SS__MPDEVBUSY = 2864;
+%constant int SS__MPDEVUSERDISABLE = 2872;
+%constant int SS__NOCPUMATCH = 2880;
+%constant int SS__NOMORECLIENTS = 2888;
+%constant int SS__NOMOREDEVICES = 2896;
+%constant int SS__NOMOREFILTERS = 2904;
+%constant int SS__NOMOREPATHS = 2912;
+%constant int SS__NOMORESERVERS = 2920;
+%constant int SS__FISH = 2928;
+%constant int SS__FILENOTCACHED = 2936;
+%constant int SS__INSF_SHM_REG = 2944;
+%constant int SS__HBMMNOTENABLED = 2952;
+%constant int SS__HBMMALREADYON = 2960;
+%constant int SS__NODEVPOL = 2968;
+%constant int SS__NONAMPOL = 2976;
+%constant int SS__XVALNOTVALID = 2984;
+%constant int SS__FILEFULL = 2992;
+%constant int SS__REMINDER = 3000;
+%constant int SS__EOTIN = 3075;
+%constant int SS__CHAINW = 3083;
+%constant int SS__NOTINSEC = 3091;
+%constant int SS__NONXPAG = 3099;
+%constant int SS__LOGNAME = 3107;
+%constant int SS__CPUSTARTD = 3115;
+%constant int SS__CPUSTOPPING = 3123;
+%constant int SS__NOTALLCANCELED = 3131;
+%constant int SS__NOTHINGDONE = 3139;
+%constant int SS__EVTNOTENAB = 3147;
+%constant int SS__NOPATHTBL = 3155;
+%constant int SS__RESELECTION = 3163;
+%constant int SS__EMULATED = 3171;
+%constant int SS__REMDONE = 3179;
+%constant int SS__REMINPROG = 3187;
+%constant int SS__DEVCON = 3195;
+%constant int SS__DEVNOTCON = 3203;
+%constant int SS__CPUSELECTED = 3211;
+%constant int SS__QPOOL_DEL_INPRG = 3219;
+%constant int SS__PRESTO = 3227;
+%constant int SS__TAKEN_BRANCH = 3235;
+%constant int SS__IA32_TRAP = 3243;
+%constant int SS__DEBUG_FAULT = 3251;
+%constant int SS__BREAK_APPL = 3259;
+%constant int SS__TIE_GET_FRAMES = 3267;
+%constant int SS__TIE_PRE_UNWIND = 3275;
+%constant int SS__TIE_UNWIND = 3283;
+%constant int SS__TIE_GOTO_UNWIND = 3291;
+%constant int SS__HBMMCREPOSTMRG = 3299;
+%constant int SS__FPMODECTL = 3307;
+%constant int SS__FPMODEPC = 3315;
+%constant int SS__FPMODERC = 3323;
+%constant int SS__ARGTYP1 = 3331;
+%constant int SS__ARGTYP2 = 3339;
+%constant int SS__ARGTYP3 = 3347;
+%constant int SS__ARGTYP4 = 3355;
+%constant int SS__ARGTYP5 = 3363;
+%constant int SS__ARGTYP6 = 3371;
+%constant int SS__ARGTYP7 = 3379;
+%constant int SS__ARGTYP8 = 3387;
+%constant int SS__DEFER_ASTS = 3395;
+%constant int SS__COWBOYUP = 3403;
+%constant int SS__LINEABRT = 3586;
+%constant int SS__DEADLOCK = 3594;
+%constant int SS__NOLOCKID = 3602;
+%constant int SS__EXDEPTH = 3610;
+%constant int SS__PARTMAPPED = 3618;
+%constant int SS__CANCELGRANT = 3626;
+%constant int SS__RETRY = 3634;
+%constant int SS__BADACL = 3642;
+%constant int SS__ACEEXISTS = 3650;
+%constant int SS__UNSUPPORTED = 3658;
+%constant int SS__NORIGHTSDB = 3666;
+%constant int SS__LOGSTALL = 3674;
+%constant int SS__LOGFULL = 3682;
+%constant int SS__PWDINDIC = 3690;
+%constant int SS__PWDINHIS = 3698;
+%constant int SS__PWDWEAK = 3706;
+%constant int SS__USEGENPWD = 3714;
+%constant int SS__INVBUSNAM = 3722;
+%constant int SS__INVCOMPTYPE = 3730;
+%constant int SS__INVCOMPID = 3738;
+%constant int SS__INVCOMPLIST = 3746;
+%constant int SS__NOCOMPLSTS = 3754;
+%constant int SS__INVSECDOMAIN = 3762;
+%constant int SS__BADCHECKSUM = 3770;
+%constant int SS__ARBTOOBIG = 3778;
+%constant int SS__ORBTOOBIG = 3786;
+%constant int SS__INVAJLNAM = 3794;
+%constant int SS__TOOMANYAJL = 3802;
+%constant int SS__RSDMINUSE = 3810;
+%constant int SS__RSDMNOTFOU = 3818;
+%constant int SS__INVUICGRP = 3826;
+%constant int SS__RSDM_ACTIVE = 3834;
+%constant int SS__OBJLOCKED = 3842;
+%constant int SS__NOTMPNAM = 3850;
+%constant int SS__INVCLSITM = 3858;
+%constant int SS__NOTSHRTBL = 3866;
+%constant int SS__MMATORB = 3874;
+%constant int SS__NOSUCHVOL = 3882;
+%constant int SS__OBJNOTLOCKED = 3890;
+%constant int SS__ILLRSDM = 3898;
+%constant int SS__NOCLASSSUPPORT = 3906;
+%constant int SS__INVSECOPER = 3914;
+%constant int SS__NODELJNLACT = 3922;
+%constant int SS__INVFILFOROP = 3930;
+%constant int SS__NOOBJSRV = 3938;
+%constant int SS__NOFILEACCESS = 3946;
+%constant int SS__BADFILESIZE = 3954;
+%constant int SS__NOTFULLYMAPPED = 3962;
+%constant int SS__BADWINCNT = 3970;
+%constant int SS__BADWINLBN = 3978;
+%constant int SS__BADWINRVN = 3986;
+%constant int SS__EXTRAWINDOW = 3994;
+%constant int SS__REVISED = 4002;
+%constant int SS__TIMENOTSET = 4010;
+%constant int SS__WAIT_CALLERS_MODE = 4018;
+%constant int SS__NOT_LOADED = 4026;
+%constant int SS__DRV_NOUNLOAD = 4034;
+%constant int SS__INVARG = 4042;
+%constant int SS__QIO_CROCK = 4050;
+%constant int SS__ALTER = 4058;
+%constant int SS__AFR_ENABLED = 4066;
+%constant int SS__AFR_NOT_ENABLED = 4074;
+%constant int SS__SHELFERROR = 4082;
+%constant int SS__PERSONANONGRATA = 4090;
+%constant int SS__NOPRIVSTRT = 10240;
+%constant int SS__NODETACH = 10284;
+%constant int SS__NOCMKRNL = 10244;
+%constant int SS__NOCMEXEC = 10252;
+%constant int SS__NOSYSNAM = 10260;
+%constant int SS__NOGRPNAM = 10268;
+%constant int SS__NOALLSPOOL = 10276;
+%constant int SS__NOIMPERSONATE = 10284;
+%constant int SS__NODIAGNOSE = 10292;
+%constant int SS__NOLOG_IO = 10300;
+%constant int SS__NOGROUP = 10308;
+%constant int SS__NOACNT = 10316;
+%constant int SS__NOPRMCEB = 10324;
+%constant int SS__NOPRMMBX = 10332;
+%constant int SS__NOPSWAPM = 10340;
+%constant int SS__NOALTPRI = 10348;
+%constant int SS__NOSETPRV = 10356;
+%constant int SS__NOTMPMBX = 10364;
+%constant int SS__NOWORLD = 10372;
+%constant int SS__NOMOUNT = 10380;
+%constant int SS__NOOPER = 10388;
+%constant int SS__NOEXQUOTA = 10396;
+%constant int SS__NONETMBX = 10404;
+%constant int SS__NOVOLPRO = 10412;
+%constant int SS__NOPHY_IO = 10420;
+%constant int SS__NOBUGCHK = 10428;
+%constant int SS__NOPRMGBL = 10436;
+%constant int SS__NOSYSGBL = 10444;
+%constant int SS__NOPFNMAP = 10452;
+%constant int SS__NOSHMEM = 10460;
+%constant int SS__NOSYSPRV = 10468;
+%constant int SS__NOBYPASS = 10476;
+%constant int SS__NOSYSLCK = 10484;
+%constant int SS__NOSHARE = 10492;
+%constant int SS__NOUPGRADE = 10500;
+%constant int SS__NODOWNGRADE = 10508;
+%constant int SS__NOGRPPRV = 10516;
+%constant int SS__NOREADALL = 10524;
+%constant int SS__NOIMPORT = 10532;
+%constant int SS__NOAUDIT = 10540;
+%constant int SS__NOSECURITY = 10548;
+%constant int SS__NOPRIVEND = 10751;
+%constant int SS__EXQUOTASTRT = 10752;
+%constant int SS__EXASTLM = 10756;
+%constant int SS__EXBIOLM = 10764;
+%constant int SS__EXBYTLM = 10772;
+%constant int SS__EXDIOLM = 10780;
+%constant int SS__EXFILLM = 10788;
+%constant int SS__EXPGFLQUOTA = 10796;
+%constant int SS__EXPRCLM = 10804;
+%constant int SS__EXTQELM = 10812;
+%constant int SS__EXENQLM = 10820;
+%constant int SS__EXBUFOBJLM = 11004;
+%constant int SS__EXQUOTAEND = 11007;
+%constant int SS__MMSFAILED = 11012;
+%constant int SS__QPOOL_DEL_BUSY = 11020;
+%constant int SS__TOOFEWDEV = 11032;
+%constant int SS__AVRWAIT = 11040;
+%constant int SS__NO_MMS = 11075;
+%constant int SS__MMSREADY = 11083;
+%constant int SS__MMSNOTREADY = 11091;
+%constant int SS__SKIP_CHECKS = 11099;
+%constant int SS__NO_NOTIFY = 11107;
+%constant int SS__SKIP_EXPIRATION = 11115;
+%constant int SS__NOTATBOT = 11123;
+%constant int SS__PREVDENS = 11131;
+%constant int SS__RDBERR = 11140;
+%constant int SS__MDMSERR = 11148;
+%constant int SS__IVMEDTYP = 11156;
+%constant int SS__IVDENS = 11164;
+%constant int SS__IVPOOL = 11172;
+%constant int SS__IVEXPDAT = 11180;
+%constant int SS__NOCONFMEDIA = 11188;
+%constant int SS__PTE_NOT_EMPTY = 11196;
+%constant int SS__CPUNOTAVAIL = 11204;
+%constant int SS__NOFASTPATH = 11212;
+%constant int SS__EXITFORCED = 11220;
+%constant int SS__FORCEX = 11228;
+%constant int SS__NOTASSUMING = 11266;
+%constant int SS__ALREADYASSUMING = 11274;
+%constant int SS__INUSE = 11282;
+%constant int SS__USERDISABLED = 11290;
+%constant int SS__NOCHJIB = 11298;
+%constant int SS__NOTSUPFS = 11306;
+%constant int SS__INSFTHREADS = 11314;
+%constant int SS__NOBUFOBJID = 11322;
+%constant int SS__NODELPERMANENT = 11330;
+%constant int SS__NOMEMRESID = 11338;
+%constant int SS__MRES_PFNSMALL = 11346;
+%constant int SS__MRES_INCON = 11354;
+%constant int SS__NORESERVEDMEM = 11362;
+%constant int SS__RESERVEDMEMUSED = 11370;
+%constant int SS__RES_MEM_INCON = 11378;
+%constant int SS__NOSHPTS = 11386;
+%constant int SS__FLUSHFAIL = 11394;
+%constant int SS__NOTINSTALLED = 11402;
+%constant int SS__POOLDEVEXISTS = 11410;
+%constant int SS__NOUNITS = 11418;
+%constant int SS__NOTAPOOL = 11426;
+%constant int SS__MISSINGUNITS = 11434;
+%constant int SS__DISKDEVEXISTS = 11442;
+%constant int SS__TOOMANYUNITS = 11450;
+%constant int SS__NOTINPOOL = 11458;
+%constant int SS__WRONGPOOL = 11466;
+%constant int SS__ALRBOUND = 11474;
+%constant int SS__NOTPOOLMOUNTED = 11482;
+%constant int SS__POOLINUSE = 11490;
+%constant int SS__DISKINUSE = 11498;
+%constant int SS__SDDISABLED = 11506;
+%constant int SS__UNITINPOOL = 11514;
+%constant int SS__FAMILYTOOBIG = 11522;
+%constant int SS__NODISKNAME = 11530;
+%constant int SS__DISKNAMEEXISTS = 11538;
+%constant int SS__INSUFFREESEGS = 11546;
+%constant int SS__NOTBOUND = 11554;
+%constant int SS__TOOMANYFRAGS = 11562;
+%constant int SS__TOOMANYFAMILIES = 11570;
+%constant int SS__DISKISBOUND = 11578;
+%constant int SS__SNAPINFAM = 11586;
+%constant int SS__CHKSNAPVER = 11594;
+%constant int SS__BADSNAPVER = 11602;
+%constant int SS__SD_RESERVED4 = 11610;
+%constant int SS__SD_RESERVED5 = 11618;
+%constant int SS__SECREFOVF = 11626;
+%constant int SS__DATAERR = 11634;
+%constant int SS__INVPFN = 11642;
+%constant int SS__INV_SHMEM = 11650;
+%constant int SS__INV_SHM_CPP = 11658;
+%constant int SS__INV_SHM_REG = 11666;
+%constant int SS__ONEMAPPER = 11674;
+%constant int SS__NOSUCHEXT = 11682;
+%constant int SS__CBKEXISTS = 11690;
+%constant int SS__NOSUCHCBK = 11698;
+%constant int SS__NOTAMEMBER = 11706;
+%constant int SS__GLXSPIUNAVAIL = 11714;
+%constant int SS__MPDEVILLCURPATH = 11722;
+%constant int SS__MPDEVINCOMPAT = 11730;
+%constant int SS__MPDEVNOT = 11738;
+%constant int SS__MPDEVNOTCONF = 11746;
+%constant int SS__PERSONARESERVED = 11754;
+%constant int SS__WRONGDRV = 11762;
+%constant int SS__BADRAD = 11770;
+%constant int SS__INVQSRFNC = 11778;
+%constant int SS__NOQIOSERVER = 11786;
+%constant int SS__INCLASS = 11794;
+%constant int SS__INVBOOTDEV = 11802;
+%constant int SS__CLIENT_UNAVAILABLE = 11810;
+%constant int SS__CONFIGFILE_ERROR = 11818;
+%constant int SS__INVDEVALLOC = 11826;
+%constant int SS__DEVICE_UNAVAILABLE = 11834;
+%constant int SS__INVDEVMOUNT = 11842;
+%constant int SS__LOGGING_DISABLED = 11850;
+%constant int SS__NOSUCHCLIENT = 11858;
+%constant int SS__NOSUCHDEVICE = 11866;
+%constant int SS__NOSUCHFILTER = 11874;
+%constant int SS__NOSUCHPATH = 11882;
+%constant int SS__NOSUCHSERVER = 11890;
+%constant int SS__RQSTIMOUT = 11898;
+%constant int SS__SERVER_UNAVAILABLE = 11906;
+%constant int SS__QSRVINTERR = 11914;
+%constant int SS__NOADD = 11922;
+%constant int SS__SYSTEMUIC = 11930;
+%constant int SS__NOSUCHQPOOLID = 11938;
+%constant int SS__PATHAMBIG = 11946;
+%constant int SS__INVMVIP = 11954;
+%constant int SS__NOPATHAVAIL = 11962;
+%constant int SS__NOENACURINV = 11970;
+%constant int SS__TRUSTCONF = 11978;
+%constant int SS__QIO_FAULT = 11986;
+%constant int SS__HBVS_REDO_IO = 11994;
+%constant int SS__TOOMANYPERSONA = 12002;
+%constant int SS__INVKTLIM = 12010;
+%constant int SS__MAXNAMPOL = 13316;
+%constant int SS__HBMMENABLED = 13324;
+%constant int SS__NOMODNONEPOL = 13332;
+%constant int SS__SHADFEATNOMNT = 13340;
+%constant int SS__NOTSUPALLNODES = 13348;
+%constant int SS__WLGCANTHBMM = 13356;
+%constant int SS__CALLUNDEFSYM = 13364;
+%constant int SS__NOADDMCPYMBR = 13372;
+%constant int SS__CANTDODDS = 13380;
+%constant int SS__TOOMANYMBRS = 13388;
+%constant int SS__SCBREADFAIL = 13396;
+%constant int SS__SCBWRITEFAIL = 13404;
+%constant int SS__NOMEMFORWBM = 13412;
+%constant int SS__MUSTDMTVU = 13420;
+%constant int SS__ONLYSRCMUSTSTAY = 13428;
+%constant int SS__NOWBMDURINGCOPY = 13436;
+%constant int SS__WBMERR = 13444;
+%constant int SS__BADPOLCHAR = 13452;
+%constant int SS__HBMMVERSIONBAD = 13460;
+%constant int SS__ANADSKSHDBBLK = 13468;
+%constant int SS__HBMMBADPOLSPEC = 13476;
+%constant int SS__NOSHADOWSERVER = 13484;
+%constant int SS__GAMEOVER = 13492;
+%constant int SS__SYSAPMIN = 32256;
+%constant int SS__SYSAPMAX = 32767;
diff --git a/Modules/vms/statedef/statedef.i b/Modules/vms/statedef/statedef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3RhdGVkZWYvc3RhdGVkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/statedef/statedef.i
@@ -0,0 +1,16 @@
+%module statedef
+
+%constant int SCH_C_COLPG = 1;
+%constant int SCH_C_MWAIT = 2;
+%constant int SCH_C_CEF = 3;
+%constant int SCH_C_PFW = 4;
+%constant int SCH_C_LEF = 5;
+%constant int SCH_C_LEFO = 6;
+%constant int SCH_C_HIB = 7;
+%constant int SCH_C_HIBO = 8;
+%constant int SCH_C_SUSP = 9;
+%constant int SCH_C_SUSPO = 10;
+%constant int SCH_C_FPG = 11;
+%constant int SCH_C_COM = 12;
+%constant int SCH_C_COMO = 13;
+%constant int SCH_C_CUR = 14;
diff --git a/Modules/vms/stenvdef/stenvdef.i b/Modules/vms/stenvdef/stenvdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3RlbnZkZWYvc3RlbnZkZWYuaQ==
--- /dev/null
+++ b/Modules/vms/stenvdef/stenvdef.i
@@ -0,0 +1,25 @@
+%module stenvdef
+
+%constant int STENV_K_AUTO_ACTION = 1;
+%constant int STENV_K_BOOT_DEV = 2;
+%constant int STENV_K_BOOTDEF_DEV = 3;
+%constant int STENV_K_BOOTED_DEV = 4;
+%constant int STENV_K_BOOT_FILE = 5;
+%constant int STENV_K_BOOTED_FILE = 6;
+%constant int STENV_K_BOOT_OSFLAGS = 7;
+%constant int STENV_K_BOOTED_OSFLAGS = 8;
+%constant int STENV_K_BOOT_RESET = 9;
+%constant int STENV_K_DUMP_DEV = 10;
+%constant int STENV_K_ENABLE_AUDIT = 11;
+%constant int STENV_K_LICENSE = 12;
+%constant int STENV_K_CHAR_SET = 13;
+%constant int STENV_K_LANGUAGE = 14;
+%constant int STENV_K_TTY_DEV = 15;
+%constant int STENV_K_SYSROOT = 16;
+%constant int STENV_K_BTFLAGS = 17;
+%constant int STENV_K_FRU_EEROM = 18;
+%constant int STENVDEF_S_ItemType = 24;
+%constant int STENVDEF_S_BUF_ADDR = 8;
+%constant int STENVDEF_S_RET_ADDR = 8;
+%constant int STENVDEF__K_FREE_FORM = 0;
+%constant int STENVDEF__K_SDD_LOG = 25;
diff --git a/Modules/vms/stsdef/stsdef.i b/Modules/vms/stsdef/stsdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3RzZGVmL3N0c2RlZi5p
--- /dev/null
+++ b/Modules/vms/stsdef/stsdef.i
@@ -0,0 +1,24 @@
+%module stsdef
+
+%constant int STS_M_SEVERITY = 0x7L;
+%constant int STS_M_COND_ID = 0xFFFFFF8L;
+%constant int STS_M_CONTROL = 0xF0000000L;
+%constant int STS_M_SUCCESS = 0x1L;
+%constant int STS_M_MSG_NO = 0xFFF8L;
+%constant int STS_M_CODE = 0x7FF8L;
+%constant int STS_M_FAC_SP = 0x8000L;
+%constant int STS_M_CUST_DEF = 0x8000000L;
+%constant int STS_M_INHIB_MSG = 0x10000000L;
+%constant int STS_M_FAC_NO = 0xFFF0000L;
+%constant int STS_K_WARNING = 0;
+%constant int STS_K_SUCCESS = 1;
+%constant int STS_K_ERROR = 2;
+%constant int STS_K_INFO = 3;
+%constant int STS_K_SEVERE = 4;
+%constant int STS_S_STSDEF = 4;
+%constant int STS_S_SEVERITY = 3;
+%constant int STS_S_COND_ID = 25;
+%constant int STS_S_CONTROL = 4;
+%constant int STS_S_MSG_NO = 13;
+%constant int STS_S_CODE = 12;
+%constant int STS_S_FAC_NO = 12;
diff --git a/Modules/vms/syidef/syidef.i b/Modules/vms/syidef/syidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lpZGVmL3N5aWRlZi5p
--- /dev/null
+++ b/Modules/vms/syidef/syidef.i
@@ -0,0 +1,726 @@
+%module syidef
+
+%constant int SYI_C_EXETYPE = 1;
+%constant int SYI_C_FLDTYPE = 2;
+%constant int SYI_C_RSDTYPE = 3;
+%constant int SYI__VERSION = 4096;
+%constant int SYI__SID = 4097;
+%constant int SYI__PFCDEFAULT = 4098;
+%constant int SYI__PAGTBLPFC = 4099;
+%constant int SYI__SYSPFC = 4100;
+%constant int SYI__KFILSTCNT = 4101;
+%constant int SYI__GBLSECTIONS = 4102;
+%constant int SYI__GBLPAGES = 4103;
+%constant int SYI__GBLPAGFIL = 4104;
+%constant int SYI__MAXPROCESSCNT = 4105;
+%constant int SYI__PIXSCAN = 4106;
+%constant int SYI__PROCSECTCNT = 4107;
+%constant int SYI__MINWSCNT = 4108;
+%constant int SYI__PAGFILCNT = 4109;
+%constant int SYI__SWPFILCNT = 4110;
+%constant int SYI__SYSMWCNT = 4111;
+%constant int SYI__INTSTKPAGES = 4112;
+%constant int SYI__DLCKEXTRASTK = 4113;
+%constant int SYI__BALSETCNT = 4114;
+%constant int SYI__IRPCOUNT = 4115;
+%constant int SYI__IRPCOUNTV = 4116;
+%constant int SYI__WSMAX = 4117;
+%constant int SYI__NPAGEDYN = 4118;
+%constant int SYI__NPAGEVIR = 4119;
+%constant int SYI__PAGEDYN = 4120;
+%constant int SYI__VIRTUALPAGECNT = 4121;
+%constant int SYI__SPTREQ = 4122;
+%constant int SYI__EXUSRSTK = 4123;
+%constant int SYI__LRPCOUNT = 4124;
+%constant int SYI__LRPCOUNTV = 4125;
+%constant int SYI__LRPSIZE = 4126;
+%constant int SYI__LRPMIN = 4127;
+%constant int SYI__SRPCOUNT = 4128;
+%constant int SYI__SRPCOUNTV = 4129;
+%constant int SYI__SRPSIZE = 4130;
+%constant int SYI__SRPMIN = 4131;
+%constant int SYI__CHANNELCNT = 4132;
+%constant int SYI__PIOPAGES = 4133;
+%constant int SYI__CTLPAGES = 4134;
+%constant int SYI__CTLIMGLIM = 4135;
+%constant int SYI__IMGIOCNT = 4136;
+%constant int SYI__QUANTUM = 4137;
+%constant int SYI__MPW_WRTCLUSTER = 4138;
+%constant int SYI__MPW_HILIMIT = 4139;
+%constant int SYI__MPW_LOLIMIT = 4140;
+%constant int SYI__MPW_PRIO = 4141;
+%constant int SYI__SWP_PRIO = 4142;
+%constant int SYI__MPW_THRESH = 4143;
+%constant int SYI__MPW_WAITLIMIT = 4144;
+%constant int SYI__TBSKIPWSL = 4145;
+%constant int SYI__PHYSICALPAGES = 4146;
+%constant int SYI__PFRATL = 4147;
+%constant int SYI__PFRATH = 4148;
+%constant int SYI__PFRATL_SYS = 4149;
+%constant int SYI__WSINC = 4150;
+%constant int SYI__WSDEC = 4151;
+%constant int SYI__AWSMIN = 4152;
+%constant int SYI__AWSTIME = 4153;
+%constant int SYI__SWPRATE = 4154;
+%constant int SYI__SWPOUTPGCNT = 4155;
+%constant int SYI__SWPALLOCINC = 4156;
+%constant int SYI__IOTA = 4157;
+%constant int SYI__LONGWAIT = 4158;
+%constant int SYI__SWPFAIL = 4159;
+%constant int SYI__VMSD1 = 4160;
+%constant int SYI__VMSD2 = 4161;
+%constant int SYI__VMSD3 = 4162;
+%constant int SYI__VMSD4 = 4163;
+%constant int SYI__VMS5 = 4164;
+%constant int SYI__VMS6 = 4165;
+%constant int SYI__VMS7 = 4166;
+%constant int SYI__VMS8 = 4167;
+%constant int SYI__USERD1 = 4168;
+%constant int SYI__USERD2 = 4169;
+%constant int SYI__USER3 = 4170;
+%constant int SYI__USER4 = 4171;
+%constant int SYI__EXTRACPU = 4172;
+%constant int SYI__MAXSYSGROUP = 4173;
+%constant int SYI__MVTIMEOUT = 4174;
+%constant int SYI__MAXBUF = 4175;
+%constant int SYI__DEFMBXBUFQUO = 4176;
+%constant int SYI__DEFMBXMXMSG = 4177;
+%constant int SYI__DEFMBXNUMMSG = 4178;
+%constant int SYI__FREELIM = 4179;
+%constant int SYI__FREEGOAL = 4180;
+%constant int SYI__GROWLIM = 4181;
+%constant int SYI__BORROWLIM = 4182;
+%constant int SYI__LOCKRETRY = 4183;
+%constant int SYI__XFMAXRATE = 4184;
+%constant int SYI__LAMAPREGS = 4185;
+%constant int SYI__REALTIME_SPTS = 4186;
+%constant int SYI__CLISYMTBL = 4187;
+%constant int SYI__LOCKIDTBL = 4188;
+%constant int SYI__RESHASHTBL = 4189;
+%constant int SYI__DEADLOCK_WAIT = 4190;
+%constant int SYI__SCSBUFFCNT = 4191;
+%constant int SYI__SCSCONNCNT = 4192;
+%constant int SYI__SCSRESPCNT = 4193;
+%constant int SYI__SCSMAXDG = 4194;
+%constant int SYI__SCSMAXMSG = 4195;
+%constant int SYI__SCSFLOWCUSH = 4196;
+%constant int SYI__SCSSYSTEMID = 4197;
+%constant int SYI__SCSSYSTEMIDH = 4198;
+%constant int SYI__SCSNODE = 4199;
+%constant int SYI__PRCPOLINTERVAL = 4201;
+%constant int SYI__PASTIMOUT = 4202;
+%constant int SYI__PASTDGBUF = 4203;
+%constant int SYI__PANUMPOLL = 4204;
+%constant int SYI__PAPOLLINTERVAL = 4205;
+%constant int SYI__PAPOOLINTERVAL = 4206;
+%constant int SYI__TIMEPROMPTWAIT = 4207;
+%constant int SYI__UDABURSTRATE = 4208;
+%constant int SYI__LNMSHASHTBL = 4209;
+%constant int SYI__LNMPHASHTBL = 4210;
+%constant int SYI__TTY_SCANDELTA = 4211;
+%constant int SYI__TTY_DIALTYPE = 4212;
+%constant int SYI__TTY_SPEED = 4213;
+%constant int SYI__TTY_RSPEED = 4214;
+%constant int SYI__TTY_PARITY = 4215;
+%constant int SYI__TTY_BUF = 4216;
+%constant int SYI__TTY_DEFCHAR = 4217;
+%constant int SYI__TTY_DEFCHAR2 = 4218;
+%constant int SYI__TTY_TYPAHDSZ = 4219;
+%constant int SYI__TTY_ALTYPAHD = 4220;
+%constant int SYI__TTY_ALTALARM = 4221;
+%constant int SYI__TTY_DMASIZE = 4222;
+%constant int SYI__TTY_PROT = 4223;
+%constant int SYI__TTY_OWNER = 4224;
+%constant int SYI__TTY_CLASSNAME = 4225;
+%constant int SYI__TTY_SILOTIME = 4226;
+%constant int SYI__TTY_DEFPORT = 4227;
+%constant int SYI__RMS_DFMBC = 4228;
+%constant int SYI__RMS_DFMBFSDK = 4229;
+%constant int SYI__RMS_DFMBFSMT = 4230;
+%constant int SYI__RMS_DFMBFSUR = 4231;
+%constant int SYI__RMS_DFMBFREL = 4232;
+%constant int SYI__RMS_DFMBFIDX = 4233;
+%constant int SYI__RMS_CONPOLICY = 4234;
+%constant int SYI__RMS_PROLOGUE = 4235;
+%constant int SYI__RMS_EXTEND_SIZE = 4236;
+%constant int SYI__RMS_FILEPROT = 4237;
+%constant int SYI__PQL_DASTLM = 4238;
+%constant int SYI__PQL_MASTLM = 4239;
+%constant int SYI__PQL_DBIOLM = 4240;
+%constant int SYI__PQL_MBIOLM = 4241;
+%constant int SYI__PQL_DBYTLM = 4242;
+%constant int SYI__PQL_MBYTLM = 4243;
+%constant int SYI__PQL_DCPULM = 4244;
+%constant int SYI__PQL_MCPULM = 4245;
+%constant int SYI__PQL_DDIOLM = 4246;
+%constant int SYI__PQL_MDIOLM = 4247;
+%constant int SYI__PQL_DFILLM = 4248;
+%constant int SYI__PQL_MFILLM = 4249;
+%constant int SYI__PQL_DPGFLQUOTA = 4250;
+%constant int SYI__PQL_MPGFLQUOTA = 4251;
+%constant int SYI__PQL_DPRCLM = 4252;
+%constant int SYI__PQL_MPRCLM = 4253;
+%constant int SYI__PQL_DTQELM = 4254;
+%constant int SYI__PQL_MTQELM = 4255;
+%constant int SYI__PQL_DWSDEFAULT = 4256;
+%constant int SYI__PQL_MWSDEFAULT = 4257;
+%constant int SYI__PQL_DWSQUOTA = 4258;
+%constant int SYI__PQL_MWSQUOTA = 4259;
+%constant int SYI__PQL_DWSEXTENT = 4260;
+%constant int SYI__PQL_MWSEXTENT = 4261;
+%constant int SYI__PQL_DENQLM = 4262;
+%constant int SYI__PQL_MENQLM = 4263;
+%constant int SYI__ACP_MAPCACHE = 4264;
+%constant int SYI__ACP_HDRCACHE = 4265;
+%constant int SYI__ACP_DIRCACHE = 4266;
+%constant int SYI__ACP_WORKSET = 4267;
+%constant int SYI__ACP_FIDCACHE = 4268;
+%constant int SYI__ACP_EXTCACHE = 4269;
+%constant int SYI__ACP_EXTLIMIT = 4270;
+%constant int SYI__ACP_QUOCACHE = 4271;
+%constant int SYI__ACP_SYSACC = 4272;
+%constant int SYI__ACP_MAXREAD = 4273;
+%constant int SYI__ACP_WINDOW = 4274;
+%constant int SYI__ACP_WRITEBACK = 4275;
+%constant int SYI__ACP_DATACHECK = 4276;
+%constant int SYI__ACP_BASEPRIO = 4277;
+%constant int SYI__ACP_SWAPFLGS = 4278;
+%constant int SYI__DEFPRI = 4279;
+%constant int SYI__IJOBLIM = 4280;
+%constant int SYI__BJOBLIM = 4281;
+%constant int SYI__NJOBLIM = 4282;
+%constant int SYI__RJOBLIM = 4283;
+%constant int SYI__QUORUM = 4284;
+%constant int SYI__VOTES = 4285;
+%constant int SYI__RECNXINTERVAL = 4286;
+%constant int SYI__BOOTTIME = 4287;
+%constant int SYI__LOCKIDTBL_MAX = 4288;
+%constant int SYI__TAILORED = 4289;
+%constant int SYI__STARTUP_P1 = 4290;
+%constant int SYI__STARTUP_P2 = 4291;
+%constant int SYI__STARTUP_P3 = 4292;
+%constant int SYI__STARTUP_P4 = 4293;
+%constant int SYI__STARTUP_P5 = 4294;
+%constant int SYI__STARTUP_P6 = 4295;
+%constant int SYI__STARTUP_P7 = 4296;
+%constant int SYI__STARTUP_P8 = 4297;
+%constant int SYI__CLUSTER_NODES = 4298;
+%constant int SYI__CLUSTER_VOTES = 4299;
+%constant int SYI__CLUSTER_QUORUM = 4300;
+%constant int SYI__CLUSTER_FSYSID = 4301;
+%constant int SYI__CLUSTER_FTIME = 4302;
+%constant int SYI__CLUSTER_MEMBER = 4303;
+%constant int SYI__NODE_CSID = 4304;
+%constant int SYI__NODE_VOTES = 4305;
+%constant int SYI__NODE_QUORUM = 4306;
+%constant int SYI__NODE_SYSTEMID = 4307;
+%constant int SYI__NODE_SWINCARN = 4308;
+%constant int SYI__NODE_SWTYPE = 4309;
+%constant int SYI__NODE_SWVERS = 4310;
+%constant int SYI__NODE_HWTYPE = 4311;
+%constant int SYI__NODE_HWVERS = 4312;
+%constant int SYI__NODENAME = 4313;
+%constant int SYI__ARCHFLAG = 4314;
+%constant int SYI__SCS_EXISTS = 4315;
+%constant int SYI__DISK_QUORUM = 4316;
+%constant int SYI__XSID = 4317;
+%constant int SYI__PAMAXPORT = 4320;
+%constant int SYI__PASANITY = 4321;
+%constant int SYI__DEFQUEPRI = 4322;
+%constant int SYI__MAXQUEPRI = 4323;
+%constant int SYI__QDSKINTERVAL = 4324;
+%constant int SYI__ALLOCLASS = 4325;
+%constant int SYI__LGI_RETRY_LIM = 4326;
+%constant int SYI__LGI_RETRY_TMO = 4327;
+%constant int SYI__LGI_BRK_LIM = 4328;
+%constant int SYI__LGI_BRK_TMO = 4329;
+%constant int SYI__LGI_HID_TIM = 4330;
+%constant int SYI__LGI_PWD_TMO = 4331;
+%constant int SYI__PQL_DJTQUOTA = 4332;
+%constant int SYI__PQL_MJTQUOTA = 4333;
+%constant int SYI__VAXCLUSTER = 4334;
+%constant int SYI__LOCKDIRWT = 4335;
+%constant int SYI__QDSKVOTES = 4336;
+%constant int SYI__DORMANTWAIT = 4337;
+%constant int SYI__PAGEFILE_PAGE = 4338;
+%constant int SYI__SWAPFILE_PAGE = 4339;
+%constant int SYI__PAGEFILE_FREE = 4340;
+%constant int SYI__SWAPFILE_FREE = 4341;
+%constant int SYI__TTY_TIMEOUT = 4342;
+%constant int SYI__TTY_AUTOCHAR = 4343;
+%constant int SYI__PANOPOLL = 4344;
+%constant int SYI__PE1 = 4345;
+%constant int SYI__PE2 = 4346;
+%constant int SYI__PE3 = 4347;
+%constant int SYI__PE4 = 4348;
+%constant int SYI__PE5 = 4349;
+%constant int SYI__PE6 = 4350;
+%constant int SYI__RMS_GBLBUFQUO = 4351;
+%constant int SYI__RMS_DFNBC = 4352;
+%constant int SYI__ACP_DINDXCACHE = 4353;
+%constant int SYI__MAXATTACHPRI = 4354;
+%constant int SYI__SMP_CPUS = 4355;
+%constant int SYI__SMP_CPUSH = 4356;
+%constant int SYI__FALLBACK_MODE = 4357;
+%constant int SYI__MPW_LOWAITLIMIT = 4358;
+%constant int SYI__MPW_IOLIMIT = 4359;
+%constant int SYI__S0_PAGING = 4360;
+%constant int SYI__HW_MODEL = 4361;
+%constant int SYI__HW_NAME = 4362;
+%constant int SYI__SCH_CTLFLAGS = 4363;
+%constant int SYI__NODE_EVOTES = 4364;
+%constant int SYI__CLUSTER_EVOTES = 4365;
+%constant int SYI__MULTIPROCESSING = 4366;
+%constant int SYI__FREE_GBLPAGES = 4367;
+%constant int SYI__CONTIG_GBLPAGES = 4368;
+%constant int SYI__FREE_GBLSECTS = 4369;
+%constant int SYI__EXPECTED_VOTES = 4370;
+%constant int SYI__PU_OPTIONS = 4371;
+%constant int SYI__WPTTE_SIZE = 4372;
+%constant int SYI__WPRE_SIZE = 4373;
+%constant int SYI__SMP_SANITY_CNT = 4374;
+%constant int SYI__SMP_TICK_CNT = 4375;
+%constant int SYI__QBUS_MULT_INTR = 4376;
+%constant int SYI__SYSTEM_RIGHTS = 4377;
+%constant int SYI__SMP_SPINWAIT = 4378;
+%constant int SYI__SMP_LNGSPINWAIT = 4379;
+%constant int SYI__TIME_CONTROL = 4380;
+%constant int SYI__AVAILCPU_CNT = 4381;
+%constant int SYI__ACTIVECPU_CNT = 4382;
+%constant int SYI__MSCP_LOAD = 4386;
+%constant int SYI__MSCP_SERVE_ALL = 4387;
+%constant int SYI__POOLCHECK = 4388;
+%constant int SYI__TAPE_MVTIMEOUT = 4389;
+%constant int SYI__PSEUDOLOA = 4390;
+%constant int SYI__MINCLASSPRI = 4391;
+%constant int SYI__MAXCLASSPRI = 4392;
+%constant int SYI__MINPRPRI = 4393;
+%constant int SYI__AUTOCONFIG_ALGO = 4394;
+%constant int SYI__ERRORLOGBUFFERS = 4395;
+%constant int SYI__JOBCTLD = 4396;
+%constant int SYI__WINDOW_SYSTEM = 4397;
+%constant int SYI__MSCP_BUFFER = 4398;
+%constant int SYI__MSCP_CREDITS = 4399;
+%constant int SYI__BREAKPOINTS = 4400;
+%constant int SYI__CLOCK_INTERVAL = 4401;
+%constant int SYI__DUMPSTYLE = 4402;
+%constant int SYI__NISCS_PORT_SERV = 4403;
+%constant int SYI__RSRVPAGCNT = 4404;
+%constant int SYI__VECTOR_PROC = 4405;
+%constant int SYI__VECTOR_MARGIN = 4406;
+%constant int SYI__AFFINITY_SKIP = 4407;
+%constant int SYI__AFFINITY_TIME = 4408;
+%constant int SYI__VECTOR_EMULATOR = 4409;
+%constant int SYI__VP_MASK = 4410;
+%constant int SYI__VP_NUMBER = 4411;
+%constant int SYI__USED_GBLPAGCNT = 4412;
+%constant int SYI__USED_GBLPAGMAX = 4413;
+%constant int SYI__USED_GBLSECTCNT = 4414;
+%constant int SYI__USED_GBLSECTMAX = 4415;
+%constant int SYI__ERLBUFFERPAGES = 4416;
+%constant int SYI__TAPE_ALLOCLASS = 4417;
+%constant int SYI__PFRATH_SYS = 4418;
+%constant int SYI__WSINC_SYS = 4419;
+%constant int SYI__WSDEC_SYS = 4420;
+%constant int SYI__AWSMIN_SYS = 4421;
+%constant int SYI__AWSTIME_SYS = 4422;
+%constant int SYI__BOOT_STYLE = 4423;
+%constant int SYI__FT_FLAGS = 4424;
+%constant int SYI__SHADOWING = 4425;
+%constant int SYI__SHADOW_SYS_DISK = 4426;
+%constant int SYI__SHADOW_SYS_UNIT = 4427;
+%constant int SYI__SHADOW_MAX_COPY = 4428;
+%constant int SYI__TIMVCFAIL = 4429;
+%constant int SYI__PRIORITY_OFFSET = 4431;
+%constant int SYI__VCC_FLAGS = 4432;
+%constant int SYI__VCC_MAXSIZE = 4437;
+%constant int SYI__MMG_CTLFLAGS = 4441;
+%constant int SYI__NISCS_MAX_PKTSZ = 4443;
+%constant int SYI__NISCS_LAN_OVRHD = 4444;
+%constant int SYI__DECNET_VERSION = 4445;
+%constant int SYI__TMSCP_LOAD = 4446;
+%constant int SYI__LGI_CALLOUTS = 4447;
+%constant int SYI__NET_CALLOUTS = 4448;
+%constant int SYI__IEEE_ADDRESS = 4449;
+%constant int SYI__IEEE_ADDRESSH = 4450;
+%constant int SYI__SHADOW_MBR_TMO = 4451;
+%constant int SYI__PAGE_SIZE = 4452;
+%constant int SYI__ARCH_TYPE = 4453;
+%constant int SYI__ARCH_NAME = 4454;
+%constant int SYI__CRD_CONTROL = 4455;
+%constant int SYI__SECURITY_POLICY = 4456;
+%constant int SYI__DNVOSI1 = 4457;
+%constant int SYI__MEMSIZE = 4459;
+%constant int SYI__KSTACKPAGES = 4460;
+%constant int SYI__PHYSICAL_MEMORY = 4461;
+%constant int SYI__XQP_ALLOC_BLKS = 4462;
+%constant int SYI__ZERO_LIST_HI = 4463;
+%constant int SYI__CPUTYPE = 4464;
+%constant int SYI__SYSTYPE = 4465;
+%constant int SYI__ITB_ENTRIES = 4466;
+%constant int SYI__GH_RSRVPGCNT = 4467;
+%constant int SYI__DEF_PRIO_MIN = 4468;
+%constant int SYI__DEF_PRIO_MAX = 4469;
+%constant int SYI__PSXFIFO_PRIO_MIN = 4470;
+%constant int SYI__PSXFIFO_PRIO_MAX = 4471;
+%constant int SYI__PSXRR_PRIO_MIN = 4472;
+%constant int SYI__PSXRR_PRIO_MAX = 4473;
+%constant int SYI__XQPCTLD1 = 4474;
+%constant int SYI__XQPCTL2 = 4475;
+%constant int SYI__CPUCONF = 4477;
+%constant int SYI__DECNET_FULLNAME = 4478;
+%constant int SYI__XQPCTLD3 = 4479;
+%constant int SYI__XQPCTL4 = 4480;
+%constant int SYI__XQPCTLD5 = 4481;
+%constant int SYI__XQPCTL6 = 4482;
+%constant int SYI__XQPCTLD7 = 4483;
+%constant int SYI__XQPCTL8 = 4484;
+%constant int SYI__DBGTK_SCRATCH = 4485;
+%constant int SYI__PALCODE_VERSION = 4486;
+%constant int SYI__CONSOLE_VERSION = 4487;
+%constant int SYI__GH_EXEC_CODE = 4488;
+%constant int SYI__GH_EXEC_DATA = 4489;
+%constant int SYI__GH_RES_CODE = 4490;
+%constant int SYI__GH_RES_DATA = 4491;
+%constant int SYI__IMGREG_PAGES = 4492;
+%constant int SYI__SHADOW_SYS_TMO = 4493;
+%constant int SYI__SHADOW_SYS_WAIT = 4494;
+%constant int SYI__SHADOW_ENABLE = 4495;
+%constant int SYI__SHADOW_SITE_O = 4496;
+%constant int SYI__SYSTEM_CHECK = 4497;
+%constant int SYI__PFN_COLOR_COUNT = 4498;
+%constant int SYI__REAL_CPUTYPE = 4499;
+%constant int SYI__SCSICLUSTER_P1 = 4500;
+%constant int SYI__SCSICLUSTER_P2 = 4501;
+%constant int SYI__SCSICLUSTER_P3 = 4502;
+%constant int SYI__SCSICLUSTER_P4 = 4503;
+%constant int SYI__FILE_CACHE = 4504;
+%constant int SYI__TMSCP_SERVE_ALL = 4505;
+%constant int SYI__DR_UNIT_BASE = 4506;
+%constant int SYI__MC_SERVICES_P0 = 4507;
+%constant int SYI__MC_SERVICES_P1 = 4508;
+%constant int SYI__MC_SERVICES_P2 = 4509;
+%constant int SYI__MC_SERVICES_P3 = 4510;
+%constant int SYI__MC_SERVICES_P4 = 4511;
+%constant int SYI__MC_SERVICES_P5 = 4512;
+%constant int SYI__MC_SERVICES_P6 = 4513;
+%constant int SYI__MC_SERVICES_P7 = 4514;
+%constant int SYI__MC_SERVICES_P8 = 4515;
+%constant int SYI__MC_SERVICES_P9 = 4516;
+%constant int SYI__S2_SIZE = 4517;
+%constant int SYI__PROCESS_SPACE_LIMIT = 4518;
+%constant int SYI__PT_BASE = 4519;
+%constant int SYI__SHARED_VA_PTES = 4520;
+%constant int SYI__MULTITHREAD = 4521;
+%constant int SYI__CWCREPRC_ENABLE = 4522;
+%constant int SYI__MAXBOBMEM = 4523;
+%constant int SYI__FAST_PATH = 4524;
+%constant int SYI__IO_PREFER_CPUS = 4525;
+%constant int SYI__ACTIVE_CPU_MASK = 4526;
+%constant int SYI__AVAIL_CPU_MASK = 4527;
+%constant int SYI__PRIMARY_CPUID = 4528;
+%constant int SYI__MAX_CPUS = 4529;
+%constant int SYI__CPUCAP_MASK = 4530;
+%constant int SYI__FILE_CACHE_MIN = 4531;
+%constant int SYI__FILE_CACHE_MAX = 4532;
+%constant int SYI__F64CTL1 = 4533;
+%constant int SYI__F64CTL2 = 4534;
+%constant int SYI__F64CTLD3 = 4535;
+%constant int SYI__F64CTLD4 = 4536;
+%constant int SYI__DISABLE_UPCALLS = 4537;
+%constant int SYI__DEVICE_NAMING = 4538;
+%constant int SYI__AVAIL_PAGES = 4539;
+%constant int SYI__PROC_SLOTS = 4540;
+%constant int SYI__BAL_SLOTS = 4541;
+%constant int SYI__NPAGED_POOL = 4542;
+%constant int SYI__PAGED_POOL = 4543;
+%constant int SYI__MAIN_MEMORY = 4544;
+%constant int SYI__ARB_SUPPORT = 4545;
+%constant int SYI__MAX_PFN = 4546;
+%constant int SYI__PFN_MEMORY_MAP = 4547;
+%constant int SYI__PMD_COUNT = 4548;
+%constant int SYI__MSCP_CMD_TMO = 4549;
+%constant int SYI__LAN_FLAGS = 4550;
+%constant int SYI__RMS_DFLRL = 4551;
+%constant int SYI__RMS_HEURISTIC = 4552;
+%constant int SYI__NPAG_INTERVAL = 4553;
+%constant int SYI__NPAG_GENTLE = 4554;
+%constant int SYI__NPAG_AGGRESSIVE = 4555;
+%constant int SYI__NPAG_BAP_MIN = 4556;
+%constant int SYI__NPAG_BAP_MAX = 4557;
+%constant int SYI__NPAG_BAP_MAX_PA = 4558;
+%constant int SYI__NPAG_RING_SIZE = 4559;
+%constant int SYI__CLUSTER_CREDITS = 4560;
+%constant int SYI__PTES_PER_PAGE = 4561;
+%constant int SYI__TEMPERATURE_VECTOR = 4562;
+%constant int SYI__POWER_VECTOR = 4563;
+%constant int SYI__FAN_VECTOR = 4564;
+%constant int SYI__THERMAL_VECTOR = 4565;
+%constant int SYI__MAXBOBS0S1 = 4566;
+%constant int SYI__MAXBOBS2 = 4567;
+%constant int SYI__VCC_MAX_CACHE = 4568;
+%constant int SYI__VCC_MAX_IO_SIZE = 4569;
+%constant int SYI__VCC_MAX_LOCKS = 4570;
+%constant int SYI__VCC_READAHEAD = 4571;
+%constant int SYI__VCC_WRITEBEHIND = 4572;
+%constant int SYI__VCC_WRITE_DELAY = 4573;
+%constant int SYI__SD_ALLOCLASS = 4574;
+%constant int SYI__GALAXY = 4575;
+%constant int SYI__NPAG_BAP_MIN_PA = 4576;
+%constant int SYI__BAP_MIN_REQ_SZ = 4577;
+%constant int SYI__BAP_MAX_REQ_SZ = 4578;
+%constant int SYI__BAP_MIN_PA_REG = 4579;
+%constant int SYI__BAP_MAX_PA_REG = 4580;
+%constant int SYI__GALAXY_ID = 4581;
+%constant int SYI__RMSD6 = 4582;
+%constant int SYI__MPDEV_ENABLE_O = 4583;
+%constant int SYI__MPDEV_REMOTE_O = 4584;
+%constant int SYI__RMSD1 = 4585;
+%constant int SYI__GALAXY_MEMBER = 4586;
+%constant int SYI__GALAXY_PLATFORM = 4587;
+%constant int SYI__PARTITION_ID = 4588;
+%constant int SYI__COMMUNITY_ID = 4589;
+%constant int SYI__GLX_INST_TMO = 4590;
+%constant int SYI__SMCI_FLAGS = 4591;
+%constant int SYI__SMCI_PORTS = 4592;
+%constant int SYI__SERVED_IO = 4593;
+%constant int SYI__GLX_SW_VERSION = 4594;
+%constant int SYI__GLX_MAX_MEMBERS = 4595;
+%constant int SYI__GLX_INCARNATION = 4596;
+%constant int SYI__GLX_FORMATION = 4597;
+%constant int SYI__GLX_TERMINATION = 4598;
+%constant int SYI__GLX_MBR_NAME = 4599;
+%constant int SYI__GLX_MBR_MEMBER = 4600;
+%constant int SYI__GLX_MBR_INCARNATION = 4601;
+%constant int SYI__GLX_MBR_JOINED = 4602;
+%constant int SYI__MPDEV_LCRETRIES = 4603;
+%constant int SYI__MPDEV_D1 = 4604;
+%constant int SYI__CLUSTER_NTIME = 4605;
+%constant int SYI__CLUSTER_NTIME_REF = 4606;
+%constant int SYI__MPDEV_POLLER_O = 4607;
+%constant int SYI__CPU_FAILOVER = 4608;
+%constant int SYI__POTENTIAL_CPU_MASK = 4609;
+%constant int SYI__POTENTIALCPU_CNT = 4610;
+%constant int SYI__CPU_AUTOSTART = 4611;
+%constant int SYI__FAST_PATH_PORTS = 4614;
+%constant int SYI__GLX_SHM_REG = 4615;
+%constant int SYI__RAD_SUPPORT = 4616;
+%constant int SYI__NPAGECALC = 4617;
+%constant int SYI__WBM_MSG_INT = 4618;
+%constant int SYI__WBM_MSG_UPPER = 4619;
+%constant int SYI__WBM_MSG_LOWER = 4620;
+%constant int SYI__HP_ACTIVE_CPU_CNT = 4621;
+%constant int SYI__HP_ACTIVE_SP_CNT = 4622;
+%constant int SYI__HP_CONFIG_SP_CNT = 4623;
+%constant int SYI__HP_CONFIG_SBB_CNT = 4624;
+%constant int SYI__SHADOW_MAX_UNIT = 4625;
+%constant int SYI__WBM_OPCOM_LVL = 4626;
+%constant int SYI__AUTO_DLIGHT_SAV = 4627;
+%constant int SYI__RAD_MAX_RADS = 4628;
+%constant int SYI__RAD_CPUS = 4629;
+%constant int SYI__RAD_MEMSIZE = 4630;
+%constant int SYI__RAD_SHMEMSIZE = 4631;
+%constant int SYI__GALAXY_SHMEMSIZE = 4632;
+%constant int SYI__NPAGERAD = 4633;
+%constant int SYI__SERIAL_NUMBER = 4634;
+%constant int SYI__MPDEV_D2 = 4636;
+%constant int SYI__MPDEV_D3 = 4637;
+%constant int SYI__MPDEV_D4 = 4638;
+%constant int SYI__MPDEV_AFB_INTVL = 4639;
+%constant int SYI__MPW_STACKPAGES = 4640;
+%constant int SYI__PRESENT_CPU_MASK = 4641;
+%constant int SYI__PRESENTCPU_CNT = 4642;
+%constant int SYI__POWERED_CPU_MASK = 4643;
+%constant int SYI__POWEREDCPU_CNT = 4644;
+%constant int SYI__RMSD7 = 4645;
+%constant int SYI__RMS_SEQFILE_WBH = 4646;
+%constant int SYI__DCL_CTLFLAGS = 4647;
+%constant int SYI__DELPRC_EXIT = 4648;
+%constant int SYI__PHYMEM_CONFIG = 4649;
+%constant int SYI__KTK_D1 = 4650;
+%constant int SYI__KTK_D2 = 4651;
+%constant int SYI__KTK_D3 = 4652;
+%constant int SYI__KTK_D4 = 4653;
+%constant int SYI__KTK_D5 = 4654;
+%constant int SYI__KTK_D6 = 4655;
+%constant int SYI__KTK_D7 = 4656;
+%constant int SYI__KTK_D8 = 4657;
+%constant int SYI__KTK_D9 = 4658;
+%constant int SYI__KTK_D10 = 4659;
+%constant int SYI__KTK_D11 = 4660;
+%constant int SYI__KTK_D12 = 4661;
+%constant int SYI__MIN_CPU_FEATURE_MASK = 4662;
+%constant int SYI__FIBRE_SCSI_RSV1 = 4663;
+%constant int SYI__DEFUID = 4664;
+%constant int SYI__DEFGID = 4665;
+%constant int SYI__MVSUPMSG_INTVL = 4666;
+%constant int SYI__MVSUPMSG_NUM = 4667;
+%constant int SYI__SHADOW_SITE_ID = 4668;
+%constant int SYI__RMSD2 = 4669;
+%constant int SYI__RMSD3 = 4670;
+%constant int SYI__RMSD4 = 4671;
+%constant int SYI__RMSD5 = 4672;
+%constant int SYI__TESTING123 = 4673;
+%constant int SYI__VCC_PAGESIZE = 4674;
+%constant int SYI__VCC_RSVD = 4675;
+%constant int SYI__RSVD_IO_1 = 4676;
+%constant int SYI__RSVD_IO_2 = 4677;
+%constant int SYI__RSVD_CLU_1 = 4678;
+%constant int SYI__RSVD_CLU_2 = 4679;
+%constant int SYI__RSVD_EXEC_1 = 4680;
+%constant int SYI__RSVD_EXEC_2 = 4681;
+%constant int SYI__RSVD_SECUR_1 = 4682;
+%constant int SYI__RSVD_SECUR_2 = 4683;
+%constant int SYI__RSVD_LAN_1 = 4684;
+%constant int SYI__RSVD_LAN_2 = 4685;
+%constant int SYI__SHADOW_REC_DLY = 4686;
+%constant int SYI__SHADOW_D1 = 4687;
+%constant int SYI__SHADOW_D2 = 4688;
+%constant int SYI__SHADOW_D3 = 4689;
+%constant int SYI__SHADOW_D4 = 4690;
+%constant int SYI__SHADOW_D5 = 4691;
+%constant int SYI__WBM_D1 = 4692;
+%constant int SYI__TTY_DEFCHAR3 = 4693;
+%constant int SYI__VHPT_SIZE = 4694;
+%constant int SYI__SHADOW_HBMM_RTC = 4696;
+%constant int SYI__FCLAN_FRAME = 4697;
+%constant int SYI__MAX_PFN_64 = 4698;
+%constant int SYI__PFN_MEMORY_MAP_64 = 4699;
+%constant int SYI__CPU_SOCKETS = 4700;
+%constant int SYI__ERLBUFFERPAG_S2 = 4701;
+%constant int SYI__ERRORLOGBUFF_S2 = 4702;
+%constant int SYI__SHADOW_PSM_RDLY = 4703;
+%constant int SYI__SYSTEM_UUID = 4704;
+%constant int SYI__PLATF_SPT_D1 = 4705;
+%constant int SYI__PLATF_SPT_D2 = 4706;
+%constant int SYI__PLATF_SPT_D3 = 4707;
+%constant int SYI__PLATF_SPT_D4 = 4708;
+%constant int SYI__PLATF_SPT_1 = 4709;
+%constant int SYI__PLATF_SPT_2 = 4710;
+%constant int SYI__PLATF_SPT_3 = 4711;
+%constant int SYI__PLATF_SPT_4 = 4712;
+%constant int SYI__SWIS_LOG = 4713;
+%constant int SYI__EXECSTACKPAGES = 4714;
+%constant int SYI__GB_CACHEALLMAX = 4715;
+%constant int SYI__GB_DEFPERCENT = 4716;
+%constant int SYI__CPU_THREADING = 4717;
+%constant int SYI__CPU_POWER_MGMT = 4718;
+%constant int SYI__CPU_POWER_THRSH = 4719;
+%constant int SYI__SMP_CPU_BITMAP = 4720;
+%constant int SYI__IO_PRCPU_BITMAP = 4721;
+%constant int SYI__LOCKRMWT = 4722;
+%constant int SYI__SAS_NAMING = 4723;
+%constant int SYI__ACTIVE_CPU_BITMAP = 4724;
+%constant int SYI__AVAIL_CPU_BITMAP = 4725;
+%constant int SYI__POTENTIAL_CPU_BITMAP = 4726;
+%constant int SYI__POWERED_CPU_BITMAP = 4727;
+%constant int SYI__PRESENT_CPU_BITMAP = 4728;
+%constant int SYI__COMPLEX_ID = 4729;
+%constant int SYI__COMPLEX_NAME = 4730;
+%constant int SYI__HP_ID = 4731;
+%constant int SYI__HP_NAME = 4732;
+%constant int SYI__CELLULAR_PLATFORM = 4733;
+%constant int SYI__BOOT_DEVICE = 4734;
+%constant int SYI__HP_CORE_CNT = 4735;
+%constant int SYI__ACTIVE_CORE_CNT = 4736;
+%constant int SYI__SSIO_SYNC_INTVL = 4737;
+%constant int SYI__SCH_SOFT_OFFLD = 4738;
+%constant int SYI__SCH_HARD_OFFLD = 4739;
+%constant int SYI__SCHED_FLAGS = 4740;
+%constant int SYI__GH_RES_CODE_S2 = 4741;
+%constant int SYI__GRAPHICS_CONSOLE = 4742;
+%constant int SYI__TCPIP_LOAD = 4743;
+%constant int SYI__NISCS_UDP_PORT = 4744;
+%constant int SYI__PHYS_SERIAL_NUMBER = 4745;
+%constant int SYI__PHYS_SYSTEM_UUID = 4746;
+%constant int SYI__PAGED_LAL_SIZE = 4747;
+%constant int SYI__RMS_PATH_TMO = 4748;
+%constant int SYI__NISCS_UDP_PKTSZ = 4749;
+%constant int SYI__LASTEXE = 4750;
+%constant int SYI__CPU = 8192;
+%constant int SYI__BUGREBOOT = 8193;
+%constant int SYI__CRDENABLE = 8194;
+%constant int SYI__DUMPBUG = 8195;
+%constant int SYI__BUGCHECKFATAL = 8196;
+%constant int SYI__ACP_MULTIPLE = 8197;
+%constant int SYI__NOAUTOCONFIG = 8198;
+%constant int SYI__NOCLOCK = 8199;
+%constant int SYI__NOCLUSTER = 8200;
+%constant int SYI__POOLPAGING = 8201;
+%constant int SYI__SBIERRENABLE = 8202;
+%constant int SYI__SETTIME = 8203;
+%constant int SYI__ACP_SHARE = 8204;
+%constant int SYI__SYSPAGING = 8205;
+%constant int SYI__UAFALTERNATE = 8206;
+%constant int SYI__WRITABLESYS = 8207;
+%constant int SYI__RESALLOC = 8208;
+%constant int SYI__SSINHIBIT = 8209;
+%constant int SYI__CONCEAL_DEVICES = 8210;
+%constant int SYI__SAVEDUMP = 8211;
+%constant int SYI__MOUNTMSG = 8212;
+%constant int SYI__DISMOUMSG = 8213;
+%constant int SYI__LOADERAPT = 8214;
+%constant int SYI__LOADCHKPRT = 8215;
+%constant int SYI__XCPU = 8216;
+%constant int SYI__CJFLOAD = 8217;
+%constant int SYI__CJFSYSRUJ = 8218;
+%constant int SYI__NODE_AREA = 8219;
+%constant int SYI__NODE_NUMBER = 8220;
+%constant int SYI__CLASS_PROT = 8221;
+%constant int SYI__CHARACTER_EMULATED = 8222;
+%constant int SYI__DECIMAL_EMULATED = 8223;
+%constant int SYI__D_FLOAT_EMULATED = 8224;
+%constant int SYI__F_FLOAT_EMULATED = 8225;
+%constant int SYI__G_FLOAT_EMULATED = 8226;
+%constant int SYI__H_FLOAT_EMULATED = 8227;
+%constant int SYI__LOADMTACCESS = 8228;
+%constant int SYI__ACP_XQP_RES = 8229;
+%constant int SYI__WRITESYSPARAMS = 8230;
+%constant int SYI__LGI_BRK_TERM = 8231;
+%constant int SYI__LGI_BRK_DISUSER = 8232;
+%constant int SYI__ACP_REBLDSYSD = 8233;
+%constant int SYI__WS_OPA0 = 8234;
+%constant int SYI__NOPGFLSWP = 8235;
+%constant int SYI__LOAD_SYS_IMAGES = 8237;
+%constant int SYI__NISCS_CONV_BOOT = 8238;
+%constant int SYI__NISCS_LOAD_PEA0 = 8239;
+%constant int SYI__SA_APP = 8240;
+%constant int SYI__LOAD_PWD_POLICY = 8241;
+%constant int SYI__FT_ACTIVE = 8242;
+%constant int SYI__WLKSYSDSK = 8244;
+%constant int SYI__DBGTK_LOADED = 8245;
+%constant int SYI__DAY_OVERRIDE = 8246;
+%constant int SYI__DAY_SECONDARY = 8247;
+%constant int SYI__CWLOGICALS = 8248;
+%constant int SYI__POWEROFF = 8249;
+%constant int SYI__MPDEV_ENABLE = 8250;
+%constant int SYI__MPDEV_REMOTE = 8251;
+%constant int SYI__MPDEV_POLLER = 8252;
+%constant int SYI__LCKMGR_MODE = 8253;
+%constant int SYI__LCKMGR_RSVD = 8254;
+%constant int SYI__LCKMGR_CPUID = 8255;
+%constant int SYI__PERSISTENT_RES = 8256;
+%constant int SYI__SYSSER_LOGGING = 8257;
+%constant int SYI__SCSI_ERROR_POLL = 8258;
+%constant int SYI__SSI_ENABLE = 8259;
+%constant int SYI__VIRTUAL_MACHINE = 8260;
+%constant int SYI__NISCS_USE_LAN = 8261;
+%constant int SYI__NISCS_USE_UDP = 8262;
+%constant int SYI__LASTFLD = 8263;
+%constant int SYI_C_SFWTYPE = 1;
+%constant int SYI_C_HDWTYPE = 2;
+%constant int SYI_C_LISTEND = 0;
+%constant int SYI__OLDVERSION = 256;
+%constant int SYI__LASTSFW = 257;
+%constant int SYI__OLDCPU = 512;
+%constant int SYI__OLDSID = 513;
+%constant int SYI__LASTHDW = 514;
+%constant int SYI_K_ENV_VECTOR_LENGTH = 16;
+%constant int SYI_K_ENV_STATUS_FAILED = 0;
+%constant int SYI_K_ENV_STATUS_OK = 1;
+%constant int SYI_K_ENV_STATUS_NOT_PRESENT = 255;
+%constant int SYI_K_ENV_STATUS_UNKNOWN = 254;
+%constant int SYI_K_ARCH_OTHER = 0;
+%constant int SYI_K_ARCH_VAX = 1;
+%constant int SYI_K_ARCH_ALPHA = 2;
+%constant int SYI_K_ARCH_IA64 = 3;
diff --git a/Modules/vms/sys/sys.c b/Modules/vms/sys/sys.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lzL3N5cy5j
--- /dev/null
+++ b/Modules/vms/sys/sys.c
@@ -0,0 +1,809 @@
+#define __NEW_STARLET 1
+#include <starlet.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <descrip.h>
+#include <lib$routines.h>
+#include <iosbdef.h>
+#include <efndef.h>
+#include <ssdef.h>
+#include <gen64def.h>
+#include <assert.h>
+#include <iodef.h>
+
+#include "sys.h"
+#include "lcl.h"
+
+#ifndef OKAY
+#define OKAY(STATUS) (((STATUS) & 1) != 0)
+#endif
+
+#ifndef DEF_TABNAM
+#define DEF_TABNAM "LNM$FILE_DEV"
+#endif
+
+
+static const char *nil = "";
+
+unsigned int _asctim(long long timaddr, char **timbuf, char cvtflg)
+{
+    char val[64];
+    struct dsc$descriptor_s val_dsc;
+    unsigned int status;
+    unsigned short len;
+
+    assert(timbuf);
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    status =
+	sys$asctim(&len, &val_dsc, (struct _generic_64 *) &timaddr,
+		   cvtflg);
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *timbuf = strdup(val);
+        assert(*timbuf);
+    } else {
+        *timbuf = strdup(nil);
+    	assert(*timbuf);
+    }
+
+    return (status);
+}
+
+
+unsigned int _bintim(char *timbuf, long long *timadr)
+{
+    struct dsc$descriptor_s tim_dsc;
+
+    assert(timbuf);
+    assert(timadr);
+
+    tim_dsc.dsc$w_length = strlen(timbuf);
+    tim_dsc.dsc$b_class = DSC$K_CLASS_S;
+    tim_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    tim_dsc.dsc$a_pointer = timbuf;
+
+    return (sys$bintim(&tim_dsc, (struct _generic_64 *) timadr));
+}
+
+
+
+unsigned int _hiber()
+{
+    return (sys$hiber());
+}
+
+unsigned int _schdwk(unsigned int *pidadr, char *prcnam, long long daytim, long long reptim) {
+    unsigned int status = 0;
+    struct dsc$descriptor_s prcnam_dsc;
+
+    if (prcnam) {
+        prcnam_dsc.dsc$w_length = strlen(prcnam);
+        prcnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        prcnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        prcnam_dsc.dsc$a_pointer = prcnam;
+    }
+
+    status = sys$schdwk(pidadr, prcnam ? &prcnam_dsc : NULL, (struct _generic_64 *)&daytim, (struct _generic_64 *)&reptim);
+
+    return status;
+}
+
+
+unsigned int _assign(char *devnam, unsigned short int *chan,
+		     unsigned int acmode, char *mbxnam, unsigned int flags)
+{
+    struct dsc$descriptor_s dev_dsc;
+    struct dsc$descriptor_s mbx_dsc;
+    unsigned int status;
+
+    assert(devnam);
+    assert(chan);
+
+    dev_dsc.dsc$w_length = strlen(devnam);
+    dev_dsc.dsc$b_class = DSC$K_CLASS_S;
+    dev_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    dev_dsc.dsc$a_pointer = devnam;
+
+    if (mbxnam != NULL) {
+	mbx_dsc.dsc$w_length = strlen(mbxnam);
+	mbx_dsc.dsc$b_class = DSC$K_CLASS_S;
+	mbx_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	mbx_dsc.dsc$a_pointer = mbxnam;
+    }
+
+    status =
+	sys$assign(&dev_dsc, chan, acmode, mbxnam ? &mbx_dsc : NULL,
+		   flags);
+
+    return (status);
+}
+
+
+unsigned int _dassgn(unsigned short int chan)
+{
+    return (sys$dassgn(chan));
+}
+
+
+unsigned int _cancel(unsigned short int chan)
+{
+    return (sys$cancel(chan));
+}
+
+
+
+unsigned int _finish_rdb(unsigned int *context)
+{
+    assert(context);
+    return (sys$finish_rdb(context));
+}
+
+
+unsigned int _find_held(unsigned int holder, unsigned int *id,
+			unsigned int *attrib, unsigned int *context)
+{
+    unsigned int qw[2];
+    assert(id);
+    assert(attrib);
+    assert(context);
+
+    qw[0] = holder;
+    qw[1] = 0;
+
+    return (sys$find_held
+	    ((struct _generic_64 *) &qw[0], id, attrib, context));
+}
+
+
+
+unsigned int _asctoid(char *name, unsigned int *id, unsigned int *attrib)
+{
+    struct dsc$descriptor_s name_dsc;
+
+    assert(name);
+    assert(id);
+    assert(attrib);
+
+    name_dsc.dsc$w_length = strlen(name);
+    name_dsc.dsc$b_class = DSC$K_CLASS_S;
+    name_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    name_dsc.dsc$a_pointer = name;
+
+    return (sys$asctoid(&name_dsc, id, attrib));
+}
+
+
+
+unsigned int _getmsg(unsigned int msgid, char **msg, unsigned int flags,
+		     unsigned int *outadr)
+{
+    char val[128];
+    struct dsc$descriptor_s val_dsc;
+    unsigned int status;
+    unsigned short len;
+
+    assert(msg);
+    assert(outadr);
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    status =
+	sys$getmsg(msgid, &len, &val_dsc, flags, (unsigned char *) outadr);
+
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *msg = strdup(val);
+        assert(*msg);
+    } else {
+        *msg = strdup(nil);
+    	assert(*msg);
+    }
+
+    return (status);
+}
+
+
+
+unsigned int _idtoasc(unsigned int id, char **nambuf, unsigned int *resid,
+		      unsigned int *attrib, unsigned int *ctxt)
+{
+    char val[128];
+    struct dsc$descriptor_s val_dsc;
+    unsigned int status;
+    unsigned short len;
+
+    assert(nambuf);
+    assert(resid);
+    assert(attrib);
+    assert(ctxt);
+
+    val_dsc.dsc$w_length = sizeof(val) - 1;
+    val_dsc.dsc$b_class = DSC$K_CLASS_S;
+    val_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    val_dsc.dsc$a_pointer = val;
+
+    status = sys$idtoasc(id, &len, &val_dsc, resid, attrib, ctxt);
+
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *nambuf = strdup(val);
+        assert(*nambuf);
+    } else {
+        *nambuf = strdup(nil);
+	    assert(*nambuf);
+    }
+
+    return (status);
+}
+
+
+
+unsigned int _crembx(char prmflg, unsigned short int *chan,
+		     unsigned int maxmsg, unsigned int bufquo,
+		     unsigned int promsk, unsigned int acmode,
+		     char *lognam, unsigned int flags)
+{
+    struct dsc$descriptor_s lnm_dsc;
+    unsigned int status;
+
+    assert(chan);
+
+    if (lognam != NULL) {
+	lnm_dsc.dsc$w_length = strlen(lognam);
+	lnm_dsc.dsc$b_class = DSC$K_CLASS_S;
+	lnm_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	lnm_dsc.dsc$a_pointer = lognam;
+    }
+
+    status = sys$crembx(prmflg,
+			chan,
+			maxmsg,
+			bufquo,
+			promsk, acmode, lognam ? &lnm_dsc : NULL, flags,
+			0);
+
+    return (status);
+}
+
+
+unsigned int _delmbx(unsigned short int chan)
+{
+    return (sys$delmbx(chan));
+}
+
+
+unsigned int _getrmi(void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    unsigned long status;
+    IOSB iosb;
+    unsigned int efn;
+
+    assert(obj);
+
+    if (!(status = lib$get_ef(&efn))) {
+	return (status);
+    }
+
+    if (!OKAY(status = sys$getrmi(efn, 0, 0, obj->list, &iosb, 0, 0))) {
+	goto hell;
+    }
+
+    if (!OKAY(status = sys$synch(efn, &iosb))) {
+	goto hell;
+    }
+
+    if (!OKAY(iosb.iosb$l_getxxi_status)) {
+	status = iosb.iosb$l_getxxi_status;
+	goto hell;
+    }
+
+  hell:
+    lib$free_ef(&efn);
+    return (status);
+}
+
+
+
+unsigned int _getuai(char *user, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s user_dsc;
+
+    assert(obj);
+    assert(user);
+
+    user_dsc.dsc$w_length = strlen(user);
+    user_dsc.dsc$b_class = DSC$K_CLASS_S;
+    user_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    user_dsc.dsc$a_pointer = user;
+
+    return (sys$getuai(0, NULL, &user_dsc, obj->list, NULL, NULL, 0));
+}
+
+
+unsigned int _setuai(char *user, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s user_dsc;
+
+    assert(obj);
+    assert(user);
+
+    user_dsc.dsc$w_length = strlen(user);
+    user_dsc.dsc$b_class = DSC$K_CLASS_S;
+    user_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    user_dsc.dsc$a_pointer = user;
+
+    return (sys$setuai(0, NULL, &user_dsc, obj->list, NULL, NULL, 0));
+}
+
+
+
+unsigned int _getqui(unsigned short func, int *context, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    IOSB iosb;
+    unsigned long status;
+
+    // assert(obj);
+    assert(context);
+
+    status = sys$getquiw(EFN$C_ENF, func, (unsigned int *) context, obj ? obj->list : NULL, &iosb, NULL, 0);
+
+    if (!OKAY(status)) {
+        return (status);
+    }
+
+    if (!OKAY(iosb.iosb$l_getxxi_status)) {
+        status = iosb.iosb$l_getxxi_status;
+    }
+
+    return (status);
+}
+
+
+unsigned int _getsyi(int *csidadr, char *node, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s node_dsc;
+    IOSB iosb;
+    unsigned long status;
+
+    assert(obj);
+
+    if (node) {
+        node_dsc.dsc$w_length = strlen(node);
+        node_dsc.dsc$b_class = DSC$K_CLASS_S;
+        node_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        node_dsc.dsc$a_pointer = node;
+    }
+
+    status =
+        sys$getsyiw(EFN$C_ENF, node ? NULL : (unsigned int *) csidadr,
+                node ? &node_dsc : NULL, obj->list, &iosb, NULL, 0);
+
+    if (!OKAY(status)) {
+        return (status);
+    }
+
+    if (!OKAY(iosb.iosb$l_getxxi_status)) {
+        status = iosb.iosb$l_getxxi_status;
+    }
+
+    return (status);
+}
+
+
+
+unsigned int _getjpi(int *pidadr, char *prcnam, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s prcnam_dsc;
+    IOSB iosb;
+    unsigned long status;
+
+    assert(obj);
+
+    if (prcnam) {
+        prcnam_dsc.dsc$w_length = strlen(prcnam);
+        prcnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        prcnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        prcnam_dsc.dsc$a_pointer = prcnam;
+    }
+
+    status =
+        sys$getjpiw(EFN$C_ENF, (unsigned int *) pidadr,
+                prcnam ? &prcnam_dsc : NULL, obj->list, &iosb, NULL,
+                0);
+
+    if (!OKAY(status)) {
+        return (status);
+    }
+
+    if (!OKAY(iosb.iosb$l_getxxi_status)) {
+        status = iosb.iosb$l_getxxi_status;
+    }
+
+    return (status);
+}
+
+
+unsigned int _getdvi(char *dev, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s dev_dsc;
+    IOSB iosb;
+    unsigned long status;
+
+    assert(obj);
+    assert(dev);
+
+    dev_dsc.dsc$w_length = strlen(dev);
+    dev_dsc.dsc$b_class = DSC$K_CLASS_S;
+    dev_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    dev_dsc.dsc$a_pointer = dev;
+
+    status = sys$getdviw(EFN$C_ENF, 0, &dev_dsc, obj->list, &iosb, NULL, 0, NULL);
+
+    if (!OKAY(status)) {
+        return (status);
+    }
+
+    if (!OKAY(iosb.iosb$l_getxxi_status)) {
+        status = iosb.iosb$l_getxxi_status;
+    }
+
+    return (status);
+}
+
+
+unsigned int _device_scan(char **name, char *patt, void *addr,
+			  unsigned long long *ctxt)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    char val[128];
+    struct dsc$descriptor_s dev_dsc;
+    struct dsc$descriptor_s ret_dsc;
+    unsigned short len;
+    unsigned long status;
+
+    assert(name);
+    assert(ctxt);
+    assert(addr);
+
+    if (patt) {
+        dev_dsc.dsc$w_length = strlen(patt);
+        dev_dsc.dsc$b_class = DSC$K_CLASS_S;
+        dev_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        dev_dsc.dsc$a_pointer = patt;
+    }
+
+    ret_dsc.dsc$w_length = sizeof(val) - 1;
+    ret_dsc.dsc$b_class = DSC$K_CLASS_S;
+    ret_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    ret_dsc.dsc$a_pointer = val;
+
+    status =
+        sys$device_scan(&ret_dsc, &len, patt ? &dev_dsc : NULL, obj->list,
+                (struct _generic_64 *) ctxt);
+
+    if (OKAY(status)) {
+        val[len] = '\0';
+        *name = strdup(val);
+        assert(*name);
+    } else {
+        *name = strdup(nil);
+        assert(*name);
+    }
+
+    return (status);
+}
+
+unsigned int _dellnm(char *tabnam, char *lognam, unsigned char acmode) {
+    struct dsc$descriptor_s tabnam_dsc;
+    struct dsc$descriptor_s lognam_dsc;
+    assert(lognam);
+
+    if (tabnam == NULL) {
+        tabnam_dsc.dsc$w_length = strlen(DEF_TABNAM);
+        tabnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        tabnam_dsc.dsc$a_pointer = DEF_TABNAM;
+    } else {
+        tabnam_dsc.dsc$w_length = strlen(tabnam);
+        tabnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        tabnam_dsc.dsc$a_pointer = tabnam;
+    }
+
+    lognam_dsc.dsc$w_length = strlen(lognam);
+    lognam_dsc.dsc$b_class = DSC$K_CLASS_S;
+    lognam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    lognam_dsc.dsc$a_pointer = lognam;
+
+    return sys$dellnm(&tabnam_dsc, &lognam_dsc, &acmode);
+
+}
+
+
+unsigned int _trnlnm(unsigned int attr, char *tabnam, char *lognam,
+                unsigned char acmode, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s tabnam_dsc;
+    struct dsc$descriptor_s lognam_dsc;
+
+    assert(lognam);
+    assert(addr);
+
+    if (tabnam == NULL) {
+        tabnam_dsc.dsc$w_length = strlen(DEF_TABNAM);
+        tabnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        tabnam_dsc.dsc$a_pointer = DEF_TABNAM;
+    } else {
+        tabnam_dsc.dsc$w_length = strlen(tabnam);
+        tabnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        tabnam_dsc.dsc$a_pointer = tabnam;
+    }
+
+    lognam_dsc.dsc$w_length = strlen(lognam);
+    lognam_dsc.dsc$b_class = DSC$K_CLASS_S;
+    lognam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    lognam_dsc.dsc$a_pointer = lognam;
+
+    return sys$trnlnm(&attr, &tabnam_dsc, &lognam_dsc, &acmode, obj->list);
+}
+
+
+
+unsigned int _forcex(int pid, char *prcnam, unsigned int code)
+{
+    struct dsc$descriptor_s prcnam_dsc;
+
+    if (prcnam) {
+	prcnam_dsc.dsc$w_length = strlen(prcnam);
+	prcnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+	prcnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+	prcnam_dsc.dsc$a_pointer = prcnam;
+    }
+
+    return (sys$forcex
+	    (pid <= 0 ? NULL : (unsigned int *) &pid,
+	     prcnam ? &prcnam_dsc : NULL, code));
+}
+
+
+
+unsigned int _rem_ident(unsigned int id)
+{
+    return (sys$rem_ident(id));
+}
+
+
+unsigned int _add_ident(char *name, unsigned int id, unsigned int attrib,
+			unsigned int *resid)
+{
+    struct dsc$descriptor_s name_dsc;
+    assert(name);
+
+    name_dsc.dsc$w_length = strlen(name);
+    name_dsc.dsc$b_class = DSC$K_CLASS_S;
+    name_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    name_dsc.dsc$a_pointer = name;
+
+    return (sys$add_ident(&name_dsc, id, attrib, resid));
+}
+
+
+unsigned int _rem_holder(unsigned int id, unsigned long long holder)
+{
+    return (sys$rem_holder(id, (struct _generic_64 *) &holder));
+}
+
+
+unsigned int _add_holder(unsigned int id, unsigned long long holder,
+			 unsigned int attrib)
+{
+    return (sys$add_holder(id, (struct _generic_64 *) &holder, attrib));
+}
+
+
+
+unsigned int _getlki(unsigned int *lkidadr, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    IOSB iosb;
+    unsigned long status;
+
+    assert(lkidadr);
+    assert(obj);
+
+    status =
+        sys$getlkiw(EFN$C_ENF, lkidadr, obj->list, &iosb,
+                NULL, 0, 0);
+
+    if (!OKAY(status)) {
+        return (status);
+    }
+
+    if (!OKAY(iosb.iosb$l_getxxi_status)) {
+        status = iosb.iosb$l_getxxi_status;
+    }
+
+    return (status);
+}
+
+
+unsigned int _uicstr(long int val, char **res, int flag)
+{
+    char str[32], fmt[16];
+    struct dsc$descriptor_s str_dsc, fmt_dsc;
+    unsigned short len;
+    unsigned long status;
+    char *tmp;
+
+    assert(res);
+
+    if (flag) {
+        strcpy(fmt, "!%U");
+    } else {
+        strcpy(fmt, "!%I");
+    }
+
+    fmt_dsc.dsc$w_length = sizeof(fmt) - 1;
+    fmt_dsc.dsc$b_class = DSC$K_CLASS_S;
+    fmt_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    fmt_dsc.dsc$a_pointer = fmt;
+
+    str_dsc.dsc$w_length = sizeof(str) - 1;
+    str_dsc.dsc$b_class = DSC$K_CLASS_S;
+    str_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    str_dsc.dsc$a_pointer = str;
+
+    if (OKAY((status = sys$fao(&fmt_dsc, &len, &str_dsc, val)))) {
+        str[len] = '\0';
+        *res = strdup(str);
+        assert(*res);
+    } else {
+        *res = strdup(nil);
+    	assert(*res);
+    }
+
+    return (status);
+}
+
+
+unsigned int _gettim(long long *timadr)
+{
+    assert(timadr);
+    return (sys$gettim((struct _generic_64 *) timadr));
+}
+
+
+unsigned int _crelnm(unsigned int attr, char *tabnam, char *lognam,
+		     unsigned char acmode, void *addr)
+{
+    LCL_ile3 *obj = (LCL_ile3 *) addr;
+    struct dsc$descriptor_s tabnam_dsc;
+    struct dsc$descriptor_s lognam_dsc;
+
+    assert(lognam);
+    assert(addr);
+
+    if (tabnam == NULL) {
+        tabnam_dsc.dsc$w_length = strlen(DEF_TABNAM);
+        tabnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        tabnam_dsc.dsc$a_pointer = DEF_TABNAM;
+    } else {
+        tabnam_dsc.dsc$w_length = strlen(tabnam);
+        tabnam_dsc.dsc$b_class = DSC$K_CLASS_S;
+        tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+        tabnam_dsc.dsc$a_pointer = tabnam;
+    }
+
+    lognam_dsc.dsc$w_length = strlen(lognam);
+    lognam_dsc.dsc$b_class = DSC$K_CLASS_S;
+    lognam_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    lognam_dsc.dsc$a_pointer = lognam;
+
+    return (sys$crelnm
+	    (&attr, &tabnam_dsc, &lognam_dsc, &acmode, obj->list));
+}
+
+
+
+
+unsigned int _show_intrusion(char *criteria, char **intruder,
+			     unsigned long long *expires,
+			     unsigned int *type, unsigned int *count,
+			     unsigned int flags, unsigned int *context)
+{
+    unsigned int status;
+    struct dsc$descriptor_s criteria_dsc, intruder_dsc;
+    char tmp[1059];
+    unsigned short len;
+    struct {
+        unsigned int type;
+        unsigned int count;
+        unsigned long long expires;
+    } blk;
+
+    assert(criteria);
+    assert(intruder);
+    assert(expires);
+    assert(type);
+    assert(count);
+    assert(context);
+
+    criteria_dsc.dsc$w_length = strlen(criteria);
+    criteria_dsc.dsc$b_class = DSC$K_CLASS_S;
+    criteria_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    criteria_dsc.dsc$a_pointer = criteria;
+
+    intruder_dsc.dsc$w_length = sizeof(tmp) - 1;
+    intruder_dsc.dsc$b_class = DSC$K_CLASS_S;
+    intruder_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+    intruder_dsc.dsc$a_pointer = tmp;
+
+    status = sys$show_intrusion(&criteria_dsc, &intruder_dsc, &len, &blk, flags, context);
+
+    if (status == SS$_NORMAL) {
+    	*expires = blk.expires;
+    	*type = blk.type;
+    	*count = blk.count;
+    	tmp[len] = '\0';
+        *intruder = strdup(tmp);
+    	assert(*intruder);
+    }
+
+    return (status);
+}
+
+unsigned int _readvblk(unsigned short int chan, void *rbuffer, long long *rlen, unsigned short *iostatus, long long p3, unsigned int func_mod) {
+    struct _iosb iosb;
+    int status = SYS$QIOW(
+        0,                          /* efn - event flag */
+        chan,                       /* chan - channel number */
+        IO$_READVBLK | func_mod,    /* func - function modifier */
+        &iosb,                      /* iosb - I/O status block */
+        0,                          /* astadr - AST routine */
+        0,                          /* astprm - AST parameter */
+        rbuffer,                    /* p1 - input buffer */
+        *rlen,                      /* p2 - size of buffer */
+        p3,                         /* starting vblock */
+        0,0,0);                     /* p4-p6*/
+    *rlen = iosb.iosb$w_bcnt;
+    *iostatus = iosb.iosb$w_status;
+    return status;
+}
+
+unsigned int _writevblk(unsigned short int chan, void *wbuffer, long long *wlen, unsigned short *iostatus, long long p3, unsigned int func_mod) {
+    struct _iosb iosb;
+    int status = SYS$QIOW(
+        0,                          /* efn - event flag */
+        chan,                       /* chan - channel number */
+        IO$_WRITEVBLK | func_mod,   /* func - function modifier */
+        &iosb,                      /* iosb - I/O status block */
+        0,                          /* astadr - AST routine */
+        0,                          /* astprm - AST parameter */
+        wbuffer,                    /* p1 - input buffer */
+        *wlen,                      /* p2 - size of buffer */
+        p3,                         /* starting vblock */
+        0,0,0);                     /* p4-p6*/
+    *wlen = iosb.iosb$w_bcnt;
+    *iostatus = iosb.iosb$w_status;
+    return status;
+}
diff --git a/Modules/vms/sys/sys.h b/Modules/vms/sys/sys.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lzL3N5cy5o
--- /dev/null
+++ b/Modules/vms/sys/sys.h
@@ -0,0 +1,48 @@
+#ifndef __SYS_H__
+#define __SYS_H__
+
+#ifdef __cplusplus
+        extern "C" {
+#endif
+
+extern unsigned int _add_holder(unsigned int, unsigned long long, unsigned int);
+extern unsigned int _add_ident(char *, unsigned int, unsigned int, unsigned int *);
+extern unsigned int _asctim(long long, char **, char);
+extern unsigned int _asctoid(char *, unsigned int *, unsigned int *);
+extern unsigned int _assign(char *, unsigned short int *OUTPUT, unsigned int, char *, unsigned int);
+extern unsigned int _bintim(char *, long long *);
+extern unsigned int _cancel(unsigned short int);
+extern unsigned int _crelnm(unsigned int, char *, char *, unsigned char, void *);
+extern unsigned int _crembx(char, unsigned short int *, unsigned int, unsigned int, unsigned int, unsigned int, char *, unsigned int);
+extern unsigned int _dassgn(unsigned short int);
+extern unsigned int _dellnm(char *tabnam, char *lognam, unsigned char acmode);
+extern unsigned int _delmbx(unsigned short int);
+extern unsigned int _device_scan(char **, char *, void *, unsigned long long *);
+extern unsigned int _find_held(unsigned int, unsigned int *, unsigned int *, unsigned int *);
+extern unsigned int _finish_rdb(unsigned int *);
+extern unsigned int _forcex(int, char *, unsigned int);
+extern unsigned int _getdvi(char *, void *);
+extern unsigned int _getjpi(int *, char *, void *);
+extern unsigned int _getlki(unsigned int *, void *);
+extern unsigned int _getmsg(unsigned int, char **, unsigned int, unsigned int *);
+extern unsigned int _getqui(unsigned short, int *, void *);
+extern unsigned int _getrmi(void *);
+extern unsigned int _getsyi(int *, char *, void *);
+extern unsigned int _gettim(long long *);
+extern unsigned int _getuai(char *, void *);
+extern unsigned int _hiber();
+extern unsigned int _idtoasc(unsigned int, char **, unsigned int *, unsigned int *, unsigned int *);
+extern unsigned int _readvblk(unsigned short int chan, void *rbuffer, long long *rlen, unsigned short *iostatus, long long p3, unsigned int func_mod);
+extern unsigned int _rem_holder(unsigned int, unsigned long long);
+extern unsigned int _rem_ident(unsigned int);
+extern unsigned int _schdwk(unsigned int *INOUT, char *, long long daytim, long long reptim);
+extern unsigned int _setuai(char *, void *);
+extern unsigned int _show_intrusion(char *, char **, unsigned long long *, unsigned int *, unsigned int *, unsigned int, unsigned int *);
+extern unsigned int _trnlnm(unsigned int, char *, char *, unsigned char, void *);
+extern unsigned int _uicstr(long int, char **, int);
+extern unsigned int _writevblk(unsigned short int chan, void *wbuffer, long long *wlen, unsigned short *iostatus, long long p3, unsigned int func_mod);
+
+#ifdef __cplusplus
+        }
+#endif
+#endif
diff --git a/Modules/vms/sys/sys.i b/Modules/vms/sys/sys.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lzL3N5cy5p
--- /dev/null
+++ b/Modules/vms/sys/sys.i
@@ -0,0 +1,149 @@
+%module sys
+
+%{
+#include "sys.h"
+%}
+
+%include "typemaps.i"
+%include <cstring.i>
+%cstring_output_allocate(char **OUTPUT, free(*$1));
+
+%begin %{
+#define PY_SSIZE_T_CLEAN
+%}
+
+%exception {
+    Py_BEGIN_ALLOW_THREADS
+    $action
+    Py_END_ALLOW_THREADS
+}
+
+%typemap(default) unsigned int func_mod {
+   $1 = 0;
+}
+
+%typemap(default) long long reptim {
+   $1 = 0;
+}
+
+// typemap for an outgoing buffer
+%typemap(in) (void *wbuffer, long long *wlen) (long long w_len){
+   if (!PyBytes_Check($input)) {
+       PyErr_SetString(PyExc_ValueError, "Expecting a bytes");
+       return NULL;
+   }
+   w_len = PyBytes_Size($input);
+   $1 = (void *) PyBytes_AsString($input);
+   $2 = &w_len;
+}
+
+%typemap(argout) (void *wbuffer, long long *wlen) {
+    $result = SWIG_Python_AppendOutput($result, Py_BuildValue("l", *$2));
+}
+
+// typemap for an incoming buffer
+%typemap(in) (void *rbuffer, long long *rlen) (long long r_len){
+   if (!PyInt_Check($input)) {
+       PyErr_SetString(PyExc_ValueError, "Expecting an integer");
+       return NULL;
+   }
+   r_len = PyInt_AsLong($input);
+   if (r_len < 0) {
+       PyErr_SetString(PyExc_ValueError, "Positive integer expected");
+       return NULL;
+   }
+   $1 = (void *) malloc(r_len);
+   $2 = &r_len;
+}
+
+%typemap(freearg) (void *rbuffer, long long *rlen) {
+    free($1);
+}
+
+%typemap(argout) (void *rbuffer, long long *rlen) {
+    $result = SWIG_Python_AppendOutput($result, Py_BuildValue("y#", $1, (Py_ssize_t)*$2));
+}
+
+%typemap(in, numinputs=0) unsigned short *iostatus (unsigned short io_status){
+    io_status = 0;
+    $1 = &io_status;
+}
+
+%typemap(argout) (unsigned short *iostatus) {
+    $result = SWIG_Python_AppendOutput($result, Py_BuildValue("H", *$1));
+}
+
+%rename(add_holder) _add_holder;
+%rename(add_ident) _add_ident;
+%rename(asctim) _asctim;
+%rename(asctoid) _asctoid;
+%rename(assign) _assign;
+%rename(bintim) _bintim;
+%rename(cancel) _cancel;
+%rename(crelnm) _crelnm;
+%rename(crembx) _crembx;
+%rename(dassgn) _dassgn;
+%rename(dellnm) _dellnm;
+%rename(delmbx) _delmbx;
+%rename(device_scan) _device_scan;
+%rename(find_held) _find_held;
+%rename(finish_rdb) _finish_rdb;
+%rename(forcex) _forcex;
+%rename(getdvi) _getdvi;
+%rename(getjpi) _getjpi;
+%rename(getlki) _getlki;
+%rename(getmsg) _getmsg;
+%rename(getqui) _getqui;
+%rename(getrmi) _getrmi;
+%rename(getsyi) _getsyi;
+%rename(gettim) _gettim;
+%rename(getuai) _getuai;
+%rename(hiber) _hiber;
+%rename(idtoasc) _idtoasc;
+%rename(readvblk) _readvblk;
+%rename(rem_holder) _rem_holder;
+%rename(rem_ident) _rem_ident;
+%rename(schdwk) _schdwk;
+%rename(setuai) _setuai;
+%rename(show_intrusion) _show_intrusion;
+%rename(trnlnm) _trnlnm;
+%rename(uicstr) _uicstr;
+%rename(writevblk) _writevblk;
+
+extern unsigned int _add_holder(unsigned int, unsigned long long, unsigned int);
+extern unsigned int _add_ident(char *, unsigned int, unsigned int, unsigned int *OUTPUT);
+extern unsigned int _asctim(long long, char **OUTPUT, char);
+extern unsigned int _asctoid(char *, unsigned int *OUTPUT, unsigned int *OUTPUT);
+extern unsigned int _assign(char *, unsigned short int *OUTPUT, unsigned int, char *, unsigned int);
+extern unsigned int _bintim(char *, long long *OUTPUT);
+extern unsigned int _cancel(unsigned short int);
+extern unsigned int _crelnm(unsigned int, char *, char *, unsigned char, void *);
+extern unsigned int _crembx(char, unsigned short int *OUTPUT, unsigned int, unsigned int, unsigned int, unsigned int, char *, unsigned int);
+extern unsigned int _dassgn(unsigned short int);
+extern unsigned int _dellnm(char *tabnam, char *lognam, unsigned char acmode);
+extern unsigned int _delmbx(unsigned short int);
+extern unsigned int _device_scan(char **OUTPUT, char *, void *, unsigned long long *INOUT);
+extern unsigned int _find_held(unsigned int, unsigned int *OUTPUT, unsigned int *OUTPUT, unsigned int *INOUT);
+extern unsigned int _finish_rdb(unsigned int *INPUT);
+extern unsigned int _forcex(int, char *, unsigned int);
+extern unsigned int _getdvi(char *, void *);
+extern unsigned int _getjpi(int *INOUT, char *, void *);
+extern unsigned int _getlki(unsigned int *INOUT, void *);
+extern unsigned int _getmsg(unsigned int, char **OUTPUT, unsigned int, unsigned int *OUTPUT);
+extern unsigned int _getqui(unsigned short, int *INOUT, void *);
+extern unsigned int _getrmi(void *);
+extern unsigned int _getsyi(int *INOUT, char *, void *);
+extern unsigned int _gettim(long long *OUTPUT);
+extern unsigned int _getuai(char *, void *);
+extern unsigned int _hiber();
+extern unsigned int _idtoasc(unsigned int, char **OUTPUT, unsigned int *OUTPUT, unsigned int *OUTPUT, unsigned int *INOUT);
+extern unsigned int _readvblk(unsigned short int chan, void *rbuffer, long long *rlen, unsigned short *iostatus, long long p3, unsigned int func_mod);
+extern unsigned int _rem_holder(unsigned int, unsigned long long);
+extern unsigned int _rem_ident(unsigned int);
+extern unsigned int _schdwk(unsigned int *INOUT, char *, long long daytim, long long reptim);
+extern unsigned int _setuai(char *, void *);
+extern unsigned int _show_intrusion(char *, char **OUTPUT, unsigned long long *OUTPUT, unsigned int *OUTPUT, unsigned int *OUTPUT, unsigned int, unsigned int *INOUT);
+extern unsigned int _trnlnm(unsigned int, char *, char *, unsigned char, void *);
+extern unsigned int _uicstr(long int, char **OUTPUT, int);
+extern unsigned int _writevblk(unsigned short int chan, void *wbuffer, long long *wlen, unsigned short *iostatus, long long p3, unsigned int func_mod);
+
diff --git a/Modules/vms/uafdef/uafdef.i b/Modules/vms/uafdef/uafdef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvdWFmZGVmL3VhZmRlZi5p
--- /dev/null
+++ b/Modules/vms/uafdef/uafdef.i
@@ -0,0 +1,57 @@
+%module uafdef
+
+%constant int UAF_C_USER_ID = 1;
+%constant int UAF_C_VERSION1 = 1;
+%constant int UAF_C_KEYED_PART = 52;
+%constant int UAF_C_MAX_PWD_LENGTH = 32;
+%constant int UAF_K_MAX_PWD_LENGTH = 32;
+%constant int UAF_C_AD_II = 0;
+%constant int UAF_C_PURDY = 1;
+%constant int UAF_C_PURDY_V = 2;
+%constant int UAF_C_PURDY_S = 3;
+%constant int UAF_K_CURRENT_ALGORITHM = 3;
+%constant int UAF_C_CURRENT_ALGORITHM = 3;
+%constant int UAF_C_PREFERED_ALGORITHM = 127;
+%constant int UAF_K_PREFERED_ALGORITHM = 127;
+%constant int UAF_C_PREFERRED_ALGORITHM = 127;
+%constant int UAF_K_PREFERRED_ALGORITHM = 127;
+%constant int UAF_C_CUST_ALGORITHM = 128;
+%constant int UAF_K_CUST_ALGORITHM = 128;
+%constant int UAF_K_FIXED = 644;
+%constant int UAF_C_FIXED = 644;
+%constant int UAF_K_LENGTH = 1412;
+%constant int UAF_C_LENGTH = 1412;
+%constant int UAF_S_UAFDEF = 1412;
+%constant int UAF_S_UAF = 1412;
+%constant int UAF_S_USERNAME = 32;
+%constant int UAF_S_PARENT_ID = 8;
+%constant int UAF_S_ACCOUNT = 32;
+%constant int UAF_S_OWNER = 32;
+%constant int UAF_S_DEFDEV = 32;
+%constant int UAF_S_DEFDIR = 64;
+%constant int UAF_S_LGICMD = 64;
+%constant int UAF_S_DEFCLI = 32;
+%constant int UAF_S_CLITABLES = 32;
+%constant int UAF_S_PWD = 8;
+%constant int UAF_S_PWD2 = 8;
+%constant int UAF_S_EXPIRATION = 8;
+%constant int UAF_S_PWD_LIFETIME = 8;
+%constant int UAF_S_PWD_DATE = 8;
+%constant int UAF_S_PWD2_DATE = 8;
+%constant int UAF_S_LASTLOGIN_I = 8;
+%constant int UAF_S_LASTLOGIN_N = 8;
+%constant int UAF_S_PRIV = 8;
+%constant int UAF_S_DEF_PRIV = 8;
+%constant int UAF_S_MIN_CLASS = 20;
+%constant int UAF_S_MAX_CLASS = 20;
+%constant int UAF_S_NETWORK_ACCESS_P = 3;
+%constant int UAF_S_NETWORK_ACCESS_S = 3;
+%constant int UAF_S_BATCH_ACCESS_P = 3;
+%constant int UAF_S_BATCH_ACCESS_S = 3;
+%constant int UAF_S_LOCAL_ACCESS_P = 3;
+%constant int UAF_S_LOCAL_ACCESS_S = 3;
+%constant int UAF_S_DIALUP_ACCESS_P = 3;
+%constant int UAF_S_DIALUP_ACCESS_S = 3;
+%constant int UAF_S_REMOTE_ACCESS_P = 3;
+%constant int UAF_S_REMOTE_ACCESS_S = 3;
+%constant int UAF_S_DEF_CLASS = 20;
diff --git a/Modules/vms/uaidef/uaidef.i b/Modules/vms/uaidef/uaidef.i
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvdWFpZGVmL3VhaWRlZi5p
--- /dev/null
+++ b/Modules/vms/uaidef/uaidef.i
@@ -0,0 +1,116 @@
+%module uaidef
+
+%constant int UAI__RTYPE = 1;
+%constant int UAI__VERSION = 2;
+%constant int UAI__USRDATOFF = 3;
+%constant int UAI__USERNAME = 4;
+%constant int UAI__USERNAME_TAG = 5;
+%constant int UAI__UIC = 6;
+%constant int UAI__MEM = 7;
+%constant int UAI__GRP = 8;
+%constant int UAI__SUB_ID = 9;
+%constant int UAI__PARENT_ID = 10;
+%constant int UAI__ACCOUNT = 11;
+%constant int UAI__OWNER = 12;
+%constant int UAI__DEFDEV = 13;
+%constant int UAI__DEFDIR = 14;
+%constant int UAI__LGICMD = 15;
+%constant int UAI__DEFCLI = 16;
+%constant int UAI__CLITABLES = 17;
+%constant int UAI__PWD = 18;
+%constant int UAI__PWD2 = 19;
+%constant int UAI__LOGFAILS = 20;
+%constant int UAI__SALT = 21;
+%constant int UAI__ENCRYPT = 22;
+%constant int UAI__ENCRYPT2 = 23;
+%constant int UAI__PWD_LENGTH = 24;
+%constant int UAI__EXPIRATION = 25;
+%constant int UAI__PWD_LIFETIME = 26;
+%constant int UAI__PWD_DATE = 27;
+%constant int UAI__PWD2_DATE = 28;
+%constant int UAI__LASTLOGIN_I = 29;
+%constant int UAI__LASTLOGIN_N = 30;
+%constant int UAI__PRIV = 31;
+%constant int UAI__DEF_PRIV = 32;
+%constant int UAI__MIN_CLASS = 33;
+%constant int UAI__MAX_CLASS = 34;
+%constant int UAI__FLAGS = 35;
+%constant int UAI__NETWORK_ACCESS_P = 36;
+%constant int UAI__NETWORK_ACCESS_S = 37;
+%constant int UAI__BATCH_ACCESS_P = 38;
+%constant int UAI__BATCH_ACCESS_S = 39;
+%constant int UAI__LOCAL_ACCESS_P = 40;
+%constant int UAI__LOCAL_ACCESS_S = 41;
+%constant int UAI__DIALUP_ACCESS_P = 42;
+%constant int UAI__DIALUP_ACCESS_S = 43;
+%constant int UAI__REMOTE_ACCESS_P = 44;
+%constant int UAI__REMOTE_ACCESS_S = 45;
+%constant int UAI__PRIMEDAYS = 46;
+%constant int UAI__PRI = 47;
+%constant int UAI__QUEPRI = 48;
+%constant int UAI__MAXJOBS = 49;
+%constant int UAI__MAXACCTJOBS = 50;
+%constant int UAI__MAXDETACH = 51;
+%constant int UAI__PRCCNT = 52;
+%constant int UAI__BIOLM = 53;
+%constant int UAI__DIOLM = 54;
+%constant int UAI__TQCNT = 55;
+%constant int UAI__ASTLM = 56;
+%constant int UAI__ENQLM = 57;
+%constant int UAI__FILLM = 58;
+%constant int UAI__SHRFILLM = 59;
+%constant int UAI__WSQUOTA = 60;
+%constant int UAI__DFWSCNT = 61;
+%constant int UAI__WSEXTENT = 62;
+%constant int UAI__PGFLQUOTA = 63;
+%constant int UAI__CPUTIM = 64;
+%constant int UAI__BYTLM = 65;
+%constant int UAI__PBYTLM = 66;
+%constant int UAI__JTQUOTA = 67;
+%constant int UAI__PROXY_LIM = 68;
+%constant int UAI__PROXIES = 69;
+%constant int UAI__ACCOUNT_LIM = 70;
+%constant int UAI__ACCOUNTS = 71;
+%constant int UAI__USER_DATA = 72;
+%constant int UAI__PASSWORD = 73;
+%constant int UAI__PASSWORD2 = 74;
+%constant int UAI__DEF_CLASS = 75;
+%constant int UAI__AUDIT_FLAGS = 76;
+%constant int UAI__MAX_ITEM_CODE = 77;
+%constant int UAI__DEFCHARGE_CODE = 11;
+%constant int UAI_C_AD_II = 0;
+%constant int UAI_C_PURDY = 1;
+%constant int UAI_C_PURDY_V = 2;
+%constant int UAI_C_PURDY_S = 3;
+%constant int UAI_C_PREFERED_ALGORITHM = 127;
+%constant int UAI_C_PREFERRED_ALGORITHM = 127;
+%constant int UAI_C_CUST_ALGORITHM = 128;
+%constant int UAI_C_MAX_PWD_LENGTH = 32;
+%constant int UAI_M_DISCTLY = 0x1L;
+%constant int UAI_M_DEFCLI = 0x2L;
+%constant int UAI_M_LOCKPWD = 0x4L;
+%constant int UAI_M_RESTRICTED = 0x8L;
+%constant int UAI_M_DISACNT = 0x10L;
+%constant int UAI_M_DISWELCOM = 0x20L;
+%constant int UAI_M_DISMAIL = 0x40L;
+%constant int UAI_M_NOMAIL = 0x80L;
+%constant int UAI_M_GENPWD = 0x100L;
+%constant int UAI_M_PWD_EXPIRED = 0x200L;
+%constant int UAI_M_PWD2_EXPIRED = 0x400L;
+%constant int UAI_M_AUDIT = 0x800L;
+%constant int UAI_M_DISREPORT = 0x1000L;
+%constant int UAI_M_DISRECONNECT = 0x2000L;
+%constant int UAI_M_AUTOLOGIN = 0x4000L;
+%constant int UAI_M_DISFORCE_PWD_CHANGE = 0x8000L;
+%constant int UAI_M_CAPTIVE = 0x10000L;
+%constant int UAI_M_DISIMAGE = 0x20000L;
+%constant int UAI_M_DISPWDDIC = 0x40000L;
+%constant int UAI_M_DISPWDHIS = 0x80000L;
+%constant int UAI_M_DEFCLSVAL = 0x100000L;
+%constant int UAI_M_EXTAUTH = 0x200000L;
+%constant int UAI_M_MIGRATEPWD = 0x400000L;
+%constant int UAI_M_VMSAUTH = 0x800000L;
+%constant int UAI_M_DISPWDSYNCH = 0x1000000L;
+%constant int UAI_M_PWDMIX = 0x2000000L;
+%constant int UAI_S_FLAGS = 4;
+%constant int UAI_S_PRIMEDAYS = 1;
diff --git a/Python3.com b/Python3.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_UHl0aG9uMy5jb20=
--- /dev/null
+++ b/Python3.com
@@ -0,0 +1,45 @@
+$ if "''P1'" .eqs. ""
+$ then
+$   CONFIG := DEBUG
+$ else
+$   CONFIG := 'P1'
+$ endif
+$ write sys$output "Prepare for ''CONFIG'"
+$
+$ com_nam = f$environment("procedure")
+$ com_dir = f$parse(com_nam,,,"directory")
+$ com_dev = f$parse(com_nam,,,"device")
+$ com_pat = com_dev + com_dir
+$ bld_pat = com_dev + com_dir - "]" + ".out.''CONFIG']"
+$ inc_pat = com_dev + com_dir - "]" + ".include]"
+$ cpy_pat = com_dev + com_dir - "]" + ".include.cpython]"
+$ lib_pat = com_dev + com_dir - "]" + ".lib...]"
+$ vms_py_pat = com_dev + com_dir - "]" + ".modules.vms...]"
+$ rdb_py_pat = com_dev + com_dir - "]" + ".modules.rdb...]"
+$ vms_pat = com_dev + com_dir - "]" + ".vms]"
+$ dyn_pat = com_dev + com_dir - "]" + ".out.'CONFIG'.lib-dynload...]"
+$ cnf_pat = com_dev + com_dir - "]" + ".build]"
+$ @'com_pat'Python3_names.com
+$
+$ pipe delete/tree python$root:[000000...]*.*;* | copy SYS$INPUT nl:
+$
+$ backup 'bld_pat'python3.exe python$root:[bin]
+$
+$ backup 'inc_pat'*.h python$root:[include]
+$ backup 'cpy_pat'*.h python$root:[include.cpython]
+$ backup 'com_pat'pyconfig.h python$root:[include]
+$ backup 'com_pat'py_vms.h python$root:[include]
+$
+$ backup 'lib_pat'*.* python$root:[lib.python3^.8...]
+$ backup 'vms_py_pat'*.py python$root:[lib.python3^.8.vms]
+$ backup 'rdb_py_pat'*.py python$root:[lib.python3^.8]
+$ backup 'bld_pat'python$shr.exe python$root:[lib]
+$
+$ backup 'vms_pat'python$define_root.com python$root:[000000]
+$ backup 'vms_pat'python$pcsi_preconfigure.com python$root:[000000]
+$ backup 'vms_pat'python$startup.com python$root:[000000]
+$ backup 'vms_pat'python$shutdown.com python$root:[000000]
+$
+$ backup 'dyn_pat'*.* python$root:[lib.python3^.8.lib-dynload...]*.*
+$ ! next file must be present
+$ backup 'cnf_pat'_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py python$root:[lib.python3^.8]
diff --git a/Python3.mms b/Python3.mms
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_UHl0aG9uMy5tbXM=
--- /dev/null
+++ b/Python3.mms
@@ -0,0 +1,2321 @@
+! MMS/EXT/DESCR=Python3.mms/MACRO=("OUTDIR=OUT","CONFIG=DEBUG")
+
+! define output folder
+.IF OUTDIR
+! defined - ok
+.ELSE
+! not defined - define as OUT
+OUTDIR = OUT
+.ENDIF
+
+! check DEBUG or RELEASE
+.IF CONFIG
+! defined - ok
+.ELSE
+! not defined - define as DEBUG
+CONFIG = DEBUG
+.ENDIF
+
+.IF $(CONFIG) .EQ DEBUG
+! debug
+OPT_Q = /DEBUG/NOOPTIMIZE/LIST=$(MMS$TARGET_NAME)
+OPT_DEF = _DEBUG
+OUT_DIR = $(OUTDIR).$(CONFIG)
+OBJ_DIR = $(OUT_DIR).OBJ
+LINKFLAGS = /DEBUG/MAP=[.$(OUT_DIR)]$(NOTDIR $(MMS$TARGET_NAME))
+PYTHON$SHR_OPT = PYTHON$SHR_DBG
+.ELSE
+! release
+OPT_Q = /NODEBUG/OPTIMIZE/NOLIST
+OPT_DEF = _NDEBUG
+OUT_DIR = $(OUTDIR).$(CONFIG)
+OBJ_DIR = $(OUT_DIR).OBJ
+LINKFLAGS = /NODEBUG/NOMAP/NOTRACEBACK
+PYTHON$SHR_OPT = PYTHON$SHR
+.ENDIF
+
+DYNLOAD_DIR = lib-dynload
+
+DYNLOADFILE = dynload_shlib
+PLATFORM = OpenVMS
+SOABI = cpython-38-ia64-openvms
+
+!PY_CFLAGS_Q = $(OPT_Q)/NAMES=(AS_IS,SHORTENED)/WARNINGS=DISABLE=(NONSTANDCAST,NOTINCRTL,MIXFUNCVOID,QUESTCOMPARE,QUESTCOMPARE1)
+PY_CFLAGS_Q = $(OPT_Q)/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL
+!PY_CXXFLAGS_Q = $(OPT_Q)/NAMES=(AS_IS,SHORTENED)/WARNINGS=DISABLE=(TRAILCOMMA,REFSTAT,NOCTOBUTCONREFM,CONPTRLOSBIT)
+
+PY_CFLAGS_DEF = $(OPT_DEF),_USE_STD_STAT,__STDC_FORMAT_MACROS
+PY_CFLAGS_INC = [],[.Include],[.Include.internal],oss$root:[include],[.vms]
+PY_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=($(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+PY_CFLAGS_OSF = $(PY_CFLAGS_Q)/DEFINE=(_OSF_SOURCE,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+PY_CFLAGS_OSF_ILE = $(PY_CFLAGS_Q)/DEFINE=(_OSF_SOURCE,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.modules.vms.ile3],$(PY_CFLAGS_INC))
+
+PY_CFLAGS_SQL = $(PY_CFLAGS)/FIRST=[.vms]vms_sqlite3_first.h
+
+PY_CFLAGS_USE_ZLIB = $(PY_CFLAGS_Q)/DEFINE=(USE_ZLIB_CRC32,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+PY_CFLAGS_EXPAT = $(PY_CFLAGS_Q)/DEFINE=(HAVE_EXPAT_CONFIG_H,XML_POOR_ENTROPY,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules.expat],$(PY_CFLAGS_INC))
+PY_CFLAGS_EXPAT_ELEM = $(PY_CFLAGS_Q)/DEFINE=(HAVE_EXPAT_CONFIG_H,USE_PYEXPAT_CAPI,XML_POOR_ENTROPY,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules.expat],$(PY_CFLAGS_INC))
+
+PY_CFLAGS_DECIMAL = $(PY_CFLAGS_Q)/DEFINE=(CONFIG_32,ANSI,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules._decimal.libmpdec],$(PY_CFLAGS_INC))
+
+PY_CFLAGS_MULT = $(PY_CFLAGS_Q)/DEFINE=($(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules._multiprocessing],$(PY_CFLAGS_INC))
+
+PY_CORE_MODULE_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE_MODULE",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+PY_CORE_BUILTIN_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE_BUILTIN",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+PY_CORE_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+GETPATH_DEF = PYTHONPATH="""""",PREFIX="""/usr/local""",EXEC_PREFIX="""/usr/local""",VERSION="""3.8""",VPATH=""""""
+PY_CORE_CFLAGS_GETPATH = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(GETPATH_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+SOABI_DEF = SOABI="""$(SOABI)"""
+PY_CORE_CFLAGS_SHLIB = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(SOABI_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+HPUX_DEF = SHLIB_EXT=""".EXE"""
+PY_CORE_CFLAGS_HPUX = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(HPUX_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+SYSMODULE_DEF = ABIFLAGS="""""",MULTIARCH="""$(SOABI)"""
+PY_CORE_CFLAGS_SYSMODULE = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(SYSMODULE_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+GETPLATFORM_DEF = PLATFORM="""$(PLATFORM)"""
+PY_CORE_CFLAGS_GETPLATFORM = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(GETPLATFORM_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+IO_INC = [.Modules._io]
+PY_CORE_BUILTIN_CFLAGS_IO = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE_BUILTIN",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC),$(IO_INC))
+
+PY_OSF_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=(_OSF_SOURCE,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC))
+
+PY_CFLAGS_DTR = $(PY_CFLAGS_Q)/DEFINE=($(PY_CFLAGS_DEF),__PYTHON)/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC),dtr$library)
+
+.FIRST
+    ! defines for nested includes, like:
+    ! #include "clinic/transmogrify.h.h"
+    define clinic [.Objects.clinic],[.Python.clinic],[.Modules.clinic],[.Modules._io.clinic],[.Modules.cjkcodecs.clinic],[.Objects.stringlib.clinic],[.Modules._blake2.clinic],[.Modules._sha3.clinic],[.Modules._multiprocessing.clinic]
+    define stringlib [.Objects.stringlib]
+    define modules [.Modules]
+    define readline oss$root:[include.readline]
+    define lzma oss$root:[include.lzma]
+    define cpython [.Include.cpython]
+    define internal [.Include.internal]
+    define _ssl [.Modules._ssl]
+    define impl [.Modules._blake2.impl]
+    define kcp  [.Modules._sha3.kcp]
+    define ctypes [.Modules._ctypes]
+    ! SWIG
+    swig :== $swig$root:[bin]swig.exe
+    ! OPENSSL 111
+    define openssl ssl111$include:
+    ! names
+    BUILD_OUT_DIR = F$ENVIRONMENT("DEFAULT")-"]"+".$(OUT_DIR).]"
+    BUILD_OBJ_DIR = F$ENVIRONMENT("DEFAULT")-"]"+".$(OBJ_DIR).]"
+    define /trans=concealed python$build_out 'BUILD_OUT_DIR'
+    define /trans=concealed python$build_obj 'BUILD_OBJ_DIR'
+    ! SQL
+    sqlmod :==  mcr sql$mod
+
+.SUFFIXES
+.SUFFIXES .EXE .OLB .OBJ .OBM .OBD .OBS .C
+
+.C.OBJ
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+.OBJ.OLB
+    @ IF F$SEARCH("$(MMS$TARGET)") .EQS. "" -
+        THEN $(LIBR)/CREATE $(MMS$TARGET)
+    $(LIBR) $(MMS$TARGET) $(MMS$SOURCE)
+
+! modules hack
+.C.OBM
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+.OBM.EXE
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+.C.OBD
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_DECIMAL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+.OBD.EXE
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+.C.OBS
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_OSF) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+.OBS.EXE
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+LIBDYNLOAD_VMS = -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_accdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_acldef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_acrdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_armdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_brkdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_capdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_chpdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ciadef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_clidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_cmbdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_cvtfnmdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dcdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_decc.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dmtdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dpsdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dscdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvsdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_efndef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_eradef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fabdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fdldef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fpdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fscndef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_iccdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ile3.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_iledef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_impdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_initdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_iodef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_issdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_jbcmsgdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_jpidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_kgbdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lckdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lib.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_libclidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_libdtdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_libfisdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lkidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lnmdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_maildef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_mntdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_nsadef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ossdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pcbdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ppropdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pqldef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prcdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prvdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prxdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pscandef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_psldef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pxbdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_quidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rabdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_regdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rms.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmsdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rsdmdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sdvdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sjcdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_statedef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_stenvdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_stsdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_syidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sys.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_uafdef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_uaidef.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rdb.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rec.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dtr.exe
+
+LIBDYNLOAD = -
+$(LIBDYNLOAD_VMS) -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_asyncio.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_bisect.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_blake2.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_bz2.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_cn.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_hk.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_iso2022.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_jp.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_kr.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_tw.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_contextvars.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_crypt.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_csv.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes_test.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_datetime.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_decimal.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_elementtree.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_gdbm.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_hashlib.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_heapq.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_json.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lsprof.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lzma.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_md5.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_multibytecodec.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_multiprocessing.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_opcode.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pickle.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixshmem.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixsubprocess.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_queue.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_random.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha1.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha256.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha3.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha512.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_socket.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sqlite3.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssl.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_statistics.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_struct.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testbuffer.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testcapi.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testimportmultiple.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testinternalcapi.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testmultiphase.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxsubinterpreters.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxtestfuzz.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]array.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]audioop.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]binascii.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]cmath.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]fcntl.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]grp.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]math.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]mmap.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]parser.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]pyexpat.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]readline.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]select.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]syslog.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]unicodedata.exe -
+[.$(OUT_DIR).$(DYNLOAD_DIR)]zlib.exe
+! [.$(OUT_DIR).$(DYNLOAD_DIR)]_uuid.exe
+
+TARGET : [.$(OUT_DIR)]python3.exe [.$(OUT_DIR)]_testembed.exe $(LIBDYNLOAD)
+    ! TARGET BUILT
+
+CLEAN :
+    del/tree [.$(OUT_DIR)...]*.*;*
+
+pyconfig.h : [.vms]pyconfig.h
+    copy [.vms]pyconfig.h []
+
+py_vms.h : [.vms]py_vms.h
+    copy [.vms]py_vms.h []
+
+IO_HEADERS = -
+[.Modules._io]_iomodule.h
+
+BYTESTR_HEADERS = -
+[.Objects.stringlib]count.h -
+[.Objects.stringlib]ctype.h -
+[.Objects.stringlib]fastsearch.h -
+[.Objects.stringlib]find.h -
+[.Objects.stringlib]join.h -
+[.Objects.stringlib]partition.h -
+[.Objects.stringlib]split.h -
+[.Objects.stringlib]stringdefs.h -
+[.Objects.stringlib]transmogrify.h
+
+UNICODE_HEADERS = -
+[.Objects.stringlib]asciilib.h -
+[.Objects.stringlib]codecs.h -
+[.Objects.stringlib]count.h -
+[.Objects.stringlib]fastsearch.h -
+[.Objects.stringlib]find.h -
+[.Objects.stringlib]find_max_char.h -
+[.Objects.stringlib]localeutil.h -
+[.Objects.stringlib]partition.h -
+[.Objects.stringlib]replace.h -
+[.Objects.stringlib]split.h -
+[.Objects.stringlib]ucs1lib.h -
+[.Objects.stringlib]ucs2lib.h -
+[.Objects.stringlib]ucs4lib.h -
+[.Objects.stringlib]undef.h -
+[.Objects.stringlib]unicode_format.h -
+[.Objects.stringlib]unicodedefs.h
+
+PARSER_HEADERS = -
+[.Include]grammar.h -
+[.Include]parsetok.h -
+[.Parser]parser.h -
+[.Parser]tokenizer.h
+
+PYTHON_HEADERS = -
+[.Include]Python.h -
+[.Include]abstract.h -
+[.Include]asdl.h -
+[.Include]ast.h -
+[.Include]bitset.h -
+[.Include]bltinmodule.h -
+[.Include]boolobject.h -
+[.Include]bytearrayobject.h -
+[.Include]bytes_methods.h -
+[.Include]bytesobject.h -
+[.Include]cellobject.h -
+[.Include]ceval.h -
+[.Include]classobject.h -
+[.Include]code.h -
+[.Include]codecs.h -
+[.Include]compile.h -
+[.Include]complexobject.h -
+[.Include]context.h -
+[.Include]descrobject.h -
+[.Include]dictobject.h -
+[.Include]dtoa.h -
+[.Include]dynamic_annotations.h -
+[.Include]enumobject.h -
+[.Include]errcode.h -
+[.Include]eval.h -
+[.Include]fileobject.h -
+[.Include]fileutils.h -
+[.Include]floatobject.h -
+[.Include]frameobject.h -
+[.Include]funcobject.h -
+[.Include]genobject.h -
+[.Include]import.h -
+[.Include]interpreteridobject.h -
+[.Include]intrcheck.h -
+[.Include]iterobject.h -
+[.Include]listobject.h -
+[.Include]longintrepr.h -
+[.Include]longobject.h -
+[.Include]marshal.h -
+[.Include]memoryobject.h -
+[.Include]methodobject.h -
+[.Include]modsupport.h -
+[.Include]moduleobject.h -
+[.Include]namespaceobject.h -
+[.Include]node.h -
+[.Include]object.h -
+[.Include]objimpl.h -
+[.Include]odictobject.h -
+[.Include]opcode.h -
+[.Include]osdefs.h -
+[.Include]osmodule.h -
+[.Include]patchlevel.h -
+[.Include]picklebufobject.h -
+[.Include]pyarena.h -
+[.Include]pycapsule.h -
+[.Include]pyctype.h -
+[.Include]pydebug.h -
+[.Include]pydtrace.h -
+[.Include]pyerrors.h -
+[.Include]pyfpe.h -
+[.Include]pyhash.h -
+[.Include]pylifecycle.h -
+[.Include]pymacconfig.h -
+[.Include]pymacro.h -
+[.Include]pymath.h -
+[.Include]pymem.h -
+[.Include]pyport.h -
+[.Include]pystate.h -
+[.Include]pystrcmp.h -
+[.Include]pystrhex.h -
+[.Include]pystrtod.h -
+[.Include]pythonrun.h -
+[.Include]pythread.h -
+[.Include]pytime.h -
+[.Include]rangeobject.h -
+[.Include]setobject.h -
+[.Include]sliceobject.h -
+[.Include]structmember.h -
+[.Include]structseq.h -
+[.Include]symtable.h -
+[.Include]sysmodule.h -
+[.Include]token.h -
+[.Include]traceback.h -
+[.Include]tracemalloc.h -
+[.Include]tupleobject.h -
+[.Include]ucnhash.h -
+[.Include]unicodeobject.h -
+[.Include]warnings.h -
+[.Include]weakrefobject.h -
+pyconfig.h -
+py_vms.h -
+$(PARSER_HEADERS) -
+[.Include]Python-ast.h -
+[.Include.cpython]abstract.h -
+[.Include.cpython]dictobject.h -
+[.Include.cpython]fileobject.h -
+[.Include.cpython]initconfig.h -
+[.Include.cpython]interpreteridobject.h -
+[.Include.cpython]object.h -
+[.Include.cpython]objimpl.h -
+[.Include.cpython]pyerrors.h -
+[.Include.cpython]pylifecycle.h -
+[.Include.cpython]pymem.h -
+[.Include.cpython]pystate.h -
+[.Include.cpython]sysmodule.h -
+[.Include.cpython]traceback.h -
+[.Include.cpython]tupleobject.h -
+[.Include.cpython]unicodeobject.h -
+[.Include.internal]pycore_accu.h -
+[.Include.internal]pycore_atomic.h -
+[.Include.internal]pycore_ceval.h -
+[.Include.internal]pycore_code.h -
+[.Include.internal]pycore_condvar.h -
+[.Include.internal]pycore_context.h -
+[.Include.internal]pycore_fileutils.h -
+[.Include.internal]pycore_getopt.h -
+[.Include.internal]pycore_gil.h -
+[.Include.internal]pycore_hamt.h -
+[.Include.internal]pycore_initconfig.h -
+[.Include.internal]pycore_object.h -
+[.Include.internal]pycore_pathconfig.h -
+[.Include.internal]pycore_pyerrors.h -
+[.Include.internal]pycore_pyhash.h -
+[.Include.internal]pycore_pylifecycle.h -
+[.Include.internal]pycore_pymem.h -
+[.Include.internal]pycore_pystate.h -
+[.Include.internal]pycore_traceback.h -
+[.Include.internal]pycore_tupleobject.h -
+[.Include.internal]pycore_warnings.h
+
+MODULE_OBJS = -
+[.$(OBJ_DIR).Modules]config.obj -
+[.$(OBJ_DIR).Modules]getpath.obj -
+[.$(OBJ_DIR).Modules]main.obj -
+[.$(OBJ_DIR).Modules]gcmodule.obj
+
+IO_OBJS = -
+[.$(OBJ_DIR).Modules._io]_iomodule.obj -
+[.$(OBJ_DIR).Modules._io]iobase.obj -
+[.$(OBJ_DIR).Modules._io]fileio.obj -
+[.$(OBJ_DIR).Modules._io]bufferedio.obj -
+[.$(OBJ_DIR).Modules._io]textio.obj -
+[.$(OBJ_DIR).Modules._io]bytesio.obj -
+[.$(OBJ_DIR).Modules._io]stringio.obj
+
+POBJS = -
+[.$(OBJ_DIR).Parser]acceler.obj -
+[.$(OBJ_DIR).Parser]grammar1.obj -
+[.$(OBJ_DIR).Parser]listnode.obj -
+[.$(OBJ_DIR).Parser]node.obj -
+[.$(OBJ_DIR).Parser]parser.obj -
+[.$(OBJ_DIR).Parser]token.obj
+
+PARSER_OBJS = $(POBJS) -
+[.$(OBJ_DIR).Parser]myreadline.obj -
+[.$(OBJ_DIR).vms]stdioreadline.obj -
+[.$(OBJ_DIR).Parser]parsetok.obj -
+[.$(OBJ_DIR).Parser]tokenizer.obj
+
+PYTHON_OBJS = -
+[.$(OBJ_DIR).Python]_warnings.obj -
+[.$(OBJ_DIR).Python]Python-ast.obj -
+[.$(OBJ_DIR).Python]asdl.obj -
+[.$(OBJ_DIR).Python]ast.obj -
+[.$(OBJ_DIR).Python]ast_opt.obj -
+[.$(OBJ_DIR).Python]ast_unparse.obj -
+[.$(OBJ_DIR).Python]bltinmodule.obj -
+[.$(OBJ_DIR).Python]ceval.obj -
+[.$(OBJ_DIR).Python]codecs.obj -
+[.$(OBJ_DIR).Python]compile.obj -
+[.$(OBJ_DIR).Python]context.obj -
+[.$(OBJ_DIR).Python]dynamic_annotations.obj -
+[.$(OBJ_DIR).Python]errors.obj -
+[.$(OBJ_DIR).Python]frozenmain.obj -
+[.$(OBJ_DIR).Python]future.obj -
+[.$(OBJ_DIR).Python]getargs.obj -
+[.$(OBJ_DIR).Python]getcompiler.obj -
+[.$(OBJ_DIR).Python]getcopyright.obj -
+[.$(OBJ_DIR).Python]getplatform.obj -
+[.$(OBJ_DIR).Python]getversion.obj -
+[.$(OBJ_DIR).Python]graminit.obj -
+[.$(OBJ_DIR).Python]hamt.obj -
+[.$(OBJ_DIR).Python]import.obj -
+[.$(OBJ_DIR).Python]importdl.obj -
+[.$(OBJ_DIR).Python]initconfig.obj -
+[.$(OBJ_DIR).Python]marshal.obj -
+[.$(OBJ_DIR).Python]modsupport.obj -
+[.$(OBJ_DIR).Python]mysnprintf.obj -
+[.$(OBJ_DIR).Python]mystrtoul.obj -
+[.$(OBJ_DIR).Python]pathconfig.obj -
+[.$(OBJ_DIR).Python]peephole.obj -
+[.$(OBJ_DIR).Python]preconfig.obj -
+[.$(OBJ_DIR).Python]pyarena.obj -
+[.$(OBJ_DIR).Python]pyctype.obj -
+[.$(OBJ_DIR).Python]pyfpe.obj -
+[.$(OBJ_DIR).Python]pyhash.obj -
+[.$(OBJ_DIR).Python]pylifecycle.obj -
+[.$(OBJ_DIR).Python]pymath.obj -
+[.$(OBJ_DIR).Python]pystate.obj -
+[.$(OBJ_DIR).Python]pythonrun.obj -
+[.$(OBJ_DIR).Python]pytime.obj -
+[.$(OBJ_DIR).Python]bootstrap_hash.obj -
+[.$(OBJ_DIR).Python]structmember.obj -
+[.$(OBJ_DIR).Python]symtable.obj -
+[.$(OBJ_DIR).Python]sysmodule.obj -
+[.$(OBJ_DIR).Python]thread.obj -
+[.$(OBJ_DIR).Python]traceback.obj -
+[.$(OBJ_DIR).Python]getopt.obj -
+[.$(OBJ_DIR).Python]pystrcmp.obj -
+[.$(OBJ_DIR).Python]pystrtod.obj -
+[.$(OBJ_DIR).Python]pystrhex.obj -
+[.$(OBJ_DIR).Python]dtoa.obj -
+[.$(OBJ_DIR).Python]formatter_unicode.obj -
+[.$(OBJ_DIR).Python]fileutils.obj -
+[.$(OBJ_DIR).Python]$(DYNLOADFILE).obj
+
+OBJECT_OBJS = -
+[.$(OBJ_DIR).Objects]abstract.obj -
+[.$(OBJ_DIR).Objects]accu.obj -
+[.$(OBJ_DIR).Objects]boolobject.obj -
+[.$(OBJ_DIR).Objects]bytes_methods.obj -
+[.$(OBJ_DIR).Objects]bytearrayobject.obj -
+[.$(OBJ_DIR).Objects]bytesobject.obj -
+[.$(OBJ_DIR).Objects]call.obj -
+[.$(OBJ_DIR).Objects]capsule.obj -
+[.$(OBJ_DIR).Objects]cellobject.obj -
+[.$(OBJ_DIR).Objects]classobject.obj -
+[.$(OBJ_DIR).Objects]codeobject.obj -
+[.$(OBJ_DIR).Objects]complexobject.obj -
+[.$(OBJ_DIR).Objects]descrobject.obj -
+[.$(OBJ_DIR).Objects]enumobject.obj -
+[.$(OBJ_DIR).Objects]exceptions.obj -
+[.$(OBJ_DIR).Objects]genobject.obj -
+[.$(OBJ_DIR).Objects]fileobject.obj -
+[.$(OBJ_DIR).Objects]floatobject.obj -
+[.$(OBJ_DIR).Objects]frameobject.obj -
+[.$(OBJ_DIR).Objects]funcobject.obj -
+[.$(OBJ_DIR).Objects]interpreteridobject.obj -
+[.$(OBJ_DIR).Objects]iterobject.obj -
+[.$(OBJ_DIR).Objects]listobject.obj -
+[.$(OBJ_DIR).Objects]longobject.obj -
+[.$(OBJ_DIR).Objects]dictobject.obj -
+[.$(OBJ_DIR).Objects]odictobject.obj -
+[.$(OBJ_DIR).Objects]memoryobject.obj -
+[.$(OBJ_DIR).Objects]methodobject.obj -
+[.$(OBJ_DIR).Objects]moduleobject.obj -
+[.$(OBJ_DIR).Objects]namespaceobject.obj -
+[.$(OBJ_DIR).Objects]object.obj -
+[.$(OBJ_DIR).Objects]obmalloc.obj -
+[.$(OBJ_DIR).Objects]picklebufobject.obj -
+[.$(OBJ_DIR).Objects]rangeobject.obj -
+[.$(OBJ_DIR).Objects]setobject.obj -
+[.$(OBJ_DIR).Objects]sliceobject.obj -
+[.$(OBJ_DIR).Objects]structseq.obj -
+[.$(OBJ_DIR).Objects]tupleobject.obj -
+[.$(OBJ_DIR).Objects]typeobject.obj -
+[.$(OBJ_DIR).Objects]unicodeobject.obj -
+[.$(OBJ_DIR).Objects]unicodectype.obj -
+[.$(OBJ_DIR).Objects]weakrefobject.obj
+
+MODOBJS = -
+[.$(OBJ_DIR).Modules]posixmodule.obj -
+[.$(OBJ_DIR).Modules]errnomodule.obj -
+[.$(OBJ_DIR).Modules]pwdmodule.obj -
+[.$(OBJ_DIR).Modules]_sre.obj -
+[.$(OBJ_DIR).Modules]_codecsmodule.obj -
+[.$(OBJ_DIR).Modules]_weakref.obj -
+[.$(OBJ_DIR).Modules]_functoolsmodule.obj -
+[.$(OBJ_DIR).Modules]_operator.obj -
+[.$(OBJ_DIR).Modules]_collectionsmodule.obj -
+[.$(OBJ_DIR).Modules]_abc.obj -
+[.$(OBJ_DIR).Modules]itertoolsmodule.obj -
+[.$(OBJ_DIR).Modules]atexitmodule.obj -
+[.$(OBJ_DIR).Modules]signalmodule.obj -
+[.$(OBJ_DIR).Modules]_stat.obj -
+[.$(OBJ_DIR).Modules]timemodule.obj -
+[.$(OBJ_DIR).Modules]_threadmodule.obj -
+[.$(OBJ_DIR).Modules]_localemodule.obj -
+[.$(OBJ_DIR).Modules._io]_iomodule.obj -
+[.$(OBJ_DIR).Modules._io]iobase.obj -
+[.$(OBJ_DIR).Modules._io]fileio.obj -
+[.$(OBJ_DIR).Modules._io]bytesio.obj -
+[.$(OBJ_DIR).Modules._io]bufferedio.obj -
+[.$(OBJ_DIR).Modules._io]textio.obj -
+[.$(OBJ_DIR).Modules._io]stringio.obj -
+[.$(OBJ_DIR).Modules]faulthandler.obj -
+[.$(OBJ_DIR).Modules]_tracemalloc.obj -
+[.$(OBJ_DIR).Modules]hashtable.obj -
+[.$(OBJ_DIR).Modules]symtablemodule.obj -
+[.$(OBJ_DIR).Modules]xxsubtype.obj
+
+LIBRARY_OBJS_OMIT_FROZEN = -
+[.$(OBJ_DIR).Modules]getbuildinfo.obj -
+[.$(OBJ_DIR).vms]vms_poll_select_hack.obj -
+$(PARSER_OBJS) -
+$(OBJECT_OBJS) -
+$(PYTHON_OBJS) -
+$(MODULE_OBJS) -
+$(MODOBJS)
+
+LIBRARY_OBJS = -
+$(LIBRARY_OBJS_OMIT_FROZEN) -
+[.$(OBJ_DIR).Python]frozen.obj
+
+DTRACE_DEPS = -
+[.$(OBJ_DIR).Python]ceval.obj -
+[.$(OBJ_DIR).Python]import.obj -
+[.$(OBJ_DIR).Python]sysmodule.obj -
+[.$(OBJ_DIR).Modules]gcmodule.obj
+
+[.$(OBJ_DIR).Modules]_math.obj : [.Modules]_math.c [.Modules]_math.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules]config.obj : [.Modules]config.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules]gcmodule.obj : [.Modules]gcmodule.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules]grpmodule.obj : [.Modules]grpmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules]main.obj : [.Modules]main.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]abstract.obj : [.Objects]abstract.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]accu.obj : [.Objects]accu.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]boolobject.obj : [.Objects]boolobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]bytearrayobject.obj : [.Objects]bytearrayobject.c $(BYTESTR_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]bytes_methods.obj : [.Objects]bytes_methods.c $(BYTESTR_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]bytesobject.obj : [.Objects]bytesobject.c $(BYTESTR_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]call.obj : [.Objects]call.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]capsule.obj : [.Objects]capsule.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]cellobject.obj : [.Objects]cellobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]classobject.obj : [.Objects]classobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]codeobject.obj : [.Objects]codeobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]complexobject.obj : [.Objects]complexobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]descrobject.obj : [.Objects]descrobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]dictobject.obj : [.Objects]dictobject.c [.Objects.stringlib]eq.h [.Objects]dict-common.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]enumobject.obj : [.Objects]enumobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]exceptions.obj : [.Objects]exceptions.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]fileobject.obj : [.Objects]fileobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]floatobject.obj : [.Objects]floatobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]frameobject.obj : [.Objects]frameobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]funcobject.obj : [.Objects]funcobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]genobject.obj : [.Objects]genobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]iterobject.obj : [.Objects]iterobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]listobject.obj : [.Objects]listobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]longobject.obj : [.Objects]longobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]memoryobject.obj : [.Objects]memoryobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]methodobject.obj : [.Objects]methodobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]moduleobject.obj : [.Objects]moduleobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]namespaceobject.obj : [.Objects]namespaceobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]object.obj : [.Objects]object.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]obmalloc.obj : [.Objects]obmalloc.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]odictobject.obj : [.Objects]odictobject.c [.Objects]dict-common.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]picklebufobject.obj : [.Objects]picklebufobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]rangeobject.obj : [.Objects]rangeobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]setobject.obj : [.Objects]setobject.c [.Objects.stringlib]eq.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]sliceobject.obj : [.Objects]sliceobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]structseq.obj : [.Objects]structseq.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]tupleobject.obj : [.Objects]tupleobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]typeobject.obj : [.Objects]typeobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]unicodectype.obj : [.Objects]unicodectype.c [.Objects]unicodetype_db.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]unicodeobject.obj : [.Objects]unicodeobject.c $(UNICODE_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Objects]weakrefobject.obj : [.Objects]weakrefobject.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]acceler.obj : [.Parser]acceler.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]grammar1.obj : [.Parser]grammar1.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]listnode.obj : [.Parser]listnode.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]myreadline.obj : [.Parser]myreadline.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]node.obj : [.Parser]node.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]parser.obj : [.Parser]parser.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]parsetok.obj : [.Parser]parsetok.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]token.obj : [.Parser]token.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Parser]tokenizer.obj : [.Parser]tokenizer.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Programs]_freeze_importlib.obj : [.Programs]_freeze_importlib.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Programs]python.obj : [.Programs]python.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]Python-ast.obj : [.Python]Python-ast.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]_warnings.obj : [.Python]_warnings.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]asdl.obj : [.Python]asdl.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]ast.obj : [.Python]ast.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]ast_opt.obj : [.Python]ast_opt.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]ast_unparse.obj : [.Python]ast_unparse.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]bltinmodule.obj : [.Python]bltinmodule.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]bootstrap_hash.obj : [.Python]bootstrap_hash.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]ceval.obj : [.Python]ceval.c [.Python]opcode_targets.h [.Python]ceval_gil.h [.Python]condvar.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]codecs.obj : [.Python]codecs.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]compile.obj : [.Python]compile.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]context.obj : [.Python]context.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]dtoa.obj : [.Python]dtoa.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]dynamic_annotations.obj : [.Python]dynamic_annotations.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]errors.obj : [.Python]errors.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]fileutils.obj : [.Python]fileutils.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]formatter_unicode.obj : [.Python]formatter_unicode.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]frozen.obj : [.Python]frozen.c [.Python]importlib.h [.Python]importlib_external.h [.Python]importlib_zipimport.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]frozenmain.obj : [.Python]frozenmain.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]future.obj : [.Python]future.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]getargs.obj : [.Python]getargs.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]getcompiler.obj : [.Python]getcompiler.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]getcopyright.obj : [.Python]getcopyright.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]getopt.obj : [.Python]getopt.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]getversion.obj : [.Python]getversion.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]graminit.obj : [.Python]graminit.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]hamt.obj : [.Python]hamt.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]import.obj : [.Python]import.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]importdl.obj : [.Python]importdl.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]initconfig.obj : [.Python]initconfig.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]marshal.obj : [.Python]marshal.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]modsupport.obj : [.Python]modsupport.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]mysnprintf.obj : [.Python]mysnprintf.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]mystrtoul.obj : [.Python]mystrtoul.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pathconfig.obj : [.Python]pathconfig.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]peephole.obj : [.Python]peephole.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]preconfig.obj : [.Python]preconfig.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pyarena.obj : [.Python]pyarena.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pyctype.obj : [.Python]pyctype.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pyfpe.obj : [.Python]pyfpe.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pyhash.obj : [.Python]pyhash.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pylifecycle.obj : [.Python]pylifecycle.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pymath.obj : [.Python]pymath.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pystate.obj : [.Python]pystate.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pystrcmp.obj : [.Python]pystrcmp.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pystrhex.obj : [.Python]pystrhex.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pystrtod.obj : [.Python]pystrtod.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pythonrun.obj : [.Python]pythonrun.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]pytime.obj : [.Python]pytime.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]structmember.obj : [.Python]structmember.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]symtable.obj : [.Python]symtable.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]thread.obj : [.Python]thread.c [.Python]thread_nt.h [.Python]thread_pthread.h [.Python]condvar.h $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Python]traceback.obj : [.Python]traceback.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).vms]vms_crtl_init.obj : [.vms]vms_crtl_init.c
+[.$(OBJ_DIR).vms]stdioreadline.obj : [.vms]stdioreadline.c
+[.$(OBJ_DIR).vms]vms_poll_select_hack.obj : [.vms]vms_poll_select_hack.c
+
+[.$(OBJ_DIR).Objects]interpreteridobject.obj : [.Objects]interpreteridobject.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Programs]_testembed.obj : [.Programs]_testembed.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+! no git info, just dependency
+[.$(OBJ_DIR).Modules]getbuildinfo.obj : [.Modules]getbuildinfo.c $(PYTHON_HEADERS) -
+    $(PARSER_OBJS) -
+    $(OBJECT_OBJS) -
+    $(PYTHON_OBJS) -
+    $(MODULE_OBJS) -
+    $(MODOBJS)
+
+[.$(OBJ_DIR).Modules]getpath.obj : [.Modules]getpath.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+	$(CC) $(PY_CORE_CFLAGS_GETPATH) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Python]dynload_shlib.obj : [.Python]dynload_shlib.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS_SHLIB) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Python]dynload_hpux.obj : [.Python]dynload_hpux.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS_HPUX) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Python]sysmodule.obj : [.Python]sysmodule.c [.Include]pydtrace.h $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS_SYSMODULE) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Python]getplatform.obj : [.Python]getplatform.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_CFLAGS_GETPLATFORM) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+! PY_CORE_BUILTIN_CFLAGS
+
+[.$(OBJ_DIR).Modules]posixmodule.obj : [.Modules]posixmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]errnomodule.obj : [.Modules]errnomodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]pwdmodule.obj : [.Modules]pwdmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_sre.obj : [.Modules]_sre.c [.Modules]sre.h [.Modules]sre_constants.h [.Modules]sre_lib.h $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_codecsmodule.obj : [.Modules]_codecsmodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_weakref.obj : [.Modules]_weakref.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_functoolsmodule.obj : [.Modules]_functoolsmodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_operator.obj : [.Modules]_operator.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_collectionsmodule.obj : [.Modules]_collectionsmodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_abc.obj : [.Modules]_abc.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]itertoolsmodule.obj : [.Modules]itertoolsmodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]atexitmodule.obj : [.Modules]atexitmodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]signalmodule.obj : [.Modules]signalmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_stat.obj : [.Modules]_stat.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]timemodule.obj : [.Modules]timemodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_threadmodule.obj : [.Modules]_threadmodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_localemodule.obj : [.Modules]_localemodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+! _io
+
+[.$(OBJ_DIR).Modules._io]_iomodule.obj : [.Modules._io]_iomodule.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._io]iobase.obj : [.Modules._io]iobase.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._io]fileio.obj : [.Modules._io]fileio.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._io]bytesio.obj : [.Modules._io]bytesio.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._io]bufferedio.obj : [.Modules._io]bufferedio.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._io]textio.obj : [.Modules._io]textio.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._io]stringio.obj : [.Modules._io]stringio.c $(IO_HEADERS) $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]faulthandler.obj : [.Modules]faulthandler.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]_tracemalloc.obj : [.Modules]_tracemalloc.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]hashtable.obj : [.Modules]hashtable.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]symtablemodule.obj : [.Modules]symtablemodule.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules]xxsubtype.obj : [.Modules]xxsubtype.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+! python$shr.exe
+[.$(OUT_DIR)]python$shr.exe : [.$(OUT_DIR)]libpython3^.8.olb
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE [.opt]$(PYTHON$SHR_OPT).opt/OPT
+
+! python3.exe
+[.$(OUT_DIR)]python3.exe : [.$(OBJ_DIR).Programs]python.obj,[.$(OBJ_DIR).vms]vms_crtl_init.obj,[.$(OUT_DIR)]python$shr.exe
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/THREADS/EXECUTABLE=python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE [.$(OBJ_DIR).vms]vms_crtl_init.obj,[.$(OBJ_DIR).Programs]python.obj,[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+    ! [.$(OUT_DIR)]python3.exe is built => python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE
+
+! _testembed.exe
+[.$(OUT_DIR)]_testembed.exe : [.$(OBJ_DIR).Programs]_testembed.obj,[.$(OUT_DIR)]python$shr.exe
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/EXECUTABLE=python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! libpython3^.8.olb
+[.$(OUT_DIR)]libpython3^.8.olb : [.$(OUT_DIR)]libpython3^.8.olb($(LIBRARY_OBJS))
+    continue
+
+! _freeze_importlib
+[.$(OUT_DIR).Programs]_freeze_importlib.exe : [.$(OBJ_DIR).Programs]_freeze_importlib.obj $(LIBRARY_OBJS_OMIT_FROZEN)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)/NODEBUG/NOMAP/EXECUTABLE=python$build_out:[Programs]$(NOTDIR $(MMS$TARGET_NAME)).EXE [.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.Python]importlib_external.h : [.Lib.importlib]_bootstrap_external.py [.$(OUT_DIR).Programs]_freeze_importlib.exe
+    mcr [.$(OUT_DIR).Programs]_freeze_importlib.exe importlib._bootstrap_external Lib/importlib/_bootstrap_external.py Python/importlib_external.h
+
+[.Python]importlib.h : [.Lib.importlib]_bootstrap.py [.$(OUT_DIR).Programs]_freeze_importlib.exe
+    mcr [.$(OUT_DIR).Programs]_freeze_importlib.exe importlib._bootstrap Lib/importlib/_bootstrap.py Python/importlib.h
+
+[.Python]importlib_zipimport.h : [.Lib]zipimport.py [.$(OUT_DIR).Programs]_freeze_importlib.exe
+    mcr [.$(OUT_DIR).Programs]_freeze_importlib.exe zipimport Lib/zipimport.py Python/importlib_zipimport.h
+
+! _struct
+[.$(OBJ_DIR).Modules]_struct.obm : [.Modules]_struct.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_struct.exe : [.$(OBJ_DIR).Modules]_struct.obm
+
+! array
+[.$(OBJ_DIR).Modules]arraymodule.obm : [.Modules]arraymodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]array.exe : [.$(OBJ_DIR).Modules]arraymodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _contextvars
+[.$(OBJ_DIR).Modules]_contextvarsmodule.obm : [.Modules]_contextvarsmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_contextvars.exe : [.$(OBJ_DIR).Modules]_contextvarsmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! math mathmodule
+[.$(OBJ_DIR).Modules]mathmodule.obm : [.Modules]mathmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]math.exe : [.$(OBJ_DIR).Modules]mathmodule.obm, [.$(OBJ_DIR).Modules]_math.obj
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! cmath cmathmodule
+[.$(OBJ_DIR).Modules]cmathmodule.obm : [.Modules]cmathmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]cmath.exe : [.$(OBJ_DIR).Modules]cmathmodule.obm, [.$(OBJ_DIR).Modules]_math.obj
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _datetime _datetimemodule
+[.$(OBJ_DIR).Modules]_datetimemodule.obm : [.Modules]_datetimemodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_datetime.exe : [.$(OBJ_DIR).Modules]_datetimemodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _random _randommodule
+[.$(OBJ_DIR).Modules]_randommodule.obm : [.Modules]_randommodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_random.exe : [.$(OBJ_DIR).Modules]_randommodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _bisect _bisectmodule
+[.$(OBJ_DIR).Modules]_bisectmodule.obm : [.Modules]_bisectmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_bisect.exe : [.$(OBJ_DIR).Modules]_bisectmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _heapq _heapqmodule
+[.$(OBJ_DIR).Modules]_heapqmodule.obm : [.Modules]_heapqmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_heapq.exe : [.$(OBJ_DIR).Modules]_heapqmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _pickle _pickle
+[.$(OBJ_DIR).Modules]_pickle.obm : [.Modules]_pickle.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_MODULE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pickle.exe : [.$(OBJ_DIR).Modules]_pickle.obm
+
+! _json _json
+[.$(OBJ_DIR).Modules]_json.obm : [.Modules]_json.c $(PYTHON_HEADERS)
+  @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_MODULE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_json.exe : [.$(OBJ_DIR).Modules]_json.obm
+
+! _lsprof _lsprof rotatingtree
+[.$(OBJ_DIR).Modules]_lsprof.obm : [.Modules]_lsprof.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules]rotatingtree.obm : [.Modules]rotatingtree.c
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lsprof.exe : [.$(OBJ_DIR).Modules]_lsprof.obm,[.$(OBJ_DIR).Modules]rotatingtree.obm
+
+! unicodedata unicodedata
+[.$(OBJ_DIR).Modules]unicodedata.obm : [.Modules]unicodedata.c,[.Modules]unicodedata_db.h,[.Modules]unicodename_db.h,$(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]unicodedata.exe : [.$(OBJ_DIR).Modules]unicodedata.obm
+
+! _opcode _opcode
+[.$(OBJ_DIR).Modules]_opcode.obm : [.Modules]_opcode.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_opcode.exe : [.$(OBJ_DIR).Modules]_opcode.obm
+
+! _asyncio _asynciomodule
+[.$(OBJ_DIR).Modules]_asynciomodule.obm : [.Modules]_asynciomodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_asyncio.exe : [.$(OBJ_DIR).Modules]_asynciomodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _queue _queuemodule
+[.$(OBJ_DIR).Modules]_queuemodule.obm : [.Modules]_queuemodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_queue.exe : [.$(OBJ_DIR).Modules]_queuemodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _statistics _statisticsmodule
+[.$(OBJ_DIR).Modules]_statisticsmodule.obm : [.Modules]_statisticsmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_statistics.exe : [.$(OBJ_DIR).Modules]_statisticsmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! fcntl fcntlmodule
+[.$(OBJ_DIR).Modules]fcntlmodule.obm : [.Modules]fcntlmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]fcntl.exe : [.$(OBJ_DIR).Modules]fcntlmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! grp grpmodule
+[.$(OBJ_DIR).Modules]grpmodule.obm : [.Modules]grpmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]grp.exe : [.$(OBJ_DIR).Modules]grpmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! select selectmodule
+[.$(OBJ_DIR).Modules]selectmodule.obm : [.Modules]selectmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]select.exe : [.$(OBJ_DIR).Modules]selectmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! parser parsermodule
+[.$(OBJ_DIR).Modules]parsermodule.obm : [.Modules]parsermodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]parser.exe : [.$(OBJ_DIR).Modules]parsermodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! mmap mmapmodule
+[.$(OBJ_DIR).Modules]mmapmodule.obm : [.Modules]mmapmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]mmap.exe : [.$(OBJ_DIR).Modules]mmapmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! syslog syslogmodule [vms]syslog
+[.$(OBJ_DIR).vms]syslog.obm : [.vms]syslog.c [.vms]syslog.h
+[.$(OBJ_DIR).Modules]syslogmodule.obm : [.Modules]syslogmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]syslog.exe : [.$(OBJ_DIR).vms]syslog.obm,[.$(OBJ_DIR).Modules]syslogmodule.obm
+
+! _xxsubinterpreters _xxsubinterpretersmodule
+[.$(OBJ_DIR).Modules]_xxsubinterpretersmodule.obm : [.Modules]_xxsubinterpretersmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxsubinterpreters.exe : [.$(OBJ_DIR).Modules]_xxsubinterpretersmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! audioop audioop
+[.$(OBJ_DIR).Modules]audioop.obm : [.Modules]audioop.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]audioop.exe : [.$(OBJ_DIR).Modules]audioop.obm
+
+! _csv _csv
+[.$(OBJ_DIR).Modules]_csv.obm : [.Modules]_csv.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_csv.exe : [.$(OBJ_DIR).Modules]_csv.obm
+
+! _posixsubprocess _posixsubprocess
+[.$(OBJ_DIR).Modules]_posixsubprocess.obm : [.Modules]_posixsubprocess.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixsubprocess.exe : [.$(OBJ_DIR).Modules]_posixsubprocess.obm
+
+! _testcapi _testcapimodule
+[.$(OBJ_DIR).Modules]_testcapimodule.obm : [.Modules]_testcapimodule.c [.Modules]testcapi_long.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testcapi.exe : [.$(OBJ_DIR).Modules]_testcapimodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _testinternalcapi _testinternalcapi
+[.$(OBJ_DIR).Modules]_testinternalcapi.obm : [.Modules]_testinternalcapi.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CORE_MODULE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testinternalcapi.exe : [.$(OBJ_DIR).Modules]_testinternalcapi.obm
+
+! _testbuffer _testbuffer
+[.$(OBJ_DIR).Modules]_testbuffer.obm : [.Modules]_testbuffer.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testbuffer.exe : [.$(OBJ_DIR).Modules]_testbuffer.obm
+
+! _testimportmultiple _testimportmultiple
+[.$(OBJ_DIR).Modules]_testimportmultiple.obm : [.Modules]_testimportmultiple.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testimportmultiple.exe : [.$(OBJ_DIR).Modules]_testimportmultiple.obm
+
+! _testmultiphase _testmultiphase
+[.$(OBJ_DIR).Modules]_testmultiphase.obm : [.Modules]_testmultiphase.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_testmultiphase.exe : [.$(OBJ_DIR).Modules]_testmultiphase.obm
+
+! _xxtestfuzz [_xxtestfuzz]_xxtestfuzz [_xxtestfuzz]fuzzer
+[.$(OBJ_DIR).Modules._xxtestfuzz]_xxtestfuzz.obm : [.Modules._xxtestfuzz]_xxtestfuzz.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._xxtestfuzz]fuzzer.obm : [.Modules._xxtestfuzz]fuzzer.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxtestfuzz.exe : [.$(OBJ_DIR).Modules._xxtestfuzz]_xxtestfuzz.obm,[.$(OBJ_DIR).Modules._xxtestfuzz]fuzzer.obm
+
+! readline readline
+[.$(OBJ_DIR).Modules]readline.obm : [.Modules]readline.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]readline.exe : [.$(OBJ_DIR).Modules]readline.obm
+
+! _crypt _cryptmodule
+[.$(OBJ_DIR).Modules]_cryptmodule.obm : [.Modules]_cryptmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_crypt.exe : [.$(OBJ_DIR).Modules]_cryptmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _socket socketmodule
+[.$(OBJ_DIR).Modules]socketmodule.obm : [.Modules]socketmodule.c [.Modules]socketmodule.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_socket.exe : [.$(OBJ_DIR).Modules]socketmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _gdbm _gdbmmodule
+[.$(OBJ_DIR).Modules]_gdbmmodule.obm : [.Modules]_gdbmmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_gdbm.exe : [.$(OBJ_DIR).Modules]_gdbmmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _sqlite3
+SQL_OBJ_LIST = -
+[.$(OBJ_DIR).Modules._sqlite]cache.obm -
+[.$(OBJ_DIR).Modules._sqlite]connection.obm -
+[.$(OBJ_DIR).Modules._sqlite]cursor.obm -
+[.$(OBJ_DIR).Modules._sqlite]microprotocols.obm -
+[.$(OBJ_DIR).Modules._sqlite]module.obm -
+[.$(OBJ_DIR).Modules._sqlite]prepare_protocol.obm -
+[.$(OBJ_DIR).Modules._sqlite]row.obm -
+[.$(OBJ_DIR).Modules._sqlite]statement.obm -
+[.$(OBJ_DIR).Modules._sqlite]util.obm
+
+[.$(OBJ_DIR).Modules._sqlite]cache.obm : [.Modules._sqlite]cache.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]connection.obm : [.Modules._sqlite]connection.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]cursor.obm : [.Modules._sqlite]cursor.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]microprotocols.obm : [.Modules._sqlite]microprotocols.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]module.obm : [.Modules._sqlite]module.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]prepare_protocol.obm : [.Modules._sqlite]prepare_protocol.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]row.obm : [.Modules._sqlite]row.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]statement.obm : [.Modules._sqlite]statement.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._sqlite]util.obm : [.Modules._sqlite]util.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sqlite3.exe : $(SQL_OBJ_LIST)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! zlib zlibmodule
+[.$(OBJ_DIR).Modules]zlibmodule.obm : [.Modules]zlibmodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]zlib.exe : [.$(OBJ_DIR).Modules]zlibmodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! binascii binascii
+[.$(OBJ_DIR).Modules]binascii.obm : [.Modules]binascii.c $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_USE_ZLIB) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]binascii.exe : [.$(OBJ_DIR).Modules]binascii.obm
+
+! _bz2 _bz2module
+[.$(OBJ_DIR).Modules]_bz2module.obm : [.Modules]_bz2module.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_bz2.exe : [.$(OBJ_DIR).Modules]_bz2module.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _lzma _lzmamodule
+[.$(OBJ_DIR).Modules]_lzmamodule.obm : [.Modules]_lzmamodule.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lzma.exe : [.$(OBJ_DIR).Modules]_lzmamodule.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! pyexpat
+EXPAT_OBJ_LIST = -
+[.$(OBJ_DIR).Modules.expat]xmlparse.obm -
+[.$(OBJ_DIR).Modules.expat]xmlrole.obm -
+[.$(OBJ_DIR).Modules.expat]xmltok.obm
+
+EXPAT_HEADERS = -
+[.Modules.expat]ascii.h -
+[.Modules.expat]asciitab.h -
+[.Modules.expat]expat.h -
+[.Modules.expat]expat_config.h -
+[.Modules.expat]expat_external.h -
+[.Modules.expat]internal.h -
+[.Modules.expat]latin1tab.h -
+[.Modules.expat]utf8tab.h -
+[.Modules.expat]xmlrole.h -
+[.Modules.expat]xmltok.h -
+[.Modules.expat]xmltok_impl.h
+
+[.$(OBJ_DIR).Modules]pyexpat.obm : [.Modules]pyexpat.c $(EXPAT_HEADERS) $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules.expat]xmlparse.obm : [.Modules.expat]xmlparse.c $(EXPAT_HEADERS) $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules.expat]xmlrole.obm : [.Modules.expat]xmlrole.c $(EXPAT_HEADERS) $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules.expat]xmltok.obm : [.Modules.expat]xmltok.c $(EXPAT_HEADERS) $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]pyexpat.exe : [.$(OBJ_DIR).Modules]pyexpat.obm,$(EXPAT_OBJ_LIST)
+
+! _elementtree _elementtree
+[.$(OBJ_DIR).Modules]_elementtree.obm : [.Modules]_elementtree.c $(EXPAT_HEADERS) $(PYTHON_HEADERS) [.$(OUT_DIR).$(DYNLOAD_DIR)]pyexpat.exe
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_EXPAT_ELEM) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_elementtree.exe : [.$(OBJ_DIR).Modules]_elementtree.obm
+
+! _multibytecodec cjkcodecs/multibytecodec.c
+[.$(OBJ_DIR).Modules.cjkcodecs]multibytecodec.obm : [.Modules.cjkcodecs]multibytecodec.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_multibytecodec.exe : [.$(OBJ_DIR).Modules.cjkcodecs]multibytecodec.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _codecs_kr cjkcodecs/_codecs_kr.c
+[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_kr.obm : [.Modules.cjkcodecs]_codecs_kr.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_kr.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_kr.obm
+
+! _codecs_jp cjkcodecs/_codecs_jp.c
+[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_jp.obm : [.Modules.cjkcodecs]_codecs_jp.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_jp.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_jp.obm
+
+! _codecs_cn cjkcodecs/_codecs_cn.c
+[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_cn.obm : [.Modules.cjkcodecs]_codecs_cn.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_cn.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_cn.obm
+
+! _codecs_tw cjkcodecs/_codecs_tw.c
+[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_tw.obm : [.Modules.cjkcodecs]_codecs_tw.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_tw.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_tw.obm
+
+! _codecs_hk cjkcodecs/_codecs_hk.c
+[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_hk.obm : [.Modules.cjkcodecs]_codecs_hk.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_hk.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_hk.obm
+
+! _codecs_iso2022 cjkcodecs/_codecs_iso2022.c
+[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_iso2022.obm : [.Modules.cjkcodecs]_codecs_iso2022.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_iso2022.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_iso2022.obm
+
+! _multiprocessing
+[.$(OBJ_DIR).Modules._multiprocessing]multiprocessing.obm : [.Modules._multiprocessing]multiprocessing.c [.Modules._multiprocessing]multiprocessing.h $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_MULT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).Modules._multiprocessing]semaphore.obm : [.Modules._multiprocessing]semaphore.c [.Modules._multiprocessing]multiprocessing.h $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_MULT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_multiprocessing.exe : [.$(OBJ_DIR).Modules._multiprocessing]multiprocessing.obm,[.$(OBJ_DIR).Modules._multiprocessing]semaphore.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _posixshmem
+[.$(OBJ_DIR).Modules._multiprocessing]posixshmem.obm : [.Modules._multiprocessing]posixshmem.c [.Modules._multiprocessing]multiprocessing.h $(PYTHON_HEADERS)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC) $(PY_CFLAGS_MULT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixshmem.exe : [.$(OBJ_DIR).Modules._multiprocessing]posixshmem.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! ! _uuid _uuidmodule
+! [.$(OBJ_DIR).Modules]_uuidmodule.obm : [.Modules]_uuidmodule.c $(PYTHON_HEADERS)
+! [.$(OUT_DIR).$(DYNLOAD_DIR)]_uuid.exe : [.$(OBJ_DIR).Modules]_uuidmodule.obm
+!     @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+!     $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _ctypes
+CTYPES_OBJ_LIST = -
+[.$(OBJ_DIR).Modules._ctypes]callbacks.obm -
+[.$(OBJ_DIR).Modules._ctypes]callproc.obm -
+[.$(OBJ_DIR).Modules._ctypes]stgdict.obm -
+[.$(OBJ_DIR).Modules._ctypes]cfield.obm
+
+CTYPES_HEADERS = -
+[.Modules._ctypes]ctypes.h
+
+[.$(OBJ_DIR).Modules._ctypes]_ctypes.obm : [.Modules._ctypes]_ctypes.c $(CTYPES_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._ctypes]callbacks.obm : [.Modules._ctypes]callbacks.c $(CTYPES_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._ctypes]stgdict.obm : [.Modules._ctypes]stgdict.c $(CTYPES_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._ctypes]callproc.obm : [.Modules._ctypes]callproc.c $(CTYPES_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._ctypes]cfield.obm : [.Modules._ctypes]cfield.c $(CTYPES_HEADERS) $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes.exe : [.$(OBJ_DIR).Modules._ctypes]_ctypes.obm,$(CTYPES_OBJ_LIST)
+
+! _ctypes_test _ctypes_test
+[.$(OBJ_DIR).Modules._ctypes]_ctypes_test.obm : [.Modules._ctypes]_ctypes_test.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes_test.exe : [.$(OBJ_DIR).Modules._ctypes]_ctypes_test.obm
+
+! _decimal
+DECIMAL_OBJ_LIST = -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]basearith.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]constants.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]context.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]convolute.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]crt.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]difradix2.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]fnt.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]fourstep.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]io.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]memory.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]mpdecimal.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]numbertheory.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]sixstep.obd -
+[.$(OBJ_DIR).Modules._decimal.libmpdec]transpose.obd
+
+DECIMAL_HEADERS = -
+[.Modules._decimal]docstrings.h -
+[.Modules._decimal.libmpdec]basearith.h -
+[.Modules._decimal.libmpdec]bits.h -
+[.Modules._decimal.libmpdec]constants.h -
+[.Modules._decimal.libmpdec]convolute.h -
+[.Modules._decimal.libmpdec]crt.h -
+[.Modules._decimal.libmpdec]difradix2.h -
+[.Modules._decimal.libmpdec]fnt.h -
+[.Modules._decimal.libmpdec]fourstep.h -
+[.Modules._decimal.libmpdec]io.h -
+[.Modules._decimal.libmpdec]mpalloc.h -
+[.Modules._decimal.libmpdec]mpdecimal.h -
+[.Modules._decimal.libmpdec]numbertheory.h -
+[.Modules._decimal.libmpdec]sixstep.h -
+[.Modules._decimal.libmpdec]transpose.h -
+[.Modules._decimal.libmpdec]typearith.h -
+[.Modules._decimal.libmpdec]umodarith.h
+
+[.$(OBJ_DIR).Modules._decimal]_decimal.obd : [.Modules._decimal]_decimal.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]basearith.obd : [.Modules._decimal.libmpdec]basearith.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]constants.obd : [.Modules._decimal.libmpdec]constants.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]context.obd : [.Modules._decimal.libmpdec]context.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]convolute.obd : [.Modules._decimal.libmpdec]convolute.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]crt.obd : [.Modules._decimal.libmpdec]crt.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]difradix2.obd : [.Modules._decimal.libmpdec]difradix2.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]fnt.obd : [.Modules._decimal.libmpdec]fnt.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]fourstep.obd : [.Modules._decimal.libmpdec]fourstep.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]io.obd : [.Modules._decimal.libmpdec]io.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]memory.obd : [.Modules._decimal.libmpdec]memory.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]mpdecimal.obd : [.Modules._decimal.libmpdec]mpdecimal.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]numbertheory.obd : [.Modules._decimal.libmpdec]numbertheory.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]sixstep.obd : [.Modules._decimal.libmpdec]sixstep.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._decimal.libmpdec]transpose.obd : [.Modules._decimal.libmpdec]transpose.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_decimal.exe : [.$(OBJ_DIR).Modules._decimal]_decimal.obd,$(DECIMAL_OBJ_LIST)
+
+! _ssl
+[.$(OBJ_DIR).Modules]_ssl.obm : [.Modules]_ssl.c [.Modules]socketmodule.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssl.exe : [.$(OBJ_DIR).Modules]_ssl.obm
+
+! _hashlib _hashopenssl
+[.$(OBJ_DIR).Modules]_hashopenssl.obm : [.Modules]_hashopenssl.c [.Modules]hashlib.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_hashlib.exe : [.$(OBJ_DIR).Modules]_hashopenssl.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _sha256 sha256module
+[.$(OBJ_DIR).Modules]sha256module.obm : [.Modules]sha256module.c [.Modules]hashlib.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha256.exe : [.$(OBJ_DIR).Modules]sha256module.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _sha512 sha512module
+[.$(OBJ_DIR).Modules]sha512module.obm : [.Modules]sha512module.c [.Modules]hashlib.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha512.exe : [.$(OBJ_DIR).Modules]sha512module.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _md5 md5module
+[.$(OBJ_DIR).Modules]md5module.obm : [.Modules]md5module.c [.Modules]hashlib.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_md5.exe : [.$(OBJ_DIR).Modules]md5module.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _sha1 sha1module
+[.$(OBJ_DIR).Modules]sha1module.obm : [.Modules]sha1module.c [.Modules]hashlib.h $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha1.exe : [.$(OBJ_DIR).Modules]sha1module.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _blake2 modulesource
+BLAKE2_OBJ_LIST = -
+[.$(OBJ_DIR).Modules._blake2]blake2module.obm -
+[.$(OBJ_DIR).Modules._blake2]blake2b_impl.obm -
+[.$(OBJ_DIR).Modules._blake2]blake2s_impl.obm
+
+BLAKE2_HEADERS = -
+[.Modules._blake2.impl]blake2-config.h -
+[.Modules._blake2.impl]blake2-dispatch.c -
+[.Modules._blake2.impl]blake2-impl.h -
+[.Modules._blake2.impl]blake2-kat.h -
+[.Modules._blake2.impl]blake2.h -
+[.Modules._blake2.impl]blake2b-load-sse2.h -
+[.Modules._blake2.impl]blake2b-load-sse41.h -
+[.Modules._blake2.impl]blake2b-ref.c -
+[.Modules._blake2.impl]blake2b-round.h -
+[.Modules._blake2.impl]blake2b-test.c -
+[.Modules._blake2.impl]blake2b.c -
+[.Modules._blake2.impl]blake2bp-test.c -
+[.Modules._blake2.impl]blake2bp.c -
+[.Modules._blake2.impl]blake2s-load-sse2.h -
+[.Modules._blake2.impl]blake2s-load-sse41.h -
+[.Modules._blake2.impl]blake2s-load-xop.h -
+[.Modules._blake2.impl]blake2s-ref.c -
+[.Modules._blake2.impl]blake2s-round.h -
+[.Modules._blake2.impl]blake2s-test.c -
+[.Modules._blake2.impl]blake2s.c -
+[.Modules._blake2.impl]blake2sp-test.c -
+[.Modules._blake2.impl]blake2sp.c -
+[.Modules]hashlib.h
+
+[.$(OBJ_DIR).Modules._blake2]blake2module.obm : [.Modules._blake2]blake2module.c $(BLAKE2_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._blake2]blake2b_impl.obm : [.Modules._blake2]blake2b_impl.c $(BLAKE2_HEADERS) $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules._blake2]blake2s_impl.obm : [.Modules._blake2]blake2s_impl.c $(BLAKE2_HEADERS) $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_blake2.exe : $(BLAKE2_OBJ_LIST)
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! _sha3
+SHA3_HEADERS = -
+[.Modules._sha3.kcp]align.h -
+[.Modules._sha3.kcp]KeccakHash.c -
+[.Modules._sha3.kcp]KeccakHash.h -
+[.Modules._sha3.kcp]KeccakP-1600-64.macros -
+[.Modules._sha3.kcp]KeccakP-1600-inplace32BI.c -
+[.Modules._sha3.kcp]KeccakP-1600-opt64-config.h -
+[.Modules._sha3.kcp]KeccakP-1600-opt64.c -
+[.Modules._sha3.kcp]KeccakP-1600-SnP-opt32.h -
+[.Modules._sha3.kcp]KeccakP-1600-SnP-opt64.h -
+[.Modules._sha3.kcp]KeccakP-1600-SnP.h -
+[.Modules._sha3.kcp]KeccakP-1600-unrolling.macros -
+[.Modules._sha3.kcp]KeccakSponge.c -
+[.Modules._sha3.kcp]KeccakSponge.h -
+[.Modules._sha3.kcp]KeccakSponge.inc -
+[.Modules._sha3.kcp]PlSnP-Fallback.inc -
+[.Modules._sha3.kcp]SnP-Relaned.h -
+[.Modules]hashlib.h
+
+[.$(OBJ_DIR).Modules._sha3]sha3module.obm : [.Modules._sha3]sha3module.c $(SHA3_HEADERS) $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha3.exe : [.$(OBJ_DIR).Modules._sha3]sha3module.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+!! modulename modulesource
+! [.$(OBJ_DIR).Modules]modulesource.obm : [.Modules]modulesource.c $(PYTHON_HEADERS)
+! [.$(OUT_DIR).$(DYNLOAD_DIR)]modulename.exe : [.$(OBJ_DIR).Modules]modulesource.obm
+!     @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+!     $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+!SWIG ============================================================
+
+[.Modules.vms.decc]decc_wrap.c : [.Modules.vms.decc]decc.i
+    SWIG -python modules/vms/decc/decc.i
+    purge [.modules.vms.decc]decc_wrap.c
+
+[.$(OBJ_DIR).Modules.vms.decc]decc_wrap.obm : [.Modules.vms.decc]decc_wrap.c $(PYTHON_HEADERS)
+[.$(OBJ_DIR).Modules.vms.decc]decc.obm : [.Modules.vms.decc]decc.c $(PYTHON_HEADERS)
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_decc.exe : [.$(OBJ_DIR).Modules.vms.decc]decc_wrap.obm,[.$(OBJ_DIR).Modules.vms.decc]decc.obm
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.jpidef]jpidef_wrap.c : [.modules.vms.jpidef]jpidef.i
+    SWIG -python modules/vms/jpidef/jpidef.i
+    purge [.modules.vms.jpidef]jpidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.jpidef]jpidef_wrap.obs : [.modules.vms.jpidef]jpidef_wrap.c
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_jpidef.exe : [.$(OBJ_DIR).modules.vms.jpidef]jpidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.syidef]syidef_wrap.c : [.modules.vms.syidef]syidef.i
+    SWIG -python modules/vms/syidef/syidef.i
+    purge [.modules.vms.syidef]syidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.syidef]syidef_wrap.obs : [.modules.vms.syidef]syidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_syidef.exe : [.$(OBJ_DIR).modules.vms.syidef]syidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.clidef]clidef_wrap.c : [.modules.vms.clidef]clidef.i
+    SWIG -python modules/vms/clidef/clidef.i
+    purge [.modules.vms.clidef]clidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.clidef]clidef_wrap.obs : [.modules.vms.clidef]clidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_clidef.exe : [.$(OBJ_DIR).modules.vms.clidef]clidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dvidef]dvidef_wrap.c : [.modules.vms.dvidef]dvidef.i
+    SWIG -python modules/vms/dvidef/dvidef.i
+    purge [.modules.vms.dvidef]dvidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dvidef]dvidef_wrap.obs : [.modules.vms.dvidef]dvidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvidef.exe : [.$(OBJ_DIR).modules.vms.dvidef]dvidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.quidef]quidef_wrap.c : [.modules.vms.quidef]quidef.i
+    SWIG -python modules/vms/quidef/quidef.i
+    purge [.modules.vms.quidef]quidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.quidef]quidef_wrap.obs : [.modules.vms.quidef]quidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_quidef.exe : [.$(OBJ_DIR).modules.vms.quidef]quidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.psldef]psldef_wrap.c : [.modules.vms.psldef]psldef.i
+    SWIG -python modules/vms/psldef/psldef.i
+    purge [.modules.vms.psldef]psldef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.psldef]psldef_wrap.obs : [.modules.vms.psldef]psldef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_psldef.exe : [.$(OBJ_DIR).modules.vms.psldef]psldef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.fabdef]fabdef_wrap.c : [.modules.vms.fabdef]fabdef.i
+    SWIG -python modules/vms/fabdef/fabdef.i
+    purge [.modules.vms.fabdef]fabdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.fabdef]fabdef_wrap.obs : [.modules.vms.fabdef]fabdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fabdef.exe : [.$(OBJ_DIR).modules.vms.fabdef]fabdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.rmsdef]rmsdef_wrap.c : [.modules.vms.rmsdef]rmsdef.i
+    SWIG -python modules/vms/rmsdef/rmsdef.i
+    purge [.modules.vms.rmsdef]rmsdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.rmsdef]rmsdef_wrap.obs : [.modules.vms.rmsdef]rmsdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmsdef.exe : [.$(OBJ_DIR).modules.vms.rmsdef]rmsdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.pscandef]pscandef_wrap.c : [.modules.vms.pscandef]pscandef.i
+    SWIG -python modules/vms/pscandef/pscandef.i
+    purge [.modules.vms.pscandef]pscandef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.pscandef]pscandef_wrap.obs : [.modules.vms.pscandef]pscandef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pscandef.exe : [.$(OBJ_DIR).modules.vms.pscandef]pscandef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.prdef]prdef_wrap.c : [.modules.vms.prdef]prdef.i
+    SWIG -python modules/vms/prdef/prdef.i
+    purge [.modules.vms.prdef]prdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.prdef]prdef_wrap.obs : [.modules.vms.prdef]prdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prdef.exe : [.$(OBJ_DIR).modules.vms.prdef]prdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.rsdmdef]rsdmdef_wrap.c : [.modules.vms.rsdmdef]rsdmdef.i
+    SWIG -python modules/vms/rsdmdef/rsdmdef.i
+    purge [.modules.vms.rsdmdef]rsdmdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.rsdmdef]rsdmdef_wrap.obs : [.modules.vms.rsdmdef]rsdmdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rsdmdef.exe : [.$(OBJ_DIR).modules.vms.rsdmdef]rsdmdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.ppropdef]ppropdef_wrap.c : [.modules.vms.ppropdef]ppropdef.i
+    SWIG -python modules/vms/ppropdef/ppropdef.i
+    purge [.modules.vms.ppropdef]ppropdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.ppropdef]ppropdef_wrap.obs : [.modules.vms.ppropdef]ppropdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ppropdef.exe : [.$(OBJ_DIR).modules.vms.ppropdef]ppropdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.maildef]maildef_wrap.c : [.modules.vms.maildef]maildef.i
+    SWIG -python modules/vms/maildef/maildef.i
+    purge [.modules.vms.maildef]maildef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.maildef]maildef_wrap.obs : [.modules.vms.maildef]maildef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_maildef.exe : [.$(OBJ_DIR).modules.vms.maildef]maildef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.jbcmsgdef]jbcmsgdef_wrap.c : [.modules.vms.jbcmsgdef]jbcmsgdef.i
+    SWIG -python modules/vms/jbcmsgdef/jbcmsgdef.i
+    purge [.modules.vms.jbcmsgdef]jbcmsgdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.jbcmsgdef]jbcmsgdef_wrap.obs : [.modules.vms.jbcmsgdef]jbcmsgdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_jbcmsgdef.exe : [.$(OBJ_DIR).modules.vms.jbcmsgdef]jbcmsgdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.libclidef]libclidef_wrap.c : [.modules.vms.libclidef]libclidef.i
+    SWIG -python modules/vms/libclidef/libclidef.i
+    purge [.modules.vms.libclidef]libclidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.libclidef]libclidef_wrap.obs : [.modules.vms.libclidef]libclidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_libclidef.exe : [.$(OBJ_DIR).modules.vms.libclidef]libclidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.libdtdef]libdtdef_wrap.c : [.modules.vms.libdtdef]libdtdef.i
+    SWIG -python modules/vms/libdtdef/libdtdef.i
+    purge [.modules.vms.libdtdef]libdtdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.libdtdef]libdtdef_wrap.obs : [.modules.vms.libdtdef]libdtdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_libdtdef.exe : [.$(OBJ_DIR).modules.vms.libdtdef]libdtdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.libfisdef]libfisdef_wrap.c : [.modules.vms.libfisdef]libfisdef.i
+    SWIG -python modules/vms/libfisdef/libfisdef.i
+    purge [.modules.vms.libfisdef]libfisdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.libfisdef]libfisdef_wrap.obs : [.modules.vms.libfisdef]libfisdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_libfisdef.exe : [.$(OBJ_DIR).modules.vms.libfisdef]libfisdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dcdef]dcdef_wrap.c : [.modules.vms.dcdef]dcdef.i
+    SWIG -python modules/vms/dcdef/dcdef.i
+    purge [.modules.vms.dcdef]dcdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dcdef]dcdef_wrap.obs : [.modules.vms.dcdef]dcdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dcdef.exe : [.$(OBJ_DIR).modules.vms.dcdef]dcdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.cvtfnmdef]cvtfnmdef_wrap.c : [.modules.vms.cvtfnmdef]cvtfnmdef.i
+    SWIG -python modules/vms/cvtfnmdef/cvtfnmdef.i
+    purge [.modules.vms.cvtfnmdef]cvtfnmdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.cvtfnmdef]cvtfnmdef_wrap.obs : [.modules.vms.cvtfnmdef]cvtfnmdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_cvtfnmdef.exe : [.$(OBJ_DIR).modules.vms.cvtfnmdef]cvtfnmdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.fscndef]fscndef_wrap.c : [.modules.vms.fscndef]fscndef.i
+    SWIG -python modules/vms/fscndef/fscndef.i
+    purge [.modules.vms.fscndef]fscndef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.fscndef]fscndef_wrap.obs : [.modules.vms.fscndef]fscndef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fscndef.exe : [.$(OBJ_DIR).modules.vms.fscndef]fscndef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.fpdef]fpdef_wrap.c : [.modules.vms.fpdef]fpdef.i
+    SWIG -python modules/vms/fpdef/fpdef.i
+    purge [.modules.vms.fpdef]fpdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.fpdef]fpdef_wrap.obs : [.modules.vms.fpdef]fpdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fpdef.exe : [.$(OBJ_DIR).modules.vms.fpdef]fpdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.fdldef]fdldef_wrap.c : [.modules.vms.fdldef]fdldef.i
+    SWIG -python modules/vms/fdldef/fdldef.i
+    purge [.modules.vms.fdldef]fdldef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.fdldef]fdldef_wrap.obs : [.modules.vms.fdldef]fdldef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_fdldef.exe : [.$(OBJ_DIR).modules.vms.fdldef]fdldef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dpsdef]dpsdef_wrap.c : [.modules.vms.dpsdef]dpsdef.i
+    SWIG -python modules/vms/dpsdef/dpsdef.i
+    purge [.modules.vms.dpsdef]dpsdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dpsdef]dpsdef_wrap.obs : [.modules.vms.dpsdef]dpsdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dpsdef.exe : [.$(OBJ_DIR).modules.vms.dpsdef]dpsdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.efndef]efndef_wrap.c : [.modules.vms.efndef]efndef.i
+    SWIG -python modules/vms/efndef/efndef.i
+    purge [.modules.vms.efndef]efndef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.efndef]efndef_wrap.obs : [.modules.vms.efndef]efndef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_efndef.exe : [.$(OBJ_DIR).modules.vms.efndef]efndef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dvsdef]dvsdef_wrap.c : [.modules.vms.dvsdef]dvsdef.i
+    SWIG -python modules/vms/dvsdef/dvsdef.i
+    purge [.modules.vms.dvsdef]dvsdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dvsdef]dvsdef_wrap.obs : [.modules.vms.dvsdef]dvsdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvsdef.exe : [.$(OBJ_DIR).modules.vms.dvsdef]dvsdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.eradef]eradef_wrap.c : [.modules.vms.eradef]eradef.i
+    SWIG -python modules/vms/eradef/eradef.i
+    purge [.modules.vms.eradef]eradef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.eradef]eradef_wrap.obs : [.modules.vms.eradef]eradef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_eradef.exe : [.$(OBJ_DIR).modules.vms.eradef]eradef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.iodef]iodef_wrap.c : [.modules.vms.iodef]iodef.i
+    SWIG -python modules/vms/iodef/iodef.i
+    purge [.modules.vms.iodef]iodef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.iodef]iodef_wrap.obs : [.modules.vms.iodef]iodef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_iodef.exe : [.$(OBJ_DIR).modules.vms.iodef]iodef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.initdef]initdef_wrap.c : [.modules.vms.initdef]initdef.i
+    SWIG -python modules/vms/initdef/initdef.i
+    purge [.modules.vms.initdef]initdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.initdef]initdef_wrap.obs : [.modules.vms.initdef]initdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_initdef.exe : [.$(OBJ_DIR).modules.vms.initdef]initdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.issdef]issdef_wrap.c : [.modules.vms.issdef]issdef.i
+    SWIG -python modules/vms/issdef/issdef.i
+    purge [.modules.vms.issdef]issdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.issdef]issdef_wrap.obs : [.modules.vms.issdef]issdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_issdef.exe : [.$(OBJ_DIR).modules.vms.issdef]issdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.impdef]impdef_wrap.c : [.modules.vms.impdef]impdef.i
+    SWIG -python modules/vms/impdef/impdef.i
+    purge [.modules.vms.impdef]impdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.impdef]impdef_wrap.obs : [.modules.vms.impdef]impdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_impdef.exe : [.$(OBJ_DIR).modules.vms.impdef]impdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.mntdef]mntdef_wrap.c : [.modules.vms.mntdef]mntdef.i
+    SWIG -python modules/vms/mntdef/mntdef.i
+    purge [.modules.vms.mntdef]mntdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.mntdef]mntdef_wrap.obs : [.modules.vms.mntdef]mntdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_mntdef.exe : [.$(OBJ_DIR).modules.vms.mntdef]mntdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.nsadef]nsadef_wrap.c : [.modules.vms.nsadef]nsadef.i
+    SWIG -python modules/vms/nsadef/nsadef.i
+    purge [.modules.vms.nsadef]nsadef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.nsadef]nsadef_wrap.obs : [.modules.vms.nsadef]nsadef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_nsadef.exe : [.$(OBJ_DIR).modules.vms.nsadef]nsadef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.ossdef]ossdef_wrap.c : [.modules.vms.ossdef]ossdef.i
+    SWIG -python modules/vms/ossdef/ossdef.i
+    purge [.modules.vms.ossdef]ossdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.ossdef]ossdef_wrap.obs : [.modules.vms.ossdef]ossdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ossdef.exe : [.$(OBJ_DIR).modules.vms.ossdef]ossdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.pcbdef]pcbdef_wrap.c : [.modules.vms.pcbdef]pcbdef.i
+    SWIG -python modules/vms/pcbdef/pcbdef.i
+    purge [.modules.vms.pcbdef]pcbdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.pcbdef]pcbdef_wrap.obs : [.modules.vms.pcbdef]pcbdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pcbdef.exe : [.$(OBJ_DIR).modules.vms.pcbdef]pcbdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.prxdef]prxdef_wrap.c : [.modules.vms.prxdef]prxdef.i
+    SWIG -python modules/vms/prxdef/prxdef.i
+    purge [.modules.vms.prxdef]prxdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.prxdef]prxdef_wrap.obs : [.modules.vms.prxdef]prxdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prxdef.exe : [.$(OBJ_DIR).modules.vms.prxdef]prxdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.prvdef]prvdef_wrap.c : [.modules.vms.prvdef]prvdef.i
+    SWIG -python modules/vms/prvdef/prvdef.i
+    purge [.modules.vms.prvdef]prvdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.prvdef]prvdef_wrap.obs : [.modules.vms.prvdef]prvdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prvdef.exe : [.$(OBJ_DIR).modules.vms.prvdef]prvdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.pqldef]pqldef_wrap.c : [.modules.vms.pqldef]pqldef.i
+    SWIG -python modules/vms/pqldef/pqldef.i
+    purge [.modules.vms.pqldef]pqldef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.pqldef]pqldef_wrap.obs : [.modules.vms.pqldef]pqldef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pqldef.exe : [.$(OBJ_DIR).modules.vms.pqldef]pqldef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.prcdef]prcdef_wrap.c : [.modules.vms.prcdef]prcdef.i
+    SWIG -python modules/vms/prcdef/prcdef.i
+    purge [.modules.vms.prcdef]prcdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.prcdef]prcdef_wrap.obs : [.modules.vms.prcdef]prcdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_prcdef.exe : [.$(OBJ_DIR).modules.vms.prcdef]prcdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.lckdef]lckdef_wrap.c : [.modules.vms.lckdef]lckdef.i
+    SWIG -python modules/vms/lckdef/lckdef.i
+    purge [.modules.vms.lckdef]lckdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.lckdef]lckdef_wrap.obs : [.modules.vms.lckdef]lckdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lckdef.exe : [.$(OBJ_DIR).modules.vms.lckdef]lckdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.kgbdef]kgbdef_wrap.c : [.modules.vms.kgbdef]kgbdef.i
+    SWIG -python modules/vms/kgbdef/kgbdef.i
+    purge [.modules.vms.kgbdef]kgbdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.kgbdef]kgbdef_wrap.obs : [.modules.vms.kgbdef]kgbdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_kgbdef.exe : [.$(OBJ_DIR).modules.vms.kgbdef]kgbdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.pxbdef]pxbdef_wrap.c : [.modules.vms.pxbdef]pxbdef.i
+    SWIG -python modules/vms/pxbdef/pxbdef.i
+    purge [.modules.vms.pxbdef]pxbdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.pxbdef]pxbdef_wrap.obs : [.modules.vms.pxbdef]pxbdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_pxbdef.exe : [.$(OBJ_DIR).modules.vms.pxbdef]pxbdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.sdvdef]sdvdef_wrap.c : [.modules.vms.sdvdef]sdvdef.i
+    SWIG -python modules/vms/sdvdef/sdvdef.i
+    purge [.modules.vms.sdvdef]sdvdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.sdvdef]sdvdef_wrap.obs : [.modules.vms.sdvdef]sdvdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sdvdef.exe : [.$(OBJ_DIR).modules.vms.sdvdef]sdvdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.stsdef]stsdef_wrap.c : [.modules.vms.stsdef]stsdef.i
+    SWIG -python modules/vms/stsdef/stsdef.i
+    purge [.modules.vms.stsdef]stsdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.stsdef]stsdef_wrap.obs : [.modules.vms.stsdef]stsdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_stsdef.exe : [.$(OBJ_DIR).modules.vms.stsdef]stsdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.lnmdef]lnmdef_wrap.c : [.modules.vms.lnmdef]lnmdef.i
+    SWIG -python modules/vms/lnmdef/lnmdef.i
+    purge [.modules.vms.lnmdef]lnmdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.lnmdef]lnmdef_wrap.obs : [.modules.vms.lnmdef]lnmdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lnmdef.exe : [.$(OBJ_DIR).modules.vms.lnmdef]lnmdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.iccdef]iccdef_wrap.c : [.modules.vms.iccdef]iccdef.i
+    SWIG -python modules/vms/iccdef/iccdef.i
+    purge [.modules.vms.iccdef]iccdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.iccdef]iccdef_wrap.obs : [.modules.vms.iccdef]iccdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_iccdef.exe : [.$(OBJ_DIR).modules.vms.iccdef]iccdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dscdef]dscdef_wrap.c : [.modules.vms.dscdef]dscdef.i
+    SWIG -python modules/vms/dscdef/dscdef.i
+    purge [.modules.vms.dscdef]dscdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dscdef]dscdef_wrap.obs : [.modules.vms.dscdef]dscdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dscdef.exe : [.$(OBJ_DIR).modules.vms.dscdef]dscdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dmtdef]dmtdef_wrap.c : [.modules.vms.dmtdef]dmtdef.i
+    SWIG -python modules/vms/dmtdef/dmtdef.i
+    purge [.modules.vms.dmtdef]dmtdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dmtdef]dmtdef_wrap.obs : [.modules.vms.dmtdef]dmtdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dmtdef.exe : [.$(OBJ_DIR).modules.vms.dmtdef]dmtdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.cmbdef]cmbdef_wrap.c : [.modules.vms.cmbdef]cmbdef.i
+    SWIG -python modules/vms/cmbdef/cmbdef.i
+    purge [.modules.vms.cmbdef]cmbdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.cmbdef]cmbdef_wrap.obs : [.modules.vms.cmbdef]cmbdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_cmbdef.exe : [.$(OBJ_DIR).modules.vms.cmbdef]cmbdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.iledef]iledef_wrap.c : [.modules.vms.iledef]iledef.i
+    SWIG -python modules/vms/iledef/iledef.i
+    purge [.modules.vms.iledef]iledef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.iledef]iledef_wrap.obs : [.modules.vms.iledef]iledef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_iledef.exe : [.$(OBJ_DIR).modules.vms.iledef]iledef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.lkidef]lkidef_wrap.c : [.modules.vms.lkidef]lkidef.i
+    SWIG -python modules/vms/lkidef/lkidef.i
+    purge [.modules.vms.lkidef]lkidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.lkidef]lkidef_wrap.obs : [.modules.vms.lkidef]lkidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lkidef.exe : [.$(OBJ_DIR).modules.vms.lkidef]lkidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.sjcdef]sjcdef_wrap.c : [.modules.vms.sjcdef]sjcdef.i
+    SWIG -python modules/vms/sjcdef/sjcdef.i
+    purge [.modules.vms.sjcdef]sjcdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.sjcdef]sjcdef_wrap.obs : [.modules.vms.sjcdef]sjcdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sjcdef.exe : [.$(OBJ_DIR).modules.vms.sjcdef]sjcdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.ssdef]ssdef_wrap.c : [.modules.vms.ssdef]ssdef.i
+    SWIG -python modules/vms/ssdef/ssdef.i
+    purge [.modules.vms.ssdef]ssdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.ssdef]ssdef_wrap.obs : [.modules.vms.ssdef]ssdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssdef.exe : [.$(OBJ_DIR).modules.vms.ssdef]ssdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.ciadef]ciadef_wrap.c : [.modules.vms.ciadef]ciadef.i
+    SWIG -python modules/vms/ciadef/ciadef.i
+    purge [.modules.vms.ciadef]ciadef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.ciadef]ciadef_wrap.obs : [.modules.vms.ciadef]ciadef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ciadef.exe : [.$(OBJ_DIR).modules.vms.ciadef]ciadef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.capdef]capdef_wrap.c : [.modules.vms.capdef]capdef.i
+    SWIG -python modules/vms/capdef/capdef.i
+    purge [.modules.vms.capdef]capdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.capdef]capdef_wrap.obs : [.modules.vms.capdef]capdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_capdef.exe : [.$(OBJ_DIR).modules.vms.capdef]capdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.chpdef]chpdef_wrap.c : [.modules.vms.chpdef]chpdef.i
+    SWIG -python modules/vms/chpdef/chpdef.i
+    purge [.modules.vms.chpdef]chpdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.chpdef]chpdef_wrap.obs : [.modules.vms.chpdef]chpdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_chpdef.exe : [.$(OBJ_DIR).modules.vms.chpdef]chpdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.uaidef]uaidef_wrap.c : [.modules.vms.uaidef]uaidef.i
+    SWIG -python modules/vms/uaidef/uaidef.i
+    purge [.modules.vms.uaidef]uaidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.uaidef]uaidef_wrap.obs : [.modules.vms.uaidef]uaidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_uaidef.exe : [.$(OBJ_DIR).modules.vms.uaidef]uaidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.uafdef]uafdef_wrap.c : [.modules.vms.uafdef]uafdef.i
+    SWIG -python modules/vms/uafdef/uafdef.i
+    purge [.modules.vms.uafdef]uafdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.uafdef]uafdef_wrap.obs : [.modules.vms.uafdef]uafdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_uafdef.exe : [.$(OBJ_DIR).modules.vms.uafdef]uafdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.rmidef]rmidef_wrap.c : [.modules.vms.rmidef]rmidef.i
+    SWIG -python modules/vms/rmidef/rmidef.i
+    purge [.modules.vms.rmidef]rmidef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.rmidef]rmidef_wrap.obs : [.modules.vms.rmidef]rmidef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmidef.exe : [.$(OBJ_DIR).modules.vms.rmidef]rmidef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.regdef]regdef_wrap.c : [.modules.vms.regdef]regdef.i
+    SWIG -python modules/vms/regdef/regdef.i
+    purge [.modules.vms.regdef]regdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.regdef]regdef_wrap.obs : [.modules.vms.regdef]regdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_regdef.exe : [.$(OBJ_DIR).modules.vms.regdef]regdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.rabdef]rabdef_wrap.c : [.modules.vms.rabdef]rabdef.i
+    SWIG -python modules/vms/rabdef/rabdef.i
+    purge [.modules.vms.rabdef]rabdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.rabdef]rabdef_wrap.obs : [.modules.vms.rabdef]rabdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rabdef.exe : [.$(OBJ_DIR).modules.vms.rabdef]rabdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+! [.modules.vms.accdef]accdef_wrap.c : [.modules.vms.accdef]accdef.i
+!     SWIG -python modules/vms/accdef/accdef.i
+!     purge [.modules.vms.accdef]accdef_wrap.c
+
+! [.$(OBJ_DIR).modules.vms.accdef]accdef_wrap.obs : [.modules.vms.accdef]accdef_wrap.c
+
+! [.$(OUT_DIR).$(DYNLOAD_DIR)]_accdef.exe : [.$(OBJ_DIR).modules.vms.accdef]accdef_wrap.obs
+!     @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+!     $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.$(OBJ_DIR).modules.vms.accdef]accdef.obs : [.modules.vms.accdef]accdef.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_accdef.exe : [.$(OBJ_DIR).modules.vms.accdef]accdef.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+
+[.modules.vms.acldef]acldef_wrap.c : [.modules.vms.acldef]acldef.i
+    SWIG -python modules/vms/acldef/acldef.i
+    purge [.modules.vms.acldef]acldef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.acldef]acldef_wrap.obs : [.modules.vms.acldef]acldef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_acldef.exe : [.$(OBJ_DIR).modules.vms.acldef]acldef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.acrdef]acrdef_wrap.c : [.modules.vms.acrdef]acrdef.i
+    SWIG -python modules/vms/acrdef/acrdef.i
+    purge [.modules.vms.acrdef]acrdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.acrdef]acrdef_wrap.obs : [.modules.vms.acrdef]acrdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_acrdef.exe : [.$(OBJ_DIR).modules.vms.acrdef]acrdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.armdef]armdef_wrap.c : [.modules.vms.armdef]armdef.i
+    SWIG -python modules/vms/armdef/armdef.i
+    purge [.modules.vms.armdef]armdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.armdef]armdef_wrap.obs : [.modules.vms.armdef]armdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_armdef.exe : [.$(OBJ_DIR).modules.vms.armdef]armdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.stenvdef]stenvdef_wrap.c : [.modules.vms.stenvdef]stenvdef.i
+    SWIG -python modules/vms/stenvdef/stenvdef.i
+    purge [.modules.vms.stenvdef]stenvdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.stenvdef]stenvdef_wrap.obs : [.modules.vms.stenvdef]stenvdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_stenvdef.exe : [.$(OBJ_DIR).modules.vms.stenvdef]stenvdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.statedef]statedef_wrap.c : [.modules.vms.statedef]statedef.i
+    SWIG -python modules/vms/statedef/statedef.i
+    purge [.modules.vms.statedef]statedef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.statedef]statedef_wrap.obs : [.modules.vms.statedef]statedef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_statedef.exe : [.$(OBJ_DIR).modules.vms.statedef]statedef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.brkdef]brkdef_wrap.c : [.modules.vms.brkdef]brkdef.i
+    SWIG -python modules/vms/brkdef/brkdef.i
+    purge [.modules.vms.brkdef]brkdef_wrap.c
+
+[.$(OBJ_DIR).modules.vms.brkdef]brkdef_wrap.obs : [.modules.vms.brkdef]brkdef_wrap.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_brkdef.exe : [.$(OBJ_DIR).modules.vms.brkdef]brkdef_wrap.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.sys]sys_wrap.c : [.modules.vms.sys]sys.i
+    SWIG -python modules/vms/sys/sys.i
+    purge [.modules.vms.sys]sys_wrap.c
+
+[.$(OBJ_DIR).modules.vms.sys]sys_wrap.obs : [.modules.vms.sys]sys_wrap.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_OSF_ILE)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).modules.vms.sys]sys.obs : [.modules.vms.sys]sys.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_OSF_ILE)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_sys.exe : [.$(OBJ_DIR).modules.vms.sys]sys_wrap.obs,-
+[.$(OBJ_DIR).modules.vms.sys]sys.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+!! ************ DTR ***********
+[.modules.vms.dtr]dtr_wrap.c : [.modules.vms.dtr]dtr.i
+    SWIG -python modules/vms/dtr/dtr.i
+    purge [.modules.vms.dtr]dtr_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dtr]dtr_wrap.obs : [.modules.vms.dtr]dtr_wrap.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).modules.vms.dtr]dtr.obs : [.modules.vms.dtr]dtr.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).modules.vms.dtr]rec.obs : [.modules.vms.dtr]rec.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OBJ_DIR).modules.vms.dtr]rsscanf.obs : [.modules.vms.dtr]rsscanf.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_dtr.exe : [.$(OBJ_DIR).modules.vms.dtr]dtr_wrap.obs,-
+[.$(OBJ_DIR).modules.vms.dtr]dtr.obs,-
+[.$(OBJ_DIR).modules.vms.dtr]rec.obs,-
+[.$(OBJ_DIR).modules.vms.dtr]rsscanf.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.dtr]rec_wrap.c : [.modules.vms.dtr]rec.i
+    SWIG -python modules/vms/dtr/rec.i
+    purge [.modules.vms.dtr]rec_wrap.c
+
+[.$(OBJ_DIR).modules.vms.dtr]rec_wrap.obs : [.modules.vms.dtr]rec_wrap.c
+   @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE)
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rec.exe : [.$(OBJ_DIR).modules.vms.dtr]rec_wrap.obs,-
+[.$(OBJ_DIR).modules.vms.dtr]rec.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+!! ^^^^^^^^^^^ DTR ^^^^^^^^^^^
+
+! RDB need sql$mod installed
+[.modules.rdb]rdb_wrap.c : [.modules.rdb]rdb.i, [.modules.rdb]db.h
+    SWIG -python modules/rdb/rdb.i
+    purge [.modules.rdb]rdb_wrap.c
+
+[.$(OBJ_DIR).modules.rdb]rdb_wrap.obs : [.modules.rdb]rdb_wrap.c
+
+[.$(OBJ_DIR).modules.rdb]db.obs : [.modules.rdb]db.c, [.modules.rdb]db.h
+
+[.$(OBJ_DIR).modules.rdb]sql.obj : [.modules.rdb]sql.sqlmod
+    sqlmod [.modules.rdb]sql.sqlmod
+    rename sql.obj python$build_obj:[modules.rdb]
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rdb.exe : [.$(OBJ_DIR).modules.rdb]rdb_wrap.obs,-
+[.$(OBJ_DIR).modules.rdb]db.obs,-
+[.$(OBJ_DIR).modules.rdb]sql.obj
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.ile3]ile3_wrap.c : [.modules.vms.ile3]ile3.i
+    SWIG -python modules/vms/ile3/ile3.i
+    purge [.modules.vms.ile3]ile3_wrap.c
+
+[.$(OBJ_DIR).modules.vms.ile3]ile3_wrap.obs : [.modules.vms.ile3]ile3_wrap.c
+
+[.$(OBJ_DIR).modules.vms.ile3]ile3.obs : [.modules.vms.ile3]ile3.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_ile3.exe : [.$(OBJ_DIR).modules.vms.ile3]ile3_wrap.obs,-
+[.$(OBJ_DIR).modules.vms.ile3]ile3.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.modules.vms.lib]lib_wrap.c : [.modules.vms.lib]lib.i
+    SWIG -python modules/vms/lib/lib.i
+    purge [.modules.vms.lib]lib_wrap.c
+
+[.$(OBJ_DIR).modules.vms.lib]lib_wrap.obs : [.modules.vms.lib]lib_wrap.c
+
+[.$(OBJ_DIR).modules.vms.lib]lib.obs : [.modules.vms.lib]lib.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_lib.exe : [.$(OBJ_DIR).modules.vms.lib]lib_wrap.obs,-
+[.$(OBJ_DIR).modules.vms.lib]lib.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+[.$(OBJ_DIR).Modules.vms.rms]rms.obs : [.Modules.vms.rms]rms.c
+
+[.$(OUT_DIR).$(DYNLOAD_DIR)]_rms.exe : [.$(OBJ_DIR).Modules.vms.rms]rms.obs
+    @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl:
+    $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT
+
+
diff --git a/Python3_names.com b/Python3_names.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_UHl0aG9uM19uYW1lcy5jb20=
--- /dev/null
+++ b/Python3_names.com
@@ -0,0 +1,15 @@
+$ com_nam = f$environment("procedure")
+$ com_dir = f$parse(com_nam,,,"directory")
+$ com_dev = f$parse(com_nam,,,"device")
+$ com_pat = com_dev + com_dir
+$ INSTALL_DIR = com_pat - "]" + ".out.python.]"
+$ pipe create/dir 'INSTALL_DIR' | copy SYS$INPUT nl:
+$ define /trans=concealed python$root 'INSTALL_DIR'
+$ define PYTHONHOME "/python$root"
+$
+$ ! define PYTHONCASEOK "YES"
+$
+$ ! define PYTHONMALLOC "malloc_debug"
+$
+$ define python$shr python$root:[lib]python$shr.exe
+$ python :== $python$root:[bin]python3.exe
diff --git a/build/_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py b/build/_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_YnVpbGQvX3N5c2NvbmZpZ2RhdGFfX09wZW5WTVNfY3B5dGhvbi0zOC1pYTY0LW9wZW52bXMucHk=
--- /dev/null
+++ b/build/_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py
@@ -0,0 +1,697 @@
+# system configuration generated and used by the sysconfig module
+build_time_vars = {'ABIFLAGS': '',
+ 'AC_APPLE_UNIVERSAL_BUILD': 0,
+ 'AIX_GENUINE_CPLUSPLUS': 0,
+ 'ALT_SOABI': 0,
+ 'ANDROID_API_LEVEL': 0,
+ 'AR': 'LIBRARY',
+ 'ARFLAGS': '/CREATE',
+ 'BASECFLAGS': '/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL',
+ 'BASECPPFLAGS': '',
+ 'BASEMODLIBS': '',
+ 'BINDIR': '/usr/local/bin',
+ 'BINLIBDEST': '/usr/local/lib/python3.8',
+ 'BLDLIBRARY': 'python$shr.exe',
+ 'BLDSHARED': 'LINK /SHAREABLE=',
+ 'BUILDEXE': 'LINK /EXECUTABLE=',
+ 'BUILDPYTHON': 'python',
+ 'BUILD_GNU_TYPE': 'ia64-openvms',
+ 'BYTESTR_DEPS': '\\',
+ 'CC': 'CC',
+ 'CCSHARED': '',
+ 'CFLAGS': '/NODEBUG/OPTIMIZE/NOLIST/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL/DEFINE=(_NDEBUG,_USE_STD_STAT,__STDC_FORMAT_MACROS))/INCLUDE_DIRECTORY=([],[.Include],[.Include.internal],oss$root:[include],[.vms])',
+ 'CFLAGSFORSHARED': '',
+ 'CFLAGS_ALIASING': '',
+ 'CONFIGFILES': '',
+ 'CONFIGURE_CFLAGS': '',
+ 'CONFIGURE_CFLAGS_NODIST': '/NODEBUG/OPTIMIZE/NOLIST/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL/DEFINE=(_NDEBUG,_USE_STD_STAT,__STDC_FORMAT_MACROS))/INCLUDE_DIRECTORY=([],[.Include],[.Include.internal],oss$root:[include],[.vms])',
+ 'CONFIGURE_CPPFLAGS': '',
+ 'CONFIGURE_LDFLAGS': '',
+ 'CONFIGURE_LDFLAGS_NODIST': '',
+ 'CONFIG_ARGS': "'--enable-optimizations' '--with-ensurepip=install'",
+ 'CONFINCLUDEDIR': '/usr/local/include',
+ 'CONFINCLUDEPY': '/usr/local/include/python3.8',
+ 'COREPYTHONPATH': '',
+ 'COVERAGE_INFO': '/home/user/Python-3.8.2/coverage.info',
+ 'COVERAGE_REPORT': '/home/user/Python-3.8.2/lcov-report',
+ 'COVERAGE_REPORT_OPTIONS': '--no-branch-coverage --title "CPython lcov '
+                            'report"',
+ 'CPPFLAGS': '/NODEBUG/OPTIMIZE/NOLIST/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL/DEFINE=(_NDEBUG,_USE_STD_STAT,__STDC_FORMAT_MACROS))/INCLUDE_DIRECTORY=([],[.Include],[.Include.internal],oss$root:[include],[.vms])',
+ 'CXX': 'CXX',
+ 'DESTDIRS': '/usr/local /usr/local/lib /usr/local/lib/python3.8 '
+             '/usr/local/lib/python3.8/lib-dynload',
+ 'DESTLIB': '/usr/local/lib/python3.8',
+ 'DESTPATH': '',
+ 'DESTSHARED': '/usr/local/lib/python3.8/lib-dynload',
+ 'DFLAGS': '',
+ 'DIRMODE': 755,
+ 'DIST': 'README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in '
+         'Makefile.pre.in Include Lib Misc Ext-dummy',
+ 'DISTDIRS': 'Include Lib Misc Ext-dummy',
+ 'DISTFILES': 'README.rst ChangeLog configure configure.ac acconfig.h '
+              'pyconfig.h.in Makefile.pre.in',
+ 'DLINCLDIR': '.',
+ 'DLLLIBRARY': '',
+ 'DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754': 0,
+ 'DOUBLE_IS_BIG_ENDIAN_IEEE754': 0,
+ 'DOUBLE_IS_LITTLE_ENDIAN_IEEE754': 1,
+ 'DTRACE': '',
+ 'DTRACE_DEPS': '\\',
+ 'DTRACE_HEADERS': '',
+ 'DTRACE_OBJS': '',
+ 'DYNLOADFILE': 'dynload_shlib.o',
+ 'ENABLE_IPV6': 1,
+ 'ENSUREPIP': 'install',
+ 'EXE': '',
+ 'EXEMODE': 755,
+ 'EXTRATESTOPTS': '',
+ 'EXTRA_CFLAGS': '',
+ 'EXT_SUFFIX': '.exe',
+ 'FILEMODE': 644,
+ 'FLOAT_WORDS_BIGENDIAN': 0,
+ 'FLOCK_NEEDS_LIBBSD': 0,
+ 'GETPGRP_HAVE_ARG': 0,
+ 'GETTIMEOFDAY_NO_TZ': 0,
+ 'GITBRANCH': '',
+ 'GITTAG': '',
+ 'GITVERSION': '',
+ 'GNULD': 'no',
+ 'HAVE_ACCEPT4': 1,
+ 'HAVE_ACOSH': 1,
+ 'HAVE_ADDRINFO': 1,
+ 'HAVE_ALARM': 1,
+ 'HAVE_ALIGNED_REQUIRED': 0,
+ 'HAVE_ALLOCA_H': 0,
+ 'HAVE_ALTZONE': 0,
+ 'HAVE_ASINH': 1,
+ 'HAVE_ASM_TYPES_H': 1,
+ 'HAVE_ATANH': 1,
+ 'HAVE_BIND_TEXTDOMAIN_CODESET': 1,
+ 'HAVE_BLUETOOTH_BLUETOOTH_H': 0,
+ 'HAVE_BLUETOOTH_H': 0,
+ 'HAVE_BROKEN_MBSTOWCS': 0,
+ 'HAVE_BROKEN_NICE': 0,
+ 'HAVE_BROKEN_PIPE_BUF': 0,
+ 'HAVE_BROKEN_POLL': 0,
+ 'HAVE_BROKEN_POSIX_SEMAPHORES': 0,
+ 'HAVE_BROKEN_PTHREAD_SIGMASK': 0,
+ 'HAVE_BROKEN_SEM_GETVALUE': 0,
+ 'HAVE_BROKEN_UNSETENV': 1,
+ 'HAVE_BUILTIN_ATOMIC': 0,
+ 'HAVE_C99_BOOL': 1,
+ 'HAVE_CHFLAGS': 0,
+ 'HAVE_CHOWN': 1,
+ 'HAVE_CHROOT': 0,
+ 'HAVE_CLOCK': 1,
+ 'HAVE_CLOCK_GETRES': 1,
+ 'HAVE_CLOCK_GETTIME': 1,
+ 'HAVE_CLOCK_SETTIME': 0,
+ 'HAVE_COMPUTED_GOTOS': 0,
+ 'HAVE_CONFSTR': 1,
+ 'HAVE_CONIO_H': 0,
+ 'HAVE_COPYSIGN': 1,
+ 'HAVE_COPY_FILE_RANGE': 0,
+ 'HAVE_CRYPT_H': 0,
+ 'HAVE_CRYPT_R': 0,
+ 'HAVE_CTERMID': 1,
+ 'HAVE_CTERMID_R': 0,
+ 'HAVE_CURSES_FILTER': 0,
+ 'HAVE_CURSES_H': 0,
+ 'HAVE_CURSES_HAS_KEY': 0,
+ 'HAVE_CURSES_IMMEDOK': 0,
+ 'HAVE_CURSES_IS_PAD': 0,
+ 'HAVE_CURSES_IS_TERM_RESIZED': 0,
+ 'HAVE_CURSES_RESIZETERM': 0,
+ 'HAVE_CURSES_RESIZE_TERM': 0,
+ 'HAVE_CURSES_SYNCOK': 0,
+ 'HAVE_CURSES_TYPEAHEAD': 0,
+ 'HAVE_CURSES_USE_ENV': 0,
+ 'HAVE_CURSES_WCHGAT': 0,
+ 'HAVE_DECL_ISFINITE': 0,
+ 'HAVE_DECL_ISINF': 0,
+ 'HAVE_DECL_ISNAN': 1,
+ 'HAVE_DECL_RTLD_DEEPBIND': 0,
+ 'HAVE_DECL_RTLD_GLOBAL': 0,
+ 'HAVE_DECL_RTLD_LAZY': 0,
+ 'HAVE_DECL_RTLD_LOCAL': 0,
+ 'HAVE_DECL_RTLD_MEMBER': 0,
+ 'HAVE_DECL_RTLD_NODELETE': 0,
+ 'HAVE_DECL_RTLD_NOLOAD': 0,
+ 'HAVE_DECL_RTLD_NOW': 0,
+ 'HAVE_DECL_TZNAME': 0,
+ 'HAVE_DEVICE_MACROS': 0,
+ 'HAVE_DEV_PTC': 0,
+ 'HAVE_DEV_PTMX': 0,
+ 'HAVE_DIRECT_H': 0,
+ 'HAVE_DIRENT_D_TYPE': 0,
+ 'HAVE_DIRENT_H': 1,
+ 'HAVE_DIRFD': 0,
+ 'HAVE_DLFCN_H': 1,
+ 'HAVE_DLOPEN': 1,
+ 'HAVE_DUP2': 1,
+ 'HAVE_DUP3': 0,
+ 'HAVE_DYNAMIC_LOADING': 1,
+ 'HAVE_ENDIAN_H': 1,
+ 'HAVE_EPOLL': 0,
+ 'HAVE_EPOLL_CREATE1': 0,
+ 'HAVE_ERF': 1,
+ 'HAVE_ERFC': 1,
+ 'HAVE_ERRNO_H': 1,
+ 'HAVE_EXECV': 1,
+ 'HAVE_EXPLICIT_BZERO': 0,
+ 'HAVE_EXPLICIT_MEMSET': 0,
+ 'HAVE_EXPM1': 1,
+ 'HAVE_FACCESSAT': 0,
+ 'HAVE_FCHDIR': 0,
+ 'HAVE_FCHMOD': 1,
+ 'HAVE_FCHMODAT': 0,
+ 'HAVE_FCHOWN': 1,
+ 'HAVE_FCHOWNAT': 0,
+ 'HAVE_FCNTL_H': 1,
+ 'HAVE_FDATASYNC': 0,
+ 'HAVE_FDOPENDIR': 0,
+ 'HAVE_FDWALK': 0,
+ 'HAVE_FEXECVE': 0,
+ 'HAVE_FINITE': 0,
+ 'HAVE_FLOCK': 0,
+ 'HAVE_FORK': 0,
+ 'HAVE_FORKPTY': 0,
+ 'HAVE_FPATHCONF': 1,
+ 'HAVE_FSEEK64': 0,
+ 'HAVE_FSEEKO': 1,
+ 'HAVE_FSTATAT': 0,
+ 'HAVE_FSTATVFS': 1,
+ 'HAVE_FSYNC': 1,
+ 'HAVE_FTELL64': 0,
+ 'HAVE_FTELLO': 1,
+ 'HAVE_FTIME': 1,
+ 'HAVE_FTRUNCATE': 1,
+ 'HAVE_FUTIMENS': 0,
+ 'HAVE_FUTIMES': 0,
+ 'HAVE_FUTIMESAT': 0,
+ 'HAVE_GAI_STRERROR': 1,
+ 'HAVE_GAMMA': 1,
+ 'HAVE_GCC_ASM_FOR_MC68881': 0,
+ 'HAVE_GCC_ASM_FOR_X64': 0,
+ 'HAVE_GCC_ASM_FOR_X87': 0,
+ 'HAVE_GCC_UINT128_T': 0,
+ 'HAVE_GETADDRINFO': 1,
+ 'HAVE_GETC_UNLOCKED': 1,
+ 'HAVE_GETENTROPY': 1,
+ 'HAVE_GETGRGID_R': 0,
+ 'HAVE_GETGRNAM_R': 0,
+ 'HAVE_GETGROUPLIST': 0,
+ 'HAVE_GETGROUPS': 0,
+ 'HAVE_GETHOSTBYNAME': 0,
+ 'HAVE_GETHOSTBYNAME_R': 1,
+ 'HAVE_GETHOSTBYNAME_R_3_ARG': 0,
+ 'HAVE_GETHOSTBYNAME_R_5_ARG': 0,
+ 'HAVE_GETHOSTBYNAME_R_6_ARG': 1,
+ 'HAVE_GETITIMER': 1,
+ 'HAVE_GETLOADAVG': 0,
+ 'HAVE_GETLOGIN': 1,
+ 'HAVE_GETNAMEINFO': 1,
+ 'HAVE_GETPAGESIZE': 1,
+ 'HAVE_GETPEERNAME': 1,
+ 'HAVE_GETPGID': 1,
+ 'HAVE_GETPGRP': 1,
+ 'HAVE_GETPID': 1,
+ 'HAVE_GETPRIORITY': 0,
+ 'HAVE_GETPWENT': 1,
+ 'HAVE_GETPWNAM_R': 0,
+ 'HAVE_GETPWUID_R': 1,
+ 'HAVE_GETRANDOM': 0,
+ 'HAVE_GETRANDOM_SYSCALL': 0,
+ 'HAVE_GETRESGID': 0,
+ 'HAVE_GETRESUID': 0,
+ 'HAVE_GETSID': 1,
+ 'HAVE_GETSPENT': 0,
+ 'HAVE_GETSPNAM': 0,
+ 'HAVE_GETTIMEOFDAY': 1,
+ 'HAVE_GETWD': 1,
+ 'HAVE_GLIBC_MEMMOVE_BUG': 0,
+ 'HAVE_GRP_H': 1,
+ 'HAVE_HSTRERROR': 0,
+ 'HAVE_HTOLE64': 1,
+ 'HAVE_HYPOT': 1,
+ 'HAVE_IEEEFP_H': 0,
+ 'HAVE_IF_NAMEINDEX': 1,
+ 'HAVE_INET_ATON': 1,
+ 'HAVE_INET_PTON': 1,
+ 'HAVE_INITGROUPS': 0,
+ 'HAVE_INT32_T': 1,
+ 'HAVE_INT64_T': 1,
+ 'HAVE_INTTYPES_H': 1,
+ 'HAVE_IO_H': 0,
+ 'HAVE_IPA_PURE_CONST_BUG': 0,
+ 'HAVE_KILL': 1,
+ 'HAVE_KILLPG': 0,
+ 'HAVE_KQUEUE': 0,
+ 'HAVE_LANGINFO_H': 1,
+ 'HAVE_LARGEFILE_SUPPORT': 0,
+ 'HAVE_LCHFLAGS': 0,
+ 'HAVE_LCHMOD': 0,
+ 'HAVE_LCHOWN': 1,
+ 'HAVE_LGAMMA': 1,
+ 'HAVE_LIBDL': 1,
+ 'HAVE_LIBDLD': 0,
+ 'HAVE_LIBIEEE': 0,
+ 'HAVE_LIBINTL_H': 0,
+ 'HAVE_LIBREADLINE': 1,
+ 'HAVE_LIBRESOLV': 0,
+ 'HAVE_LIBSENDFILE': 0,
+ 'HAVE_LIBUTIL_H': 0,
+ 'HAVE_LINK': 1,
+ 'HAVE_LINKAT': 0,
+ 'HAVE_LINUX_CAN_BCM_H': 0,
+ 'HAVE_LINUX_CAN_H': 0,
+ 'HAVE_LINUX_CAN_RAW_FD_FRAMES': 0,
+ 'HAVE_LINUX_CAN_RAW_H': 0,
+ 'HAVE_LINUX_MEMFD_H': 0,
+ 'HAVE_LINUX_NETLINK_H': 0,
+ 'HAVE_LINUX_QRTR_H': 0,
+ 'HAVE_LINUX_RANDOM_H': 0,
+ 'HAVE_LINUX_TIPC_H': 0,
+ 'HAVE_LINUX_VM_SOCKETS_H': 0,
+ 'HAVE_LOCKF': 0,
+ 'HAVE_LOG1P': 1,
+ 'HAVE_LOG2': 1,
+ 'HAVE_LONG_DOUBLE': 1,
+ 'HAVE_LSTAT': 1,
+ 'HAVE_LUTIMES': 0,
+ 'HAVE_MADVISE': 0,
+ 'HAVE_MAKEDEV': 0,
+ 'HAVE_MBRTOWC': 0,
+ 'HAVE_MEMFD_CREATE': 0,
+ 'HAVE_MEMORY_H': 1,
+ 'HAVE_MEMRCHR': 0,
+ 'HAVE_MKDIRAT': 0,
+ 'HAVE_MKFIFO': 0,
+ 'HAVE_MKFIFOAT': 0,
+ 'HAVE_MKNOD': 0,
+ 'HAVE_MKNODAT': 0,
+ 'HAVE_MKTIME': 1,
+ 'HAVE_MMAP': 1,
+ 'HAVE_MREMAP': 0,
+ 'HAVE_NCURSES_H': 0,
+ 'HAVE_NDIR_H': 0,
+ 'HAVE_NETPACKET_PACKET_H': 0,
+ 'HAVE_NET_IF_H': 1,
+ 'HAVE_NICE': 1,
+ 'HAVE_OPENAT': 0,
+ 'HAVE_OPENPTY': 0,
+ 'HAVE_PATHCONF': 1,
+ 'HAVE_PAUSE': 1,
+ 'HAVE_PIPE2': 0,
+ 'HAVE_PLOCK': 0,
+ 'HAVE_POLL': 1,
+ 'HAVE_POLL_H': 1,
+ 'HAVE_POSIX_FADVISE': 0,
+ 'HAVE_POSIX_FALLOCATE': 0,
+ 'HAVE_POSIX_SPAWN': 0,
+ 'HAVE_POSIX_SPAWNP': 0,
+ 'HAVE_PREAD': 1,
+ 'HAVE_PREADV': 0,
+ 'HAVE_PREADV2': 0,
+ 'HAVE_PRLIMIT': 1,
+ 'HAVE_PROCESS_H': 0,
+ 'HAVE_PROTOTYPES': 1,
+ 'HAVE_PTHREAD_ATFORK': 0,
+ 'HAVE_PTHREAD_CONDATTR_SETCLOCK': 0,
+ 'HAVE_PTHREAD_DESTRUCTOR': 0,
+ 'HAVE_PTHREAD_GETCPUCLOCKID': 0,
+ 'HAVE_PTHREAD_H': 1,
+ 'HAVE_PTHREAD_INIT': 0,
+ 'HAVE_PTHREAD_KILL': 0,
+ 'HAVE_PTHREAD_SIGMASK': 0,
+ 'HAVE_PTY_H': 1,
+ 'HAVE_PUTENV': 1,
+ 'HAVE_PWRITE': 1,
+ 'HAVE_RAND_EGD': 1,
+ 'HAVE_PWRITEV': 0,
+ 'HAVE_PWRITEV2': 0,
+ 'HAVE_READLINK': 1,
+ 'HAVE_READLINKAT': 0,
+ 'HAVE_READV': 1,
+ 'HAVE_REALPATH': 1,
+ 'HAVE_RENAMEAT': 0,
+ 'HAVE_RL_APPEND_HISTORY': 1,
+ 'HAVE_RL_CATCH_SIGNAL': 1,
+ 'HAVE_RL_COMPLETION_APPEND_CHARACTER': 1,
+ 'HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK': 1,
+ 'HAVE_RL_COMPLETION_MATCHES': 1,
+ 'HAVE_RL_COMPLETION_SUPPRESS_APPEND': 1,
+ 'HAVE_RL_PRE_INPUT_HOOK': 1,
+ 'HAVE_RL_RESIZE_TERMINAL': 0,
+ 'HAVE_ROUND': 1,
+ 'HAVE_RTPSPAWN': 0,
+ 'HAVE_SCHED_GET_PRIORITY_MAX': 1,
+ 'HAVE_SCHED_H': 0,
+ 'HAVE_SCHED_RR_GET_INTERVAL': 1,
+ 'HAVE_SCHED_SETAFFINITY': 1,
+ 'HAVE_SCHED_SETPARAM': 0,
+ 'HAVE_SCHED_SETSCHEDULER': 0,
+ 'HAVE_SEM_GETVALUE': 1,
+ 'HAVE_SEM_OPEN': 1,
+ 'HAVE_SEM_TIMEDWAIT': 1,
+ 'HAVE_SEM_UNLINK': 1,
+ 'HAVE_SENDFILE': 0,
+ 'HAVE_SETEGID': 0,
+ 'HAVE_SETEUID': 1,
+ 'HAVE_SETGID': 1,
+ 'HAVE_SETGROUPS': 0,
+ 'HAVE_SETHOSTNAME': 0,
+ 'HAVE_SETITIMER': 1,
+ 'HAVE_SETLOCALE': 1,
+ 'HAVE_SETPGID': 1,
+ 'HAVE_SETPGRP': 1,
+ 'HAVE_SETPRIORITY': 0,
+ 'HAVE_SETREGID': 1,
+ 'HAVE_SETRESGID': 0,
+ 'HAVE_SETRESUID': 0,
+ 'HAVE_SETREUID': 1,
+ 'HAVE_SETSID': 1,
+ 'HAVE_SETUID': 1,
+ 'HAVE_SETVBUF': 1,
+ 'HAVE_SHADOW_H': 0,
+ 'HAVE_SHM_OPEN': 1,
+ 'HAVE_SHM_UNLINK': 1,
+ 'HAVE_SIGACTION': 1,
+ 'HAVE_SIGALTSTACK': 0,
+ 'HAVE_SIGFILLSET': 1,
+ 'HAVE_SIGINFO_T_SI_BAND': 1,
+ 'HAVE_SIGINTERRUPT': 0,
+ 'HAVE_SIGNAL_H': 1,
+ 'HAVE_SIGPENDING': 1,
+ 'HAVE_SIGRELSE': 1,
+ 'HAVE_SIGTIMEDWAIT': 1,
+ 'HAVE_SIGWAIT': 1,
+ 'HAVE_SIGWAITINFO': 1,
+ 'HAVE_SNPRINTF': 1,
+ 'HAVE_SOCKADDR_ALG': 0,
+ 'HAVE_SOCKADDR_SA_LEN': 1,
+ 'HAVE_SOCKADDR_STORAGE': 1,
+ 'HAVE_SOCKETPAIR': 1,
+ 'HAVE_SPAWN_H': 1,
+ 'HAVE_SSIZE_T': 1,
+ 'HAVE_STATVFS': 1,
+ 'HAVE_STAT_TV_NSEC': 0,
+ 'HAVE_STAT_TV_NSEC2': 0,
+ 'HAVE_STDARG_PROTOTYPES': 1,
+ 'HAVE_STDINT_H': 0,
+ 'HAVE_STDLIB_H': 1,
+ 'HAVE_STD_ATOMIC': 0,
+ 'HAVE_STRDUP': 1,
+ 'HAVE_STRFTIME': 1,
+ 'HAVE_STRINGS_H': 1,
+ 'HAVE_STRING_H': 1,
+ 'HAVE_STRLCPY': 0,
+ 'HAVE_STROPTS_H': 1,
+ 'HAVE_STRSIGNAL': 0,
+ 'HAVE_STRUCT_PASSWD_PW_GECOS': 0,
+ 'HAVE_STRUCT_PASSWD_PW_PASSWD': 0,
+ 'HAVE_STRUCT_STAT_ST_BIRTHTIME': 0,
+ 'HAVE_STRUCT_STAT_ST_BLKSIZE': 1,
+ 'HAVE_STRUCT_STAT_ST_BLOCKS': 1,
+ 'HAVE_STRUCT_STAT_ST_FLAGS': 0,
+ 'HAVE_STRUCT_STAT_ST_GEN': 0,
+ 'HAVE_STRUCT_STAT_ST_RDEV': 1,
+ 'HAVE_STRUCT_TM_TM_ZONE': 0,
+ 'HAVE_SYMLINK': 1,
+ 'HAVE_SYMLINKAT': 0,
+ 'HAVE_SYNC': 0,
+ 'HAVE_SYSCONF': 1,
+ 'HAVE_SYSEXITS_H': 0,
+ 'HAVE_SYS_AUDIOIO_H': 0,
+ 'HAVE_SYS_BSDTTY_H': 0,
+ 'HAVE_SYS_DEVPOLL_H': 0,
+ 'HAVE_SYS_DIR_H': 0,
+ 'HAVE_SYS_ENDIAN_H': 0,
+ 'HAVE_SYS_EPOLL_H': 0,
+ 'HAVE_SYS_EVENT_H': 0,
+ 'HAVE_SYS_FILE_H': 1,
+ 'HAVE_SYS_IOCTL_H': 1,
+ 'HAVE_SYS_KERN_CONTROL_H': 0,
+ 'HAVE_SYS_LOADAVG_H': 0,
+ 'HAVE_SYS_LOCK_H': 0,
+ 'HAVE_SYS_MEMFD_H': 0,
+ 'HAVE_SYS_MKDEV_H': 0,
+ 'HAVE_SYS_MMAN_H': 1,
+ 'HAVE_SYS_MODEM_H': 0,
+ 'HAVE_SYS_NDIR_H': 0,
+ 'HAVE_SYS_PARAM_H': 0,
+ 'HAVE_SYS_POLL_H': 1,
+ 'HAVE_SYS_RANDOM_H': 0,
+ 'HAVE_SYS_RESOURCE_H': 0,
+ 'HAVE_SYS_SELECT_H': 0,
+ 'HAVE_SYS_SENDFILE_H': 0,
+ 'HAVE_SYS_SOCKET_H': 1,
+ 'HAVE_SYS_STATVFS_H': 1,
+ 'HAVE_SYS_STAT_H': 1,
+ 'HAVE_SYS_SYSCALL_H': 0,
+ 'HAVE_SYS_SYSMACROS_H': 0,
+ 'HAVE_SYS_SYS_DOMAIN_H': 0,
+ 'HAVE_SYS_TERMIO_H': 0,
+ 'HAVE_SYS_TIMES_H': 1,
+ 'HAVE_SYS_TIME_H': 1,
+ 'HAVE_SYS_TYPES_H': 1,
+ 'HAVE_SYS_UIO_H': 1,
+ 'HAVE_SYS_UN_H': 1,
+ 'HAVE_SYS_UTSNAME_H': 1,
+ 'HAVE_SYS_WAIT_H': 1,
+ 'HAVE_SYS_XATTR_H': 1,
+ 'HAVE_TCGETPGRP': 0,
+ 'HAVE_TCSETPGRP': 0,
+ 'HAVE_TEMPNAM': 1,
+ 'HAVE_TERMIOS_H': 0,
+ 'HAVE_TERM_H': 0,
+ 'HAVE_TGAMMA': 1,
+ 'HAVE_TIMEGM': 0,
+ 'HAVE_TIMES': 1,
+ 'HAVE_TMPFILE': 1,
+ 'HAVE_TMPNAM': 1,
+ 'HAVE_TMPNAM_R': 1,
+ 'HAVE_TM_ZONE': 1,
+ 'HAVE_TRUNCATE': 1,
+ 'HAVE_TZNAME': 0,
+ 'HAVE_UCS4_TCL': 0,
+ 'HAVE_UINT32_T': 1,
+ 'HAVE_UINT64_T': 1,
+ 'HAVE_UINTPTR_T': 1,
+ 'HAVE_UNAME': 1,
+ 'HAVE_UNISTD_H': 1,
+ 'HAVE_UNLINKAT': 0,
+ 'HAVE_UNSETENV': 1,
+ 'HAVE_USABLE_WCHAR_T': 1,
+ 'HAVE_UTIL_H': 0,
+ 'HAVE_UTIMENSAT': 0,
+ 'HAVE_UTIMES': 1,
+ 'HAVE_UTIME_H': 1,
+ 'HAVE_UUID_CREATE': 0,
+ 'HAVE_UUID_ENC_BE': 0,
+ 'HAVE_UUID_GENERATE_TIME_SAFE': 0,
+ 'HAVE_UUID_H': 0,
+ 'HAVE_UUID_UUID_H': 0,
+ 'HAVE_WAIT3': 0,
+ 'HAVE_WAIT4': 0,
+ 'HAVE_WAITID': 0,
+ 'HAVE_WAITPID': 1,
+ 'HAVE_WCHAR_H': 1,
+ 'HAVE_WCSCOLL': 1,
+ 'HAVE_WCSFTIME': 0,
+ 'HAVE_WCSXFRM': 0,
+ 'HAVE_WMEMCMP': 0,
+ 'HAVE_WORKING_TZSET': 1,
+ 'HAVE_WRITEV': 0,
+ 'HAVE_X509_VERIFY_PARAM_SET1_HOST': 1,
+ 'HAVE_ZLIB_COPY': 1,
+ 'HAVE__GETPTY': 0,
+ 'HOST_GNU_TYPE': 'ia64-openvms',
+ 'INCLDIRSTOMAKE': '/usr/local/include /usr/local/include '
+                   '/usr/local/include/python3.8 /usr/local/include/python3.8',
+ 'INCLUDEDIR': '/usr/local/include',
+ 'INCLUDEPY': '/usr/local/include/python3.8',
+ 'INSTALL': '/usr/bin/install -c',
+ 'INSTALL_DATA': '/usr/bin/install -c -m 644',
+ 'INSTALL_PROGRAM': '/usr/bin/install -c',
+ 'INSTALL_SCRIPT': '/usr/bin/install -c',
+ 'INSTALL_SHARED': '/usr/bin/install -c -m 755',
+ 'INSTSONAME': 'python$shr.exe',
+ 'IO_H': 'Modules/_io/_iomodule.h',
+ 'IO_OBJS': '\\',
+ 'LDCXXSHARED': '',
+ 'LDFLAGS': '',
+ 'LDLIBRARY': 'python$shr.exe',
+ 'LDLIBRARYDIR': '',
+ 'LDSHARED': '',
+ 'LDVERSION': '3.8',
+ 'LIBC': '',
+ 'LIBDEST': '/usr/local/lib/python3.8',
+ 'LIBDIR': '/usr/local/lib',
+ 'LIBFFI_INCLUDEDIR': '',
+ 'LIBM': '',
+ 'LIBOBJDIR': 'Python/',
+ 'LIBOBJS': '',
+ 'LIBPC': '/usr/local/lib/pkgconfig',
+ 'LIBPL': '/usr/local/lib/python3.8/config-3.8-ia64-openvms',
+ 'LIBPYTHON': 'python$shr.exe',
+ 'LIBRARY': 'python$shr.exe',
+ 'LIBRARY_OBJS': '\\',
+ 'LIBRARY_OBJS_OMIT_FROZEN': '\\',
+ 'LIBS': '',
+ 'LIBSUBDIRS': 'tkinter tkinter/test tkinter/test/test_tkinter \\',
+ 'LINKCC': 'LINK/THREADS',
+ 'LINKFORSHARED': '',
+ 'LIPO_32BIT_FLAGS': '',
+ 'LLVM_PROF_ERR': 'no',
+ 'LLVM_PROF_FILE': '',
+ 'LLVM_PROF_MERGER': 'true',
+ 'LN': 'ln',
+ 'LOCALMODLIBS': '',
+ 'MACHDEP': 'openvms',
+ 'MACHDEP_OBJS': '',
+ 'MACHDESTLIB': '/usr/local/lib/python3.8',
+ 'MACOSX_DEPLOYMENT_TARGET': '',
+ 'MAINCC': 'CC/THREADS',
+ 'MAJOR_IN_MKDEV': 0,
+ 'MAJOR_IN_SYSMACROS': 1,
+ 'MAKESETUP': './Modules/makesetup',
+ 'MANDIR': '/usr/local/share/man',
+ 'MKDIR_P': '/usr/bin/mkdir -p',
+ 'MODBUILT_NAMES': 'posix  errno  pwd  _sre  _codecs  _weakref  _functools  '
+                   '_operator  _collections  _abc  itertools  atexit  _signal  '
+                   '_stat  time  _thread  _locale  _io  faulthandler  '
+                   '_tracemalloc  _symtable  xxsubtype',
+ 'MODDISABLED_NAMES': '',
+ 'MODLIBS': '',
+ 'MODOBJS': '',
+ 'MODULE_OBJS': '\\',
+ 'MULTIARCH': 'ia64-openvms',
+ 'MULTIARCH_CPPFLAGS': '',
+ 'MVWDELCH_IS_EXPRESSION': 1,
+ 'NO_AS_NEEDED': '',
+ 'OBJECT_OBJS': '\\',
+ 'OPENSSL_INCLUDES': '',
+ 'OPENSSL_LDFLAGS': '',
+ 'OPENSSL_LIBS': '',
+ 'OPT': '',
+ 'OTHER_LIBTOOL_OPT': '',
+ 'PACKAGE_BUGREPORT': 0,
+ 'PACKAGE_NAME': 0,
+ 'PACKAGE_STRING': 0,
+ 'PACKAGE_TARNAME': 0,
+ 'PACKAGE_URL': 0,
+ 'PACKAGE_VERSION': 0,
+ 'PARSER_HEADERS': '\\',
+ 'PARSER_OBJS': '\\ Parser/myreadline.obj Parser/parsetok.obj Parser/tokenizer.obj vms/stdioreadline.obj',
+ 'PGO_PROF_GEN_FLAG': '',
+ 'PGO_PROF_USE_FLAG': '',
+ 'POBJS': '\\',
+ 'POSIX_SEMAPHORES_NOT_ENABLED': 0,
+ 'PROFILE_TASK': '-m test --pgo',
+ 'PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT': 0,
+ 'PTHREAD_SYSTEM_SCHED_SUPPORTED': 1,
+ 'PURIFY': '',
+ 'PY3LIBRARY': '',
+ 'PYLONG_BITS_IN_DIGIT': 0,
+ 'PYTHON': 'python',
+ 'PYTHONFRAMEWORK': '',
+ 'PYTHONFRAMEWORKDIR': 'no-framework',
+ 'PYTHONFRAMEWORKINSTALLDIR': '',
+ 'PYTHONFRAMEWORKPREFIX': '',
+ 'PYTHONPATH': '',
+ 'PYTHON_FOR_BUILD': './python -E',
+ 'PYTHON_FOR_REGEN': 'python3',
+ 'PYTHON_HEADERS': '\\',
+ 'PYTHON_OBJS': '\\',
+ 'PY_BUILTIN_MODULE_CFLAGS': '',
+ 'PY_CFLAGS': '',
+ 'PY_CFLAGS_NODIST': '',
+ 'PY_COERCE_C_LOCALE': 0,
+ 'PY_CORE_CFLAGS': '',
+ 'PY_CORE_LDFLAGS': '',
+ 'PY_CPPFLAGS': '',
+ 'PY_FORMAT_SIZE_T': '"l"',
+ 'PY_LDFLAGS': '',
+ 'PY_LDFLAGS_NODIST': '',
+ 'PY_SSL_DEFAULT_CIPHERS': 0,
+ 'PY_SSL_DEFAULT_CIPHER_STRING': 0,
+ 'PY_STDMODULE_CFLAGS': '',
+ 'Py_DEBUG': 0,
+ 'Py_ENABLE_SHARED': 0,
+ 'Py_HASH_ALGORITHM': 0,
+ 'Py_TRACE_REFS': 0,
+ 'QUICKTESTOPTS': '-x test_subprocess test_io test_lib2to3 \\',
+ 'READELF': 'readelf',
+ 'RESSRCDIR': 'Mac/Resources/framework',
+ 'RETSIGTYPE': 'void',
+ 'RUNSHARED': '',
+ 'SCRIPTDIR': '/usr/local/lib',
+ 'SETPGRP_HAVE_ARG': 0,
+ 'SGI_ABI': '@SGI_ABI@',
+ 'SHELL': '/bin/sh',
+ 'SHLIBS': '',
+ 'SHLIB_SUFFIX': '.exe',
+ 'SHM_NEEDS_LIBRT': 0,
+ 'SIGNED_RIGHT_SHIFT_ZERO_FILLS': 0,
+ 'SITEPATH': '',
+ 'SIZEOF_DOUBLE': 8,
+ 'SIZEOF_FLOAT': 4,
+ 'SIZEOF_FPOS_T': 8,
+ 'SIZEOF_INT': 4,
+ 'SIZEOF_LONG': 8,
+ 'SIZEOF_LONG_DOUBLE': 16,
+ 'SIZEOF_LONG_LONG': 8,
+ 'SIZEOF_OFF_T': 4,
+ 'SIZEOF_PID_T': 4,
+ 'SIZEOF_PTHREAD_KEY_T': 0,
+ 'SIZEOF_PTHREAD_T': 8,
+ 'SIZEOF_SHORT': 2,
+ 'SIZEOF_SIZE_T': 4,
+ 'SIZEOF_TIME_T': 4,
+ 'SIZEOF_UINTPTR_T': 8,
+ 'SIZEOF_VOID_P': 4,
+ 'SIZEOF_WCHAR_T': 4,
+ 'SIZEOF__BOOL': 1,
+ 'SOABI': 'cpython-38-ia64-openvms',
+ 'SRCDIRS': 'Parser Objects Python Modules Modules/_io Programs',
+ 'SRC_GDB_HOOKS': './Tools/gdb/libpython.py',
+ 'STDC_HEADERS': 1,
+ 'STRICT_SYSV_CURSES': "/* Don't use ncurses extensions */",
+ 'STRIPFLAG': '',
+ 'SUBDIRS': '',
+ 'SUBDIRSTOO': 'Include Lib Misc',
+ 'SYSLIBS': '',
+ 'SYS_SELECT_WITH_SYS_TIME': 1,
+ 'TCLTK_INCLUDES': '',
+ 'TCLTK_LIBS': '',
+ 'TESTOPTS': '',
+ 'TESTPATH': '',
+ 'TESTPYTHON': './python',
+ 'TESTPYTHONOPTS': '',
+ 'TESTRUNNER': './python ./Tools/scripts/run_tests.py',
+ 'TESTTIMEOUT': 1200,
+ 'TIMEMODULE_LIB': 0,
+ 'TIME_WITH_SYS_TIME': 1,
+ 'TM_IN_SYS_TIME': 0,
+ 'UNICODE_DEPS': '\\',
+ 'UNIVERSALSDK': '',
+ 'UPDATE_FILE': 'python3 ./Tools/scripts/update_file.py',
+ 'USE_COMPUTED_GOTOS': 0,
+ 'VERSION': '3.8',
+ 'WINDOW_HAS_FLAGS': 0,
+ 'WITH_DOC_STRINGS': 1,
+ 'WITH_DTRACE': 0,
+ 'WITH_DYLD': 0,
+ 'WITH_LIBINTL': 0,
+ 'WITH_NEXT_FRAMEWORK': 0,
+ 'WITH_PYMALLOC': 1,
+ 'WITH_VALGRIND': 0,
+ 'X87_DOUBLE_ROUNDING': 0,
+ 'XMLLIBSUBDIRS': 'xml xml/dom xml/etree xml/parsers xml/sax',
+ 'abs_builddir': '/home/user/Python-3.8.2',
+ 'abs_srcdir': '/home/user/Python-3.8.2',
+ 'datarootdir': '/usr/local/share',
+ 'exec_prefix': '/usr/local',
+ 'prefix': '/usr/local',
+ 'srcdir': '.'}
diff --git a/make.txt b/make.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_bWFrZS50eHQ=
--- /dev/null
+++ b/make.txt
@@ -0,0 +1,449 @@
+Rebuilding with profile guided optimizations:
+rm -f profile-clean-stamp
+make build_all CFLAGS_NODIST=" -fprofile-use -fprofile-correction" LDFLAGS_NODIST=""
+make[1]: Entering directory '/home/vorfolomeev/Python-3.8.2'
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Programs/python.o ./Programs/python.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/acceler.o Parser/acceler.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/grammar1.o Parser/grammar1.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/listnode.o Parser/listnode.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/node.o Parser/node.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/parser.o Parser/parser.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/token.o Parser/token.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/myreadline.o Parser/myreadline.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/parsetok.o Parser/parsetok.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/tokenizer.o Parser/tokenizer.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/abstract.o Objects/abstract.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/accu.o Objects/accu.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/boolobject.o Objects/boolobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/bytes_methods.o Objects/bytes_methods.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/bytearrayobject.o Objects/bytearrayobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/bytesobject.o Objects/bytesobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/call.o Objects/call.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/capsule.o Objects/capsule.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/cellobject.o Objects/cellobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/classobject.o Objects/classobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/codeobject.o Objects/codeobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/complexobject.o Objects/complexobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/descrobject.o Objects/descrobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/enumobject.o Objects/enumobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/exceptions.o Objects/exceptions.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/genobject.o Objects/genobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/fileobject.o Objects/fileobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/floatobject.o Objects/floatobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/frameobject.o Objects/frameobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/funcobject.o Objects/funcobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/interpreteridobject.o Objects/interpreteridobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/iterobject.o Objects/iterobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/listobject.o Objects/listobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/longobject.o Objects/longobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/dictobject.o Objects/dictobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/odictobject.o Objects/odictobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/memoryobject.o Objects/memoryobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/methodobject.o Objects/methodobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/moduleobject.o Objects/moduleobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/namespaceobject.o Objects/namespaceobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/object.o Objects/object.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/obmalloc.o Objects/obmalloc.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/picklebufobject.o Objects/picklebufobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/rangeobject.o Objects/rangeobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/setobject.o Objects/setobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/sliceobject.o Objects/sliceobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/structseq.o Objects/structseq.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/tupleobject.o Objects/tupleobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/typeobject.o Objects/typeobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/unicodeobject.o Objects/unicodeobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/unicodectype.o Objects/unicodectype.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/weakrefobject.o Objects/weakrefobject.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/_warnings.o Python/_warnings.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/Python-ast.o Python/Python-ast.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/asdl.o Python/asdl.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/ast.o Python/ast.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/ast_opt.o Python/ast_opt.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/ast_unparse.o Python/ast_unparse.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/bltinmodule.o Python/bltinmodule.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/ceval.o Python/ceval.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/codecs.o Python/codecs.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/compile.o Python/compile.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/context.o Python/context.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/dynamic_annotations.o Python/dynamic_annotations.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/errors.o Python/errors.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/frozenmain.o Python/frozenmain.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/future.o Python/future.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/getargs.o Python/getargs.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/getcompiler.o Python/getcompiler.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/getcopyright.o Python/getcopyright.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -DPLATFORM='"linux"' -o Python/getplatform.o ./Python/getplatform.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/getversion.o Python/getversion.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/graminit.o Python/graminit.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/hamt.o Python/hamt.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/import.o Python/import.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -I. -o Python/importdl.o ./Python/importdl.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/initconfig.o Python/initconfig.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/marshal.o Python/marshal.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/modsupport.o Python/modsupport.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/mysnprintf.o Python/mysnprintf.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/mystrtoul.o Python/mystrtoul.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pathconfig.o Python/pathconfig.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/peephole.o Python/peephole.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/preconfig.o Python/preconfig.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pyarena.o Python/pyarena.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pyctype.o Python/pyctype.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pyfpe.o Python/pyfpe.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pyhash.o Python/pyhash.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pylifecycle.o Python/pylifecycle.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pymath.o Python/pymath.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pystate.o Python/pystate.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pythonrun.o Python/pythonrun.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pytime.o Python/pytime.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/bootstrap_hash.o Python/bootstrap_hash.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/structmember.o Python/structmember.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/symtable.o Python/symtable.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE \
+	-DABIFLAGS='""' \
+	-DMULTIARCH=\"x86_64-linux-gnu\" \
+	-o Python/sysmodule.o ./Python/sysmodule.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/thread.o Python/thread.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/traceback.o Python/traceback.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/getopt.o Python/getopt.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pystrcmp.o Python/pystrcmp.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pystrtod.o Python/pystrtod.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/pystrhex.o Python/pystrhex.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE  -o Python/dtoa.o Python/dtoa.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/formatter_unicode.o Python/formatter_unicode.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/fileutils.o Python/fileutils.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE \
+	-DSOABI='"cpython-38-x86_64-linux-gnu"' \
+	-o Python/dynload_shlib.o ./Python/dynload_shlib.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Modules/config.o Modules/config.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -DPYTHONPATH='""' \
+	-DPREFIX='"/usr/local"' \
+	-DEXEC_PREFIX='"/usr/local"' \
+	-DVERSION='"3.8"' \
+	-DVPATH='""' \
+	-o Modules/getpath.o ./Modules/getpath.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Modules/main.o Modules/main.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Modules/gcmodule.o Modules/gcmodule.c
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/posixmodule.c -o Modules/posixmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/errnomodule.c -o Modules/errnomodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/pwdmodule.c -o Modules/pwdmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_sre.c -o Modules/_sre.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_codecsmodule.c -o Modules/_codecsmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_weakref.c -o Modules/_weakref.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/_functoolsmodule.c -o Modules/_functoolsmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_operator.c -o Modules/_operator.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_collectionsmodule.c -o Modules/_collectionsmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_abc.c -o Modules/_abc.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/itertoolsmodule.c -o Modules/itertoolsmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/atexitmodule.c -o Modules/atexitmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/signalmodule.c -o Modules/signalmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_stat.c -o Modules/_stat.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/timemodule.c -o Modules/timemodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/_threadmodule.c -o Modules/_threadmodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -c ./Modules/_localemodule.c -o Modules/_localemodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/_iomodule.c -o Modules/_iomodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/iobase.c -o Modules/iobase.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/fileio.c -o Modules/fileio.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/bytesio.c -o Modules/bytesio.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/bufferedio.c -o Modules/bufferedio.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/textio.c -o Modules/textio.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/stringio.c -o Modules/stringio.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/faulthandler.c -o Modules/faulthandler.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_tracemalloc.c -o Modules/_tracemalloc.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/hashtable.c -o Modules/hashtable.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/symtablemodule.c -o Modules/symtablemodule.o
+gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN  -c ./Modules/xxsubtype.c -o Modules/xxsubtype.o
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE \
+      -DGITVERSION="\"`LC_ALL=C `\"" \
+      -DGITTAG="\"`LC_ALL=C `\"" \
+      -DGITBRANCH="\"`LC_ALL=C `\"" \
+      -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Python/frozen.o Python/frozen.c
+rm -f libpython3.8.a
+ar rcs libpython3.8.a Modules/getbuildinfo.o Parser/acceler.o Parser/grammar1.o Parser/listnode.o Parser/node.o Parser/parser.o Parser/token.o  Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o Objects/abstract.o Objects/accu.o Objects/boolobject.o Objects/bytes_methods.o Objects/bytearrayobject.o Objects/bytesobject.o Objects/call.o Objects/capsule.o Objects/cellobject.o Objects/classobject.o Objects/codeobject.o Objects/complexobject.o Objects/descrobject.o Objects/enumobject.o Objects/exceptions.o Objects/genobject.o Objects/fileobject.o Objects/floatobject.o Objects/frameobject.o Objects/funcobject.o Objects/interpreteridobject.o Objects/iterobject.o Objects/listobject.o Objects/longobject.o Objects/dictobject.o Objects/odictobject.o Objects/memoryobject.o Objects/methodobject.o Objects/moduleobject.o Objects/namespaceobject.o Objects/object.o Objects/obmalloc.o Objects/picklebufobject.o Objects/rangeobject.o Objects/setobject.o Objects/sliceobject.o Objects/structseq.o Objects/tupleobject.o Objects/typeobject.o Objects/unicodeobject.o Objects/unicodectype.o Objects/weakrefobject.o Python/_warnings.o Python/Python-ast.o Python/asdl.o Python/ast.o Python/ast_opt.o Python/ast_unparse.o Python/bltinmodule.o Python/ceval.o Python/codecs.o Python/compile.o Python/context.o Python/dynamic_annotations.o Python/errors.o Python/frozenmain.o Python/future.o Python/getargs.o Python/getcompiler.o Python/getcopyright.o Python/getplatform.o Python/getversion.o Python/graminit.o Python/hamt.o Python/import.o Python/importdl.o Python/initconfig.o Python/marshal.o Python/modsupport.o Python/mysnprintf.o Python/mystrtoul.o Python/pathconfig.o Python/peephole.o Python/preconfig.o Python/pyarena.o Python/pyctype.o Python/pyfpe.o Python/pyhash.o Python/pylifecycle.o Python/pymath.o Python/pystate.o Python/pythonrun.o Python/pytime.o Python/bootstrap_hash.o Python/structmember.o Python/symtable.o Python/sysmodule.o Python/thread.o Python/traceback.o Python/getopt.o Python/pystrcmp.o Python/pystrtod.o Python/pystrhex.o Python/dtoa.o Python/formatter_unicode.o Python/fileutils.o Python/dynload_shlib.o    Modules/config.o Modules/getpath.o Modules/main.o Modules/gcmodule.o Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/_abc.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_threadmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/faulthandler.o  Modules/_tracemalloc.o Modules/hashtable.o  Modules/symtablemodule.o  Modules/xxsubtype.o Python/frozen.o
+gcc -pthread     -Xlinker -export-dynamic -o python Programs/python.o libpython3.8.a -lcrypt -lpthread -ldl  -lutil -lm   -lm 
+./python -E -S -m sysconfig --generate-posix-vars ;\
+if test $? -ne 0 ; then \
+	echo "generate-posix-vars failed" ; \
+	rm -f ./pybuilddir.txt ; \
+	exit 1 ; \
+fi
+gcc -pthread -c -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Modules/_math.o Modules/_math.c
+ CC='gcc -pthread' LDSHARED='gcc -pthread -shared    ' OPT='-DNDEBUG -g -fwrapv -O3 -Wall' 	_TCLTK_INCLUDES='' _TCLTK_LIBS='' 	./python -E ./setup.py  build
+running build
+running build_ext
+building '_struct' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_struct.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_struct.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_struct.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_struct.cpython-38-x86_64-linux-gnu.so
+building 'array' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/arraymodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/arraymodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/arraymodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/array.cpython-38-x86_64-linux-gnu.so
+building '_contextvars' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_contextvarsmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_contextvarsmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_contextvarsmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_contextvars.cpython-38-x86_64-linux-gnu.so
+building 'math' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/mathmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mathmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mathmodule.o Modules/_math.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/math.cpython-38-x86_64-linux-gnu.so
+building 'cmath' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cmathmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cmathmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cmathmodule.o Modules/_math.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/cmath.cpython-38-x86_64-linux-gnu.so
+building '_datetime' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_datetimemodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_datetimemodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_datetimemodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/_datetime.cpython-38-x86_64-linux-gnu.so
+building '_random' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_randommodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_randommodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_randommodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_random.cpython-38-x86_64-linux-gnu.so
+building '_bisect' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_bisectmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bisectmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bisectmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_bisect.cpython-38-x86_64-linux-gnu.so
+building '_heapq' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_heapqmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_heapqmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_heapqmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_heapq.cpython-38-x86_64-linux-gnu.so
+building '_pickle' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_pickle.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_pickle.o -DPy_BUILD_CORE_MODULE
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_pickle.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_pickle.cpython-38-x86_64-linux-gnu.so
+building '_json' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_json.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_json.o -DPy_BUILD_CORE_MODULE
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_json.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_json.cpython-38-x86_64-linux-gnu.so
+building '_lsprof' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_lsprof.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_lsprof.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/rotatingtree.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/rotatingtree.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_lsprof.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/rotatingtree.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_lsprof.cpython-38-x86_64-linux-gnu.so
+building 'unicodedata' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/unicodedata.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/unicodedata.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/unicodedata.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/unicodedata.cpython-38-x86_64-linux-gnu.so
+building '_opcode' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_opcode.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_opcode.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_opcode.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_opcode.cpython-38-x86_64-linux-gnu.so
+building '_asyncio' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_asynciomodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_asynciomodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_asynciomodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_asyncio.cpython-38-x86_64-linux-gnu.so
+building '_queue' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_queuemodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_queuemodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_queuemodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_queue.cpython-38-x86_64-linux-gnu.so
+building '_statistics' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_statisticsmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_statisticsmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_statisticsmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_statistics.cpython-38-x86_64-linux-gnu.so
+building 'fcntl' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/fcntlmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/fcntlmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/fcntlmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/fcntl.cpython-38-x86_64-linux-gnu.so
+building 'grp' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/grpmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/grpmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/grpmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/grp.cpython-38-x86_64-linux-gnu.so
+building 'spwd' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/spwdmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/spwdmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/spwdmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/spwd.cpython-38-x86_64-linux-gnu.so
+building 'select' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/selectmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/selectmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/selectmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/select.cpython-38-x86_64-linux-gnu.so
+building 'parser' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/parsermodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/parsermodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/parsermodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/parser.cpython-38-x86_64-linux-gnu.so
+building 'mmap' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/mmapmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mmapmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mmapmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/mmap.cpython-38-x86_64-linux-gnu.so
+building 'syslog' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/syslogmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/syslogmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/syslogmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/syslog.cpython-38-x86_64-linux-gnu.so
+building '_xxsubinterpreters' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_xxsubinterpretersmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxsubinterpretersmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxsubinterpretersmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_xxsubinterpreters.cpython-38-x86_64-linux-gnu.so
+building 'audioop' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/audioop.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/audioop.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/audioop.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/audioop.cpython-38-x86_64-linux-gnu.so
+building '_csv' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_csv.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_csv.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_csv.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_csv.cpython-38-x86_64-linux-gnu.so
+building '_posixsubprocess' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_posixsubprocess.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_posixsubprocess.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_posixsubprocess.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_posixsubprocess.cpython-38-x86_64-linux-gnu.so
+building '_testcapi' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testcapimodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testcapimodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testcapimodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testcapi.cpython-38-x86_64-linux-gnu.so
+building '_testinternalcapi' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testinternalcapi.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testinternalcapi.o -DPy_BUILD_CORE_MODULE
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testinternalcapi.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testinternalcapi.cpython-38-x86_64-linux-gnu.so
+building '_testbuffer' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testbuffer.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testbuffer.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testbuffer.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testbuffer.cpython-38-x86_64-linux-gnu.so
+building '_testimportmultiple' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testimportmultiple.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testimportmultiple.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testimportmultiple.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testimportmultiple.cpython-38-x86_64-linux-gnu.so
+building '_testmultiphase' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testmultiphase.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testmultiphase.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testmultiphase.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testmultiphase.cpython-38-x86_64-linux-gnu.so
+building '_xxtestfuzz' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/_xxtestfuzz.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/_xxtestfuzz.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/fuzzer.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/fuzzer.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/_xxtestfuzz.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/fuzzer.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_xxtestfuzz.cpython-38-x86_64-linux-gnu.so
+building 'readline' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/readline.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/readline.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/readline.o -L/usr/lib/termcap -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lreadline -o build/lib.linux-x86_64-3.8/readline.cpython-38-x86_64-linux-gnu.so
+building '_curses' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_cursesmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cursesmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cursesmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lncursesw -o build/lib.linux-x86_64-3.8/_curses.cpython-38-x86_64-linux-gnu.so
+building '_curses_panel' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_curses_panel.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_curses_panel.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_curses_panel.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lpanelw -lncursesw -o build/lib.linux-x86_64-3.8/_curses_panel.cpython-38-x86_64-linux-gnu.so
+building '_crypt' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_cryptmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cryptmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cryptmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lcrypt -o build/lib.linux-x86_64-3.8/_crypt.cpython-38-x86_64-linux-gnu.so
+building '_socket' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/socketmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/socketmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/socketmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_socket.cpython-38-x86_64-linux-gnu.so
+building '_ssl' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ssl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ssl.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ssl.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-3.8/_ssl.cpython-38-x86_64-linux-gnu.so
+building '_hashlib' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_hashopenssl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_hashopenssl.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_hashopenssl.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-3.8/_hashlib.cpython-38-x86_64-linux-gnu.so
+building '_sha256' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/sha256module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha256module.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha256module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha256.cpython-38-x86_64-linux-gnu.so
+building '_sha512' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/sha512module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha512module.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha512module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha512.cpython-38-x86_64-linux-gnu.so
+building '_md5' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/md5module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/md5module.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/md5module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_md5.cpython-38-x86_64-linux-gnu.so
+building '_sha1' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/sha1module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha1module.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha1module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha1.cpython-38-x86_64-linux-gnu.so
+building '_blake2' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2module.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2b_impl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2b_impl.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2s_impl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2s_impl.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2module.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2b_impl.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2s_impl.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_blake2.cpython-38-x86_64-linux-gnu.so
+building '_sha3' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sha3/sha3module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sha3/sha3module.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sha3/sha3module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha3.cpython-38-x86_64-linux-gnu.so
+building '_sqlite3' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cache.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cache.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/connection.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/connection.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cursor.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cursor.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/microprotocols.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/microprotocols.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/module.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/prepare_protocol.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/prepare_protocol.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/row.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/row.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/statement.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/statement.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/util.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/util.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cache.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/connection.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cursor.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/microprotocols.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/module.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/prepare_protocol.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/row.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/statement.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/util.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lsqlite3 -o build/lib.linux-x86_64-3.8/_sqlite3.cpython-38-x86_64-linux-gnu.so
+building 'termios' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/termios.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/termios.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/termios.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/termios.cpython-38-x86_64-linux-gnu.so
+building 'resource' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/resource.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/resource.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/resource.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/resource.cpython-38-x86_64-linux-gnu.so
+building 'ossaudiodev' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/ossaudiodev.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/ossaudiodev.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/ossaudiodev.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/ossaudiodev.cpython-38-x86_64-linux-gnu.so
+building 'nis' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/nismodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/nismodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/nismodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lnsl -o build/lib.linux-x86_64-3.8/nis.cpython-38-x86_64-linux-gnu.so
+building 'zlib' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/zlibmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/zlibmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/zlibmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lz -o build/lib.linux-x86_64-3.8/zlib.cpython-38-x86_64-linux-gnu.so
+building 'binascii' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/binascii.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/binascii.o -DUSE_ZLIB_CRC32
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/binascii.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lz -o build/lib.linux-x86_64-3.8/binascii.cpython-38-x86_64-linux-gnu.so
+building '_bz2' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_bz2module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bz2module.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bz2module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lbz2 -o build/lib.linux-x86_64-3.8/_bz2.cpython-38-x86_64-linux-gnu.so
+building 'pyexpat' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/pyexpat.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/pyexpat.o -Wno-unreachable-code
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/expat/xmlparse.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlparse.o -Wno-unreachable-code
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/expat/xmlrole.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlrole.o -Wno-unreachable-code
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/expat/xmltok.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmltok.o -Wno-unreachable-code
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/pyexpat.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlparse.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlrole.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmltok.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/pyexpat.cpython-38-x86_64-linux-gnu.so
+building '_elementtree' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_elementtree.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_elementtree.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_elementtree.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_elementtree.cpython-38-x86_64-linux-gnu.so
+building '_multibytecodec' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/multibytecodec.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/multibytecodec.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/multibytecodec.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_multibytecodec.cpython-38-x86_64-linux-gnu.so
+building '_codecs_kr' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_kr.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_kr.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_kr.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_kr.cpython-38-x86_64-linux-gnu.so
+building '_codecs_jp' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_jp.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_jp.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_jp.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_jp.cpython-38-x86_64-linux-gnu.so
+building '_codecs_cn' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_cn.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_cn.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_cn.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_cn.cpython-38-x86_64-linux-gnu.so
+building '_codecs_tw' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_tw.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_tw.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_tw.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_tw.cpython-38-x86_64-linux-gnu.so
+building '_codecs_hk' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_hk.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_hk.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_hk.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_hk.cpython-38-x86_64-linux-gnu.so
+building '_codecs_iso2022' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_iso2022.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_iso2022.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_iso2022.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_iso2022.cpython-38-x86_64-linux-gnu.so
+building '_decimal' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/_decimal.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/_decimal.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/basearith.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/basearith.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/constants.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/constants.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/context.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/context.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/convolute.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/convolute.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/crt.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/crt.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/difradix2.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/difradix2.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fnt.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fnt.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fourstep.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fourstep.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/io.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/io.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/memory.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/memory.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/mpdecimal.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/mpdecimal.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/numbertheory.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/numbertheory.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/sixstep.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/sixstep.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/transpose.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/transpose.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/_decimal.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/basearith.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/constants.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/context.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/convolute.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/crt.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/difradix2.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fnt.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fourstep.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/io.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/memory.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/mpdecimal.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/numbertheory.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/sixstep.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/transpose.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/_decimal.cpython-38-x86_64-linux-gnu.so
+building '_ctypes_test' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes_test.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes_test.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes_test.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/_ctypes_test.cpython-38-x86_64-linux-gnu.so
+building '_posixshmem' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -IModules/_multiprocessing -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/posixshmem.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/posixshmem.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/posixshmem.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lrt -o build/lib.linux-x86_64-3.8/_posixshmem.cpython-38-x86_64-linux-gnu.so
+building '_multiprocessing' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -IModules/_multiprocessing -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/multiprocessing.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/multiprocessing.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -IModules/_multiprocessing -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/semaphore.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/semaphore.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/multiprocessing.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/semaphore.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_multiprocessing.cpython-38-x86_64-linux-gnu.so
+building '_tkinter' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_tkinter.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_tkinter.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/tkappinit.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/tkappinit.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_tkinter.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/tkappinit.o -L/usr/X11/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -ltk8.6 -ltcl8.6 -lX11 -o build/lib.linux-x86_64-3.8/_tkinter.cpython-38-x86_64-linux-gnu.so
+building '_uuid' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/uuid -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_uuidmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_uuidmodule.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_uuidmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -luuid -o build/lib.linux-x86_64-3.8/_uuid.cpython-38-x86_64-linux-gnu.so
+building 'xxlimited' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DPy_LIMITED_API=0x03050000 -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/xxlimited.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/xxlimited.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/xxlimited.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/xxlimited.cpython-38-x86_64-linux-gnu.so
+building '_ctypes' extension
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callbacks.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callbacks.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callproc.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callproc.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/stgdict.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/stgdict.o
+gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/cfield.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/cfield.o
+gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callbacks.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callproc.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/stgdict.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/cfield.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lffi -ldl -o build/lib.linux-x86_64-3.8/_ctypes.cpython-38-x86_64-linux-gnu.so
+
+Python build finished successfully!
+The necessary bits to build these optional modules were not found:
+_dbm                  _gdbm                 _lzma              
+To find the necessary bits, look in setup.py in detect_modules() for the module's name.
+
+
+The following modules found by detect_modules() in setup.py, have been
+built by the Makefile instead, as configured by the Setup files:
+_abc                  atexit                pwd                
+time                                                           
+
+running build_scripts
+copying and adjusting /home/vorfolomeev/Python-3.8.2/Tools/scripts/pydoc3 -> build/scripts-3.8
+copying and adjusting /home/vorfolomeev/Python-3.8.2/Tools/scripts/idle3 -> build/scripts-3.8
+copying and adjusting /home/vorfolomeev/Python-3.8.2/Tools/scripts/2to3 -> build/scripts-3.8
+changing mode of build/scripts-3.8/pydoc3 from 664 to 775
+changing mode of build/scripts-3.8/idle3 from 664 to 775
+changing mode of build/scripts-3.8/2to3 from 664 to 775
+renaming build/scripts-3.8/pydoc3 to build/scripts-3.8/pydoc3.8
+renaming build/scripts-3.8/idle3 to build/scripts-3.8/idle3.8
+renaming build/scripts-3.8/2to3 to build/scripts-3.8/2to3-3.8
+gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Programs/_testembed.o ./Programs/_testembed.c
+gcc -pthread     -Xlinker -export-dynamic -o Programs/_testembed Programs/_testembed.o libpython3.8.a -lcrypt -lpthread -ldl  -lutil -lm   -lm 
+make[1]: Leaving directory '/home/vorfolomeev/Python-3.8.2'
diff --git a/opt/_accdef.opt b/opt/_accdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hY2NkZWYub3B0
--- /dev/null
+++ b/opt/_accdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__accdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_acldef.opt b/opt/_acldef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hY2xkZWYub3B0
--- /dev/null
+++ b/opt/_acldef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__acldef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_acrdef.opt b/opt/_acrdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hY3JkZWYub3B0
--- /dev/null
+++ b/opt/_acrdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__acrdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_armdef.opt b/opt/_armdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hcm1kZWYub3B0
--- /dev/null
+++ b/opt/_armdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__armdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_asyncio.opt b/opt/_asyncio.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hc3luY2lvLm9wdA==
--- /dev/null
+++ b/opt/_asyncio.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__asyncio=PROCEDURE)
diff --git a/opt/_bisect.opt b/opt/_bisect.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19iaXNlY3Qub3B0
--- /dev/null
+++ b/opt/_bisect.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__bisect=PROCEDURE)
diff --git a/opt/_blake2.opt b/opt/_blake2.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ibGFrZTIub3B0
--- /dev/null
+++ b/opt/_blake2.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__blake2=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_brkdef.opt b/opt/_brkdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19icmtkZWYub3B0
--- /dev/null
+++ b/opt/_brkdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__brkdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_bz2.opt b/opt/_bz2.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19iejIub3B0
--- /dev/null
+++ b/opt/_bz2.opt
@@ -0,0 +1,6 @@
+oss$root:[lib]libbz2_32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__bz2=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_capdef.opt b/opt/_capdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jYXBkZWYub3B0
--- /dev/null
+++ b/opt/_capdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__capdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_chpdef.opt b/opt/_chpdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jaHBkZWYub3B0
--- /dev/null
+++ b/opt/_chpdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__chpdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_ciadef.opt b/opt/_ciadef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jaWFkZWYub3B0
--- /dev/null
+++ b/opt/_ciadef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ciadef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_clidef.opt b/opt/_clidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jbGlkZWYub3B0
--- /dev/null
+++ b/opt/_clidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__clidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_cmbdef.opt b/opt/_cmbdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jbWJkZWYub3B0
--- /dev/null
+++ b/opt/_cmbdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__cmbdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_codecs_cn.opt b/opt/_codecs_cn.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfY24ub3B0
--- /dev/null
+++ b/opt/_codecs_cn.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__codecs_cn=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_codecs_hk.opt b/opt/_codecs_hk.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfaGsub3B0
--- /dev/null
+++ b/opt/_codecs_hk.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__codecs_hk=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_codecs_iso2022.opt b/opt/_codecs_iso2022.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfaXNvMjAyMi5vcHQ=
--- /dev/null
+++ b/opt/_codecs_iso2022.opt
@@ -0,0 +1,4 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__codecs_iso2022=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_codecs_jp.opt b/opt/_codecs_jp.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfanAub3B0
--- /dev/null
+++ b/opt/_codecs_jp.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__codecs_jp=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_codecs_kr.opt b/opt/_codecs_kr.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3Nfa3Iub3B0
--- /dev/null
+++ b/opt/_codecs_kr.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__codecs_kr=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_codecs_tw.opt b/opt/_codecs_tw.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfdHcub3B0
--- /dev/null
+++ b/opt/_codecs_tw.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__codecs_tw=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_contextvars.opt b/opt/_contextvars.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb250ZXh0dmFycy5vcHQ=
--- /dev/null
+++ b/opt/_contextvars.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__contextvars=PROCEDURE)
diff --git a/opt/_crypt.opt b/opt/_crypt.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jcnlwdC5vcHQ=
--- /dev/null
+++ b/opt/_crypt.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__crypt=PROCEDURE)
diff --git a/opt/_csv.opt b/opt/_csv.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jc3Yub3B0
--- /dev/null
+++ b/opt/_csv.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__csv=PROCEDURE)
diff --git a/opt/_ctypes.opt b/opt/_ctypes.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jdHlwZXMub3B0
--- /dev/null
+++ b/opt/_ctypes.opt
@@ -0,0 +1,5 @@
+oss$root:[lib]libffi32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ctypes=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_ctypes_test.opt b/opt/_ctypes_test.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jdHlwZXNfdGVzdC5vcHQ=
--- /dev/null
+++ b/opt/_ctypes_test.opt
@@ -0,0 +1,111 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=( -
+PyInit__ctypes_test=PROCEDURE, -
+! ELF$TFRADR=DATA, -
+_py_func=PROCEDURE, -
+_py_func_si=PROCEDURE, -
+-
+-
+_testfunc_ai8=PROCEDURE, -
+_testfunc_array_in_struct1=PROCEDURE, -
+_testfunc_array_in_struct2=PROCEDURE, -
+_testfunc_array_in_struct2a=PROCEDURE, -
+_testfunc_bitfield_by_r1m2g8al$=PROCEDURE, -
+_testfunc_bitfield_by_r3qi2s7f$=PROCEDURE, -
+_testfunc_bitfield_by_value1=PROCEDURE, -
+_testfunc_bitfield_by_value2=PROCEDURE, -
+_testfunc_byval=PROCEDURE, -
+_testfunc_c_p_p=PROCEDURE, -
+_testfunc_callback_i_if=PROCEDURE, -
+_testfunc_callback_q_qf=PROCEDURE, -
+_testfunc_callback_with_pointer=PROCEDURE, -
+_testfunc_callfuncp=PROCEDURE, -
+_testfunc_cbk_large_struct=PROCEDURE, -
+_testfunc_cbk_reg_double=PROCEDURE, -
+_testfunc_cbk_reg_int=PROCEDURE, -
+_testfunc_d_bhilfd=PROCEDURE, -
+_testfunc_D_bhilfD=PROCEDURE, -
+_testfunc_deref_pointer=PROCEDURE, -
+_testfunc_f_bhilfd=PROCEDURE, -
+_testfunc_i_bhilfd=PROCEDURE, -
+_testfunc_large_struct_0cv4oj9$=PROCEDURE, -
+_testfunc_p_p=PROCEDURE, -
+_testfunc_q_bhilfd=PROCEDURE, -
+_testfunc_q_bhilfdq=PROCEDURE, -
+_testfunc_reg_struct_up2p63n37$=PROCEDURE, -
+_testfunc_union_by_reference1=PROCEDURE, -
+_testfunc_union_by_reference2=PROCEDURE, -
+_testfunc_union_by_reference3=PROCEDURE, -
+_testfunc_union_by_value1=PROCEDURE, -
+_testfunc_union_by_value2=PROCEDURE, -
+_testfunc_v=PROCEDURE, -
+_xxx_lib=DATA, -
+an_integer=DATA, -
+bottom=DATA, -
+get_an_integer=PROCEDURE, -
+get_strchr=PROCEDURE, -
+GetRectangle=PROCEDURE, -
+getSPAMANDEGGS=PROCEDURE, -
+integrate=PROCEDURE, -
+last_tf_arg_s=DATA, -
+last_tf_arg_u=DATA, -
+last_tfrsuv_arg=DATA, -
+left=DATA, -
+library_get=PROCEDURE, -
+my_eggs=DATA, -
+my_free=PROCEDURE, -
+my_qsort=PROCEDURE, -
+my_spams=DATA, -
+my_sqrt=PROCEDURE, -
+my_strchr=PROCEDURE, -
+my_strdup=PROCEDURE, -
+my_strtok=PROCEDURE, -
+my_wcsdup=PROCEDURE, -
+my_wcslen=PROCEDURE, -
+myprintf=PROCEDURE, -
+PointInRect=PROCEDURE, -
+! py_func=DATA, -
+! py_func_si=DATA, -
+ret_2h_func=PROCEDURE, -
+ret_8i_func=PROCEDURE, -
+ReturnRect=PROCEDURE, -
+right=DATA, -
+set_bitfields=PROCEDURE, -
+testfunc_array=PROCEDURE, -
+testfunc_Ddd=PROCEDURE, -
+testfunc_DDD=PROCEDURE, -
+testfunc_iii=PROCEDURE, -
+tf_b=PROCEDURE, -
+tf_B=PROCEDURE, -
+tf_bb=PROCEDURE, -
+tf_bB=PROCEDURE, -
+tf_bd=PROCEDURE, -
+tf_bD=PROCEDURE, -
+tf_bf=PROCEDURE, -
+tf_bh=PROCEDURE, -
+tf_bH=PROCEDURE, -
+tf_bi=PROCEDURE, -
+tf_bI=PROCEDURE, -
+tf_bl=PROCEDURE, -
+tf_bL=PROCEDURE, -
+tf_bq=PROCEDURE, -
+tf_bQ=PROCEDURE, -
+tf_d=PROCEDURE, -
+tf_D=PROCEDURE, -
+tf_f=PROCEDURE, -
+tf_h=PROCEDURE, -
+tf_H=PROCEDURE, -
+tf_i=PROCEDURE, -
+tf_I=PROCEDURE, -
+tf_l=PROCEDURE, -
+tf_L=PROCEDURE, -
+tf_q=PROCEDURE, -
+tf_Q=PROCEDURE, -
+top=DATA, -
+tv_i=PROCEDURE, -
+TwoOutArgs=PROCEDURE, -
+unpack_bitfields=PROCEDURE -
+)
diff --git a/opt/_cvtfnmdef.opt b/opt/_cvtfnmdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jdnRmbm1kZWYub3B0
--- /dev/null
+++ b/opt/_cvtfnmdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__cvtfnmdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_datetime.opt b/opt/_datetime.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kYXRldGltZS5vcHQ=
--- /dev/null
+++ b/opt/_datetime.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__datetime=PROCEDURE)
diff --git a/opt/_dcdef.opt b/opt/_dcdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kY2RlZi5vcHQ=
--- /dev/null
+++ b/opt/_dcdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dcdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_decc.opt b/opt/_decc.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kZWNjLm9wdA==
--- /dev/null
+++ b/opt/_decc.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__decc=PROCEDURE)
diff --git a/opt/_decimal.opt b/opt/_decimal.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kZWNpbWFsLm9wdA==
--- /dev/null
+++ b/opt/_decimal.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__decimal=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_dmtdef.opt b/opt/_dmtdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kbXRkZWYub3B0
--- /dev/null
+++ b/opt/_dmtdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dmtdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_dpsdef.opt b/opt/_dpsdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kcHNkZWYub3B0
--- /dev/null
+++ b/opt/_dpsdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dpsdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_dscdef.opt b/opt/_dscdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kc2NkZWYub3B0
--- /dev/null
+++ b/opt/_dscdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dscdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_dtr.opt b/opt/_dtr.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kdHIub3B0
--- /dev/null
+++ b/opt/_dtr.opt
@@ -0,0 +1,7 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+sys$library:dtrshr.exe/share
+dtr$library:termserve.olb/lib
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dtr=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_dvidef.opt b/opt/_dvidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kdmlkZWYub3B0
--- /dev/null
+++ b/opt/_dvidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dvidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_dvsdef.opt b/opt/_dvsdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kdnNkZWYub3B0
--- /dev/null
+++ b/opt/_dvsdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__dvsdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_efndef.opt b/opt/_efndef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19lZm5kZWYub3B0
--- /dev/null
+++ b/opt/_efndef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__efndef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_elementtree.opt b/opt/_elementtree.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19lbGVtZW50dHJlZS5vcHQ=
--- /dev/null
+++ b/opt/_elementtree.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__elementtree=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_eradef.opt b/opt/_eradef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19lcmFkZWYub3B0
--- /dev/null
+++ b/opt/_eradef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__eradef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_fabdef.opt b/opt/_fabdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mYWJkZWYub3B0
--- /dev/null
+++ b/opt/_fabdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__fabdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_fdldef.opt b/opt/_fdldef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mZGxkZWYub3B0
--- /dev/null
+++ b/opt/_fdldef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__fdldef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_fpdef.opt b/opt/_fpdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mcGRlZi5vcHQ=
--- /dev/null
+++ b/opt/_fpdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__fpdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_freeze_importlib.opt b/opt/_freeze_importlib.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mcmVlemVfaW1wb3J0bGliLm9wdA==
--- /dev/null
+++ b/opt/_freeze_importlib.opt
@@ -0,0 +1,143 @@
+python$build_obj:[Programs]_freeze_importlib.obj
+python$build_obj:[Modules._io]_iomodule.obj
+python$build_obj:[Modules._io]bufferedio.obj
+python$build_obj:[Modules._io]bytesio.obj
+python$build_obj:[Modules._io]fileio.obj
+python$build_obj:[Modules._io]iobase.obj
+python$build_obj:[Modules._io]stringio.obj
+python$build_obj:[Modules._io]textio.obj
+python$build_obj:[Modules]_abc.obj
+python$build_obj:[Modules]_codecsmodule.obj
+python$build_obj:[Modules]_collectionsmodule.obj
+python$build_obj:[Modules]_functoolsmodule.obj
+python$build_obj:[Modules]_localemodule.obj
+python$build_obj:[Modules]_operator.obj
+python$build_obj:[Modules]_sre.obj
+python$build_obj:[Modules]_stat.obj
+python$build_obj:[Modules]_threadmodule.obj
+python$build_obj:[Modules]_tracemalloc.obj
+python$build_obj:[Modules]_weakref.obj
+python$build_obj:[Modules]atexitmodule.obj
+python$build_obj:[Modules]config.obj
+python$build_obj:[Modules]errnomodule.obj
+python$build_obj:[Modules]faulthandler.obj
+python$build_obj:[Modules]gcmodule.obj
+python$build_obj:[Modules]getbuildinfo.obj
+python$build_obj:[Modules]getpath.obj
+python$build_obj:[Modules]hashtable.obj
+python$build_obj:[Modules]itertoolsmodule.obj
+python$build_obj:[Modules]main.obj
+python$build_obj:[Modules]posixmodule.obj
+python$build_obj:[Modules]pwdmodule.obj
+python$build_obj:[Modules]signalmodule.obj
+python$build_obj:[Modules]symtablemodule.obj
+python$build_obj:[Modules]timemodule.obj
+python$build_obj:[Modules]xxsubtype.obj
+python$build_obj:[Objects]abstract.obj
+python$build_obj:[Objects]accu.obj
+python$build_obj:[Objects]boolobject.obj
+python$build_obj:[Objects]bytearrayobject.obj
+python$build_obj:[Objects]bytes_methods.obj
+python$build_obj:[Objects]bytesobject.obj
+python$build_obj:[Objects]call.obj
+python$build_obj:[Objects]capsule.obj
+python$build_obj:[Objects]cellobject.obj
+python$build_obj:[Objects]classobject.obj
+python$build_obj:[Objects]codeobject.obj
+python$build_obj:[Objects]complexobject.obj
+python$build_obj:[Objects]descrobject.obj
+python$build_obj:[Objects]dictobject.obj
+python$build_obj:[Objects]enumobject.obj
+python$build_obj:[Objects]exceptions.obj
+python$build_obj:[Objects]fileobject.obj
+python$build_obj:[Objects]floatobject.obj
+python$build_obj:[Objects]frameobject.obj
+python$build_obj:[Objects]funcobject.obj
+python$build_obj:[Objects]genobject.obj
+python$build_obj:[Objects]interpreteridobject.obj
+python$build_obj:[Objects]iterobject.obj
+python$build_obj:[Objects]listobject.obj
+python$build_obj:[Objects]longobject.obj
+python$build_obj:[Objects]memoryobject.obj
+python$build_obj:[Objects]methodobject.obj
+python$build_obj:[Objects]moduleobject.obj
+python$build_obj:[Objects]namespaceobject.obj
+python$build_obj:[Objects]object.obj
+python$build_obj:[Objects]obmalloc.obj
+python$build_obj:[Objects]odictobject.obj
+python$build_obj:[Objects]picklebufobject.obj
+python$build_obj:[Objects]rangeobject.obj
+python$build_obj:[Objects]setobject.obj
+python$build_obj:[Objects]sliceobject.obj
+python$build_obj:[Objects]structseq.obj
+python$build_obj:[Objects]tupleobject.obj
+python$build_obj:[Objects]typeobject.obj
+python$build_obj:[Objects]unicodectype.obj
+python$build_obj:[Objects]unicodeobject.obj
+python$build_obj:[Objects]weakrefobject.obj
+python$build_obj:[Parser]acceler.obj
+python$build_obj:[Parser]grammar1.obj
+python$build_obj:[Parser]listnode.obj
+python$build_obj:[Parser]myreadline.obj
+python$build_obj:[Parser]node.obj
+python$build_obj:[Parser]parser.obj
+python$build_obj:[Parser]parsetok.obj
+python$build_obj:[Parser]token.obj
+python$build_obj:[Parser]tokenizer.obj
+python$build_obj:[Python]Python-ast.obj
+python$build_obj:[Python]_warnings.obj
+python$build_obj:[Python]asdl.obj
+python$build_obj:[Python]ast.obj
+python$build_obj:[Python]ast_opt.obj
+python$build_obj:[Python]ast_unparse.obj
+python$build_obj:[Python]bltinmodule.obj
+python$build_obj:[Python]bootstrap_hash.obj
+python$build_obj:[Python]ceval.obj
+python$build_obj:[Python]codecs.obj
+python$build_obj:[Python]compile.obj
+python$build_obj:[Python]context.obj
+python$build_obj:[Python]dtoa.obj
+python$build_obj:[Python]dynamic_annotations.obj
+python$build_obj:[Python]dynload_shlib.obj
+python$build_obj:[Python]errors.obj
+python$build_obj:[Python]fileutils.obj
+python$build_obj:[Python]formatter_unicode.obj
+python$build_obj:[Python]frozenmain.obj
+python$build_obj:[Python]future.obj
+python$build_obj:[Python]getargs.obj
+python$build_obj:[Python]getcompiler.obj
+python$build_obj:[Python]getcopyright.obj
+python$build_obj:[Python]getopt.obj
+python$build_obj:[Python]getplatform.obj
+python$build_obj:[Python]getversion.obj
+python$build_obj:[Python]graminit.obj
+python$build_obj:[Python]hamt.obj
+python$build_obj:[Python]import.obj
+python$build_obj:[Python]importdl.obj
+python$build_obj:[Python]initconfig.obj
+python$build_obj:[Python]marshal.obj
+python$build_obj:[Python]modsupport.obj
+python$build_obj:[Python]mysnprintf.obj
+python$build_obj:[Python]mystrtoul.obj
+python$build_obj:[Python]pathconfig.obj
+python$build_obj:[Python]peephole.obj
+python$build_obj:[Python]preconfig.obj
+python$build_obj:[Python]pyarena.obj
+python$build_obj:[Python]pyctype.obj
+python$build_obj:[Python]pyfpe.obj
+python$build_obj:[Python]pyhash.obj
+python$build_obj:[Python]pylifecycle.obj
+python$build_obj:[Python]pymath.obj
+python$build_obj:[Python]pystate.obj
+python$build_obj:[Python]pystrcmp.obj
+python$build_obj:[Python]pystrhex.obj
+python$build_obj:[Python]pystrtod.obj
+python$build_obj:[Python]pythonrun.obj
+python$build_obj:[Python]pytime.obj
+python$build_obj:[Python]structmember.obj
+python$build_obj:[Python]symtable.obj
+python$build_obj:[Python]sysmodule.obj
+python$build_obj:[Python]thread.obj
+python$build_obj:[Python]traceback.obj
+python$build_obj:[vms]stdioreadline.obj
+python$build_obj:[vms]vms_poll_select_hack.obj
diff --git a/opt/_fscndef.opt b/opt/_fscndef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mc2NuZGVmLm9wdA==
--- /dev/null
+++ b/opt/_fscndef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__fscndef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_gdbm.opt b/opt/_gdbm.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19nZGJtLm9wdA==
--- /dev/null
+++ b/opt/_gdbm.opt
@@ -0,0 +1,5 @@
+oss$root:[lib]libgdbm32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__gdbm=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_hashlib.opt b/opt/_hashlib.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19oYXNobGliLm9wdA==
--- /dev/null
+++ b/opt/_hashlib.opt
@@ -0,0 +1,7 @@
+sys$library:ssl111$libssl_shr32.exe/share
+sys$library:ssl111$libcrypto_shr32.exe/share
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__hashlib=PROCEDURE)
diff --git a/opt/_heapq.opt b/opt/_heapq.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19oZWFwcS5vcHQ=
--- /dev/null
+++ b/opt/_heapq.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__heapq=PROCEDURE)
diff --git a/opt/_iccdef.opt b/opt/_iccdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pY2NkZWYub3B0
--- /dev/null
+++ b/opt/_iccdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__iccdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_ile3.opt b/opt/_ile3.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbGUzLm9wdA==
--- /dev/null
+++ b/opt/_ile3.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ile3=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_iledef.opt b/opt/_iledef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbGVkZWYub3B0
--- /dev/null
+++ b/opt/_iledef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__iledef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_impdef.opt b/opt/_impdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbXBkZWYub3B0
--- /dev/null
+++ b/opt/_impdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__impdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_initdef.opt b/opt/_initdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbml0ZGVmLm9wdA==
--- /dev/null
+++ b/opt/_initdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__initdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_iodef.opt b/opt/_iodef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pb2RlZi5vcHQ=
--- /dev/null
+++ b/opt/_iodef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__iodef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_issdef.opt b/opt/_issdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pc3NkZWYub3B0
--- /dev/null
+++ b/opt/_issdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__issdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_jbcmsgdef.opt b/opt/_jbcmsgdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19qYmNtc2dkZWYub3B0
--- /dev/null
+++ b/opt/_jbcmsgdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__jbcmsgdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_jpidef.opt b/opt/_jpidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19qcGlkZWYub3B0
--- /dev/null
+++ b/opt/_jpidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__jpidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_json.opt b/opt/_json.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19qc29uLm9wdA==
--- /dev/null
+++ b/opt/_json.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__json=PROCEDURE)
diff --git a/opt/_kgbdef.opt b/opt/_kgbdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19rZ2JkZWYub3B0
--- /dev/null
+++ b/opt/_kgbdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__kgbdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_lckdef.opt b/opt/_lckdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sY2tkZWYub3B0
--- /dev/null
+++ b/opt/_lckdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__lckdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_lib.opt b/opt/_lib.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWIub3B0
--- /dev/null
+++ b/opt/_lib.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__lib=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_libclidef.opt b/opt/_libclidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWJjbGlkZWYub3B0
--- /dev/null
+++ b/opt/_libclidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__libclidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_libdtdef.opt b/opt/_libdtdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWJkdGRlZi5vcHQ=
--- /dev/null
+++ b/opt/_libdtdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__libdtdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_libfisdef.opt b/opt/_libfisdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWJmaXNkZWYub3B0
--- /dev/null
+++ b/opt/_libfisdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__libfisdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_lkidef.opt b/opt/_lkidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sa2lkZWYub3B0
--- /dev/null
+++ b/opt/_lkidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__lkidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_lnmdef.opt b/opt/_lnmdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sbm1kZWYub3B0
--- /dev/null
+++ b/opt/_lnmdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__lnmdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_lsprof.opt b/opt/_lsprof.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sc3Byb2Yub3B0
--- /dev/null
+++ b/opt/_lsprof.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__lsprof=PROCEDURE)
diff --git a/opt/_lzma.opt b/opt/_lzma.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sem1hLm9wdA==
--- /dev/null
+++ b/opt/_lzma.opt
@@ -0,0 +1,6 @@
+oss$root:[lib]liblzma32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__lzma=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_maildef.opt b/opt/_maildef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tYWlsZGVmLm9wdA==
--- /dev/null
+++ b/opt/_maildef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__maildef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_md5.opt b/opt/_md5.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tZDUub3B0
--- /dev/null
+++ b/opt/_md5.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__md5=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_mntdef.opt b/opt/_mntdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tbnRkZWYub3B0
--- /dev/null
+++ b/opt/_mntdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__mntdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_multibytecodec.opt b/opt/_multibytecodec.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tdWx0aWJ5dGVjb2RlYy5vcHQ=
--- /dev/null
+++ b/opt/_multibytecodec.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__multibytecodec=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_multiprocessing.opt b/opt/_multiprocessing.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tdWx0aXByb2Nlc3Npbmcub3B0
--- /dev/null
+++ b/opt/_multiprocessing.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__multiprocessing=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_nsadef.opt b/opt/_nsadef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19uc2FkZWYub3B0
--- /dev/null
+++ b/opt/_nsadef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__nsadef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_opcode.opt b/opt/_opcode.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19vcGNvZGUub3B0
--- /dev/null
+++ b/opt/_opcode.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__opcode=PROCEDURE)
diff --git a/opt/_ossdef.opt b/opt/_ossdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19vc3NkZWYub3B0
--- /dev/null
+++ b/opt/_ossdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ossdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_pcbdef.opt b/opt/_pcbdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wY2JkZWYub3B0
--- /dev/null
+++ b/opt/_pcbdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__pcbdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_pickle.opt b/opt/_pickle.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19waWNrbGUub3B0
--- /dev/null
+++ b/opt/_pickle.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__pickle=PROCEDURE)
diff --git a/opt/_posixshmem.opt b/opt/_posixshmem.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wb3NpeHNobWVtLm9wdA==
--- /dev/null
+++ b/opt/_posixshmem.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__posixshmem=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_posixsubprocess.opt b/opt/_posixsubprocess.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wb3NpeHN1YnByb2Nlc3Mub3B0
--- /dev/null
+++ b/opt/_posixsubprocess.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__posixsubprocess=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_ppropdef.opt b/opt/_ppropdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcHJvcGRlZi5vcHQ=
--- /dev/null
+++ b/opt/_ppropdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ppropdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_pqldef.opt b/opt/_pqldef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcWxkZWYub3B0
--- /dev/null
+++ b/opt/_pqldef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__pqldef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_prcdef.opt b/opt/_prcdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcmNkZWYub3B0
--- /dev/null
+++ b/opt/_prcdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__prcdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_prdef.opt b/opt/_prdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcmRlZi5vcHQ=
--- /dev/null
+++ b/opt/_prdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__prdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_prvdef.opt b/opt/_prvdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcnZkZWYub3B0
--- /dev/null
+++ b/opt/_prvdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__prvdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_prxdef.opt b/opt/_prxdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcnhkZWYub3B0
--- /dev/null
+++ b/opt/_prxdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__prxdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_pscandef.opt b/opt/_pscandef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wc2NhbmRlZi5vcHQ=
--- /dev/null
+++ b/opt/_pscandef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__pscandef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_psldef.opt b/opt/_psldef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wc2xkZWYub3B0
--- /dev/null
+++ b/opt/_psldef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__psldef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_pxbdef.opt b/opt/_pxbdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19weGJkZWYub3B0
--- /dev/null
+++ b/opt/_pxbdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__pxbdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_queue.opt b/opt/_queue.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19xdWV1ZS5vcHQ=
--- /dev/null
+++ b/opt/_queue.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__queue=PROCEDURE)
diff --git a/opt/_quidef.opt b/opt/_quidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19xdWlkZWYub3B0
--- /dev/null
+++ b/opt/_quidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__quidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_rabdef.opt b/opt/_rabdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yYWJkZWYub3B0
--- /dev/null
+++ b/opt/_rabdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rabdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_random.opt b/opt/_random.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yYW5kb20ub3B0
--- /dev/null
+++ b/opt/_random.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__random=PROCEDURE)
diff --git a/opt/_rdb.opt b/opt/_rdb.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yZGIub3B0
--- /dev/null
+++ b/opt/_rdb.opt
@@ -0,0 +1,6 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+sql$user/lib
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rdb=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_rec.opt b/opt/_rec.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yZWMub3B0
--- /dev/null
+++ b/opt/_rec.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rec=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_regdef.opt b/opt/_regdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yZWdkZWYub3B0
--- /dev/null
+++ b/opt/_regdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__regdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_rmidef.opt b/opt/_rmidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ybWlkZWYub3B0
--- /dev/null
+++ b/opt/_rmidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rmidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_rms.opt b/opt/_rms.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ybXMub3B0
--- /dev/null
+++ b/opt/_rms.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rms=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_rmsdef.opt b/opt/_rmsdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ybXNkZWYub3B0
--- /dev/null
+++ b/opt/_rmsdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rmsdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_rsdmdef.opt b/opt/_rsdmdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yc2RtZGVmLm9wdA==
--- /dev/null
+++ b/opt/_rsdmdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__rsdmdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sdvdef.opt b/opt/_sdvdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zZHZkZWYub3B0
--- /dev/null
+++ b/opt/_sdvdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sdvdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sha1.opt b/opt/_sha1.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGExLm9wdA==
--- /dev/null
+++ b/opt/_sha1.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sha1=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sha256.opt b/opt/_sha256.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGEyNTYub3B0
--- /dev/null
+++ b/opt/_sha256.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sha256=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sha3.opt b/opt/_sha3.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGEzLm9wdA==
--- /dev/null
+++ b/opt/_sha3.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sha3=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sha512.opt b/opt/_sha512.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGE1MTIub3B0
--- /dev/null
+++ b/opt/_sha512.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sha512=PROCEDURE)
diff --git a/opt/_sjcdef.opt b/opt/_sjcdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zamNkZWYub3B0
--- /dev/null
+++ b/opt/_sjcdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sjcdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_socket.opt b/opt/_socket.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zb2NrZXQub3B0
--- /dev/null
+++ b/opt/_socket.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__socket=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sqlite3.opt b/opt/_sqlite3.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zcWxpdGUzLm9wdA==
--- /dev/null
+++ b/opt/_sqlite3.opt
@@ -0,0 +1,6 @@
+oss$root:[lib]libsqlite32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sqlite3=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_ssdef.opt b/opt/_ssdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zc2RlZi5vcHQ=
--- /dev/null
+++ b/opt/_ssdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ssdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_ssl.opt b/opt/_ssl.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zc2wub3B0
--- /dev/null
+++ b/opt/_ssl.opt
@@ -0,0 +1,7 @@
+sys$library:ssl111$libssl_shr32.exe/share
+sys$library:ssl111$libcrypto_shr32.exe/share
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__ssl=PROCEDURE)
diff --git a/opt/_statedef.opt b/opt/_statedef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdGF0ZWRlZi5vcHQ=
--- /dev/null
+++ b/opt/_statedef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__statedef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_statistics.opt b/opt/_statistics.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdGF0aXN0aWNzLm9wdA==
--- /dev/null
+++ b/opt/_statistics.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__statistics=PROCEDURE)
diff --git a/opt/_stenvdef.opt b/opt/_stenvdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdGVudmRlZi5vcHQ=
--- /dev/null
+++ b/opt/_stenvdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__stenvdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_struct.opt b/opt/_struct.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdHJ1Y3Qub3B0
--- /dev/null
+++ b/opt/_struct.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__struct=PROCEDURE)
diff --git a/opt/_stsdef.opt b/opt/_stsdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdHNkZWYub3B0
--- /dev/null
+++ b/opt/_stsdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__stsdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_syidef.opt b/opt/_syidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zeWlkZWYub3B0
--- /dev/null
+++ b/opt/_syidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__syidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_sys.opt b/opt/_sys.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zeXMub3B0
--- /dev/null
+++ b/opt/_sys.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__sys=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_testbuffer.opt b/opt/_testbuffer.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0YnVmZmVyLm9wdA==
--- /dev/null
+++ b/opt/_testbuffer.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__testbuffer=PROCEDURE)
diff --git a/opt/_testcapi.opt b/opt/_testcapi.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0Y2FwaS5vcHQ=
--- /dev/null
+++ b/opt/_testcapi.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__testcapi=PROCEDURE)
diff --git a/opt/_testembed.opt b/opt/_testembed.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0ZW1iZWQub3B0
--- /dev/null
+++ b/opt/_testembed.opt
@@ -0,0 +1,2 @@
+python$build_out:[000000]python$shr.exe/share
+sys$library:pthread$rtl.exe/share
diff --git a/opt/_testimportmultiple.opt b/opt/_testimportmultiple.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0aW1wb3J0bXVsdGlwbGUub3B0
--- /dev/null
+++ b/opt/_testimportmultiple.opt
@@ -0,0 +1,9 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=( -
+PyInit__testimportmultiple=PROCEDURE, -
+PyInit__testimportmultiple_foo=PROCEDURE, -
+PyInit__testimportmultiple_bar=PROCEDURE -
+)
diff --git a/opt/_testinternalcapi.opt b/opt/_testinternalcapi.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0aW50ZXJuYWxjYXBpLm9wdA==
--- /dev/null
+++ b/opt/_testinternalcapi.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__testinternalcapi=PROCEDURE)
diff --git a/opt/_testmultiphase.opt b/opt/_testmultiphase.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0bXVsdGlwaGFzZS5vcHQ=
--- /dev/null
+++ b/opt/_testmultiphase.opt
@@ -0,0 +1,30 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=( -
+PyInitU__testmultiphase24uq8jt$=PROCEDURE, -
+PyInitU_eckzbwbhc6jpgzcx415x =PROCEDURE, -
+PyInit__testmultiphase=PROCEDURE, -
+PyInit__testmultiphase_0c3e8cr$=PROCEDURE, -
+PyInit__testmultiphase_0v29c5l$=PROCEDURE, -
+PyInit__testmultiphase_11ppgn2$=PROCEDURE, -
+PyInit__testmultiphase_165978s$=PROCEDURE, -
+PyInit__testmultiphase_192j3ru$=PROCEDURE, -
+PyInit__testmultiphase_1g767il$=PROCEDURE, -
+PyInit__testmultiphase_23mkqc6$=PROCEDURE, -
+PyInit__testmultiphase_24g1e9b$=PROCEDURE, -
+PyInit__testmultiphase_2a55hpb$=PROCEDURE, -
+PyInit__testmultiphase_2aomecj$=PROCEDURE, -
+PyInit__testmultiphase_2bk6dcc$=PROCEDURE, -
+PyInit__testmultiphase_2mb031o$=PROCEDURE, -
+PyInit__testmultiphase_2me8md1$=PROCEDURE, -
+PyInit__testmultiphase_2n9sqcu$=PROCEDURE, -
+PyInit__testmultiphase_303s1sq$=PROCEDURE, -
+PyInit__testmultiphase_33m7den$=PROCEDURE, -
+PyInit__testmultiphase_35uahk4$=PROCEDURE, -
+PyInit__testmultiphase_3q0j1na$=PROCEDURE, -
+PyInit__testmultiphase_exec_err =PROCEDURE, -
+PyInit_imp_dummy=PROCEDURE, -
+PyInit_x =PROCEDURE -
+)
diff --git a/opt/_uafdef.opt b/opt/_uafdef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L191YWZkZWYub3B0
--- /dev/null
+++ b/opt/_uafdef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__uafdef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_uaidef.opt b/opt/_uaidef.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L191YWlkZWYub3B0
--- /dev/null
+++ b/opt/_uaidef.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__uaidef=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_uuid.opt b/opt/_uuid.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L191dWlkLm9wdA==
--- /dev/null
+++ b/opt/_uuid.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__uuid=PROCEDURE)
\ No newline at end of file
diff --git a/opt/_xxsubinterpreters.opt b/opt/_xxsubinterpreters.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L194eHN1YmludGVycHJldGVycy5vcHQ=
--- /dev/null
+++ b/opt/_xxsubinterpreters.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__xxsubinterpreters=PROCEDURE)
diff --git a/opt/_xxtestfuzz.opt b/opt/_xxtestfuzz.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L194eHRlc3RmdXp6Lm9wdA==
--- /dev/null
+++ b/opt/_xxtestfuzz.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit__xxtestfuzz=PROCEDURE)
diff --git a/opt/array.opt b/opt/array.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2FycmF5Lm9wdA==
--- /dev/null
+++ b/opt/array.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_array=PROCEDURE)
diff --git a/opt/audioop.opt b/opt/audioop.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2F1ZGlvb3Aub3B0
--- /dev/null
+++ b/opt/audioop.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_audioop=PROCEDURE)
\ No newline at end of file
diff --git a/opt/binascii.opt b/opt/binascii.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2JpbmFzY2lpLm9wdA==
--- /dev/null
+++ b/opt/binascii.opt
@@ -0,0 +1,6 @@
+oss$root:[lib]libz32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_binascii=PROCEDURE)
\ No newline at end of file
diff --git a/opt/cmath.opt b/opt/cmath.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2NtYXRoLm9wdA==
--- /dev/null
+++ b/opt/cmath.opt
@@ -0,0 +1,6 @@
+python$build_obj:[Modules]_math.obj 
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_cmath=PROCEDURE)
diff --git a/opt/fcntl.opt b/opt/fcntl.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2ZjbnRsLm9wdA==
--- /dev/null
+++ b/opt/fcntl.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_fcntl=PROCEDURE)
diff --git a/opt/grp.opt b/opt/grp.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2dycC5vcHQ=
--- /dev/null
+++ b/opt/grp.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_grp=PROCEDURE)
diff --git a/opt/math.opt b/opt/math.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L21hdGgub3B0
--- /dev/null
+++ b/opt/math.opt
@@ -0,0 +1,6 @@
+python$build_obj:[Modules]_math.obj 
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_math=PROCEDURE)
diff --git a/opt/mmap.opt b/opt/mmap.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L21tYXAub3B0
--- /dev/null
+++ b/opt/mmap.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_mmap=PROCEDURE)
diff --git a/opt/parser.opt b/opt/parser.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3BhcnNlci5vcHQ=
--- /dev/null
+++ b/opt/parser.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_parser=PROCEDURE)
diff --git a/opt/pyexpat.opt b/opt/pyexpat.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5ZXhwYXQub3B0
--- /dev/null
+++ b/opt/pyexpat.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_pyexpat=PROCEDURE)
diff --git a/opt/python$shr.opt b/opt/python$shr.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5dGhvbiRzaHIub3B0
--- /dev/null
+++ b/opt/python$shr.opt
@@ -0,0 +1,1983 @@
+! from [$(OUTDIR)]
+python$build_out:[000000]libpython3^.8.olb/LIBRARY
+!
+sys$library:pthread$rtl.exe/share
+!
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+!
+SYMBOL_VECTOR = ( -
+! MATH$ROUND_T=PROCEDURE,-
+PyAST_Check=PROCEDURE,-
+PyAST_Compile=PROCEDURE,-
+PyAST_CompileEx=PROCEDURE,-
+PyAST_CompileObject=PROCEDURE,-
+PyAST_FromNode=PROCEDURE,-
+PyAST_FromNodeObject=PROCEDURE,-
+PyAST_Validate=PROCEDURE,-
+PyAST_mod2obj=PROCEDURE,-
+PyAST_obj2mod=PROCEDURE,-
+PyArena_AddPyObject=PROCEDURE,-
+PyArena_Free=PROCEDURE,-
+PyArena_Malloc=PROCEDURE,-
+PyArena_New=PROCEDURE,-
+PyArg_Parse=PROCEDURE,-
+PyArg_ParseTuple=PROCEDURE,-
+PyArg_ParseTupleAndKeywords=PROCEDURE,-
+PyArg_UnpackTuple=PROCEDURE,-
+PyArg_VaParse=PROCEDURE,-
+PyArg_VaParseTupleAndKeywords=PROCEDURE,-
+PyArg_ValidateKeywordArguments=PROCEDURE,-
+PyAsyncGen_ClearFreeLists=PROCEDURE,-
+PyAsyncGen_Fini=PROCEDURE,-
+PyAsyncGen_New=PROCEDURE,-
+PyAsyncGen_Type=DATA,-
+PyBaseObject_Type=DATA,-
+PyBool_FromLong=PROCEDURE,-
+PyBool_Type=DATA,-
+PyBuffer_FillContiguousStrides=PROCEDURE,-
+PyBuffer_FillInfo=PROCEDURE,-
+PyBuffer_FromContiguous=PROCEDURE,-
+PyBuffer_GetPointer=PROCEDURE,-
+PyBuffer_IsContiguous=PROCEDURE,-
+PyBuffer_Release=PROCEDURE,-
+PyBuffer_ToContiguous=PROCEDURE,-
+PyBufferedIOBase_Type=DATA,-
+PyBufferedRWPair_Type=DATA,-
+PyBufferedRandom_Type=DATA,-
+PyBufferedReader_Type=DATA,-
+PyBufferedWriter_Type=DATA,-
+PyByteArrayIter_Type=DATA,-
+PyByteArray_AsString=PROCEDURE,-
+PyByteArray_Concat=PROCEDURE,-
+PyByteArray_FromObject=PROCEDURE,-
+PyByteArray_FromStringAndSize=PROCEDURE,-
+PyByteArray_Resize=PROCEDURE,-
+PyByteArray_Size=PROCEDURE,-
+PyByteArray_Type=DATA,-
+PyBytesIO_Type=DATA,-
+PyBytesIter_Type=DATA,-
+PyBytes_AsString=PROCEDURE,-
+PyBytes_AsStringAndSize=PROCEDURE,-
+PyBytes_Concat=PROCEDURE,-
+PyBytes_ConcatAndDel=PROCEDURE,-
+PyBytes_DecodeEscape=PROCEDURE,-
+PyBytes_Fini=PROCEDURE,-
+PyBytes_FromFormat=PROCEDURE,-
+PyBytes_FromFormatV=PROCEDURE,-
+PyBytes_FromObject=PROCEDURE,-
+PyBytes_FromString=PROCEDURE,-
+PyBytes_FromStringAndSize=PROCEDURE,-
+PyBytes_Repr=PROCEDURE,-
+PyBytes_Size=PROCEDURE,-
+PyBytes_Type=DATA,-
+PyCFunction_Call=PROCEDURE,-
+PyCFunction_ClearFreeList=PROCEDURE,-
+PyCFunction_Fini=PROCEDURE,-
+PyCFunction_GetFlags=PROCEDURE,-
+PyCFunction_GetFunction=PROCEDURE,-
+PyCFunction_GetSelf=PROCEDURE,-
+PyCFunction_New=PROCEDURE,-
+PyCFunction_NewEx=PROCEDURE,-
+PyCFunction_Type=DATA,-
+PyCallIter_New=PROCEDURE,-
+PyCallIter_Type=DATA,-
+PyCallable_Check=PROCEDURE,-
+PyCapsule_GetContext=PROCEDURE,-
+PyCapsule_GetDestructor=PROCEDURE,-
+PyCapsule_GetName=PROCEDURE,-
+PyCapsule_GetPointer=PROCEDURE,-
+PyCapsule_Import=PROCEDURE,-
+PyCapsule_IsValid=PROCEDURE,-
+PyCapsule_New=PROCEDURE,-
+PyCapsule_SetContext=PROCEDURE,-
+PyCapsule_SetDestructor=PROCEDURE,-
+PyCapsule_SetName=PROCEDURE,-
+PyCapsule_SetPointer=PROCEDURE,-
+PyCapsule_Type=DATA,-
+PyCell_Get=PROCEDURE,-
+PyCell_New=PROCEDURE,-
+PyCell_Set=PROCEDURE,-
+PyCell_Type=DATA,-
+PyClassMethodDescr_Type=DATA,-
+PyClassMethod_New=PROCEDURE,-
+PyClassMethod_Type=DATA,-
+PyCode_Addr2Line=PROCEDURE,-
+PyCode_New=PROCEDURE,-
+PyCode_NewEmpty=PROCEDURE,-
+PyCode_NewWithPosOnlyArgs=PROCEDURE,-
+PyCode_Optimize=PROCEDURE,-
+PyCode_Type=DATA,-
+PyCodec_BackslashReplaceErrors=PROCEDURE,-
+PyCodec_Decode=PROCEDURE,-
+PyCodec_Decoder=PROCEDURE,-
+PyCodec_Encode=PROCEDURE,-
+PyCodec_Encoder=PROCEDURE,-
+PyCodec_IgnoreErrors=PROCEDURE,-
+PyCodec_IncrementalDecoder=PROCEDURE,-
+PyCodec_IncrementalEncoder=PROCEDURE,-
+PyCodec_KnownEncoding=PROCEDURE,-
+PyCodec_LookupError=PROCEDURE,-
+PyCodec_NameReplaceErrors=PROCEDURE,-
+PyCodec_Register=PROCEDURE,-
+PyCodec_RegisterError=PROCEDURE,-
+PyCodec_ReplaceErrors=PROCEDURE,-
+PyCodec_StreamReader=PROCEDURE,-
+PyCodec_StreamWriter=PROCEDURE,-
+PyCodec_StrictErrors=PROCEDURE,-
+PyCodec_XMLCharRefReplaceErrors=PROCEDURE,-
+PyCompileString=PROCEDURE,-
+PyCompile_OpcodeStackEf25ml1ih$=PROCEDURE,-
+PyCompile_OpcodeStackEffect=PROCEDURE,-
+PyComplex_AsCComplex=PROCEDURE,-
+PyComplex_FromCComplex=PROCEDURE,-
+PyComplex_FromDoubles=PROCEDURE,-
+PyComplex_ImagAsDouble=PROCEDURE,-
+PyComplex_RealAsDouble=PROCEDURE,-
+PyComplex_Type=DATA,-
+PyConfig_Clear=PROCEDURE,-
+PyConfig_InitIsolatedConfig=PROCEDURE,-
+PyConfig_InitPythonConfig=PROCEDURE,-
+PyConfig_Read=PROCEDURE,-
+PyConfig_SetArgv=PROCEDURE,-
+PyConfig_SetBytesArgv=PROCEDURE,-
+PyConfig_SetBytesString=PROCEDURE,-
+PyConfig_SetString=PROCEDURE,-
+PyConfig_SetWideStringList=PROCEDURE,-
+PyContextTokenMissing_Type=DATA,-
+PyContextToken_Type=DATA,-
+PyContextVar_Get=PROCEDURE,-
+PyContextVar_New=PROCEDURE,-
+PyContextVar_Reset=PROCEDURE,-
+PyContextVar_Set=PROCEDURE,-
+PyContextVar_Type=DATA,-
+PyContext_ClearFreeList=PROCEDURE,-
+PyContext_Copy=PROCEDURE,-
+PyContext_CopyCurrent=PROCEDURE,-
+PyContext_Enter=PROCEDURE,-
+PyContext_Exit=PROCEDURE,-
+PyContext_New=PROCEDURE,-
+PyContext_Type=DATA,-
+PyCoro_New=PROCEDURE,-
+PyCoro_Type=DATA,-
+PyDescr_NewClassMethod=PROCEDURE,-
+PyDescr_NewGetSet=PROCEDURE,-
+PyDescr_NewMember=PROCEDURE,-
+PyDescr_NewMethod=PROCEDURE,-
+PyDescr_NewWrapper=PROCEDURE,-
+PyDictItems_Type=DATA,-
+PyDictIterItem_Type=DATA,-
+PyDictIterKey_Type=DATA,-
+PyDictIterValue_Type=DATA,-
+PyDictKeys_Type=DATA,-
+PyDictProxy_New=PROCEDURE,-
+PyDictProxy_Type=DATA,-
+PyDictRevIterItem_Type=DATA,-
+PyDictRevIterKey_Type=DATA,-
+PyDictRevIterValue_Type=DATA,-
+PyDictValues_Type=DATA,-
+PyDict_Clear=PROCEDURE,-
+PyDict_ClearFreeList=PROCEDURE,-
+PyDict_Contains=PROCEDURE,-
+PyDict_Copy=PROCEDURE,-
+PyDict_DelItem=PROCEDURE,-
+PyDict_DelItemString=PROCEDURE,-
+PyDict_Fini=PROCEDURE,-
+PyDict_GetItem=PROCEDURE,-
+PyDict_GetItemString=PROCEDURE,-
+PyDict_GetItemWithError=PROCEDURE,-
+PyDict_Items=PROCEDURE,-
+PyDict_Keys=PROCEDURE,-
+PyDict_Merge=PROCEDURE,-
+PyDict_MergeFromSeq2=PROCEDURE,-
+PyDict_New=PROCEDURE,-
+PyDict_Next=PROCEDURE,-
+PyDict_SetDefault=PROCEDURE,-
+PyDict_SetItem=PROCEDURE,-
+PyDict_SetItemString=PROCEDURE,-
+PyDict_Size=PROCEDURE,-
+PyDict_Type=DATA,-
+PyDict_Update=PROCEDURE,-
+PyDict_Values=PROCEDURE,-
+PyEllipsis_Type=DATA,-
+PyEnum_Type=DATA,-
+PyErr_BadArgument=PROCEDURE,-
+PyErr_BadInternalCall=PROCEDURE,-
+PyErr_CheckSignals=PROCEDURE,-
+PyErr_Clear=PROCEDURE,-
+PyErr_Display=PROCEDURE,-
+PyErr_ExceptionMatches=PROCEDURE,-
+PyErr_Fetch=PROCEDURE,-
+PyErr_Format=PROCEDURE,-
+PyErr_FormatV=PROCEDURE,-
+PyErr_GetExcInfo=PROCEDURE,-
+PyErr_GivenExceptionMatches=PROCEDURE,-
+PyErr_NewException=PROCEDURE,-
+PyErr_NewExceptionWithDoc=PROCEDURE,-
+PyErr_NoMemory=PROCEDURE,-
+PyErr_NormalizeException=PROCEDURE,-
+PyErr_Occurred=PROCEDURE,-
+PyErr_Print=PROCEDURE,-
+PyErr_PrintEx=PROCEDURE,-
+PyErr_ProgramText=PROCEDURE,-
+PyErr_ProgramTextObject=PROCEDURE,-
+PyErr_ResourceWarning=PROCEDURE,-
+PyErr_Restore=PROCEDURE,-
+PyErr_SetExcInfo=PROCEDURE,-
+PyErr_SetFromErrno=PROCEDURE,-
+PyErr_SetFromErrnoWithF13nsp2p$=PROCEDURE,-
+PyErr_SetFromErrnoWithF36am9kt$=PROCEDURE,-
+PyErr_SetFromErrnoWithFilename=PROCEDURE,-
+PyErr_SetImportError=PROCEDURE,-
+PyErr_SetImportErrorSubclass=PROCEDURE,-
+PyErr_SetInterrupt=PROCEDURE,-
+PyErr_SetNone=PROCEDURE,-
+PyErr_SetObject=PROCEDURE,-
+PyErr_SetString=PROCEDURE,-
+PyErr_SyntaxLocation=PROCEDURE,-
+PyErr_SyntaxLocationEx=PROCEDURE,-
+PyErr_SyntaxLocationObject=PROCEDURE,-
+PyErr_Warn=PROCEDURE,-
+PyErr_WarnEx=PROCEDURE,-
+PyErr_WarnExplicit=PROCEDURE,-
+PyErr_WarnExplicitFormat=PROCEDURE,-
+PyErr_WarnExplicitObject=PROCEDURE,-
+PyErr_WarnFormat=PROCEDURE,-
+PyErr_WriteUnraisable=PROCEDURE,-
+PyEval_AcquireLock=PROCEDURE,-
+PyEval_AcquireThread=PROCEDURE,-
+PyEval_CallFunction=PROCEDURE,-
+PyEval_CallMethod=PROCEDURE,-
+PyEval_CallObjectWithKeywords=PROCEDURE,-
+PyEval_EvalCode=PROCEDURE,-
+PyEval_EvalCodeEx=PROCEDURE,-
+PyEval_EvalFrame=PROCEDURE,-
+PyEval_EvalFrameEx=PROCEDURE,-
+PyEval_GetBuiltins=PROCEDURE,-
+PyEval_GetFrame=PROCEDURE,-
+PyEval_GetFuncDesc=PROCEDURE,-
+PyEval_GetFuncName=PROCEDURE,-
+PyEval_GetGlobals=PROCEDURE,-
+PyEval_GetLocals=PROCEDURE,-
+PyEval_InitThreads=PROCEDURE,-
+PyEval_MergeCompilerFlags=PROCEDURE,-
+PyEval_ReleaseLock=PROCEDURE,-
+PyEval_ReleaseThread=PROCEDURE,-
+PyEval_RestoreThread=PROCEDURE,-
+PyEval_SaveThread=PROCEDURE,-
+PyEval_SetProfile=PROCEDURE,-
+PyEval_SetTrace=PROCEDURE,-
+PyEval_ThreadsInitialized=PROCEDURE,-
+PyExc_ArithmeticError=DATA,-
+PyExc_AssertionError=DATA,-
+PyExc_AttributeError=DATA,-
+PyExc_BaseException=DATA,-
+PyExc_BlockingIOError=DATA,-
+PyExc_BrokenPipeError=DATA,-
+PyExc_BufferError=DATA,-
+PyExc_BytesWarning=DATA,-
+PyExc_ChildProcessError=DATA,-
+PyExc_ConnectionAbortedError=DATA,-
+PyExc_ConnectionError=DATA,-
+PyExc_ConnectionRefusedError=DATA,-
+PyExc_ConnectionResetError=DATA,-
+PyExc_DeprecationWarning=DATA,-
+PyExc_EOFError=DATA,-
+PyExc_EnvironmentError=DATA,-
+PyExc_Exception=DATA,-
+PyExc_FileExistsError=DATA,-
+PyExc_FileNotFoundError=DATA,-
+PyExc_FloatingPointError=DATA,-
+PyExc_FutureWarning=DATA,-
+PyExc_GeneratorExit=DATA,-
+PyExc_IOError=DATA,-
+PyExc_ImportError=DATA,-
+PyExc_ImportWarning=DATA,-
+PyExc_IndentationError=DATA,-
+PyExc_IndexError=DATA,-
+PyExc_InterruptedError=DATA,-
+PyExc_IsADirectoryError=DATA,-
+PyExc_KeyError=DATA,-
+PyExc_KeyboardInterrupt=DATA,-
+PyExc_LookupError=DATA,-
+PyExc_MemoryError=DATA,-
+PyExc_ModuleNotFoundError=DATA,-
+PyExc_NameError=DATA,-
+PyExc_NotADirectoryError=DATA,-
+PyExc_NotImplementedError=DATA,-
+PyExc_OSError=DATA,-
+PyExc_OverflowError=DATA,-
+PyExc_PendingDeprecationWarning=DATA,-
+PyExc_PermissionError=DATA,-
+PyExc_ProcessLookupError=DATA,-
+PyExc_RecursionError=DATA,-
+PyExc_ReferenceError=DATA,-
+PyExc_ResourceWarning=DATA,-
+PyExc_RuntimeError=DATA,-
+PyExc_RuntimeWarning=DATA,-
+PyExc_StopAsyncIteration=DATA,-
+PyExc_StopIteration=DATA,-
+PyExc_SyntaxError=DATA,-
+PyExc_SyntaxWarning=DATA,-
+PyExc_SystemError=DATA,-
+PyExc_SystemExit=DATA,-
+PyExc_TabError=DATA,-
+PyExc_TimeoutError=DATA,-
+PyExc_TypeError=DATA,-
+PyExc_UnboundLocalError=DATA,-
+PyExc_UnicodeDecodeError=DATA,-
+PyExc_UnicodeEncodeError=DATA,-
+PyExc_UnicodeError=DATA,-
+PyExc_UnicodeTranslateError=DATA,-
+PyExc_UnicodeWarning=DATA,-
+PyExc_UserWarning=DATA,-
+PyExc_ValueError=DATA,-
+PyExc_Warning=DATA,-
+PyExc_ZeroDivisionError=DATA,-
+PyExceptionClass_Name=PROCEDURE,-
+PyException_GetCause=PROCEDURE,-
+PyException_GetContext=PROCEDURE,-
+PyException_GetTraceback=PROCEDURE,-
+PyException_SetCause=PROCEDURE,-
+PyException_SetContext=PROCEDURE,-
+PyException_SetTraceback=PROCEDURE,-
+PyFPE_dummy=PROCEDURE,-
+PyFileIO_Type=DATA,-
+PyFile_FromFd=PROCEDURE,-
+PyFile_GetLine=PROCEDURE,-
+PyFile_NewStdPrinter=PROCEDURE,-
+PyFile_OpenCode=PROCEDURE,-
+PyFile_OpenCodeObject=PROCEDURE,-
+PyFile_SetOpenCodeHook=PROCEDURE,-
+PyFile_WriteObject=PROCEDURE,-
+PyFile_WriteString=PROCEDURE,-
+PyFilter_Type=DATA,-
+PyFloat_AsDouble=PROCEDURE,-
+PyFloat_ClearFreeList=PROCEDURE,-
+PyFloat_Fini=PROCEDURE,-
+PyFloat_FromDouble=PROCEDURE,-
+PyFloat_FromString=PROCEDURE,-
+PyFloat_GetInfo=PROCEDURE,-
+PyFloat_GetMax=PROCEDURE,-
+PyFloat_GetMin=PROCEDURE,-
+PyFloat_Type=DATA,-
+PyFrame_BlockPop=PROCEDURE,-
+PyFrame_BlockSetup=PROCEDURE,-
+PyFrame_ClearFreeList=PROCEDURE,-
+PyFrame_FastToLocals=PROCEDURE,-
+PyFrame_FastToLocalsWithError=PROCEDURE,-
+PyFrame_Fini=PROCEDURE,-
+PyFrame_GetLineNumber=PROCEDURE,-
+PyFrame_LocalsToFast=PROCEDURE,-
+PyFrame_New=PROCEDURE,-
+PyFrame_Type=DATA,-
+PyFrozenSet_New=PROCEDURE,-
+PyFrozenSet_Type=DATA,-
+PyFunction_GetAnnotations=PROCEDURE,-
+PyFunction_GetClosure=PROCEDURE,-
+PyFunction_GetCode=PROCEDURE,-
+PyFunction_GetDefaults=PROCEDURE,-
+PyFunction_GetGlobals=PROCEDURE,-
+PyFunction_GetKwDefaults=PROCEDURE,-
+PyFunction_GetModule=PROCEDURE,-
+PyFunction_New=PROCEDURE,-
+PyFunction_NewWithQualName=PROCEDURE,-
+PyFunction_SetAnnotations=PROCEDURE,-
+PyFunction_SetClosure=PROCEDURE,-
+PyFunction_SetDefaults=PROCEDURE,-
+PyFunction_SetKwDefaults=PROCEDURE,-
+PyFunction_Type=DATA,-
+PyFuture_FromAST=PROCEDURE,-
+PyFuture_FromASTObject=PROCEDURE,-
+PyGC_Collect=PROCEDURE,-
+PyGILState_Check=PROCEDURE,-
+PyGILState_Ensure=PROCEDURE,-
+PyGILState_GetThisThreadState=PROCEDURE,-
+PyGILState_Release=PROCEDURE,-
+PyGen_NeedsFinalizing=PROCEDURE,-
+PyGen_New=PROCEDURE,-
+PyGen_NewWithQualName=PROCEDURE,-
+PyGen_Type=DATA,-
+PyGetSetDescr_Type=DATA,-
+PyGrammar_AddAccelerators=PROCEDURE,-
+PyGrammar_FindDFA=PROCEDURE,-
+PyGrammar_LabelRepr=PROCEDURE,-
+PyGrammar_RemoveAccelerators=PROCEDURE,-
+PyHash_GetFuncDef=PROCEDURE,-
+PyIOBase_Type=DATA,-
+PyImport_AddModule=PROCEDURE,-
+PyImport_AddModuleObject=PROCEDURE,-
+PyImport_AppendInittab=PROCEDURE,-
+PyImport_Cleanup=PROCEDURE,-
+PyImport_ExecCodeModule23g5k6b$=PROCEDURE,-
+PyImport_ExecCodeModule=PROCEDURE,-
+PyImport_ExecCodeModuleEx=PROCEDURE,-
+PyImport_ExecCodeModuleObject=PROCEDURE,-
+PyImport_ExtendInittab=PROCEDURE,-
+PyImport_FrozenModules=DATA,-
+PyImport_GetImporter=PROCEDURE,-
+PyImport_GetMagicNumber=PROCEDURE,-
+PyImport_GetMagicTag=PROCEDURE,-
+PyImport_GetModule=PROCEDURE,-
+PyImport_GetModuleDict=PROCEDURE,-
+PyImport_Import=PROCEDURE,-
+PyImport_ImportFrozenMo163r2c6$=PROCEDURE,-
+PyImport_ImportFrozenModule=PROCEDURE,-
+PyImport_ImportModule=PROCEDURE,-
+PyImport_ImportModuleLe3e3v665$=PROCEDURE,-
+PyImport_ImportModuleLevel=PROCEDURE,-
+PyImport_ImportModuleNoBlock=PROCEDURE,-
+PyImport_Inittab=DATA,-
+PyImport_ReloadModule=PROCEDURE,-
+PyIncrementalNewlineDec1pmcbjr$=DATA,-
+PyIndex_Check=PROCEDURE,-
+PyInit__abc=PROCEDURE,-
+PyInit__ast=PROCEDURE,-
+PyInit__codecs=PROCEDURE,-
+PyInit__collections=PROCEDURE,-
+PyInit__functools=PROCEDURE,-
+PyInit__imp=PROCEDURE,-
+PyInit__io=PROCEDURE,-
+PyInit__locale=PROCEDURE,-
+PyInit__operator=PROCEDURE,-
+PyInit__signal=PROCEDURE,-
+PyInit__sre=PROCEDURE,-
+PyInit__stat=PROCEDURE,-
+PyInit__string=PROCEDURE,-
+PyInit__symtable=PROCEDURE,-
+PyInit__thread=PROCEDURE,-
+PyInit__tracemalloc=PROCEDURE,-
+PyInit__weakref=PROCEDURE,-
+PyInit_atexit=PROCEDURE,-
+PyInit_errno=PROCEDURE,-
+PyInit_faulthandler=PROCEDURE,-
+PyInit_gc=PROCEDURE,-
+PyInit_itertools=PROCEDURE,-
+PyInit_posix=PROCEDURE,-
+PyInit_pwd=PROCEDURE,-
+PyInit_time=PROCEDURE,-
+PyInit_xxsubtype=PROCEDURE,-
+PyInstanceMethod_Function=PROCEDURE,-
+PyInstanceMethod_New=PROCEDURE,-
+PyInstanceMethod_Type=DATA,-
+PyInterpreterState_Clear=PROCEDURE,-
+PyInterpreterState_Delete=PROCEDURE,-
+PyInterpreterState_GetDict=PROCEDURE,-
+PyInterpreterState_GetID=PROCEDURE,-
+PyInterpreterState_Head=PROCEDURE,-
+PyInterpreterState_Main=PROCEDURE,-
+PyInterpreterState_New=PROCEDURE,-
+PyInterpreterState_Next=PROCEDURE,-
+PyInterpreterState_ThreadHead=PROCEDURE,-
+PyIter_Check=PROCEDURE,-
+PyIter_Next=PROCEDURE,-
+PyListIter_Type=DATA,-
+PyListRevIter_Type=DATA,-
+PyList_Append=PROCEDURE,-
+PyList_AsTuple=PROCEDURE,-
+PyList_ClearFreeList=PROCEDURE,-
+PyList_Fini=PROCEDURE,-
+PyList_GetItem=PROCEDURE,-
+PyList_GetSlice=PROCEDURE,-
+PyList_Insert=PROCEDURE,-
+PyList_New=PROCEDURE,-
+PyList_Reverse=PROCEDURE,-
+PyList_SetItem=PROCEDURE,-
+PyList_SetSlice=PROCEDURE,-
+PyList_Size=PROCEDURE,-
+PyList_Sort=PROCEDURE,-
+PyList_Type=DATA,-
+PyLongRangeIter_Type=DATA,-
+PyLong_AsDouble=PROCEDURE,-
+PyLong_AsLong=PROCEDURE,-
+PyLong_AsLongAndOverflow=PROCEDURE,-
+PyLong_AsLongLong=PROCEDURE,-
+PyLong_AsLongLongAndOverflow=PROCEDURE,-
+PyLong_AsSize_t=PROCEDURE,-
+PyLong_AsSsize_t=PROCEDURE,-
+PyLong_AsUnsignedLong=PROCEDURE,-
+PyLong_AsUnsignedLongLong=PROCEDURE,-
+PyLong_AsUnsignedLongLongMask=PROCEDURE,-
+PyLong_AsUnsignedLongMask=PROCEDURE,-
+PyLong_AsVoidPtr=PROCEDURE,-
+PyLong_Fini=PROCEDURE,-
+PyLong_FromDouble=PROCEDURE,-
+PyLong_FromLong=PROCEDURE,-
+PyLong_FromLongLong=PROCEDURE,-
+PyLong_FromSize_t=PROCEDURE,-
+PyLong_FromSsize_t=PROCEDURE,-
+PyLong_FromString=PROCEDURE,-
+PyLong_FromUnicode=PROCEDURE,-
+PyLong_FromUnicodeObject=PROCEDURE,-
+PyLong_FromUnsignedLong=PROCEDURE,-
+PyLong_FromUnsignedLongLong=PROCEDURE,-
+PyLong_FromVoidPtr=PROCEDURE,-
+PyLong_GetInfo=PROCEDURE,-
+PyLong_Type=DATA,-
+PyMap_Type=DATA,-
+PyMapping_Check=PROCEDURE,-
+PyMapping_GetItemString=PROCEDURE,-
+PyMapping_HasKey=PROCEDURE,-
+PyMapping_HasKeyString=PROCEDURE,-
+PyMapping_Items=PROCEDURE,-
+PyMapping_Keys=PROCEDURE,-
+PyMapping_Length=PROCEDURE,-
+PyMapping_SetItemString=PROCEDURE,-
+PyMapping_Size=PROCEDURE,-
+PyMapping_Values=PROCEDURE,-
+PyMarshal_Init=PROCEDURE,-
+PyMarshal_ReadLastObjec1gnkbmv$=PROCEDURE,-
+PyMarshal_ReadLongFromFile=PROCEDURE,-
+PyMarshal_ReadObjectFromFile=PROCEDURE,-
+PyMarshal_ReadObjectFromString=PROCEDURE,-
+PyMarshal_ReadShortFromFile=PROCEDURE,-
+PyMarshal_WriteLongToFile=PROCEDURE,-
+PyMarshal_WriteObjectToFile=PROCEDURE,-
+PyMarshal_WriteObjectToString=PROCEDURE,-
+PyMem_Calloc=PROCEDURE,-
+PyMem_Free=PROCEDURE,-
+PyMem_GetAllocator=PROCEDURE,-
+PyMem_Malloc=PROCEDURE,-
+PyMem_RawCalloc=PROCEDURE,-
+PyMem_RawFree=PROCEDURE,-
+PyMem_RawMalloc=PROCEDURE,-
+PyMem_RawRealloc=PROCEDURE,-
+PyMem_Realloc=PROCEDURE,-
+PyMem_SetAllocator=PROCEDURE,-
+PyMem_SetupDebugHooks=PROCEDURE,-
+PyMemberDescr_Type=DATA,-
+PyMember_GetOne=PROCEDURE,-
+PyMember_SetOne=PROCEDURE,-
+PyMemoryView_FromBuffer=PROCEDURE,-
+PyMemoryView_FromMemory=PROCEDURE,-
+PyMemoryView_FromObject=PROCEDURE,-
+PyMemoryView_GetContiguous=PROCEDURE,-
+PyMemoryView_Type=DATA,-
+PyMethodDescr_Type=DATA,-
+PyMethod_ClearFreeList=PROCEDURE,-
+PyMethod_Fini=PROCEDURE,-
+PyMethod_Function=PROCEDURE,-
+PyMethod_New=PROCEDURE,-
+PyMethod_Self=PROCEDURE,-
+PyMethod_Type=DATA,-
+PyModuleDef_Init=PROCEDURE,-
+PyModuleDef_Type=DATA,-
+PyModule_AddFunctions=PROCEDURE,-
+PyModule_AddIntConstant=PROCEDURE,-
+PyModule_AddObject=PROCEDURE,-
+PyModule_AddStringConstant=PROCEDURE,-
+PyModule_Create2=PROCEDURE,-
+PyModule_ExecDef=PROCEDURE,-
+PyModule_FromDefAndSpec2=PROCEDURE,-
+PyModule_GetDef=PROCEDURE,-
+PyModule_GetDict=PROCEDURE,-
+PyModule_GetFilename=PROCEDURE,-
+PyModule_GetFilenameObject=PROCEDURE,-
+PyModule_GetName=PROCEDURE,-
+PyModule_GetNameObject=PROCEDURE,-
+PyModule_GetState=PROCEDURE,-
+PyModule_GetWarningsModule=PROCEDURE,-
+PyModule_New=PROCEDURE,-
+PyModule_NewObject=PROCEDURE,-
+PyModule_SetDocString=PROCEDURE,-
+PyModule_Type=DATA,-
+PyNode_AddChild=PROCEDURE,-
+PyNode_Compile=PROCEDURE,-
+PyNode_Free=PROCEDURE,-
+PyNode_ListTree=PROCEDURE,-
+PyNode_New=PROCEDURE,-
+PyNumber_Absolute=PROCEDURE,-
+PyNumber_Add=PROCEDURE,-
+PyNumber_And=PROCEDURE,-
+PyNumber_AsOff_t=PROCEDURE,-
+PyNumber_AsSsize_t=PROCEDURE,-
+PyNumber_Check=PROCEDURE,-
+PyNumber_Divmod=PROCEDURE,-
+PyNumber_Float=PROCEDURE,-
+PyNumber_FloorDivide=PROCEDURE,-
+PyNumber_InMatrixMultiply=PROCEDURE,-
+PyNumber_InPlaceAdd=PROCEDURE,-
+PyNumber_InPlaceAnd=PROCEDURE,-
+PyNumber_InPlaceFloorDivide=PROCEDURE,-
+PyNumber_InPlaceLshift=PROCEDURE,-
+PyNumber_InPlaceMatrixMultiply=PROCEDURE,-
+PyNumber_InPlaceMultiply=PROCEDURE,-
+PyNumber_InPlaceOr=PROCEDURE,-
+PyNumber_InPlacePower=PROCEDURE,-
+PyNumber_InPlaceRemainder=PROCEDURE,-
+PyNumber_InPlaceRshift=PROCEDURE,-
+PyNumber_InPlaceSubtract=PROCEDURE,-
+PyNumber_InPlaceTrueDivide=PROCEDURE,-
+PyNumber_InPlaceXor=PROCEDURE,-
+PyNumber_Index=PROCEDURE,-
+PyNumber_Invert=PROCEDURE,-
+PyNumber_Long=PROCEDURE,-
+PyNumber_Lshift=PROCEDURE,-
+PyNumber_MatrixMultiply=PROCEDURE,-
+PyNumber_Multiply=PROCEDURE,-
+PyNumber_Negative=PROCEDURE,-
+PyNumber_Or=PROCEDURE,-
+PyNumber_Positive=PROCEDURE,-
+PyNumber_Power=PROCEDURE,-
+PyNumber_Remainder=PROCEDURE,-
+PyNumber_Rshift=PROCEDURE,-
+PyNumber_Subtract=PROCEDURE,-
+PyNumber_ToBase=PROCEDURE,-
+PyNumber_TrueDivide=PROCEDURE,-
+PyNumber_Xor=PROCEDURE,-
+PyODictItems_Type=DATA,-
+PyODictIter_Type=DATA,-
+PyODictKeys_Type=DATA,-
+PyODictValues_Type=DATA,-
+PyODict_DelItem=PROCEDURE,-
+PyODict_New=PROCEDURE,-
+PyODict_SetItem=PROCEDURE,-
+PyODict_Type=DATA,-
+PyOS_AfterFork=PROCEDURE,-
+PyOS_FSPath=PROCEDURE,-
+PyOS_FiniInterrupts=PROCEDURE,-
+PyOS_InitInterrupts=PROCEDURE,-
+PyOS_InputHook=DATA,-
+PyOS_InterruptOccurred=PROCEDURE,-
+PyOS_Readline=PROCEDURE,-
+PyOS_ReadlineFunctionPointer=DATA,-
+PyOS_StdioReadline=PROCEDURE,-
+PyOS_double_to_string=PROCEDURE,-
+PyOS_getsig=PROCEDURE,-
+PyOS_mystricmp=PROCEDURE,-
+PyOS_mystrnicmp=PROCEDURE,-
+PyOS_setsig=PROCEDURE,-
+PyOS_snprintf=PROCEDURE,-
+PyOS_string_to_double=PROCEDURE,-
+PyOS_strtol=PROCEDURE,-
+PyOS_strtoul=PROCEDURE,-
+PyOS_vsnprintf=PROCEDURE,-
+PyObject_ASCII=PROCEDURE,-
+PyObject_AsCharBuffer=PROCEDURE,-
+PyObject_AsFileDescriptor=PROCEDURE,-
+PyObject_AsReadBuffer=PROCEDURE,-
+PyObject_AsWriteBuffer=PROCEDURE,-
+PyObject_Bytes=PROCEDURE,-
+PyObject_Call=PROCEDURE,-
+PyObject_CallFinalizer=PROCEDURE,-
+PyObject_CallFinalizerF3rob0r5$=PROCEDURE,-
+PyObject_CallFunction=PROCEDURE,-
+PyObject_CallFunctionObjArgs=PROCEDURE,-
+PyObject_CallMethod=PROCEDURE,-
+PyObject_CallMethodObjArgs=PROCEDURE,-
+PyObject_CallObject=PROCEDURE,-
+PyObject_Calloc=PROCEDURE,-
+PyObject_CheckReadBuffer=PROCEDURE,-
+PyObject_ClearWeakRefs=PROCEDURE,-
+PyObject_CopyData=PROCEDURE,-
+PyObject_DelItem=PROCEDURE,-
+PyObject_DelItemString=PROCEDURE,-
+PyObject_Dir=PROCEDURE,-
+PyObject_Format=PROCEDURE,-
+PyObject_Free=PROCEDURE,-
+PyObject_GC_Del=PROCEDURE,-
+PyObject_GC_Track=PROCEDURE,-
+PyObject_GC_UnTrack=PROCEDURE,-
+PyObject_GenericGetAttr=PROCEDURE,-
+PyObject_GenericGetDict=PROCEDURE,-
+PyObject_GenericSetAttr=PROCEDURE,-
+PyObject_GenericSetDict=PROCEDURE,-
+PyObject_GetArenaAllocator=PROCEDURE,-
+PyObject_GetAttr=PROCEDURE,-
+PyObject_GetAttrString=PROCEDURE,-
+PyObject_GetBuffer=PROCEDURE,-
+PyObject_GetItem=PROCEDURE,-
+PyObject_GetIter=PROCEDURE,-
+PyObject_HasAttr=PROCEDURE,-
+PyObject_HasAttrString=PROCEDURE,-
+PyObject_Hash=PROCEDURE,-
+PyObject_HashNotImplemented=PROCEDURE,-
+PyObject_Init=PROCEDURE,-
+PyObject_InitVar=PROCEDURE,-
+PyObject_IsInstance=PROCEDURE,-
+PyObject_IsSubclass=PROCEDURE,-
+PyObject_IsTrue=PROCEDURE,-
+PyObject_Length=PROCEDURE,-
+PyObject_LengthHint=PROCEDURE,-
+PyObject_Malloc=PROCEDURE,-
+PyObject_Not=PROCEDURE,-
+PyObject_Print=PROCEDURE,-
+PyObject_Realloc=PROCEDURE,-
+PyObject_Repr=PROCEDURE,-
+PyObject_RichCompare=PROCEDURE,-
+PyObject_RichCompareBool=PROCEDURE,-
+PyObject_SelfIter=PROCEDURE,-
+PyObject_SetArenaAllocator=PROCEDURE,-
+PyObject_SetAttr=PROCEDURE,-
+PyObject_SetAttrString=PROCEDURE,-
+PyObject_SetItem=PROCEDURE,-
+PyObject_Size=PROCEDURE,-
+PyObject_Str=PROCEDURE,-
+PyObject_Type=PROCEDURE,-
+PyParser_ASTFromFile=PROCEDURE,-
+PyParser_ASTFromFileObject=PROCEDURE,-
+PyParser_ASTFromString=PROCEDURE,-
+PyParser_ASTFromStringObject=PROCEDURE,-
+PyParser_AddToken=PROCEDURE,-
+PyParser_ClearError=PROCEDURE,-
+PyParser_Delete=PROCEDURE,-
+PyParser_New=PROCEDURE,-
+PyParser_ParseFile=PROCEDURE,-
+PyParser_ParseFileFlags=PROCEDURE,-
+PyParser_ParseFileFlagsEx=PROCEDURE,-
+PyParser_ParseFileObject=PROCEDURE,-
+PyParser_ParseString=PROCEDURE,-
+PyParser_ParseStringFla0n2o9ga$=PROCEDURE,-
+PyParser_ParseStringFla3tj408l$=PROCEDURE,-
+PyParser_ParseStringFlags=PROCEDURE,-
+PyParser_ParseStringObject=PROCEDURE,-
+PyParser_SetError=PROCEDURE,-
+PyParser_SimpleParseFile=PROCEDURE,-
+PyParser_SimpleParseFileFlags=PROCEDURE,-
+PyParser_SimpleParseStr1ei9lfj$=PROCEDURE,-
+PyParser_SimpleParseString=PROCEDURE,-
+PyParser_SimpleParseStringFlags=PROCEDURE,-
+PyPickleBuffer_FromObject=PROCEDURE,-
+PyPickleBuffer_GetBuffer=PROCEDURE,-
+PyPickleBuffer_Release=PROCEDURE,-
+PyPickleBuffer_Type=DATA,-
+PyPreConfig_InitIsolatedConfig=PROCEDURE,-
+PyPreConfig_InitPythonConfig=PROCEDURE,-
+PyProperty_Type=DATA,-
+PyRangeIter_Type=DATA,-
+PyRange_Type=DATA,-
+PyRawIOBase_Type=DATA,-
+PyReversed_Type=DATA,-
+PyRun_AnyFile=PROCEDURE,-
+PyRun_AnyFileEx=PROCEDURE,-
+PyRun_AnyFileExFlags=PROCEDURE,-
+PyRun_AnyFileFlags=PROCEDURE,-
+PyRun_File=PROCEDURE,-
+PyRun_FileEx=PROCEDURE,-
+PyRun_FileExFlags=PROCEDURE,-
+PyRun_FileFlags=PROCEDURE,-
+PyRun_InteractiveLoop=PROCEDURE,-
+PyRun_InteractiveLoopFlags=PROCEDURE,-
+PyRun_InteractiveOne=PROCEDURE,-
+PyRun_InteractiveOneFlags=PROCEDURE,-
+PyRun_InteractiveOneObject=PROCEDURE,-
+PyRun_SimpleFile=PROCEDURE,-
+PyRun_SimpleFileEx=PROCEDURE,-
+PyRun_SimpleFileExFlags=PROCEDURE,-
+PyRun_SimpleString=PROCEDURE,-
+PyRun_SimpleStringFlags=PROCEDURE,-
+PyRun_String=PROCEDURE,-
+PyRun_StringFlags=PROCEDURE,-
+PySTEntry_Type=DATA,-
+PyST_GetScope=PROCEDURE,-
+PySeqIter_New=PROCEDURE,-
+PySeqIter_Type=DATA,-
+PySequence_Check=PROCEDURE,-
+PySequence_Concat=PROCEDURE,-
+PySequence_Contains=PROCEDURE,-
+PySequence_Count=PROCEDURE,-
+PySequence_DelItem=PROCEDURE,-
+PySequence_DelSlice=PROCEDURE,-
+PySequence_Fast=PROCEDURE,-
+PySequence_GetItem=PROCEDURE,-
+PySequence_GetSlice=PROCEDURE,-
+PySequence_In=PROCEDURE,-
+PySequence_InPlaceConcat=PROCEDURE,-
+PySequence_InPlaceRepeat=PROCEDURE,-
+PySequence_Index=PROCEDURE,-
+PySequence_Length=PROCEDURE,-
+PySequence_List=PROCEDURE,-
+PySequence_Repeat=PROCEDURE,-
+PySequence_SetItem=PROCEDURE,-
+PySequence_SetSlice=PROCEDURE,-
+PySequence_Size=PROCEDURE,-
+PySequence_Tuple=PROCEDURE,-
+PySetIter_Type=DATA,-
+PySet_Add=PROCEDURE,-
+PySet_Clear=PROCEDURE,-
+PySet_ClearFreeList=PROCEDURE,-
+PySet_Contains=PROCEDURE,-
+PySet_Discard=PROCEDURE,-
+PySet_Fini=PROCEDURE,-
+PySet_New=PROCEDURE,-
+PySet_Pop=PROCEDURE,-
+PySet_Size=PROCEDURE,-
+PySet_Type=DATA,-
+PySignal_SetWakeupFd=PROCEDURE,-
+PySlice_AdjustIndices=PROCEDURE,-
+PySlice_Fini=PROCEDURE,-
+PySlice_GetIndices=PROCEDURE,-
+PySlice_GetIndicesEx=PROCEDURE,-
+PySlice_New=PROCEDURE,-
+PySlice_Type=DATA,-
+PySlice_Unpack=PROCEDURE,-
+PyState_AddModule=PROCEDURE,-
+PyState_FindModule=PROCEDURE,-
+PyState_RemoveModule=PROCEDURE,-
+PyStaticMethod_New=PROCEDURE,-
+PyStaticMethod_Type=DATA,-
+PyStatus_Error=PROCEDURE,-
+PyStatus_Exception=PROCEDURE,-
+PyStatus_Exit=PROCEDURE,-
+PyStatus_IsError=PROCEDURE,-
+PyStatus_IsExit=PROCEDURE,-
+PyStatus_NoMemory=PROCEDURE,-
+PyStatus_Ok=PROCEDURE,-
+PyStdPrinter_Type=DATA,-
+PyStringIO_Type=DATA,-
+PyStructSequence_GetItem=PROCEDURE,-
+PyStructSequence_InitType2=PROCEDURE,-
+PyStructSequence_InitType=PROCEDURE,-
+PyStructSequence_New=PROCEDURE,-
+PyStructSequence_NewType=PROCEDURE,-
+PyStructSequence_SetItem=PROCEDURE,-
+PyStructSequence_UnnamedField=DATA,-
+PySuper_Type=DATA,-
+PySymtable_Build=PROCEDURE,-
+PySymtable_BuildObject=PROCEDURE,-
+PySymtable_Free=PROCEDURE,-
+PySymtable_Lookup=PROCEDURE,-
+PySys_AddAuditHook=PROCEDURE,-
+PySys_AddWarnOption=PROCEDURE,-
+PySys_AddWarnOptionUnicode=PROCEDURE,-
+PySys_AddXOption=PROCEDURE,-
+PySys_Audit=PROCEDURE,-
+PySys_FormatStderr=PROCEDURE,-
+PySys_FormatStdout=PROCEDURE,-
+PySys_GetObject=PROCEDURE,-
+PySys_GetXOptions=PROCEDURE,-
+PySys_HasWarnOptions=PROCEDURE,-
+PySys_ResetWarnOptions=PROCEDURE,-
+PySys_SetArgv=PROCEDURE,-
+PySys_SetArgvEx=PROCEDURE,-
+PySys_SetObject=PROCEDURE,-
+PySys_SetPath=PROCEDURE,-
+PySys_WriteStderr=PROCEDURE,-
+PySys_WriteStdout=PROCEDURE,-
+PyTextIOBase_Type=DATA,-
+PyTextIOWrapper_Type=DATA,-
+PyThreadState_Clear=PROCEDURE,-
+PyThreadState_Delete=PROCEDURE,-
+PyThreadState_DeleteCurrent=PROCEDURE,-
+PyThreadState_Get=PROCEDURE,-
+PyThreadState_GetDict=PROCEDURE,-
+PyThreadState_New=PROCEDURE,-
+PyThreadState_Next=PROCEDURE,-
+PyThreadState_SetAsyncExc=PROCEDURE,-
+PyThreadState_Swap=PROCEDURE,-
+PyThread_GetInfo=PROCEDURE,-
+PyThread_ReInitTLS=PROCEDURE,-
+PyThread_acquire_lock=PROCEDURE,-
+PyThread_acquire_lock_timed=PROCEDURE,-
+PyThread_allocate_lock=PROCEDURE,-
+PyThread_create_key=PROCEDURE,-
+PyThread_delete_key=PROCEDURE,-
+PyThread_delete_key_value=PROCEDURE,-
+PyThread_exit_thread=PROCEDURE,-
+PyThread_free_lock=PROCEDURE,-
+PyThread_get_key_value=PROCEDURE,-
+PyThread_get_stacksize=PROCEDURE,-
+PyThread_get_thread_ident=PROCEDURE,-
+PyThread_init_thread=PROCEDURE,-
+PyThread_release_lock=PROCEDURE,-
+PyThread_set_key_value=PROCEDURE,-
+PyThread_set_stacksize=PROCEDURE,-
+PyThread_start_new_thread=PROCEDURE,-
+PyThread_tss_alloc=PROCEDURE,-
+PyThread_tss_create=PROCEDURE,-
+PyThread_tss_delete=PROCEDURE,-
+PyThread_tss_free=PROCEDURE,-
+PyThread_tss_get=PROCEDURE,-
+PyThread_tss_is_created=PROCEDURE,-
+PyThread_tss_set=PROCEDURE,-
+PyToken_OneChar=PROCEDURE,-
+PyToken_ThreeChars=PROCEDURE,-
+PyToken_TwoChars=PROCEDURE,-
+PyTokenizer_FindEncodin0djd81n$=PROCEDURE,-
+PyTokenizer_FindEncoding=PROCEDURE,-
+PyTokenizer_Free=PROCEDURE,-
+PyTokenizer_FromFile=PROCEDURE,-
+PyTokenizer_FromString=PROCEDURE,-
+PyTokenizer_FromUTF8=PROCEDURE,-
+PyTokenizer_Get=PROCEDURE,-
+PyTraceBack_Here=PROCEDURE,-
+PyTraceBack_Print=PROCEDURE,-
+PyTraceBack_Type=DATA,-
+PyTraceMalloc_Track=PROCEDURE,-
+PyTraceMalloc_Untrack=PROCEDURE,-
+PyTupleIter_Type=DATA,-
+PyTuple_ClearFreeList=PROCEDURE,-
+PyTuple_Fini=PROCEDURE,-
+PyTuple_GetItem=PROCEDURE,-
+PyTuple_GetSlice=PROCEDURE,-
+PyTuple_New=PROCEDURE,-
+PyTuple_Pack=PROCEDURE,-
+PyTuple_SetItem=PROCEDURE,-
+PyTuple_Size=PROCEDURE,-
+PyTuple_Type=DATA,-
+PyType_ClearCache=PROCEDURE,-
+PyType_FromSpec=PROCEDURE,-
+PyType_FromSpecWithBases=PROCEDURE,-
+PyType_GenericAlloc=PROCEDURE,-
+PyType_GenericNew=PROCEDURE,-
+PyType_GetFlags=PROCEDURE,-
+PyType_GetSlot=PROCEDURE,-
+PyType_IsSubtype=PROCEDURE,-
+PyType_Modified=PROCEDURE,-
+PyType_Ready=PROCEDURE,-
+PyType_Type=DATA,-
+PyUnicodeDecodeError_Create=PROCEDURE,-
+PyUnicodeDecodeError_Ge28gplj2$=PROCEDURE,-
+PyUnicodeDecodeError_GetEnd=PROCEDURE,-
+PyUnicodeDecodeError_GetObject=PROCEDURE,-
+PyUnicodeDecodeError_GetReason=PROCEDURE,-
+PyUnicodeDecodeError_GetStart=PROCEDURE,-
+PyUnicodeDecodeError_SetEnd=PROCEDURE,-
+PyUnicodeDecodeError_SetReason=PROCEDURE,-
+PyUnicodeDecodeError_SetStart=PROCEDURE,-
+PyUnicodeEncodeError_Create=PROCEDURE,-
+PyUnicodeEncodeError_Ge2549dvm$=PROCEDURE,-
+PyUnicodeEncodeError_GetEnd=PROCEDURE,-
+PyUnicodeEncodeError_GetObject=PROCEDURE,-
+PyUnicodeEncodeError_GetReason=PROCEDURE,-
+PyUnicodeEncodeError_GetStart=PROCEDURE,-
+PyUnicodeEncodeError_SetEnd=PROCEDURE,-
+PyUnicodeEncodeError_SetReason=PROCEDURE,-
+PyUnicodeEncodeError_SetStart=PROCEDURE,-
+PyUnicodeIter_Type=DATA,-
+PyUnicodeTranslateError06c68o2$=PROCEDURE,-
+PyUnicodeTranslateError0po7mq2$=PROCEDURE,-
+PyUnicodeTranslateError1nfk4sv$=PROCEDURE,-
+PyUnicodeTranslateError35n5p4j$=PROCEDURE,-
+PyUnicodeTranslateError3uuuc3v$=PROCEDURE,-
+PyUnicodeTranslateError_Create=PROCEDURE,-
+PyUnicodeTranslateError_GetEnd=PROCEDURE,-
+PyUnicodeTranslateError_SetEnd=PROCEDURE,-
+PyUnicode_Append=PROCEDURE,-
+PyUnicode_AppendAndDel=PROCEDURE,-
+PyUnicode_AsASCIIString=PROCEDURE,-
+PyUnicode_AsCharmapString=PROCEDURE,-
+PyUnicode_AsDecodedObject=PROCEDURE,-
+PyUnicode_AsDecodedUnicode=PROCEDURE,-
+PyUnicode_AsEncodedObject=PROCEDURE,-
+PyUnicode_AsEncodedString=PROCEDURE,-
+PyUnicode_AsEncodedUnicode=PROCEDURE,-
+PyUnicode_AsLatin1String=PROCEDURE,-
+PyUnicode_AsRawUnicodeE1pq4v4k$=PROCEDURE,-
+PyUnicode_AsUCS4=PROCEDURE,-
+PyUnicode_AsUCS4Copy=PROCEDURE,-
+PyUnicode_AsUTF16String=PROCEDURE,-
+PyUnicode_AsUTF32String=PROCEDURE,-
+PyUnicode_AsUTF8=PROCEDURE,-
+PyUnicode_AsUTF8AndSize=PROCEDURE,-
+PyUnicode_AsUTF8String=PROCEDURE,-
+PyUnicode_AsUnicode=PROCEDURE,-
+PyUnicode_AsUnicodeAndSize=PROCEDURE,-
+PyUnicode_AsUnicodeCopy=PROCEDURE,-
+PyUnicode_AsUnicodeEscapeString=PROCEDURE,-
+PyUnicode_AsWideChar=PROCEDURE,-
+PyUnicode_AsWideCharString=PROCEDURE,-
+PyUnicode_BuildEncodingMap=PROCEDURE,-
+PyUnicode_ClearFreeList=PROCEDURE,-
+PyUnicode_Compare=PROCEDURE,-
+PyUnicode_CompareWithAS1mu930c$=PROCEDURE,-
+PyUnicode_Concat=PROCEDURE,-
+PyUnicode_Contains=PROCEDURE,-
+PyUnicode_CopyCharacters=PROCEDURE,-
+PyUnicode_Count=PROCEDURE-
+)
+!
+SYMBOL_VECTOR = ( -
+PyUnicode_Decode=PROCEDURE,-
+PyUnicode_DecodeASCII=PROCEDURE,-
+PyUnicode_DecodeCharmap=PROCEDURE,-
+PyUnicode_DecodeFSDefau2kjh4hh$=PROCEDURE,-
+PyUnicode_DecodeFSDefault=PROCEDURE,-
+PyUnicode_DecodeLatin1=PROCEDURE,-
+PyUnicode_DecodeLocale=PROCEDURE,-
+PyUnicode_DecodeLocaleAndSize=PROCEDURE,-
+PyUnicode_DecodeRawUnic1u0dtd9$=PROCEDURE,-
+PyUnicode_DecodeUTF16=PROCEDURE,-
+PyUnicode_DecodeUTF16Stateful=PROCEDURE,-
+PyUnicode_DecodeUTF32=PROCEDURE,-
+PyUnicode_DecodeUTF32Stateful=PROCEDURE,-
+PyUnicode_DecodeUTF7=PROCEDURE,-
+PyUnicode_DecodeUTF7Stateful=PROCEDURE,-
+PyUnicode_DecodeUTF8=PROCEDURE,-
+PyUnicode_DecodeUTF8Stateful=PROCEDURE,-
+PyUnicode_DecodeUnicodeEscape=PROCEDURE,-
+PyUnicode_Encode=PROCEDURE,-
+PyUnicode_EncodeASCII=PROCEDURE,-
+PyUnicode_EncodeCharmap=PROCEDURE,-
+PyUnicode_EncodeDecimal=PROCEDURE,-
+PyUnicode_EncodeFSDefault=PROCEDURE,-
+PyUnicode_EncodeLatin1=PROCEDURE,-
+PyUnicode_EncodeLocale=PROCEDURE,-
+PyUnicode_EncodeRawUnic0qs46ns$=PROCEDURE,-
+PyUnicode_EncodeUTF16=PROCEDURE,-
+PyUnicode_EncodeUTF32=PROCEDURE,-
+PyUnicode_EncodeUTF7=PROCEDURE,-
+PyUnicode_EncodeUTF8=PROCEDURE,-
+PyUnicode_EncodeUnicodeEscape=PROCEDURE,-
+PyUnicode_FSConverter=PROCEDURE,-
+PyUnicode_FSDecoder=PROCEDURE,-
+PyUnicode_Fill=PROCEDURE,-
+PyUnicode_Find=PROCEDURE,-
+PyUnicode_FindChar=PROCEDURE,-
+PyUnicode_Format=PROCEDURE,-
+PyUnicode_FromEncodedObject=PROCEDURE,-
+PyUnicode_FromFormat=PROCEDURE,-
+PyUnicode_FromFormatV=PROCEDURE,-
+PyUnicode_FromKindAndData=PROCEDURE,-
+PyUnicode_FromObject=PROCEDURE,-
+PyUnicode_FromOrdinal=PROCEDURE,-
+PyUnicode_FromString=PROCEDURE,-
+PyUnicode_FromStringAndSize=PROCEDURE,-
+PyUnicode_FromUnicode=PROCEDURE,-
+PyUnicode_FromWideChar=PROCEDURE,-
+PyUnicode_GetDefaultEncoding=PROCEDURE,-
+PyUnicode_GetLength=PROCEDURE,-
+PyUnicode_GetMax=PROCEDURE,-
+PyUnicode_GetSize=PROCEDURE,-
+PyUnicode_InternFromString=PROCEDURE,-
+PyUnicode_InternImmortal=PROCEDURE,-
+PyUnicode_InternInPlace=PROCEDURE,-
+PyUnicode_IsIdentifier=PROCEDURE,-
+PyUnicode_Join=PROCEDURE,-
+PyUnicode_New=PROCEDURE,-
+PyUnicode_Partition=PROCEDURE,-
+PyUnicode_RPartition=PROCEDURE,-
+PyUnicode_RSplit=PROCEDURE,-
+PyUnicode_ReadChar=PROCEDURE,-
+PyUnicode_Replace=PROCEDURE,-
+PyUnicode_Resize=PROCEDURE,-
+PyUnicode_RichCompare=PROCEDURE,-
+PyUnicode_Split=PROCEDURE,-
+PyUnicode_Splitlines=PROCEDURE,-
+PyUnicode_Substring=PROCEDURE,-
+PyUnicode_Tailmatch=PROCEDURE,-
+PyUnicode_TransformDeci2bfsl6e$=PROCEDURE,-
+PyUnicode_Translate=PROCEDURE,-
+PyUnicode_TranslateCharmap=PROCEDURE,-
+PyUnicode_Type=DATA,-
+PyUnicode_WriteChar=PROCEDURE,-
+PyVectorcall_Call=PROCEDURE,-
+PyWeakref_GetObject=PROCEDURE,-
+PyWeakref_NewProxy=PROCEDURE,-
+PyWeakref_NewRef=PROCEDURE,-
+PyWideStringList_Append=PROCEDURE,-
+PyWideStringList_Insert=PROCEDURE,-
+PyWrapperDescr_Type=DATA,-
+PyWrapper_New=PROCEDURE,-
+PyZip_Type=DATA,-
+Py_AddPendingCall=PROCEDURE,-
+Py_AtExit=PROCEDURE,-
+Py_BuildValue=PROCEDURE,-
+Py_BytesMain=PROCEDURE,-
+Py_BytesWarningFlag=DATA,-
+Py_CompileString=PROCEDURE,-
+Py_CompileStringExFlags=PROCEDURE,-
+Py_CompileStringFlags=PROCEDURE,-
+Py_CompileStringObject=PROCEDURE,-
+Py_DebugFlag=DATA,-
+Py_DecRef=PROCEDURE,-
+Py_DecodeLocale=PROCEDURE,-
+Py_DontWriteBytecodeFlag=DATA,-
+Py_EncodeLocale=PROCEDURE,-
+Py_EndInterpreter=PROCEDURE,-
+Py_Exit=PROCEDURE,-
+Py_ExitStatusException=PROCEDURE,-
+Py_FatalError=PROCEDURE,-
+Py_FdIsInteractive=PROCEDURE,-
+Py_FileSystemDefaultEnc3q1c87n$=DATA,-
+Py_FileSystemDefaultEncoding=DATA,-
+Py_Finalize=PROCEDURE,-
+Py_FinalizeEx=PROCEDURE,-
+Py_FrozenFlag=DATA,-
+Py_FrozenMain=PROCEDURE,-
+Py_GetArgcArgv=PROCEDURE,-
+Py_GetBuildInfo=PROCEDURE,-
+Py_GetCompiler=PROCEDURE,-
+Py_GetCopyright=PROCEDURE,-
+Py_GetExecPrefix=PROCEDURE,-
+Py_GetPath=PROCEDURE,-
+Py_GetPlatform=PROCEDURE,-
+Py_GetPrefix=PROCEDURE,-
+Py_GetProgramFullPath=PROCEDURE,-
+Py_GetProgramName=PROCEDURE,-
+Py_GetPythonHome=PROCEDURE,-
+Py_GetRecursionLimit=PROCEDURE,-
+Py_GetVersion=PROCEDURE,-
+Py_HasFileSystemDefaultEncoding=DATA,-
+Py_HashRandomizationFlag=DATA,-
+Py_IgnoreEnvironmentFlag=DATA,-
+Py_IncRef=PROCEDURE,-
+Py_Initialize=PROCEDURE,-
+Py_InitializeEx=PROCEDURE,-
+Py_InitializeFromConfig=PROCEDURE,-
+Py_InspectFlag=DATA,-
+Py_InteractiveFlag=DATA,-
+Py_IsInitialized=PROCEDURE,-
+Py_IsolatedFlag=DATA,-
+Py_Main=PROCEDURE,-
+Py_MakePendingCalls=PROCEDURE,-
+Py_NewInterpreter=PROCEDURE,-
+Py_NoSiteFlag=DATA,-
+Py_NoUserSiteDirectory=DATA,-
+Py_OptimizeFlag=DATA,-
+Py_PreInitialize=PROCEDURE,-
+Py_PreInitializeFromArgs=PROCEDURE,-
+Py_PreInitializeFromBytesArgs=PROCEDURE,-
+Py_QuietFlag=DATA,-
+Py_ReprEnter=PROCEDURE,-
+Py_ReprLeave=PROCEDURE,-
+Py_RunMain=PROCEDURE,-
+Py_SetPath=PROCEDURE,-
+Py_SetProgramName=PROCEDURE,-
+Py_SetPythonHome=PROCEDURE,-
+Py_SetRecursionLimit=PROCEDURE,-
+Py_SetStandardStreamEncoding=PROCEDURE,-
+Py_SymtableString=PROCEDURE,-
+Py_SymtableStringObject=PROCEDURE,-
+Py_UNICODE_strcat=PROCEDURE,-
+Py_UNICODE_strchr=PROCEDURE,-
+Py_UNICODE_strcmp=PROCEDURE,-
+Py_UNICODE_strcpy=PROCEDURE,-
+Py_UNICODE_strlen=PROCEDURE,-
+Py_UNICODE_strncmp=PROCEDURE,-
+Py_UNICODE_strncpy=PROCEDURE,-
+Py_UNICODE_strrchr=PROCEDURE,-
+Py_UTF8Mode=DATA,-
+Py_UnbufferedStdioFlag=DATA,-
+Py_UniversalNewlineFgets=PROCEDURE,-
+Py_VaBuildValue=PROCEDURE,-
+Py_VerboseFlag=DATA,-
+Py_hexdigits=DATA,-
+_PyAST_ExprAsUnicode=PROCEDURE,-
+_PyAST_GetDocString=PROCEDURE,-
+_PyAST_Optimize=PROCEDURE,-
+_PyAccu_Accumulate=PROCEDURE,-
+_PyAccu_Destroy=PROCEDURE,-
+_PyAccu_Finish=PROCEDURE,-
+_PyAccu_FinishAsList=PROCEDURE,-
+_PyAccu_Init=PROCEDURE,-
+_PyArg_BadArgument=PROCEDURE,-
+_PyArg_CheckPositional=PROCEDURE,-
+_PyArg_Fini=PROCEDURE,-
+_PyArg_NoKeywords=PROCEDURE,-
+_PyArg_NoPositional=PROCEDURE,-
+_PyArg_ParseStack=PROCEDURE,-
+_PyArg_ParseStackAndKey1r5kfa7$=PROCEDURE,-
+_PyArg_ParseStackAndKeywords=PROCEDURE,-
+_PyArg_ParseStack_SizeT=PROCEDURE,-
+_PyArg_ParseTupleAndKey19kl55t$=PROCEDURE,-
+_PyArg_ParseTupleAndKey3hjidue$=PROCEDURE,-
+_PyArg_ParseTupleAndKey3rsn4lp$=PROCEDURE,-
+_PyArg_ParseTuple_SizeT=PROCEDURE,-
+_PyArg_Parse_SizeT=PROCEDURE,-
+_PyArg_UnpackKeywords=PROCEDURE,-
+_PyArg_UnpackStack=PROCEDURE,-
+_PyArg_VaParseTupleAndK1bu9bqh$=PROCEDURE,-
+_PyArg_VaParseTupleAndK1dkfbe3$=PROCEDURE,-
+_PyArg_VaParseTupleAndK3me8rbm$=PROCEDURE,-
+_PyArg_VaParse_SizeT=PROCEDURE,-
+_PyArgv_AsWstrList=PROCEDURE,-
+_PyAsyncGenASend_Type=DATA,-
+_PyAsyncGenAThrow_Type=DATA,-
+_PyAsyncGenValueWrapperNew=PROCEDURE,-
+_PyAsyncGenWrappedValue_Type=DATA,-
+_PyBuiltin_Init=PROCEDURE,-
+_PyBuiltins_AddExceptions=PROCEDURE,-
+_PyByteArray_empty_string=DATA,-
+_PyBytesIOBuffer_Type=DATA,-
+_PyBytesWriter_Alloc=PROCEDURE,-
+_PyBytesWriter_Dealloc=PROCEDURE,-
+_PyBytesWriter_Finish=PROCEDURE,-
+_PyBytesWriter_Init=PROCEDURE,-
+_PyBytesWriter_Prepare=PROCEDURE,-
+_PyBytesWriter_Resize=PROCEDURE,-
+_PyBytesWriter_WriteBytes=PROCEDURE,-
+_PyBytes_DecodeEscape=PROCEDURE,-
+_PyBytes_FormatEx=PROCEDURE,-
+_PyBytes_FromHex=PROCEDURE,-
+_PyBytes_Join=PROCEDURE,-
+_PyBytes_Resize=PROCEDURE,-
+_PyCFunction_DebugMallocStats=PROCEDURE,-
+_PyCFunction_FastCallDict=PROCEDURE,-
+_PyCode_CheckLineNumber=PROCEDURE,-
+_PyCode_ConstantKey=PROCEDURE,-
+_PyCode_GetExtra=PROCEDURE,-
+_PyCode_InitOpcache=PROCEDURE,-
+_PyCode_SetExtra=PROCEDURE,-
+_PyCodecInfo_GetIncreme06rkpfs$=PROCEDURE,-
+_PyCodecInfo_GetIncreme30gl7kb$=PROCEDURE,-
+_PyCodec_DecodeText=PROCEDURE,-
+_PyCodec_EncodeText=PROCEDURE,-
+_PyCodec_Forget=PROCEDURE,-
+_PyCodec_Lookup=PROCEDURE,-
+_PyCodec_LookupTextEncoding=PROCEDURE,-
+_PyComplex_FormatAdvancedWriter=PROCEDURE,-
+_PyConfig_Copy=PROCEDURE,-
+_PyConfig_InitCompatConfig=PROCEDURE,-
+_PyConfig_InitPathConfig=PROCEDURE,-
+_PyConfig_SetPyArgv=PROCEDURE,-
+_PyConfig_Write=PROCEDURE,-
+_PyConfig_WritePathConfig=PROCEDURE,-
+_PyContext_Fini=PROCEDURE,-
+_PyContext_Init=PROCEDURE,-
+_PyContext_NewHamtForTests=PROCEDURE,-
+_PyCoroWrapper_Type=DATA,-
+_PyCoro_GetAwaitableIter=PROCEDURE,-
+_PyCrossInterpreterData0etrgar$=PROCEDURE,-
+_PyCrossInterpreterData0ipttne$=PROCEDURE,-
+_PyCrossInterpreterData_Lookup=PROCEDURE,-
+_PyCrossInterpreterData_Release=PROCEDURE,-
+_PyDebugAllocatorStats=PROCEDURE,-
+_PyDictKeys_DecRef=PROCEDURE,-
+_PyDictView_Intersect=PROCEDURE,-
+_PyDictView_New=PROCEDURE,-
+_PyDict_CheckConsistency=PROCEDURE,-
+_PyDict_Contains=PROCEDURE,-
+_PyDict_DebugMallocStats=PROCEDURE,-
+_PyDict_DelItemId=PROCEDURE,-
+_PyDict_DelItemIf=PROCEDURE,-
+_PyDict_DelItem_KnownHash=PROCEDURE,-
+_PyDict_FromKeys=PROCEDURE,-
+_PyDict_GetItemId=PROCEDURE,-
+_PyDict_GetItemIdWithError=PROCEDURE,-
+_PyDict_GetItemStringWithError=PROCEDURE,-
+_PyDict_GetItem_KnownHash=PROCEDURE,-
+_PyDict_HasOnlyStringKeys=PROCEDURE,-
+_PyDict_KeysSize=PROCEDURE,-
+_PyDict_LoadGlobal=PROCEDURE,-
+_PyDict_MaybeUntrack=PROCEDURE,-
+_PyDict_MergeEx=PROCEDURE,-
+_PyDict_NewKeysForClass=PROCEDURE,-
+_PyDict_NewPresized=PROCEDURE,-
+_PyDict_Next=PROCEDURE,-
+_PyDict_Pop=PROCEDURE,-
+_PyDict_Pop_KnownHash=PROCEDURE,-
+_PyDict_SetItemId=PROCEDURE,-
+_PyDict_SetItem_KnownHash=PROCEDURE,-
+_PyDict_SizeOf=PROCEDURE,-
+_PyErr_BadInternalCall=PROCEDURE,-
+_PyErr_ChainExceptions=PROCEDURE,-
+_PyErr_CheckSignals=PROCEDURE,-
+_PyErr_Clear=PROCEDURE,-
+_PyErr_Display=PROCEDURE,-
+_PyErr_ExceptionMatches=PROCEDURE,-
+_PyErr_Fetch=PROCEDURE,-
+_PyErr_Format=PROCEDURE,-
+_PyErr_FormatFromCause=PROCEDURE,-
+_PyErr_GetTopmostException=PROCEDURE,-
+_PyErr_Init=PROCEDURE,-
+_PyErr_NormalizeException=PROCEDURE,-
+_PyErr_Print=PROCEDURE,-
+_PyErr_Restore=PROCEDURE,-
+_PyErr_SetKeyError=PROCEDURE,-
+_PyErr_SetNone=PROCEDURE,-
+_PyErr_SetObject=PROCEDURE,-
+_PyErr_SetString=PROCEDURE,-
+_PyErr_TrySetFromCause=PROCEDURE,-
+_PyErr_WarnUnawaitedCoroutine=PROCEDURE,-
+_PyErr_WriteUnraisableD0gkavvc$=PROCEDURE,-
+_PyErr_WriteUnraisableMsg=PROCEDURE,-
+_PyEval_AddPendingCall=PROCEDURE,-
+_PyEval_CallTracing=PROCEDURE,-
+_PyEval_EvalCodeWithName=PROCEDURE,-
+_PyEval_EvalFrameDefault=PROCEDURE,-
+_PyEval_Fini=PROCEDURE,-
+_PyEval_FiniThreads=PROCEDURE,-
+_PyEval_GetAsyncGenFinalizer=PROCEDURE,-
+_PyEval_GetAsyncGenFirstiter=PROCEDURE,-
+_PyEval_GetBuiltinId=PROCEDURE,-
+_PyEval_GetCoroutineOri166ulm8$=PROCEDURE,-
+_PyEval_GetSwitchInterval=PROCEDURE,-
+_PyEval_Initialize=PROCEDURE,-
+_PyEval_ReInitThreads=PROCEDURE,-
+_PyEval_RequestCodeExtraIndex=PROCEDURE,-
+_PyEval_SetAsyncGenFinalizer=PROCEDURE,-
+_PyEval_SetAsyncGenFirstiter=PROCEDURE,-
+_PyEval_SetCoroutineOri2cosu4s$=PROCEDURE,-
+_PyEval_SetSwitchInterval=PROCEDURE,-
+_PyEval_SignalAsyncExc=PROCEDURE,-
+_PyEval_SignalReceived=PROCEDURE,-
+_PyEval_SliceIndex=PROCEDURE,-
+_PyEval_SliceIndexNotNone=PROCEDURE,-
+_PyExc_Fini=PROCEDURE,-
+_PyExc_Init=PROCEDURE,-
+_PyFaulthandler_Fini=PROCEDURE,-
+_PyFaulthandler_Init=PROCEDURE,-
+_PyFileIO_closed=PROCEDURE,-
+_PyFloat_DebugMallocStats=PROCEDURE,-
+_PyFloat_FormatAdvancedWriter=PROCEDURE,-
+_PyFloat_Init=PROCEDURE,-
+_PyFloat_Pack2=PROCEDURE,-
+_PyFloat_Pack4=PROCEDURE,-
+_PyFloat_Pack8=PROCEDURE,-
+_PyFloat_Unpack2=PROCEDURE,-
+_PyFloat_Unpack4=PROCEDURE,-
+_PyFloat_Unpack8=PROCEDURE,-
+_PyFrame_DebugMallocStats=PROCEDURE,-
+_PyFrame_New_NoTrack=PROCEDURE,-
+_PyFunction_FastCallDict=PROCEDURE,-
+_PyFunction_Vectorcall=PROCEDURE,-
+_PyGC_CollectIfEnabled=PROCEDURE,-
+_PyGC_CollectNoFail=PROCEDURE,-
+_PyGC_Dump=PROCEDURE,-
+_PyGC_DumpShutdownStats=PROCEDURE,-
+_PyGC_Fini=PROCEDURE,-
+_PyGC_Initialize=PROCEDURE,-
+_PyGILState_Fini=PROCEDURE,-
+_PyGILState_GetInterpre09it46k$=PROCEDURE,-
+_PyGILState_Init=PROCEDURE,-
+_PyGILState_Reinit=PROCEDURE,-
+_PyGen_FetchStopIterationValue=PROCEDURE,-
+_PyGen_Finalize=PROCEDURE,-
+_PyGen_Send=PROCEDURE,-
+_PyGen_SetStopIterationValue=PROCEDURE,-
+_PyGen_yf=PROCEDURE,-
+_PyHamtItems_Type=DATA,-
+_PyHamtKeys_Type=DATA,-
+_PyHamtValues_Type=DATA,-
+_PyHamt_ArrayNode_Type=DATA,-
+_PyHamt_Assoc=PROCEDURE,-
+_PyHamt_BitmapNode_Type=DATA,-
+_PyHamt_CollisionNode_Type=DATA,-
+_PyHamt_Eq=PROCEDURE,-
+_PyHamt_Find=PROCEDURE,-
+_PyHamt_Fini=PROCEDURE,-
+_PyHamt_Init=PROCEDURE,-
+_PyHamt_Len=PROCEDURE,-
+_PyHamt_New=PROCEDURE,-
+_PyHamt_NewIterItems=PROCEDURE,-
+_PyHamt_NewIterKeys=PROCEDURE,-
+_PyHamt_NewIterValues=PROCEDURE,-
+_PyHamt_Type=DATA,-
+_PyHamt_Without=PROCEDURE,-
+_PyHash_Fini=PROCEDURE,-
+_PyIOBase_check_closed=PROCEDURE,-
+_PyIOBase_check_readable=PROCEDURE,-
+_PyIOBase_check_seekable=PROCEDURE,-
+_PyIOBase_check_writable=PROCEDURE,-
+_PyIOBase_finalize=PROCEDURE,-
+_PyIO_Module=DATA,-
+_PyIO_empty_bytes=DATA,-
+_PyIO_empty_str=DATA,-
+_PyIO_find_line_ending=PROCEDURE,-
+_PyIO_get_locale_module=PROCEDURE,-
+_PyIO_get_module_state=PROCEDURE,-
+_PyIO_str_close=DATA,-
+_PyIO_str_closed=DATA,-
+_PyIO_str_decode=DATA,-
+_PyIO_str_encode=DATA,-
+_PyIO_str_fileno=DATA,-
+_PyIO_str_flush=DATA,-
+_PyIO_str_getstate=DATA,-
+_PyIO_str_isatty=DATA,-
+_PyIO_str_newlines=DATA,-
+_PyIO_str_nl=DATA,-
+_PyIO_str_peek=DATA,-
+_PyIO_str_read1=DATA,-
+_PyIO_str_read=DATA,-
+_PyIO_str_readable=DATA,-
+_PyIO_str_readall=DATA,-
+_PyIO_str_readinto=DATA,-
+_PyIO_str_readline=DATA,-
+_PyIO_str_reset=DATA,-
+_PyIO_str_seek=DATA,-
+_PyIO_str_seekable=DATA,-
+_PyIO_str_setstate=DATA,-
+_PyIO_str_tell=DATA,-
+_PyIO_str_truncate=DATA,-
+_PyIO_str_writable=DATA,-
+_PyIO_str_write=DATA,-
+_PyIO_trap_eintr=PROCEDURE,-
+_PyImportHooks_Init=PROCEDURE,-
+_PyImportZip_Init=PROCEDURE,-
+_PyImport_AcquireLock=PROCEDURE,-
+_PyImport_AddModuleObject=PROCEDURE,-
+_PyImport_DynLoadFiletab=DATA,-
+_PyImport_FindBuiltin=PROCEDURE,-
+_PyImport_FindExtensionObject=PROCEDURE,-
+_PyImport_FindExtensionObjectEx=PROCEDURE,-
+_PyImport_FindSharedFuncptr=PROCEDURE,-
+_PyImport_Fini2=PROCEDURE,-
+_PyImport_Fini=PROCEDURE,-
+_PyImport_FixupBuiltin=PROCEDURE,-
+_PyImport_FixupExtensionObject=PROCEDURE,-
+_PyImport_GetModuleId=PROCEDURE,-
+_PyImport_Init=PROCEDURE,-
+_PyImport_Inittab=DATA,-
+_PyImport_IsInitialized=PROCEDURE,-
+_PyImport_LoadDynamicMo1v767fh$=PROCEDURE,-
+_PyImport_ReInitLock=PROCEDURE,-
+_PyImport_ReleaseLock=PROCEDURE,-
+_PyImport_SetModule=PROCEDURE,-
+_PyImport_SetModuleString=PROCEDURE,-
+_PyIncrementalNewlineDe3ke4gfc$=PROCEDURE,-
+_PyInterpreterID_LookUp=PROCEDURE,-
+_PyInterpreterID_New=PROCEDURE,-
+_PyInterpreterID_Type=DATA,-
+_PyInterpreterState_Del0mj6vhm$=PROCEDURE,-
+_PyInterpreterState_Enable=PROCEDURE,-
+_PyInterpreterState_Get0lrqb7p$=PROCEDURE,-
+_PyInterpreterState_Get=PROCEDURE,-
+_PyInterpreterState_GetIDObject=PROCEDURE,-
+_PyInterpreterState_IDDecref=PROCEDURE,-
+_PyInterpreterState_IDIncref=PROCEDURE,-
+_PyInterpreterState_IDInitref=PROCEDURE,-
+_PyInterpreterState_LookUpID=PROCEDURE,-
+_PyInterpreterState_Req0tb95rd$=PROCEDURE,-
+_PyInterpreterState_Req2qu49fg$=PROCEDURE,-
+_PyList_DebugMallocStats=PROCEDURE,-
+_PyList_Extend=PROCEDURE,-
+_PyLong_AsByteArray=PROCEDURE,-
+_PyLong_AsInt=PROCEDURE,-
+_PyLong_AsTime_t=PROCEDURE,-
+_PyLong_Copy=PROCEDURE,-
+_PyLong_DigitValue=DATA,-
+_PyLong_DivmodNear=PROCEDURE,-
+_PyLong_Format=PROCEDURE,-
+_PyLong_FormatAdvancedWriter=PROCEDURE,-
+_PyLong_FormatBytesWriter=PROCEDURE,-
+_PyLong_FormatWriter=PROCEDURE,-
+_PyLong_Frexp=PROCEDURE,-
+_PyLong_FromByteArray=PROCEDURE,-
+_PyLong_FromBytes=PROCEDURE,-
+_PyLong_FromGid=PROCEDURE,-
+_PyLong_FromNbIndexOrNbInt=PROCEDURE,-
+_PyLong_FromNbInt=PROCEDURE,-
+_PyLong_FromTime_t=PROCEDURE,-
+_PyLong_FromUid=PROCEDURE,-
+_PyLong_GCD=PROCEDURE,-
+_PyLong_Init=PROCEDURE,-
+_PyLong_Lshift=PROCEDURE,-
+_PyLong_New=PROCEDURE,-
+_PyLong_NumBits=PROCEDURE,-
+_PyLong_One=DATA,-
+_PyLong_Rshift=PROCEDURE,-
+_PyLong_Sign=PROCEDURE,-
+_PyLong_Size_t_Converter=PROCEDURE,-
+_PyLong_UnsignedInt_Converter=PROCEDURE,-
+_PyLong_UnsignedLongLon0ntrsub$=PROCEDURE,-
+_PyLong_UnsignedLong_Converter=PROCEDURE,-
+_PyLong_UnsignedShort_Converter=PROCEDURE,-
+_PyLong_Zero=DATA,-
+_PyManagedBuffer_Type=DATA,-
+_PyMem_DumpTraceback=PROCEDURE,-
+_PyMem_GetAllocatorName=PROCEDURE,-
+_PyMem_GetCurrentAllocatorName=PROCEDURE,-
+_PyMem_RawStrdup=PROCEDURE,-
+_PyMem_RawWcsdup=PROCEDURE,-
+_PyMem_SetDefaultAllocator=PROCEDURE,-
+_PyMem_SetupAllocators=PROCEDURE,-
+_PyMem_Strdup=PROCEDURE,-
+_PyMethodDef_RawFastCal31habv6$=PROCEDURE,-
+_PyMethodDef_RawFastCallDict=PROCEDURE,-
+_PyMethodWrapper_Type=DATA,-
+_PyMethod_DebugMallocStats=PROCEDURE,-
+_PyModuleSpec_IsInitializing=PROCEDURE,-
+_PyModule_Clear=PROCEDURE,-
+_PyModule_ClearDict=PROCEDURE,-
+_PyModule_CreateInitialized=PROCEDURE,-
+_PyNamespace_New=PROCEDURE,-
+_PyNamespace_Type=DATA,-
+_PyNode_FinalizeEndPos=PROCEDURE,-
+_PyNode_SizeOf=PROCEDURE,-
+_PyNone_Type=DATA,-
+_PyNotImplemented_Type=DATA,-
+_PyOS_GetOpt=PROCEDURE,-
+_PyOS_IsMainThread=PROCEDURE,-
+_PyOS_ReadlineTState=DATA,-
+_PyOS_ResetGetOpt=PROCEDURE,-
+_PyOS_URandom=PROCEDURE,-
+_PyOS_URandomNonblock=PROCEDURE,-
+_PyOS_mystrnicmp_hack=DATA,-
+_PyOS_optarg=DATA,-
+_PyOS_opterr=DATA,-
+_PyOS_optind=DATA,-
+_PyObjectDict_SetItem=PROCEDURE,-
+_PyObject_AssertFailed=PROCEDURE,-
+_PyObject_CallFunction_SizeT=PROCEDURE,-
+_PyObject_CallMethodId=PROCEDURE,-
+_PyObject_CallMethodIdObjArgs=PROCEDURE,-
+_PyObject_CallMethodId_SizeT=PROCEDURE,-
+_PyObject_CallMethod_SizeT=PROCEDURE,-
+_PyObject_Call_Prepend=PROCEDURE,-
+_PyObject_CheckConsistency=PROCEDURE,-
+_PyObject_CheckCrossInt10cv01b$=PROCEDURE,-
+_PyObject_DebugMallocStats=PROCEDURE,-
+_PyObject_DebugTypeStats=PROCEDURE,-
+_PyObject_Dump=PROCEDURE,-
+_PyObject_FastCallDict=PROCEDURE,-
+_PyObject_FastCall_Prepend=PROCEDURE,-
+_PyObject_GC_Calloc=PROCEDURE,-
+_PyObject_GC_Malloc=PROCEDURE,-
+_PyObject_GC_New=PROCEDURE,-
+_PyObject_GC_NewVar=PROCEDURE,-
+_PyObject_GC_Resize=PROCEDURE,-
+_PyObject_GenericGetAtt3rvp6ap$=PROCEDURE,-
+_PyObject_GenericSetAtt0su4orl$=PROCEDURE,-
+_PyObject_GetAttrId=PROCEDURE,-
+_PyObject_GetCrossInter120g118$=PROCEDURE,-
+_PyObject_GetDictPtr=PROCEDURE,-
+_PyObject_GetMethod=PROCEDURE,-
+_PyObject_HasAttrId=PROCEDURE,-
+_PyObject_HasLen=PROCEDURE,-
+_PyObject_IsAbstract=PROCEDURE,-
+_PyObject_IsFreed=PROCEDURE,-
+_PyObject_LookupAttr=PROCEDURE,-
+_PyObject_LookupAttrId=PROCEDURE,-
+_PyObject_LookupSpecial=PROCEDURE,-
+_PyObject_MakeTpCall=PROCEDURE,-
+_PyObject_New=PROCEDURE,-
+_PyObject_NewVar=PROCEDURE,-
+_PyObject_NextNotImplemented=PROCEDURE,-
+_PyObject_RealIsInstance=PROCEDURE,-
+_PyObject_RealIsSubclass=PROCEDURE,-
+_PyObject_SetAttrId=PROCEDURE,-
+_PyParser_Grammar=DATA,-
+_PyParser_TokenNames=DATA,-
+_PyPathConfig_Calculate=PROCEDURE,-
+_PyPathConfig_ClearGlobal=PROCEDURE,-
+_PyPathConfig_ComputeSysPath0=PROCEDURE,-
+_PyPreCmdline_Clear=PROCEDURE,-
+_PyPreCmdline_Read=PROCEDURE,-
+_PyPreCmdline_SetArgv=PROCEDURE,-
+_PyPreCmdline_SetConfig=PROCEDURE,-
+_PyPreConfig_AsDict=PROCEDURE,-
+_PyPreConfig_GetConfig=PROCEDURE,-
+_PyPreConfig_InitCompatConfig=PROCEDURE,-
+_PyPreConfig_InitFromConfig=PROCEDURE,-
+_PyPreConfig_InitFromPreConfig=PROCEDURE,-
+_PyPreConfig_Read=PROCEDURE,-
+_PyPreConfig_Write=PROCEDURE,-
+_PyRuntime=DATA,-
+_PyRuntimeState_Fini=PROCEDURE,-
+_PyRuntimeState_Init=PROCEDURE,-
+_PyRuntimeState_ReInitThreads=PROCEDURE,-
+_PyRuntime_Finalize=PROCEDURE,-
+_PyRuntime_Initialize=PROCEDURE,-
+_PySequence_BytesToCharpArray=PROCEDURE,-
+_PySequence_IterSearch=PROCEDURE,-
+_PySet_Dummy=DATA,-
+_PySet_NextEntry=PROCEDURE,-
+_PySet_Update=PROCEDURE,-
+_PySignal_AfterFork=PROCEDURE,-
+_PySlice_FromIndices=PROCEDURE,-
+_PySlice_GetLongIndices=PROCEDURE,-
+_PyStack_AsDict=PROCEDURE,-
+_PyStack_UnpackDict=PROCEDURE,-
+_PyState_AddModule=PROCEDURE,-
+_PyState_ClearModules=PROCEDURE,-
+_PyStructSequence_Init=PROCEDURE,-
+_PySys_ClearAuditHooks=PROCEDURE,-
+_PySys_Create=PROCEDURE,-
+_PySys_GetObjectId=PROCEDURE,-
+_PySys_GetSizeOf=PROCEDURE,-
+_PySys_ImplCacheTag=DATA,-
+_PySys_ImplName=DATA,-
+_PySys_InitMain=PROCEDURE,-
+_PySys_ReadPreinitWarnOptions=PROCEDURE,-
+_PySys_ReadPreinitXOptions=PROCEDURE,-
+_PySys_SetObjectId=PROCEDURE,-
+_PySys_SetPreliminaryStderr=PROCEDURE,-
+_PyThreadState_DeleteExcept=PROCEDURE,-
+_PyThreadState_Init=PROCEDURE,-
+_PyThreadState_Prealloc=PROCEDURE,-
+_PyThreadState_Swap=PROCEDURE,-
+_PyThreadState_UncheckedGet=PROCEDURE,-
+_PyThread_CurrentFrames=PROCEDURE,-
+_PyThread_cond_after=PROCEDURE,-
+_PyThread_cond_init=PROCEDURE,-
+_PyTime_AsMicroseconds=PROCEDURE,-
+_PyTime_AsMilliseconds=PROCEDURE,-
+_PyTime_AsNanosecondsObject=PROCEDURE,-
+_PyTime_AsSecondsDouble=PROCEDURE,-
+_PyTime_AsTimespec=PROCEDURE,-
+_PyTime_AsTimeval=PROCEDURE,-
+_PyTime_AsTimevalTime_t=PROCEDURE,-
+_PyTime_AsTimeval_noraise=PROCEDURE,-
+_PyTime_FromMillisecondsObject=PROCEDURE,-
+_PyTime_FromNanoseconds=PROCEDURE,-
+_PyTime_FromNanosecondsObject=PROCEDURE,-
+_PyTime_FromSeconds=PROCEDURE,-
+_PyTime_FromSecondsObject=PROCEDURE,-
+_PyTime_FromTimespec=PROCEDURE,-
+_PyTime_FromTimeval=PROCEDURE,-
+_PyTime_GetMonotonicClo0cvp326$=PROCEDURE,-
+_PyTime_GetMonotonicClock=PROCEDURE,-
+_PyTime_GetPerfCounter=PROCEDURE,-
+_PyTime_GetPerfCounterWithInfo=PROCEDURE,-
+_PyTime_GetSystemClock=PROCEDURE,-
+_PyTime_GetSystemClockWithInfo=PROCEDURE,-
+_PyTime_Init=PROCEDURE,-
+_PyTime_MulDiv=PROCEDURE,-
+_PyTime_ObjectToTime_t=PROCEDURE,-
+_PyTime_ObjectToTimespec=PROCEDURE,-
+_PyTime_ObjectToTimeval=PROCEDURE,-
+_PyTime_gmtime=PROCEDURE,-
+_PyTime_localtime=PROCEDURE,-
+_PyTraceBack_FromFrame=PROCEDURE,-
+_PyTraceMalloc_Fini=PROCEDURE,-
+_PyTraceMalloc_GetTraceback=PROCEDURE,-
+_PyTraceMalloc_Init=PROCEDURE,-
+_PyTraceMalloc_NewReference=PROCEDURE,-
+_PyTraceback_Add=PROCEDURE,-
+_PyTrash_deposit_object=PROCEDURE,-
+_PyTrash_destroy_chain=PROCEDURE,-
+_PyTrash_thread_deposit_object=PROCEDURE,-
+_PyTrash_thread_destroy_chain=PROCEDURE,-
+_PyTuple_DebugMallocStats=PROCEDURE,-
+_PyTuple_FromArray=PROCEDURE,-
+_PyTuple_MaybeUntrack=PROCEDURE,-
+_PyTuple_Resize=PROCEDURE,-
+_PyType_CalculateMetaclass=PROCEDURE,-
+_PyType_CheckConsistency=PROCEDURE,-
+_PyType_Fini=PROCEDURE,-
+_PyType_GetDocFromInternalDoc=PROCEDURE,-
+_PyType_GetTextSignatur2m88202$=PROCEDURE,-
+_PyType_Lookup=PROCEDURE,-
+_PyType_LookupId=PROCEDURE,-
+_PyType_Name=PROCEDURE,-
+_PyTypes_Init=PROCEDURE,-
+_PyUnicodeTranslateError_Create=PROCEDURE,-
+_PyUnicodeWriter_Dealloc=PROCEDURE,-
+_PyUnicodeWriter_Finish=PROCEDURE,-
+_PyUnicodeWriter_Init=PROCEDURE,-
+_PyUnicodeWriter_Prepar08gfmbu$=PROCEDURE,-
+_PyUnicodeWriter_Prepar34806s7$=PROCEDURE,-
+_PyUnicodeWriter_WriteA2qb8qnu$=PROCEDURE,-
+_PyUnicodeWriter_WriteChar=PROCEDURE,-
+_PyUnicodeWriter_WriteL13fdv54$=PROCEDURE,-
+_PyUnicodeWriter_WriteStr=PROCEDURE,-
+_PyUnicodeWriter_WriteSubstring=PROCEDURE,-
+_PyUnicode_AsASCIIString=PROCEDURE,-
+_PyUnicode_AsKind=PROCEDURE,-
+_PyUnicode_AsLatin1String=PROCEDURE,-
+_PyUnicode_AsUTF8String=PROCEDURE,-
+_PyUnicode_AsUnicode=PROCEDURE,-
+_PyUnicode_CheckConsistency=PROCEDURE,-
+_PyUnicode_ClearStaticStrings=PROCEDURE,-
+_PyUnicode_Copy=PROCEDURE,-
+_PyUnicode_DecodeUnicodeEscape=PROCEDURE,-
+_PyUnicode_EQ=PROCEDURE,-
+_PyUnicode_EncodeCharmap=PROCEDURE,-
+_PyUnicode_EncodeUTF16=PROCEDURE,-
+_PyUnicode_EncodeUTF32=PROCEDURE,-
+_PyUnicode_EncodeUTF7=PROCEDURE,-
+_PyUnicode_EqualToASCIIId=PROCEDURE,-
+_PyUnicode_EqualToASCIIString=PROCEDURE,-
+_PyUnicode_ExtendedCase=DATA,-
+_PyUnicode_FastCopyCharacters=PROCEDURE,-
+_PyUnicode_FastFill=PROCEDURE,-
+_PyUnicode_FindMaxChar=PROCEDURE,-
+_PyUnicode_Fini=PROCEDURE,-
+_PyUnicode_FormatAdvancedWriter=PROCEDURE,-
+_PyUnicode_FormatLong=PROCEDURE,-
+_PyUnicode_FromASCII=PROCEDURE,-
+_PyUnicode_FromId=PROCEDURE,-
+_PyUnicode_Init=PROCEDURE,-
+_PyUnicode_InitEncodings=PROCEDURE,-
+_PyUnicode_InsertThousa3dqn1s5$=PROCEDURE,-
+_PyUnicode_IsAlpha=PROCEDURE,-
+_PyUnicode_IsCaseIgnorable=PROCEDURE,-
+_PyUnicode_IsCased=PROCEDURE,-
+_PyUnicode_IsDecimalDigit=PROCEDURE,-
+_PyUnicode_IsDigit=PROCEDURE,-
+_PyUnicode_IsLinebreak=PROCEDURE,-
+_PyUnicode_IsLowercase=PROCEDURE,-
+_PyUnicode_IsNumeric=PROCEDURE,-
+_PyUnicode_IsPrintable=PROCEDURE,-
+_PyUnicode_IsTitlecase=PROCEDURE,-
+_PyUnicode_IsUppercase=PROCEDURE,-
+_PyUnicode_IsWhitespace=PROCEDURE,-
+_PyUnicode_IsXidContinue=PROCEDURE,-
+_PyUnicode_IsXidStart=PROCEDURE,-
+_PyUnicode_JoinArray=PROCEDURE,-
+_PyUnicode_Ready=PROCEDURE,-
+_PyUnicode_ToDecimalDigit=PROCEDURE,-
+_PyUnicode_ToDigit=PROCEDURE,-
+_PyUnicode_ToFoldedFull=PROCEDURE,-
+_PyUnicode_ToLowerFull=PROCEDURE,-
+_PyUnicode_ToLowercase=PROCEDURE,-
+_PyUnicode_ToNumeric=PROCEDURE,-
+_PyUnicode_ToTitleFull=PROCEDURE,-
+_PyUnicode_ToTitlecase=PROCEDURE,-
+_PyUnicode_ToUpperFull=PROCEDURE,-
+_PyUnicode_ToUppercase=PROCEDURE,-
+_PyUnicode_TransformDec0maj7tg$=PROCEDURE,-
+_PyUnicode_TypeRecords=DATA,-
+_PyUnicode_XStrip=PROCEDURE,-
+_PyWarnings_Fini=PROCEDURE,-
+_PyWarnings_Init=PROCEDURE,-
+_PyWeakref_CallableProxyType=DATA,-
+_PyWeakref_ClearRef=PROCEDURE,-
+_PyWeakref_GetWeakrefCount=PROCEDURE,-
+_PyWeakref_ProxyType=DATA,-
+_PyWeakref_RefType=DATA,-
+_PyWideStringList_AsList=PROCEDURE,-
+_PyWideStringList_Check1etephj$=PROCEDURE,-
+_PyWideStringList_Clear=PROCEDURE,-
+_PyWideStringList_Copy=PROCEDURE,-
+_PyWideStringList_Extend=PROCEDURE,-
+_Py_AnnAssign=PROCEDURE,-
+_Py_Assert=PROCEDURE,-
+_Py_Assign=PROCEDURE,-
+_Py_AsyncFor=PROCEDURE,-
+_Py_AsyncFunctionDef=PROCEDURE,-
+_Py_AsyncWith=PROCEDURE,-
+_Py_Attribute=PROCEDURE,-
+_Py_AugAssign=PROCEDURE,-
+_Py_Await=PROCEDURE,-
+_Py_BinOp=PROCEDURE,-
+_Py_BoolOp=PROCEDURE,-
+_Py_Break=PROCEDURE,-
+_Py_BreakPoint=PROCEDURE,-
+_Py_BuildValue_SizeT=PROCEDURE,-
+_Py_Call=PROCEDURE,-
+_Py_CheckFunctionResult=PROCEDURE,-
+_Py_CheckRecursionLimit=DATA,-
+_Py_CheckRecursiveCall=PROCEDURE,-
+_Py_ClassDef=PROCEDURE,-
+_Py_ClearArgcArgv=PROCEDURE,-
+_Py_ClearFileSystemEncoding=PROCEDURE,-
+_Py_ClearStandardStreamEncoding=PROCEDURE,-
+_Py_CoerceLegacyLocale=PROCEDURE,-
+_Py_Compare=PROCEDURE,-
+_Py_Constant=PROCEDURE,-
+_Py_Continue=PROCEDURE,-
+_Py_Dealloc=PROCEDURE,-
+_Py_DecodeLocaleEx=PROCEDURE,-
+_Py_DecodeUTF8Ex=PROCEDURE,-
+_Py_DecodeUTF8_surrogateescape=PROCEDURE,-
+_Py_Delete=PROCEDURE,-
+_Py_Dict=PROCEDURE,-
+_Py_DictComp=PROCEDURE,-
+_Py_DisplaySourceLine=PROCEDURE,-
+_Py_DumpASCII=PROCEDURE,-
+_Py_DumpDecimal=PROCEDURE,-
+_Py_DumpHexadecimal=PROCEDURE,-
+_Py_DumpPathConfig=PROCEDURE,-
+_Py_DumpTraceback=PROCEDURE,-
+_Py_DumpTracebackThreads=PROCEDURE,-
+_Py_EllipsisObject=DATA,-
+_Py_EncodeLocaleEx=PROCEDURE,-
+_Py_EncodeLocaleRaw=PROCEDURE,-
+_Py_EncodeUTF8Ex=PROCEDURE,-
+_Py_ExceptHandler=PROCEDURE,-
+_Py_Expr=PROCEDURE,-
+_Py_Expression=PROCEDURE,-
+_Py_ExtSlice=PROCEDURE,-
+_Py_FalseStruct=DATA,-
+_Py_FindEnvConfigValue=PROCEDURE,-
+_Py_FinishPendingCalls=PROCEDURE,-
+_Py_For=PROCEDURE,-
+_Py_FormattedValue=PROCEDURE,-
+_Py_FreeCharPArray=PROCEDURE,-
+_Py_FunctionDef=PROCEDURE,-
+_Py_FunctionType=PROCEDURE,-
+_Py_GeneratorExp=PROCEDURE,-
+_Py_GetAllocatedBlocks=PROCEDURE,-
+_Py_GetConfigsAsDict=PROCEDURE,-
+_Py_GetEnv=PROCEDURE,-
+_Py_GetErrorHandler=PROCEDURE,-
+_Py_GetForceASCII=PROCEDURE,-
+_Py_GetLocaleconvNumeric=PROCEDURE,-
+_Py_Gid_Converter=PROCEDURE,-
+_Py_Global=PROCEDURE,-
+_Py_HandleSystemExit=PROCEDURE,-
+_Py_HasFileSystemDefaul1d82ugm$=DATA,-
+_Py_HashBytes=PROCEDURE,-
+_Py_HashDouble=PROCEDURE,-
+_Py_HashPointer=PROCEDURE,-
+_Py_HashRandomization_Fini=PROCEDURE,-
+_Py_HashRandomization_Init=PROCEDURE,-
+_Py_HashSecret=DATA,-
+_Py_If=PROCEDURE,-
+_Py_IfExp=PROCEDURE,-
+_Py_Import=PROCEDURE,-
+_Py_ImportFrom=PROCEDURE,-
+_Py_Index=PROCEDURE,-
+_Py_InitializeMain=PROCEDURE,-
+_Py_Interactive=PROCEDURE,-
+_Py_IsCoreInitialized=PROCEDURE,-
+_Py_IsFinalizing=PROCEDURE,-
+_Py_IsLocaleCoercionTarget=PROCEDURE,-
+_Py_JoinedStr=PROCEDURE,-
+_Py_KeyedHash=PROCEDURE,-
+_Py_Lambda=PROCEDURE,-
+_Py_LegacyLocaleDetected=PROCEDURE,-
+_Py_List=PROCEDURE,-
+_Py_ListComp=PROCEDURE,-
+_Py_M__importlib_bootst3jkv519$=DATA,-
+_Py_M__importlib_bootstrap=DATA,-
+_Py_M__zipimport=DATA,-
+_Py_Mangle=PROCEDURE,-
+_Py_Module=PROCEDURE,-
+_Py_Name=PROCEDURE,-
+_Py_NamedExpr=PROCEDURE,-
+_Py_NoneStruct=DATA,-
+_Py_Nonlocal=PROCEDURE,-
+_Py_NotImplementedStruct=DATA,-
+_Py_PackageContext=DATA,-
+_Py_Pass=PROCEDURE,-
+_Py_PreInitializeFromConfig=PROCEDURE,-
+_Py_PreInitializeFromPyArgv=PROCEDURE,-
+_Py_PyAtExit=PROCEDURE,-
+_Py_Raise=PROCEDURE,-
+_Py_ResetForceASCII=PROCEDURE,-
+_Py_RestoreSignals=PROCEDURE,-
+_Py_Return=PROCEDURE,-
+_Py_Set=PROCEDURE,-
+_Py_SetComp=PROCEDURE,-
+_Py_SetFileSystemEncoding=PROCEDURE,-
+_Py_SetLocaleFromEnv=PROCEDURE,-
+_Py_SetProgramFullPath=PROCEDURE,-
+_Py_Sigset_Converter=PROCEDURE,-
+_Py_Slice=PROCEDURE,-
+_Py_SourceAsString=PROCEDURE,-
+_Py_Starred=PROCEDURE,-
+_Py_Subscript=PROCEDURE,-
+_Py_Suite=PROCEDURE,-
+_Py_SwappedOp=DATA,-
+_Py_SymtableStringObjectFlags=PROCEDURE,-
+_Py_TrueStruct=DATA,-
+_Py_Try=PROCEDURE,-
+_Py_Tuple=PROCEDURE,-
+_Py_TypeIgnore=PROCEDURE,-
+_Py_Uid_Converter=PROCEDURE,-
+_Py_UnaryOp=PROCEDURE,-
+_Py_UnhandledKeyboardInterrupt=DATA,-
+_Py_VaBuildStack=PROCEDURE,-
+_Py_VaBuildStack_SizeT=PROCEDURE,-
+_Py_VaBuildValue_SizeT=PROCEDURE,-
+_Py_While=PROCEDURE,-
+_Py_With=PROCEDURE,-
+_Py_Yield=PROCEDURE,-
+_Py_YieldFrom=PROCEDURE,-
+_Py_abstract_hack=DATA,-
+_Py_add_one_to_index_C=PROCEDURE,-
+_Py_add_one_to_index_F=PROCEDURE,-
+_Py_alias=PROCEDURE,-
+_Py_arg=PROCEDURE,-
+_Py_arguments=PROCEDURE,-
+_Py_ascii_whitespace=DATA,-
+_Py_asdl_int_seq_new=PROCEDURE,-
+_Py_asdl_seq_new=PROCEDURE,-
+_Py_bytes_capitalize=PROCEDURE,-
+_Py_bytes_contains=PROCEDURE,-
+_Py_bytes_count=PROCEDURE,-
+_Py_bytes_endswith=PROCEDURE,-
+_Py_bytes_find=PROCEDURE,-
+_Py_bytes_index=PROCEDURE,-
+_Py_bytes_isalnum=PROCEDURE,-
+_Py_bytes_isalpha=PROCEDURE,-
+_Py_bytes_isascii=PROCEDURE,-
+_Py_bytes_isdigit=PROCEDURE,-
+_Py_bytes_islower=PROCEDURE,-
+_Py_bytes_isspace=PROCEDURE,-
+_Py_bytes_istitle=PROCEDURE,-
+_Py_bytes_isupper=PROCEDURE,-
+_Py_bytes_lower=PROCEDURE,-
+_Py_bytes_maketrans=PROCEDURE,-
+_Py_bytes_rfind=PROCEDURE,-
+_Py_bytes_rindex=PROCEDURE,-
+_Py_bytes_startswith=PROCEDURE,-
+_Py_bytes_swapcase=PROCEDURE,-
+_Py_bytes_title=PROCEDURE,-
+_Py_bytes_upper=PROCEDURE,-
+_Py_c_abs=PROCEDURE,-
+_Py_c_diff=PROCEDURE,-
+_Py_c_neg=PROCEDURE,-
+_Py_c_pow=PROCEDURE,-
+_Py_c_prod=PROCEDURE,-
+_Py_c_quot=PROCEDURE,-
+_Py_c_sum=PROCEDURE,-
+_Py_capitalize__doc__=DATA,-
+_Py_comprehension=PROCEDURE,-
+_Py_convert_optional_to_ssize_t=PROCEDURE,-
+_Py_count__doc__=DATA,-
+_Py_ctype_table=DATA,-
+_Py_ctype_tolower=DATA,-
+_Py_ctype_toupper=DATA,-
+_Py_device_encoding=PROCEDURE,-
+_Py_dg_dtoa=PROCEDURE,-
+_Py_dg_freedtoa=PROCEDURE,-
+_Py_dg_infinity=PROCEDURE,-
+_Py_dg_stdnan=PROCEDURE,-
+_Py_dg_strtod=PROCEDURE,-
+_Py_dup=PROCEDURE,-
+_Py_endswith__doc__=DATA,-
+_Py_find__doc__=DATA,-
+_Py_fopen=PROCEDURE,-
+_Py_fopen_obj=PROCEDURE,-
+_Py_fstat=PROCEDURE,-
+_Py_fstat_noraise=PROCEDURE,-
+_Py_get_blocking=PROCEDURE,-
+_Py_get_env_flag=PROCEDURE,-
+_Py_get_inheritable=PROCEDURE,-
+_Py_get_xoption=PROCEDURE,-
+_Py_gitidentifier=PROCEDURE,-
+_Py_gitversion=PROCEDURE,-
+_Py_hashtable_clear=PROCEDURE,-
+_Py_hashtable_compare_direct=PROCEDURE,-
+_Py_hashtable_copy=PROCEDURE,-
+_Py_hashtable_destroy=PROCEDURE,-
+_Py_hashtable_foreach=PROCEDURE,-
+_Py_hashtable_get=PROCEDURE,-
+_Py_hashtable_get_entry=PROCEDURE,-
+_Py_hashtable_hash_ptr=PROCEDURE,-
+_Py_hashtable_new=PROCEDURE,-
+_Py_hashtable_new_full=PROCEDURE,-
+_Py_hashtable_pop=PROCEDURE,-
+_Py_hashtable_set=PROCEDURE,-
+_Py_hashtable_size=PROCEDURE,-
+_Py_index__doc__=DATA,-
+_Py_isalnum__doc__=DATA,-
+_Py_isalpha__doc__=DATA,-
+_Py_isascii__doc__=DATA,-
+_Py_isdigit__doc__=DATA,-
+_Py_islower__doc__=DATA,-
+_Py_isspace__doc__=DATA,-
+_Py_istitle__doc__=DATA,-
+_Py_isupper__doc__=DATA,-
+_Py_keyword=PROCEDURE,-
+_Py_lower__doc__=DATA,-
+_Py_maketrans__doc__=DATA,-
+_Py_normalize_encoding=PROCEDURE,-
+_Py_open=PROCEDURE,-
+_Py_open_noraise=PROCEDURE,-
+_Py_parse_inf_or_nan=PROCEDURE,-
+_Py_path_config=DATA,-
+_Py_read=PROCEDURE,-
+_Py_rfind__doc__=DATA,-
+_Py_rindex__doc__=DATA,-
+_Py_set_blocking=PROCEDURE,-
+_Py_set_inheritable=PROCEDURE,-
+_Py_set_inheritable_async_safe=PROCEDURE,-
+_Py_startswith__doc__=DATA,-
+_Py_stat=PROCEDURE,-
+_Py_str_to_int=PROCEDURE,-
+_Py_strhex=PROCEDURE,-
+_Py_strhex_bytes=PROCEDURE,-
+_Py_strhex_bytes_with_sep=PROCEDURE,-
+_Py_strhex_with_sep=PROCEDURE,-
+_Py_string_to_number_wi1h7jsg3$=PROCEDURE,-
+_Py_swapcase__doc__=DATA,-
+_Py_title__doc__=DATA,-
+_Py_tracemalloc_config=DATA,-
+_Py_upper__doc__=DATA,-
+_Py_wfopen=PROCEDURE,-
+_Py_wgetcwd=PROCEDURE,-
+_Py_withitem=PROCEDURE,-
+_Py_wreadlink=PROCEDURE,-
+_Py_wrealpath=PROCEDURE,-
+_Py_write=PROCEDURE,-
+_Py_write_noraise=PROCEDURE,-
+vms__StdioReadline=PROCEDURE,-
+g_vms_select=PROCEDURE,-
+round_imp=PROCEDURE,-
+read_pipe_bytes=PROCEDURE-
+)
\ No newline at end of file
diff --git a/opt/python$shr_dbg.opt b/opt/python$shr_dbg.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5dGhvbiRzaHJfZGJnLm9wdA==
--- /dev/null
+++ b/opt/python$shr_dbg.opt
@@ -0,0 +1,1983 @@
+! from [$(OUTDIR)]
+python$build_out:[000000]libpython3^.8.olb/LIBRARY
+!
+sys$library:pthread$rtl.exe/share
+!
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+!
+SYMBOL_VECTOR = ( -
+! MATH$ROUND_T=PROCEDURE,-
+PyAST_Check=PROCEDURE,-
+PyAST_Compile=PROCEDURE,-
+PyAST_CompileEx=PROCEDURE,-
+PyAST_CompileObject=PROCEDURE,-
+PyAST_FromNode=PROCEDURE,-
+PyAST_FromNodeObject=PROCEDURE,-
+PyAST_Validate=PROCEDURE,-
+PyAST_mod2obj=PROCEDURE,-
+PyAST_obj2mod=PROCEDURE,-
+PyArena_AddPyObject=PROCEDURE,-
+PyArena_Free=PROCEDURE,-
+PyArena_Malloc=PROCEDURE,-
+PyArena_New=PROCEDURE,-
+PyArg_Parse=PROCEDURE,-
+PyArg_ParseTuple=PROCEDURE,-
+PyArg_ParseTupleAndKeywords=PROCEDURE,-
+PyArg_UnpackTuple=PROCEDURE,-
+PyArg_VaParse=PROCEDURE,-
+PyArg_VaParseTupleAndKeywords=PROCEDURE,-
+PyArg_ValidateKeywordArguments=PROCEDURE,-
+PyAsyncGen_ClearFreeLists=PROCEDURE,-
+PyAsyncGen_Fini=PROCEDURE,-
+PyAsyncGen_New=PROCEDURE,-
+PyAsyncGen_Type=DATA,-
+PyBaseObject_Type=DATA,-
+PyBool_FromLong=PROCEDURE,-
+PyBool_Type=DATA,-
+PyBuffer_FillContiguousStrides=PROCEDURE,-
+PyBuffer_FillInfo=PROCEDURE,-
+PyBuffer_FromContiguous=PROCEDURE,-
+PyBuffer_GetPointer=PROCEDURE,-
+PyBuffer_IsContiguous=PROCEDURE,-
+PyBuffer_Release=PROCEDURE,-
+PyBuffer_ToContiguous=PROCEDURE,-
+PyBufferedIOBase_Type=DATA,-
+PyBufferedRWPair_Type=DATA,-
+PyBufferedRandom_Type=DATA,-
+PyBufferedReader_Type=DATA,-
+PyBufferedWriter_Type=DATA,-
+PyByteArrayIter_Type=DATA,-
+PyByteArray_AsString=PROCEDURE,-
+PyByteArray_Concat=PROCEDURE,-
+PyByteArray_FromObject=PROCEDURE,-
+PyByteArray_FromStringAndSize=PROCEDURE,-
+PyByteArray_Resize=PROCEDURE,-
+PyByteArray_Size=PROCEDURE,-
+PyByteArray_Type=DATA,-
+PyBytesIO_Type=DATA,-
+PyBytesIter_Type=DATA,-
+PyBytes_AsString=PROCEDURE,-
+PyBytes_AsStringAndSize=PROCEDURE,-
+PyBytes_Concat=PROCEDURE,-
+PyBytes_ConcatAndDel=PROCEDURE,-
+PyBytes_DecodeEscape=PROCEDURE,-
+PyBytes_Fini=PROCEDURE,-
+PyBytes_FromFormat=PROCEDURE,-
+PyBytes_FromFormatV=PROCEDURE,-
+PyBytes_FromObject=PROCEDURE,-
+PyBytes_FromString=PROCEDURE,-
+PyBytes_FromStringAndSize=PROCEDURE,-
+PyBytes_Repr=PROCEDURE,-
+PyBytes_Size=PROCEDURE,-
+PyBytes_Type=DATA,-
+PyCFunction_Call=PROCEDURE,-
+PyCFunction_ClearFreeList=PROCEDURE,-
+PyCFunction_Fini=PROCEDURE,-
+PyCFunction_GetFlags=PROCEDURE,-
+PyCFunction_GetFunction=PROCEDURE,-
+PyCFunction_GetSelf=PROCEDURE,-
+PyCFunction_New=PROCEDURE,-
+PyCFunction_NewEx=PROCEDURE,-
+PyCFunction_Type=DATA,-
+PyCallIter_New=PROCEDURE,-
+PyCallIter_Type=DATA,-
+PyCallable_Check=PROCEDURE,-
+PyCapsule_GetContext=PROCEDURE,-
+PyCapsule_GetDestructor=PROCEDURE,-
+PyCapsule_GetName=PROCEDURE,-
+PyCapsule_GetPointer=PROCEDURE,-
+PyCapsule_Import=PROCEDURE,-
+PyCapsule_IsValid=PROCEDURE,-
+PyCapsule_New=PROCEDURE,-
+PyCapsule_SetContext=PROCEDURE,-
+PyCapsule_SetDestructor=PROCEDURE,-
+PyCapsule_SetName=PROCEDURE,-
+PyCapsule_SetPointer=PROCEDURE,-
+PyCapsule_Type=DATA,-
+PyCell_Get=PROCEDURE,-
+PyCell_New=PROCEDURE,-
+PyCell_Set=PROCEDURE,-
+PyCell_Type=DATA,-
+PyClassMethodDescr_Type=DATA,-
+PyClassMethod_New=PROCEDURE,-
+PyClassMethod_Type=DATA,-
+PyCode_Addr2Line=PROCEDURE,-
+PyCode_New=PROCEDURE,-
+PyCode_NewEmpty=PROCEDURE,-
+PyCode_NewWithPosOnlyArgs=PROCEDURE,-
+PyCode_Optimize=PROCEDURE,-
+PyCode_Type=DATA,-
+PyCodec_BackslashReplaceErrors=PROCEDURE,-
+PyCodec_Decode=PROCEDURE,-
+PyCodec_Decoder=PROCEDURE,-
+PyCodec_Encode=PROCEDURE,-
+PyCodec_Encoder=PROCEDURE,-
+PyCodec_IgnoreErrors=PROCEDURE,-
+PyCodec_IncrementalDecoder=PROCEDURE,-
+PyCodec_IncrementalEncoder=PROCEDURE,-
+PyCodec_KnownEncoding=PROCEDURE,-
+PyCodec_LookupError=PROCEDURE,-
+PyCodec_NameReplaceErrors=PROCEDURE,-
+PyCodec_Register=PROCEDURE,-
+PyCodec_RegisterError=PROCEDURE,-
+PyCodec_ReplaceErrors=PROCEDURE,-
+PyCodec_StreamReader=PROCEDURE,-
+PyCodec_StreamWriter=PROCEDURE,-
+PyCodec_StrictErrors=PROCEDURE,-
+PyCodec_XMLCharRefReplaceErrors=PROCEDURE,-
+PyCompileString=PROCEDURE,-
+PyCompile_OpcodeStackEf25ml1ih$=PROCEDURE,-
+PyCompile_OpcodeStackEffect=PROCEDURE,-
+PyComplex_AsCComplex=PROCEDURE,-
+PyComplex_FromCComplex=PROCEDURE,-
+PyComplex_FromDoubles=PROCEDURE,-
+PyComplex_ImagAsDouble=PROCEDURE,-
+PyComplex_RealAsDouble=PROCEDURE,-
+PyComplex_Type=DATA,-
+PyConfig_Clear=PROCEDURE,-
+PyConfig_InitIsolatedConfig=PROCEDURE,-
+PyConfig_InitPythonConfig=PROCEDURE,-
+PyConfig_Read=PROCEDURE,-
+PyConfig_SetArgv=PROCEDURE,-
+PyConfig_SetBytesArgv=PROCEDURE,-
+PyConfig_SetBytesString=PROCEDURE,-
+PyConfig_SetString=PROCEDURE,-
+PyConfig_SetWideStringList=PROCEDURE,-
+PyContextTokenMissing_Type=DATA,-
+PyContextToken_Type=DATA,-
+PyContextVar_Get=PROCEDURE,-
+PyContextVar_New=PROCEDURE,-
+PyContextVar_Reset=PROCEDURE,-
+PyContextVar_Set=PROCEDURE,-
+PyContextVar_Type=DATA,-
+PyContext_ClearFreeList=PROCEDURE,-
+PyContext_Copy=PROCEDURE,-
+PyContext_CopyCurrent=PROCEDURE,-
+PyContext_Enter=PROCEDURE,-
+PyContext_Exit=PROCEDURE,-
+PyContext_New=PROCEDURE,-
+PyContext_Type=DATA,-
+PyCoro_New=PROCEDURE,-
+PyCoro_Type=DATA,-
+PyDescr_NewClassMethod=PROCEDURE,-
+PyDescr_NewGetSet=PROCEDURE,-
+PyDescr_NewMember=PROCEDURE,-
+PyDescr_NewMethod=PROCEDURE,-
+PyDescr_NewWrapper=PROCEDURE,-
+PyDictItems_Type=DATA,-
+PyDictIterItem_Type=DATA,-
+PyDictIterKey_Type=DATA,-
+PyDictIterValue_Type=DATA,-
+PyDictKeys_Type=DATA,-
+PyDictProxy_New=PROCEDURE,-
+PyDictProxy_Type=DATA,-
+PyDictRevIterItem_Type=DATA,-
+PyDictRevIterKey_Type=DATA,-
+PyDictRevIterValue_Type=DATA,-
+PyDictValues_Type=DATA,-
+PyDict_Clear=PROCEDURE,-
+PyDict_ClearFreeList=PROCEDURE,-
+PyDict_Contains=PROCEDURE,-
+PyDict_Copy=PROCEDURE,-
+PyDict_DelItem=PROCEDURE,-
+PyDict_DelItemString=PROCEDURE,-
+PyDict_Fini=PROCEDURE,-
+PyDict_GetItem=PROCEDURE,-
+PyDict_GetItemString=PROCEDURE,-
+PyDict_GetItemWithError=PROCEDURE,-
+PyDict_Items=PROCEDURE,-
+PyDict_Keys=PROCEDURE,-
+PyDict_Merge=PROCEDURE,-
+PyDict_MergeFromSeq2=PROCEDURE,-
+PyDict_New=PROCEDURE,-
+PyDict_Next=PROCEDURE,-
+PyDict_SetDefault=PROCEDURE,-
+PyDict_SetItem=PROCEDURE,-
+PyDict_SetItemString=PROCEDURE,-
+PyDict_Size=PROCEDURE,-
+PyDict_Type=DATA,-
+PyDict_Update=PROCEDURE,-
+PyDict_Values=PROCEDURE,-
+PyEllipsis_Type=DATA,-
+PyEnum_Type=DATA,-
+PyErr_BadArgument=PROCEDURE,-
+PyErr_BadInternalCall=PROCEDURE,-
+PyErr_CheckSignals=PROCEDURE,-
+PyErr_Clear=PROCEDURE,-
+PyErr_Display=PROCEDURE,-
+PyErr_ExceptionMatches=PROCEDURE,-
+PyErr_Fetch=PROCEDURE,-
+PyErr_Format=PROCEDURE,-
+PyErr_FormatV=PROCEDURE,-
+PyErr_GetExcInfo=PROCEDURE,-
+PyErr_GivenExceptionMatches=PROCEDURE,-
+PyErr_NewException=PROCEDURE,-
+PyErr_NewExceptionWithDoc=PROCEDURE,-
+PyErr_NoMemory=PROCEDURE,-
+PyErr_NormalizeException=PROCEDURE,-
+PyErr_Occurred=PROCEDURE,-
+PyErr_Print=PROCEDURE,-
+PyErr_PrintEx=PROCEDURE,-
+PyErr_ProgramText=PROCEDURE,-
+PyErr_ProgramTextObject=PROCEDURE,-
+PyErr_ResourceWarning=PROCEDURE,-
+PyErr_Restore=PROCEDURE,-
+PyErr_SetExcInfo=PROCEDURE,-
+PyErr_SetFromErrno=PROCEDURE,-
+PyErr_SetFromErrnoWithF13nsp2p$=PROCEDURE,-
+PyErr_SetFromErrnoWithF36am9kt$=PROCEDURE,-
+PyErr_SetFromErrnoWithFilename=PROCEDURE,-
+PyErr_SetImportError=PROCEDURE,-
+PyErr_SetImportErrorSubclass=PROCEDURE,-
+PyErr_SetInterrupt=PROCEDURE,-
+PyErr_SetNone=PROCEDURE,-
+PyErr_SetObject=PROCEDURE,-
+PyErr_SetString=PROCEDURE,-
+PyErr_SyntaxLocation=PROCEDURE,-
+PyErr_SyntaxLocationEx=PROCEDURE,-
+PyErr_SyntaxLocationObject=PROCEDURE,-
+PyErr_Warn=PROCEDURE,-
+PyErr_WarnEx=PROCEDURE,-
+PyErr_WarnExplicit=PROCEDURE,-
+PyErr_WarnExplicitFormat=PROCEDURE,-
+PyErr_WarnExplicitObject=PROCEDURE,-
+PyErr_WarnFormat=PROCEDURE,-
+PyErr_WriteUnraisable=PROCEDURE,-
+PyEval_AcquireLock=PROCEDURE,-
+PyEval_AcquireThread=PROCEDURE,-
+PyEval_CallFunction=PROCEDURE,-
+PyEval_CallMethod=PROCEDURE,-
+PyEval_CallObjectWithKeywords=PROCEDURE,-
+PyEval_EvalCode=PROCEDURE,-
+PyEval_EvalCodeEx=PROCEDURE,-
+PyEval_EvalFrame=PROCEDURE,-
+PyEval_EvalFrameEx=PROCEDURE,-
+PyEval_GetBuiltins=PROCEDURE,-
+PyEval_GetFrame=PROCEDURE,-
+PyEval_GetFuncDesc=PROCEDURE,-
+PyEval_GetFuncName=PROCEDURE,-
+PyEval_GetGlobals=PROCEDURE,-
+PyEval_GetLocals=PROCEDURE,-
+PyEval_InitThreads=PROCEDURE,-
+PyEval_MergeCompilerFlags=PROCEDURE,-
+PyEval_ReleaseLock=PROCEDURE,-
+PyEval_ReleaseThread=PROCEDURE,-
+PyEval_RestoreThread=PROCEDURE,-
+PyEval_SaveThread=PROCEDURE,-
+PyEval_SetProfile=PROCEDURE,-
+PyEval_SetTrace=PROCEDURE,-
+PyEval_ThreadsInitialized=PROCEDURE,-
+PyExc_ArithmeticError=DATA,-
+PyExc_AssertionError=DATA,-
+PyExc_AttributeError=DATA,-
+PyExc_BaseException=DATA,-
+PyExc_BlockingIOError=DATA,-
+PyExc_BrokenPipeError=DATA,-
+PyExc_BufferError=DATA,-
+PyExc_BytesWarning=DATA,-
+PyExc_ChildProcessError=DATA,-
+PyExc_ConnectionAbortedError=DATA,-
+PyExc_ConnectionError=DATA,-
+PyExc_ConnectionRefusedError=DATA,-
+PyExc_ConnectionResetError=DATA,-
+PyExc_DeprecationWarning=DATA,-
+PyExc_EOFError=DATA,-
+PyExc_EnvironmentError=DATA,-
+PyExc_Exception=DATA,-
+PyExc_FileExistsError=DATA,-
+PyExc_FileNotFoundError=DATA,-
+PyExc_FloatingPointError=DATA,-
+PyExc_FutureWarning=DATA,-
+PyExc_GeneratorExit=DATA,-
+PyExc_IOError=DATA,-
+PyExc_ImportError=DATA,-
+PyExc_ImportWarning=DATA,-
+PyExc_IndentationError=DATA,-
+PyExc_IndexError=DATA,-
+PyExc_InterruptedError=DATA,-
+PyExc_IsADirectoryError=DATA,-
+PyExc_KeyError=DATA,-
+PyExc_KeyboardInterrupt=DATA,-
+PyExc_LookupError=DATA,-
+PyExc_MemoryError=DATA,-
+PyExc_ModuleNotFoundError=DATA,-
+PyExc_NameError=DATA,-
+PyExc_NotADirectoryError=DATA,-
+PyExc_NotImplementedError=DATA,-
+PyExc_OSError=DATA,-
+PyExc_OverflowError=DATA,-
+PyExc_PendingDeprecationWarning=DATA,-
+PyExc_PermissionError=DATA,-
+PyExc_ProcessLookupError=DATA,-
+PyExc_RecursionError=DATA,-
+PyExc_ReferenceError=DATA,-
+PyExc_ResourceWarning=DATA,-
+PyExc_RuntimeError=DATA,-
+PyExc_RuntimeWarning=DATA,-
+PyExc_StopAsyncIteration=DATA,-
+PyExc_StopIteration=DATA,-
+PyExc_SyntaxError=DATA,-
+PyExc_SyntaxWarning=DATA,-
+PyExc_SystemError=DATA,-
+PyExc_SystemExit=DATA,-
+PyExc_TabError=DATA,-
+PyExc_TimeoutError=DATA,-
+PyExc_TypeError=DATA,-
+PyExc_UnboundLocalError=DATA,-
+PyExc_UnicodeDecodeError=DATA,-
+PyExc_UnicodeEncodeError=DATA,-
+PyExc_UnicodeError=DATA,-
+PyExc_UnicodeTranslateError=DATA,-
+PyExc_UnicodeWarning=DATA,-
+PyExc_UserWarning=DATA,-
+PyExc_ValueError=DATA,-
+PyExc_Warning=DATA,-
+PyExc_ZeroDivisionError=DATA,-
+PyExceptionClass_Name=PROCEDURE,-
+PyException_GetCause=PROCEDURE,-
+PyException_GetContext=PROCEDURE,-
+PyException_GetTraceback=PROCEDURE,-
+PyException_SetCause=PROCEDURE,-
+PyException_SetContext=PROCEDURE,-
+PyException_SetTraceback=PROCEDURE,-
+PyFPE_dummy=PROCEDURE,-
+PyFileIO_Type=DATA,-
+PyFile_FromFd=PROCEDURE,-
+PyFile_GetLine=PROCEDURE,-
+PyFile_NewStdPrinter=PROCEDURE,-
+PyFile_OpenCode=PROCEDURE,-
+PyFile_OpenCodeObject=PROCEDURE,-
+PyFile_SetOpenCodeHook=PROCEDURE,-
+PyFile_WriteObject=PROCEDURE,-
+PyFile_WriteString=PROCEDURE,-
+PyFilter_Type=DATA,-
+PyFloat_AsDouble=PROCEDURE,-
+PyFloat_ClearFreeList=PROCEDURE,-
+PyFloat_Fini=PROCEDURE,-
+PyFloat_FromDouble=PROCEDURE,-
+PyFloat_FromString=PROCEDURE,-
+PyFloat_GetInfo=PROCEDURE,-
+PyFloat_GetMax=PROCEDURE,-
+PyFloat_GetMin=PROCEDURE,-
+PyFloat_Type=DATA,-
+PyFrame_BlockPop=PROCEDURE,-
+PyFrame_BlockSetup=PROCEDURE,-
+PyFrame_ClearFreeList=PROCEDURE,-
+PyFrame_FastToLocals=PROCEDURE,-
+PyFrame_FastToLocalsWithError=PROCEDURE,-
+PyFrame_Fini=PROCEDURE,-
+PyFrame_GetLineNumber=PROCEDURE,-
+PyFrame_LocalsToFast=PROCEDURE,-
+PyFrame_New=PROCEDURE,-
+PyFrame_Type=DATA,-
+PyFrozenSet_New=PROCEDURE,-
+PyFrozenSet_Type=DATA,-
+PyFunction_GetAnnotations=PROCEDURE,-
+PyFunction_GetClosure=PROCEDURE,-
+PyFunction_GetCode=PROCEDURE,-
+PyFunction_GetDefaults=PROCEDURE,-
+PyFunction_GetGlobals=PROCEDURE,-
+PyFunction_GetKwDefaults=PROCEDURE,-
+PyFunction_GetModule=PROCEDURE,-
+PyFunction_New=PROCEDURE,-
+PyFunction_NewWithQualName=PROCEDURE,-
+PyFunction_SetAnnotations=PROCEDURE,-
+PyFunction_SetClosure=PROCEDURE,-
+PyFunction_SetDefaults=PROCEDURE,-
+PyFunction_SetKwDefaults=PROCEDURE,-
+PyFunction_Type=DATA,-
+PyFuture_FromAST=PROCEDURE,-
+PyFuture_FromASTObject=PROCEDURE,-
+PyGC_Collect=PROCEDURE,-
+PyGILState_Check=PROCEDURE,-
+PyGILState_Ensure=PROCEDURE,-
+PyGILState_GetThisThreadState=PROCEDURE,-
+PyGILState_Release=PROCEDURE,-
+PyGen_NeedsFinalizing=PROCEDURE,-
+PyGen_New=PROCEDURE,-
+PyGen_NewWithQualName=PROCEDURE,-
+PyGen_Type=DATA,-
+PyGetSetDescr_Type=DATA,-
+PyGrammar_AddAccelerators=PROCEDURE,-
+PyGrammar_FindDFA=PROCEDURE,-
+PyGrammar_LabelRepr=PROCEDURE,-
+PyGrammar_RemoveAccelerators=PROCEDURE,-
+PyHash_GetFuncDef=PROCEDURE,-
+PyIOBase_Type=DATA,-
+PyImport_AddModule=PROCEDURE,-
+PyImport_AddModuleObject=PROCEDURE,-
+PyImport_AppendInittab=PROCEDURE,-
+PyImport_Cleanup=PROCEDURE,-
+PyImport_ExecCodeModule23g5k6b$=PROCEDURE,-
+PyImport_ExecCodeModule=PROCEDURE,-
+PyImport_ExecCodeModuleEx=PROCEDURE,-
+PyImport_ExecCodeModuleObject=PROCEDURE,-
+PyImport_ExtendInittab=PROCEDURE,-
+PyImport_FrozenModules=DATA,-
+PyImport_GetImporter=PROCEDURE,-
+PyImport_GetMagicNumber=PROCEDURE,-
+PyImport_GetMagicTag=PROCEDURE,-
+PyImport_GetModule=PROCEDURE,-
+PyImport_GetModuleDict=PROCEDURE,-
+PyImport_Import=PROCEDURE,-
+PyImport_ImportFrozenMo163r2c6$=PROCEDURE,-
+PyImport_ImportFrozenModule=PROCEDURE,-
+PyImport_ImportModule=PROCEDURE,-
+PyImport_ImportModuleLe3e3v665$=PROCEDURE,-
+PyImport_ImportModuleLevel=PROCEDURE,-
+PyImport_ImportModuleNoBlock=PROCEDURE,-
+PyImport_Inittab=DATA,-
+PyImport_ReloadModule=PROCEDURE,-
+PyIncrementalNewlineDec1pmcbjr$=DATA,-
+PyIndex_Check=PROCEDURE,-
+PyInit__abc=PROCEDURE,-
+PyInit__ast=PROCEDURE,-
+PyInit__codecs=PROCEDURE,-
+PyInit__collections=PROCEDURE,-
+PyInit__functools=PROCEDURE,-
+PyInit__imp=PROCEDURE,-
+PyInit__io=PROCEDURE,-
+PyInit__locale=PROCEDURE,-
+PyInit__operator=PROCEDURE,-
+PyInit__signal=PROCEDURE,-
+PyInit__sre=PROCEDURE,-
+PyInit__stat=PROCEDURE,-
+PyInit__string=PROCEDURE,-
+PyInit__symtable=PROCEDURE,-
+PyInit__thread=PROCEDURE,-
+PyInit__tracemalloc=PROCEDURE,-
+PyInit__weakref=PROCEDURE,-
+PyInit_atexit=PROCEDURE,-
+PyInit_errno=PROCEDURE,-
+PyInit_faulthandler=PROCEDURE,-
+PyInit_gc=PROCEDURE,-
+PyInit_itertools=PROCEDURE,-
+PyInit_posix=PROCEDURE,-
+PyInit_pwd=PROCEDURE,-
+PyInit_time=PROCEDURE,-
+PyInit_xxsubtype=PROCEDURE,-
+PyInstanceMethod_Function=PROCEDURE,-
+PyInstanceMethod_New=PROCEDURE,-
+PyInstanceMethod_Type=DATA,-
+PyInterpreterState_Clear=PROCEDURE,-
+PyInterpreterState_Delete=PROCEDURE,-
+PyInterpreterState_GetDict=PROCEDURE,-
+PyInterpreterState_GetID=PROCEDURE,-
+PyInterpreterState_Head=PROCEDURE,-
+PyInterpreterState_Main=PROCEDURE,-
+PyInterpreterState_New=PROCEDURE,-
+PyInterpreterState_Next=PROCEDURE,-
+PyInterpreterState_ThreadHead=PROCEDURE,-
+PyIter_Check=PROCEDURE,-
+PyIter_Next=PROCEDURE,-
+PyListIter_Type=DATA,-
+PyListRevIter_Type=DATA,-
+PyList_Append=PROCEDURE,-
+PyList_AsTuple=PROCEDURE,-
+PyList_ClearFreeList=PROCEDURE,-
+PyList_Fini=PROCEDURE,-
+PyList_GetItem=PROCEDURE,-
+PyList_GetSlice=PROCEDURE,-
+PyList_Insert=PROCEDURE,-
+PyList_New=PROCEDURE,-
+PyList_Reverse=PROCEDURE,-
+PyList_SetItem=PROCEDURE,-
+PyList_SetSlice=PROCEDURE,-
+PyList_Size=PROCEDURE,-
+PyList_Sort=PROCEDURE,-
+PyList_Type=DATA,-
+PyLongRangeIter_Type=DATA,-
+PyLong_AsDouble=PROCEDURE,-
+PyLong_AsLong=PROCEDURE,-
+PyLong_AsLongAndOverflow=PROCEDURE,-
+PyLong_AsLongLong=PROCEDURE,-
+PyLong_AsLongLongAndOverflow=PROCEDURE,-
+PyLong_AsSize_t=PROCEDURE,-
+PyLong_AsSsize_t=PROCEDURE,-
+PyLong_AsUnsignedLong=PROCEDURE,-
+PyLong_AsUnsignedLongLong=PROCEDURE,-
+PyLong_AsUnsignedLongLongMask=PROCEDURE,-
+PyLong_AsUnsignedLongMask=PROCEDURE,-
+PyLong_AsVoidPtr=PROCEDURE,-
+PyLong_Fini=PROCEDURE,-
+PyLong_FromDouble=PROCEDURE,-
+PyLong_FromLong=PROCEDURE,-
+PyLong_FromLongLong=PROCEDURE,-
+PyLong_FromSize_t=PROCEDURE,-
+PyLong_FromSsize_t=PROCEDURE,-
+PyLong_FromString=PROCEDURE,-
+PyLong_FromUnicode=PROCEDURE,-
+PyLong_FromUnicodeObject=PROCEDURE,-
+PyLong_FromUnsignedLong=PROCEDURE,-
+PyLong_FromUnsignedLongLong=PROCEDURE,-
+PyLong_FromVoidPtr=PROCEDURE,-
+PyLong_GetInfo=PROCEDURE,-
+PyLong_Type=DATA,-
+PyMap_Type=DATA,-
+PyMapping_Check=PROCEDURE,-
+PyMapping_GetItemString=PROCEDURE,-
+PyMapping_HasKey=PROCEDURE,-
+PyMapping_HasKeyString=PROCEDURE,-
+PyMapping_Items=PROCEDURE,-
+PyMapping_Keys=PROCEDURE,-
+PyMapping_Length=PROCEDURE,-
+PyMapping_SetItemString=PROCEDURE,-
+PyMapping_Size=PROCEDURE,-
+PyMapping_Values=PROCEDURE,-
+PyMarshal_Init=PROCEDURE,-
+PyMarshal_ReadLastObjec1gnkbmv$=PROCEDURE,-
+PyMarshal_ReadLongFromFile=PROCEDURE,-
+PyMarshal_ReadObjectFromFile=PROCEDURE,-
+PyMarshal_ReadObjectFromString=PROCEDURE,-
+PyMarshal_ReadShortFromFile=PROCEDURE,-
+PyMarshal_WriteLongToFile=PROCEDURE,-
+PyMarshal_WriteObjectToFile=PROCEDURE,-
+PyMarshal_WriteObjectToString=PROCEDURE,-
+PyMem_Calloc=PROCEDURE,-
+PyMem_Free=PROCEDURE,-
+PyMem_GetAllocator=PROCEDURE,-
+PyMem_Malloc=PROCEDURE,-
+PyMem_RawCalloc=PROCEDURE,-
+PyMem_RawFree=PROCEDURE,-
+PyMem_RawMalloc=PROCEDURE,-
+PyMem_RawRealloc=PROCEDURE,-
+PyMem_Realloc=PROCEDURE,-
+PyMem_SetAllocator=PROCEDURE,-
+PyMem_SetupDebugHooks=PROCEDURE,-
+PyMemberDescr_Type=DATA,-
+PyMember_GetOne=PROCEDURE,-
+PyMember_SetOne=PROCEDURE,-
+PyMemoryView_FromBuffer=PROCEDURE,-
+PyMemoryView_FromMemory=PROCEDURE,-
+PyMemoryView_FromObject=PROCEDURE,-
+PyMemoryView_GetContiguous=PROCEDURE,-
+PyMemoryView_Type=DATA,-
+PyMethodDescr_Type=DATA,-
+PyMethod_ClearFreeList=PROCEDURE,-
+PyMethod_Fini=PROCEDURE,-
+PyMethod_Function=PROCEDURE,-
+PyMethod_New=PROCEDURE,-
+PyMethod_Self=PROCEDURE,-
+PyMethod_Type=DATA,-
+PyModuleDef_Init=PROCEDURE,-
+PyModuleDef_Type=DATA,-
+PyModule_AddFunctions=PROCEDURE,-
+PyModule_AddIntConstant=PROCEDURE,-
+PyModule_AddObject=PROCEDURE,-
+PyModule_AddStringConstant=PROCEDURE,-
+PyModule_Create2=PROCEDURE,-
+PyModule_ExecDef=PROCEDURE,-
+PyModule_FromDefAndSpec2=PROCEDURE,-
+PyModule_GetDef=PROCEDURE,-
+PyModule_GetDict=PROCEDURE,-
+PyModule_GetFilename=PROCEDURE,-
+PyModule_GetFilenameObject=PROCEDURE,-
+PyModule_GetName=PROCEDURE,-
+PyModule_GetNameObject=PROCEDURE,-
+PyModule_GetState=PROCEDURE,-
+PyModule_GetWarningsModule=PROCEDURE,-
+PyModule_New=PROCEDURE,-
+PyModule_NewObject=PROCEDURE,-
+PyModule_SetDocString=PROCEDURE,-
+PyModule_Type=DATA,-
+PyNode_AddChild=PROCEDURE,-
+PyNode_Compile=PROCEDURE,-
+PyNode_Free=PROCEDURE,-
+PyNode_ListTree=PROCEDURE,-
+PyNode_New=PROCEDURE,-
+PyNumber_Absolute=PROCEDURE,-
+PyNumber_Add=PROCEDURE,-
+PyNumber_And=PROCEDURE,-
+PyNumber_AsOff_t=PROCEDURE,-
+PyNumber_AsSsize_t=PROCEDURE,-
+PyNumber_Check=PROCEDURE,-
+PyNumber_Divmod=PROCEDURE,-
+PyNumber_Float=PROCEDURE,-
+PyNumber_FloorDivide=PROCEDURE,-
+PyNumber_InMatrixMultiply=PROCEDURE,-
+PyNumber_InPlaceAdd=PROCEDURE,-
+PyNumber_InPlaceAnd=PROCEDURE,-
+PyNumber_InPlaceFloorDivide=PROCEDURE,-
+PyNumber_InPlaceLshift=PROCEDURE,-
+PyNumber_InPlaceMatrixMultiply=PROCEDURE,-
+PyNumber_InPlaceMultiply=PROCEDURE,-
+PyNumber_InPlaceOr=PROCEDURE,-
+PyNumber_InPlacePower=PROCEDURE,-
+PyNumber_InPlaceRemainder=PROCEDURE,-
+PyNumber_InPlaceRshift=PROCEDURE,-
+PyNumber_InPlaceSubtract=PROCEDURE,-
+PyNumber_InPlaceTrueDivide=PROCEDURE,-
+PyNumber_InPlaceXor=PROCEDURE,-
+PyNumber_Index=PROCEDURE,-
+PyNumber_Invert=PROCEDURE,-
+PyNumber_Long=PROCEDURE,-
+PyNumber_Lshift=PROCEDURE,-
+PyNumber_MatrixMultiply=PROCEDURE,-
+PyNumber_Multiply=PROCEDURE,-
+PyNumber_Negative=PROCEDURE,-
+PyNumber_Or=PROCEDURE,-
+PyNumber_Positive=PROCEDURE,-
+PyNumber_Power=PROCEDURE,-
+PyNumber_Remainder=PROCEDURE,-
+PyNumber_Rshift=PROCEDURE,-
+PyNumber_Subtract=PROCEDURE,-
+PyNumber_ToBase=PROCEDURE,-
+PyNumber_TrueDivide=PROCEDURE,-
+PyNumber_Xor=PROCEDURE,-
+PyODictItems_Type=DATA,-
+PyODictIter_Type=DATA,-
+PyODictKeys_Type=DATA,-
+PyODictValues_Type=DATA,-
+PyODict_DelItem=PROCEDURE,-
+PyODict_New=PROCEDURE,-
+PyODict_SetItem=PROCEDURE,-
+PyODict_Type=DATA,-
+PyOS_AfterFork=PROCEDURE,-
+PyOS_FSPath=PROCEDURE,-
+PyOS_FiniInterrupts=PROCEDURE,-
+PyOS_InitInterrupts=PROCEDURE,-
+PyOS_InputHook=DATA,-
+PyOS_InterruptOccurred=PROCEDURE,-
+PyOS_Readline=PROCEDURE,-
+PyOS_ReadlineFunctionPointer=DATA,-
+PyOS_StdioReadline=PROCEDURE,-
+PyOS_double_to_string=PROCEDURE,-
+PyOS_getsig=PROCEDURE,-
+PyOS_mystricmp=PROCEDURE,-
+PyOS_mystrnicmp=PROCEDURE,-
+PyOS_setsig=PROCEDURE,-
+PyOS_snprintf=PROCEDURE,-
+PyOS_string_to_double=PROCEDURE,-
+PyOS_strtol=PROCEDURE,-
+PyOS_strtoul=PROCEDURE,-
+PyOS_vsnprintf=PROCEDURE,-
+PyObject_ASCII=PROCEDURE,-
+PyObject_AsCharBuffer=PROCEDURE,-
+PyObject_AsFileDescriptor=PROCEDURE,-
+PyObject_AsReadBuffer=PROCEDURE,-
+PyObject_AsWriteBuffer=PROCEDURE,-
+PyObject_Bytes=PROCEDURE,-
+PyObject_Call=PROCEDURE,-
+PyObject_CallFinalizer=PROCEDURE,-
+PyObject_CallFinalizerF3rob0r5$=PROCEDURE,-
+PyObject_CallFunction=PROCEDURE,-
+PyObject_CallFunctionObjArgs=PROCEDURE,-
+PyObject_CallMethod=PROCEDURE,-
+PyObject_CallMethodObjArgs=PROCEDURE,-
+PyObject_CallObject=PROCEDURE,-
+PyObject_Calloc=PROCEDURE,-
+PyObject_CheckReadBuffer=PROCEDURE,-
+PyObject_ClearWeakRefs=PROCEDURE,-
+PyObject_CopyData=PROCEDURE,-
+PyObject_DelItem=PROCEDURE,-
+PyObject_DelItemString=PROCEDURE,-
+PyObject_Dir=PROCEDURE,-
+PyObject_Format=PROCEDURE,-
+PyObject_Free=PROCEDURE,-
+PyObject_GC_Del=PROCEDURE,-
+PyObject_GC_Track=PROCEDURE,-
+PyObject_GC_UnTrack=PROCEDURE,-
+PyObject_GenericGetAttr=PROCEDURE,-
+PyObject_GenericGetDict=PROCEDURE,-
+PyObject_GenericSetAttr=PROCEDURE,-
+PyObject_GenericSetDict=PROCEDURE,-
+PyObject_GetArenaAllocator=PROCEDURE,-
+PyObject_GetAttr=PROCEDURE,-
+PyObject_GetAttrString=PROCEDURE,-
+PyObject_GetBuffer=PROCEDURE,-
+PyObject_GetItem=PROCEDURE,-
+PyObject_GetIter=PROCEDURE,-
+PyObject_HasAttr=PROCEDURE,-
+PyObject_HasAttrString=PROCEDURE,-
+PyObject_Hash=PROCEDURE,-
+PyObject_HashNotImplemented=PROCEDURE,-
+PyObject_Init=PROCEDURE,-
+PyObject_InitVar=PROCEDURE,-
+PyObject_IsInstance=PROCEDURE,-
+PyObject_IsSubclass=PROCEDURE,-
+PyObject_IsTrue=PROCEDURE,-
+PyObject_Length=PROCEDURE,-
+PyObject_LengthHint=PROCEDURE,-
+PyObject_Malloc=PROCEDURE,-
+PyObject_Not=PROCEDURE,-
+PyObject_Print=PROCEDURE,-
+PyObject_Realloc=PROCEDURE,-
+PyObject_Repr=PROCEDURE,-
+PyObject_RichCompare=PROCEDURE,-
+PyObject_RichCompareBool=PROCEDURE,-
+PyObject_SelfIter=PROCEDURE,-
+PyObject_SetArenaAllocator=PROCEDURE,-
+PyObject_SetAttr=PROCEDURE,-
+PyObject_SetAttrString=PROCEDURE,-
+PyObject_SetItem=PROCEDURE,-
+PyObject_Size=PROCEDURE,-
+PyObject_Str=PROCEDURE,-
+PyObject_Type=PROCEDURE,-
+PyParser_ASTFromFile=PROCEDURE,-
+PyParser_ASTFromFileObject=PROCEDURE,-
+PyParser_ASTFromString=PROCEDURE,-
+PyParser_ASTFromStringObject=PROCEDURE,-
+PyParser_AddToken=PROCEDURE,-
+PyParser_ClearError=PROCEDURE,-
+PyParser_Delete=PROCEDURE,-
+PyParser_New=PROCEDURE,-
+PyParser_ParseFile=PROCEDURE,-
+PyParser_ParseFileFlags=PROCEDURE,-
+PyParser_ParseFileFlagsEx=PROCEDURE,-
+PyParser_ParseFileObject=PROCEDURE,-
+PyParser_ParseString=PROCEDURE,-
+PyParser_ParseStringFla0n2o9ga$=PROCEDURE,-
+PyParser_ParseStringFla3tj408l$=PROCEDURE,-
+PyParser_ParseStringFlags=PROCEDURE,-
+PyParser_ParseStringObject=PROCEDURE,-
+PyParser_SetError=PROCEDURE,-
+PyParser_SimpleParseFile=PROCEDURE,-
+PyParser_SimpleParseFileFlags=PROCEDURE,-
+PyParser_SimpleParseStr1ei9lfj$=PROCEDURE,-
+PyParser_SimpleParseString=PROCEDURE,-
+PyParser_SimpleParseStringFlags=PROCEDURE,-
+PyPickleBuffer_FromObject=PROCEDURE,-
+PyPickleBuffer_GetBuffer=PROCEDURE,-
+PyPickleBuffer_Release=PROCEDURE,-
+PyPickleBuffer_Type=DATA,-
+PyPreConfig_InitIsolatedConfig=PROCEDURE,-
+PyPreConfig_InitPythonConfig=PROCEDURE,-
+PyProperty_Type=DATA,-
+PyRangeIter_Type=DATA,-
+PyRange_Type=DATA,-
+PyRawIOBase_Type=DATA,-
+PyReversed_Type=DATA,-
+PyRun_AnyFile=PROCEDURE,-
+PyRun_AnyFileEx=PROCEDURE,-
+PyRun_AnyFileExFlags=PROCEDURE,-
+PyRun_AnyFileFlags=PROCEDURE,-
+PyRun_File=PROCEDURE,-
+PyRun_FileEx=PROCEDURE,-
+PyRun_FileExFlags=PROCEDURE,-
+PyRun_FileFlags=PROCEDURE,-
+PyRun_InteractiveLoop=PROCEDURE,-
+PyRun_InteractiveLoopFlags=PROCEDURE,-
+PyRun_InteractiveOne=PROCEDURE,-
+PyRun_InteractiveOneFlags=PROCEDURE,-
+PyRun_InteractiveOneObject=PROCEDURE,-
+PyRun_SimpleFile=PROCEDURE,-
+PyRun_SimpleFileEx=PROCEDURE,-
+PyRun_SimpleFileExFlags=PROCEDURE,-
+PyRun_SimpleString=PROCEDURE,-
+PyRun_SimpleStringFlags=PROCEDURE,-
+PyRun_String=PROCEDURE,-
+PyRun_StringFlags=PROCEDURE,-
+PySTEntry_Type=DATA,-
+PyST_GetScope=PROCEDURE,-
+PySeqIter_New=PROCEDURE,-
+PySeqIter_Type=DATA,-
+PySequence_Check=PROCEDURE,-
+PySequence_Concat=PROCEDURE,-
+PySequence_Contains=PROCEDURE,-
+PySequence_Count=PROCEDURE,-
+PySequence_DelItem=PROCEDURE,-
+PySequence_DelSlice=PROCEDURE,-
+PySequence_Fast=PROCEDURE,-
+PySequence_GetItem=PROCEDURE,-
+PySequence_GetSlice=PROCEDURE,-
+PySequence_In=PROCEDURE,-
+PySequence_InPlaceConcat=PROCEDURE,-
+PySequence_InPlaceRepeat=PROCEDURE,-
+PySequence_Index=PROCEDURE,-
+PySequence_Length=PROCEDURE,-
+PySequence_List=PROCEDURE,-
+PySequence_Repeat=PROCEDURE,-
+PySequence_SetItem=PROCEDURE,-
+PySequence_SetSlice=PROCEDURE,-
+PySequence_Size=PROCEDURE,-
+PySequence_Tuple=PROCEDURE,-
+PySetIter_Type=DATA,-
+PySet_Add=PROCEDURE,-
+PySet_Clear=PROCEDURE,-
+PySet_ClearFreeList=PROCEDURE,-
+PySet_Contains=PROCEDURE,-
+PySet_Discard=PROCEDURE,-
+PySet_Fini=PROCEDURE,-
+PySet_New=PROCEDURE,-
+PySet_Pop=PROCEDURE,-
+PySet_Size=PROCEDURE,-
+PySet_Type=DATA,-
+PySignal_SetWakeupFd=PROCEDURE,-
+PySlice_AdjustIndices=PROCEDURE,-
+PySlice_Fini=PROCEDURE,-
+PySlice_GetIndices=PROCEDURE,-
+PySlice_GetIndicesEx=PROCEDURE,-
+PySlice_New=PROCEDURE,-
+PySlice_Type=DATA,-
+PySlice_Unpack=PROCEDURE,-
+PyState_AddModule=PROCEDURE,-
+PyState_FindModule=PROCEDURE,-
+PyState_RemoveModule=PROCEDURE,-
+PyStaticMethod_New=PROCEDURE,-
+PyStaticMethod_Type=DATA,-
+PyStatus_Error=PROCEDURE,-
+PyStatus_Exception=PROCEDURE,-
+PyStatus_Exit=PROCEDURE,-
+PyStatus_IsError=PROCEDURE,-
+PyStatus_IsExit=PROCEDURE,-
+PyStatus_NoMemory=PROCEDURE,-
+PyStatus_Ok=PROCEDURE,-
+PyStdPrinter_Type=DATA,-
+PyStringIO_Type=DATA,-
+PyStructSequence_GetItem=PROCEDURE,-
+PyStructSequence_InitType2=PROCEDURE,-
+PyStructSequence_InitType=PROCEDURE,-
+PyStructSequence_New=PROCEDURE,-
+PyStructSequence_NewType=PROCEDURE,-
+PyStructSequence_SetItem=PROCEDURE,-
+PyStructSequence_UnnamedField=DATA,-
+PySuper_Type=DATA,-
+PySymtable_Build=PROCEDURE,-
+PySymtable_BuildObject=PROCEDURE,-
+PySymtable_Free=PROCEDURE,-
+PySymtable_Lookup=PROCEDURE,-
+PySys_AddAuditHook=PROCEDURE,-
+PySys_AddWarnOption=PROCEDURE,-
+PySys_AddWarnOptionUnicode=PROCEDURE,-
+PySys_AddXOption=PROCEDURE,-
+PySys_Audit=PROCEDURE,-
+PySys_FormatStderr=PROCEDURE,-
+PySys_FormatStdout=PROCEDURE,-
+PySys_GetObject=PROCEDURE,-
+PySys_GetXOptions=PROCEDURE,-
+PySys_HasWarnOptions=PROCEDURE,-
+PySys_ResetWarnOptions=PROCEDURE,-
+PySys_SetArgv=PROCEDURE,-
+PySys_SetArgvEx=PROCEDURE,-
+PySys_SetObject=PROCEDURE,-
+PySys_SetPath=PROCEDURE,-
+PySys_WriteStderr=PROCEDURE,-
+PySys_WriteStdout=PROCEDURE,-
+PyTextIOBase_Type=DATA,-
+PyTextIOWrapper_Type=DATA,-
+PyThreadState_Clear=PROCEDURE,-
+PyThreadState_Delete=PROCEDURE,-
+PyThreadState_DeleteCurrent=PROCEDURE,-
+PyThreadState_Get=PROCEDURE,-
+PyThreadState_GetDict=PROCEDURE,-
+PyThreadState_New=PROCEDURE,-
+PyThreadState_Next=PROCEDURE,-
+PyThreadState_SetAsyncExc=PROCEDURE,-
+PyThreadState_Swap=PROCEDURE,-
+PyThread_GetInfo=PROCEDURE,-
+PyThread_ReInitTLS=PROCEDURE,-
+PyThread_acquire_lock=PROCEDURE,-
+PyThread_acquire_lock_timed=PROCEDURE,-
+PyThread_allocate_lock=PROCEDURE,-
+PyThread_create_key=PROCEDURE,-
+PyThread_delete_key=PROCEDURE,-
+PyThread_delete_key_value=PROCEDURE,-
+PyThread_exit_thread=PROCEDURE,-
+PyThread_free_lock=PROCEDURE,-
+PyThread_get_key_value=PROCEDURE,-
+PyThread_get_stacksize=PROCEDURE,-
+PyThread_get_thread_ident=PROCEDURE,-
+PyThread_init_thread=PROCEDURE,-
+PyThread_release_lock=PROCEDURE,-
+PyThread_set_key_value=PROCEDURE,-
+PyThread_set_stacksize=PROCEDURE,-
+PyThread_start_new_thread=PROCEDURE,-
+PyThread_tss_alloc=PROCEDURE,-
+PyThread_tss_create=PROCEDURE,-
+PyThread_tss_delete=PROCEDURE,-
+PyThread_tss_free=PROCEDURE,-
+PyThread_tss_get=PROCEDURE,-
+PyThread_tss_is_created=PROCEDURE,-
+PyThread_tss_set=PROCEDURE,-
+PyToken_OneChar=PROCEDURE,-
+PyToken_ThreeChars=PROCEDURE,-
+PyToken_TwoChars=PROCEDURE,-
+PyTokenizer_FindEncodin0djd81n$=PROCEDURE,-
+PyTokenizer_FindEncoding=PROCEDURE,-
+PyTokenizer_Free=PROCEDURE,-
+PyTokenizer_FromFile=PROCEDURE,-
+PyTokenizer_FromString=PROCEDURE,-
+PyTokenizer_FromUTF8=PROCEDURE,-
+PyTokenizer_Get=PROCEDURE,-
+PyTraceBack_Here=PROCEDURE,-
+PyTraceBack_Print=PROCEDURE,-
+PyTraceBack_Type=DATA,-
+PyTraceMalloc_Track=PROCEDURE,-
+PyTraceMalloc_Untrack=PROCEDURE,-
+PyTupleIter_Type=DATA,-
+PyTuple_ClearFreeList=PROCEDURE,-
+PyTuple_Fini=PROCEDURE,-
+PyTuple_GetItem=PROCEDURE,-
+PyTuple_GetSlice=PROCEDURE,-
+PyTuple_New=PROCEDURE,-
+PyTuple_Pack=PROCEDURE,-
+PyTuple_SetItem=PROCEDURE,-
+PyTuple_Size=PROCEDURE,-
+PyTuple_Type=DATA,-
+PyType_ClearCache=PROCEDURE,-
+PyType_FromSpec=PROCEDURE,-
+PyType_FromSpecWithBases=PROCEDURE,-
+PyType_GenericAlloc=PROCEDURE,-
+PyType_GenericNew=PROCEDURE,-
+PyType_GetFlags=PROCEDURE,-
+PyType_GetSlot=PROCEDURE,-
+PyType_IsSubtype=PROCEDURE,-
+PyType_Modified=PROCEDURE,-
+PyType_Ready=PROCEDURE,-
+PyType_Type=DATA,-
+PyUnicodeDecodeError_Create=PROCEDURE,-
+PyUnicodeDecodeError_Ge28gplj2$=PROCEDURE,-
+PyUnicodeDecodeError_GetEnd=PROCEDURE,-
+PyUnicodeDecodeError_GetObject=PROCEDURE,-
+PyUnicodeDecodeError_GetReason=PROCEDURE,-
+PyUnicodeDecodeError_GetStart=PROCEDURE,-
+PyUnicodeDecodeError_SetEnd=PROCEDURE,-
+PyUnicodeDecodeError_SetReason=PROCEDURE,-
+PyUnicodeDecodeError_SetStart=PROCEDURE,-
+PyUnicodeEncodeError_Create=PROCEDURE,-
+PyUnicodeEncodeError_Ge2549dvm$=PROCEDURE,-
+PyUnicodeEncodeError_GetEnd=PROCEDURE,-
+PyUnicodeEncodeError_GetObject=PROCEDURE,-
+PyUnicodeEncodeError_GetReason=PROCEDURE,-
+PyUnicodeEncodeError_GetStart=PROCEDURE,-
+PyUnicodeEncodeError_SetEnd=PROCEDURE,-
+PyUnicodeEncodeError_SetReason=PROCEDURE,-
+PyUnicodeEncodeError_SetStart=PROCEDURE,-
+PyUnicodeIter_Type=DATA,-
+PyUnicodeTranslateError06c68o2$=PROCEDURE,-
+PyUnicodeTranslateError0po7mq2$=PROCEDURE,-
+PyUnicodeTranslateError1nfk4sv$=PROCEDURE,-
+PyUnicodeTranslateError35n5p4j$=PROCEDURE,-
+PyUnicodeTranslateError3uuuc3v$=PROCEDURE,-
+PyUnicodeTranslateError_Create=PROCEDURE,-
+PyUnicodeTranslateError_GetEnd=PROCEDURE,-
+PyUnicodeTranslateError_SetEnd=PROCEDURE,-
+PyUnicode_Append=PROCEDURE,-
+PyUnicode_AppendAndDel=PROCEDURE,-
+PyUnicode_AsASCIIString=PROCEDURE,-
+PyUnicode_AsCharmapString=PROCEDURE,-
+PyUnicode_AsDecodedObject=PROCEDURE,-
+PyUnicode_AsDecodedUnicode=PROCEDURE,-
+PyUnicode_AsEncodedObject=PROCEDURE,-
+PyUnicode_AsEncodedString=PROCEDURE,-
+PyUnicode_AsEncodedUnicode=PROCEDURE,-
+PyUnicode_AsLatin1String=PROCEDURE,-
+PyUnicode_AsRawUnicodeE1pq4v4k$=PROCEDURE,-
+PyUnicode_AsUCS4=PROCEDURE,-
+PyUnicode_AsUCS4Copy=PROCEDURE,-
+PyUnicode_AsUTF16String=PROCEDURE,-
+PyUnicode_AsUTF32String=PROCEDURE,-
+PyUnicode_AsUTF8=PROCEDURE,-
+PyUnicode_AsUTF8AndSize=PROCEDURE,-
+PyUnicode_AsUTF8String=PROCEDURE,-
+PyUnicode_AsUnicode=PROCEDURE,-
+PyUnicode_AsUnicodeAndSize=PROCEDURE,-
+PyUnicode_AsUnicodeCopy=PROCEDURE,-
+PyUnicode_AsUnicodeEscapeString=PROCEDURE,-
+PyUnicode_AsWideChar=PROCEDURE,-
+PyUnicode_AsWideCharString=PROCEDURE,-
+PyUnicode_BuildEncodingMap=PROCEDURE,-
+PyUnicode_ClearFreeList=PROCEDURE,-
+PyUnicode_Compare=PROCEDURE,-
+PyUnicode_CompareWithAS1mu930c$=PROCEDURE,-
+PyUnicode_Concat=PROCEDURE,-
+PyUnicode_Contains=PROCEDURE,-
+PyUnicode_CopyCharacters=PROCEDURE,-
+PyUnicode_Count=PROCEDURE-
+)
+!
+SYMBOL_VECTOR = ( -
+PyUnicode_Decode=PROCEDURE,-
+PyUnicode_DecodeASCII=PROCEDURE,-
+PyUnicode_DecodeCharmap=PROCEDURE,-
+PyUnicode_DecodeFSDefau2kjh4hh$=PROCEDURE,-
+PyUnicode_DecodeFSDefault=PROCEDURE,-
+PyUnicode_DecodeLatin1=PROCEDURE,-
+PyUnicode_DecodeLocale=PROCEDURE,-
+PyUnicode_DecodeLocaleAndSize=PROCEDURE,-
+PyUnicode_DecodeRawUnic1u0dtd9$=PROCEDURE,-
+PyUnicode_DecodeUTF16=PROCEDURE,-
+PyUnicode_DecodeUTF16Stateful=PROCEDURE,-
+PyUnicode_DecodeUTF32=PROCEDURE,-
+PyUnicode_DecodeUTF32Stateful=PROCEDURE,-
+PyUnicode_DecodeUTF7=PROCEDURE,-
+PyUnicode_DecodeUTF7Stateful=PROCEDURE,-
+PyUnicode_DecodeUTF8=PROCEDURE,-
+PyUnicode_DecodeUTF8Stateful=PROCEDURE,-
+PyUnicode_DecodeUnicodeEscape=PROCEDURE,-
+PyUnicode_Encode=PROCEDURE,-
+PyUnicode_EncodeASCII=PROCEDURE,-
+PyUnicode_EncodeCharmap=PROCEDURE,-
+PyUnicode_EncodeDecimal=PROCEDURE,-
+PyUnicode_EncodeFSDefault=PROCEDURE,-
+PyUnicode_EncodeLatin1=PROCEDURE,-
+PyUnicode_EncodeLocale=PROCEDURE,-
+PyUnicode_EncodeRawUnic0qs46ns$=PROCEDURE,-
+PyUnicode_EncodeUTF16=PROCEDURE,-
+PyUnicode_EncodeUTF32=PROCEDURE,-
+PyUnicode_EncodeUTF7=PROCEDURE,-
+PyUnicode_EncodeUTF8=PROCEDURE,-
+PyUnicode_EncodeUnicodeEscape=PROCEDURE,-
+PyUnicode_FSConverter=PROCEDURE,-
+PyUnicode_FSDecoder=PROCEDURE,-
+PyUnicode_Fill=PROCEDURE,-
+PyUnicode_Find=PROCEDURE,-
+PyUnicode_FindChar=PROCEDURE,-
+PyUnicode_Format=PROCEDURE,-
+PyUnicode_FromEncodedObject=PROCEDURE,-
+PyUnicode_FromFormat=PROCEDURE,-
+PyUnicode_FromFormatV=PROCEDURE,-
+PyUnicode_FromKindAndData=PROCEDURE,-
+PyUnicode_FromObject=PROCEDURE,-
+PyUnicode_FromOrdinal=PROCEDURE,-
+PyUnicode_FromString=PROCEDURE,-
+PyUnicode_FromStringAndSize=PROCEDURE,-
+PyUnicode_FromUnicode=PROCEDURE,-
+PyUnicode_FromWideChar=PROCEDURE,-
+PyUnicode_GetDefaultEncoding=PROCEDURE,-
+PyUnicode_GetLength=PROCEDURE,-
+PyUnicode_GetMax=PROCEDURE,-
+PyUnicode_GetSize=PROCEDURE,-
+PyUnicode_InternFromString=PROCEDURE,-
+PyUnicode_InternImmortal=PROCEDURE,-
+PyUnicode_InternInPlace=PROCEDURE,-
+PyUnicode_IsIdentifier=PROCEDURE,-
+PyUnicode_Join=PROCEDURE,-
+PyUnicode_New=PROCEDURE,-
+PyUnicode_Partition=PROCEDURE,-
+PyUnicode_RPartition=PROCEDURE,-
+PyUnicode_RSplit=PROCEDURE,-
+PyUnicode_ReadChar=PROCEDURE,-
+PyUnicode_Replace=PROCEDURE,-
+PyUnicode_Resize=PROCEDURE,-
+PyUnicode_RichCompare=PROCEDURE,-
+PyUnicode_Split=PROCEDURE,-
+PyUnicode_Splitlines=PROCEDURE,-
+PyUnicode_Substring=PROCEDURE,-
+PyUnicode_Tailmatch=PROCEDURE,-
+PyUnicode_TransformDeci2bfsl6e$=PROCEDURE,-
+PyUnicode_Translate=PROCEDURE,-
+PyUnicode_TranslateCharmap=PROCEDURE,-
+PyUnicode_Type=DATA,-
+PyUnicode_WriteChar=PROCEDURE,-
+PyVectorcall_Call=PROCEDURE,-
+PyWeakref_GetObject=PROCEDURE,-
+PyWeakref_NewProxy=PROCEDURE,-
+PyWeakref_NewRef=PROCEDURE,-
+PyWideStringList_Append=PROCEDURE,-
+PyWideStringList_Insert=PROCEDURE,-
+PyWrapperDescr_Type=DATA,-
+PyWrapper_New=PROCEDURE,-
+PyZip_Type=DATA,-
+Py_AddPendingCall=PROCEDURE,-
+Py_AtExit=PROCEDURE,-
+Py_BuildValue=PROCEDURE,-
+Py_BytesMain=PROCEDURE,-
+Py_BytesWarningFlag=DATA,-
+Py_CompileString=PROCEDURE,-
+Py_CompileStringExFlags=PROCEDURE,-
+Py_CompileStringFlags=PROCEDURE,-
+Py_CompileStringObject=PROCEDURE,-
+Py_DebugFlag=DATA,-
+Py_DecRef=PROCEDURE,-
+Py_DecodeLocale=PROCEDURE,-
+Py_DontWriteBytecodeFlag=DATA,-
+Py_EncodeLocale=PROCEDURE,-
+Py_EndInterpreter=PROCEDURE,-
+Py_Exit=PROCEDURE,-
+Py_ExitStatusException=PROCEDURE,-
+Py_FatalError=PROCEDURE,-
+Py_FdIsInteractive=PROCEDURE,-
+Py_FileSystemDefaultEnc3q1c87n$=DATA,-
+Py_FileSystemDefaultEncoding=DATA,-
+Py_Finalize=PROCEDURE,-
+Py_FinalizeEx=PROCEDURE,-
+Py_FrozenFlag=DATA,-
+Py_FrozenMain=PROCEDURE,-
+Py_GetArgcArgv=PROCEDURE,-
+Py_GetBuildInfo=PROCEDURE,-
+Py_GetCompiler=PROCEDURE,-
+Py_GetCopyright=PROCEDURE,-
+Py_GetExecPrefix=PROCEDURE,-
+Py_GetPath=PROCEDURE,-
+Py_GetPlatform=PROCEDURE,-
+Py_GetPrefix=PROCEDURE,-
+Py_GetProgramFullPath=PROCEDURE,-
+Py_GetProgramName=PROCEDURE,-
+Py_GetPythonHome=PROCEDURE,-
+Py_GetRecursionLimit=PROCEDURE,-
+Py_GetVersion=PROCEDURE,-
+Py_HasFileSystemDefaultEncoding=DATA,-
+Py_HashRandomizationFlag=DATA,-
+Py_IgnoreEnvironmentFlag=DATA,-
+Py_IncRef=PROCEDURE,-
+Py_Initialize=PROCEDURE,-
+Py_InitializeEx=PROCEDURE,-
+Py_InitializeFromConfig=PROCEDURE,-
+Py_InspectFlag=DATA,-
+Py_InteractiveFlag=DATA,-
+Py_IsInitialized=PROCEDURE,-
+Py_IsolatedFlag=DATA,-
+Py_Main=PROCEDURE,-
+Py_MakePendingCalls=PROCEDURE,-
+Py_NewInterpreter=PROCEDURE,-
+Py_NoSiteFlag=DATA,-
+Py_NoUserSiteDirectory=DATA,-
+Py_OptimizeFlag=DATA,-
+Py_PreInitialize=PROCEDURE,-
+Py_PreInitializeFromArgs=PROCEDURE,-
+Py_PreInitializeFromBytesArgs=PROCEDURE,-
+Py_QuietFlag=DATA,-
+Py_ReprEnter=PROCEDURE,-
+Py_ReprLeave=PROCEDURE,-
+Py_RunMain=PROCEDURE,-
+Py_SetPath=PROCEDURE,-
+Py_SetProgramName=PROCEDURE,-
+Py_SetPythonHome=PROCEDURE,-
+Py_SetRecursionLimit=PROCEDURE,-
+Py_SetStandardStreamEncoding=PROCEDURE,-
+Py_SymtableString=PROCEDURE,-
+Py_SymtableStringObject=PROCEDURE,-
+Py_UNICODE_strcat=PROCEDURE,-
+Py_UNICODE_strchr=PROCEDURE,-
+Py_UNICODE_strcmp=PROCEDURE,-
+Py_UNICODE_strcpy=PROCEDURE,-
+Py_UNICODE_strlen=PROCEDURE,-
+Py_UNICODE_strncmp=PROCEDURE,-
+Py_UNICODE_strncpy=PROCEDURE,-
+Py_UNICODE_strrchr=PROCEDURE,-
+Py_UTF8Mode=DATA,-
+Py_UnbufferedStdioFlag=DATA,-
+Py_UniversalNewlineFgets=PROCEDURE,-
+Py_VaBuildValue=PROCEDURE,-
+Py_VerboseFlag=DATA,-
+Py_hexdigits=DATA,-
+_PyAST_ExprAsUnicode=PROCEDURE,-
+_PyAST_GetDocString=PROCEDURE,-
+_PyAST_Optimize=PROCEDURE,-
+_PyAccu_Accumulate=PROCEDURE,-
+_PyAccu_Destroy=PROCEDURE,-
+_PyAccu_Finish=PROCEDURE,-
+_PyAccu_FinishAsList=PROCEDURE,-
+_PyAccu_Init=PROCEDURE,-
+_PyArg_BadArgument=PROCEDURE,-
+_PyArg_CheckPositional=PROCEDURE,-
+_PyArg_Fini=PROCEDURE,-
+_PyArg_NoKeywords=PROCEDURE,-
+_PyArg_NoPositional=PROCEDURE,-
+_PyArg_ParseStack=PROCEDURE,-
+_PyArg_ParseStackAndKey1r5kfa7$=PROCEDURE,-
+_PyArg_ParseStackAndKeywords=PROCEDURE,-
+_PyArg_ParseStack_SizeT=PROCEDURE,-
+_PyArg_ParseTupleAndKey19kl55t$=PROCEDURE,-
+_PyArg_ParseTupleAndKey3hjidue$=PROCEDURE,-
+_PyArg_ParseTupleAndKey3rsn4lp$=PROCEDURE,-
+_PyArg_ParseTuple_SizeT=PROCEDURE,-
+_PyArg_Parse_SizeT=PROCEDURE,-
+_PyArg_UnpackKeywords=PROCEDURE,-
+_PyArg_UnpackStack=PROCEDURE,-
+_PyArg_VaParseTupleAndK1bu9bqh$=PROCEDURE,-
+_PyArg_VaParseTupleAndK1dkfbe3$=PROCEDURE,-
+_PyArg_VaParseTupleAndK3me8rbm$=PROCEDURE,-
+_PyArg_VaParse_SizeT=PROCEDURE,-
+_PyArgv_AsWstrList=PROCEDURE,-
+_PyAsyncGenASend_Type=DATA,-
+_PyAsyncGenAThrow_Type=DATA,-
+_PyAsyncGenValueWrapperNew=PROCEDURE,-
+_PyAsyncGenWrappedValue_Type=DATA,-
+_PyBuiltin_Init=PROCEDURE,-
+_PyBuiltins_AddExceptions=PROCEDURE,-
+_PyByteArray_empty_string=DATA,-
+_PyBytesIOBuffer_Type=DATA,-
+_PyBytesWriter_Alloc=PROCEDURE,-
+_PyBytesWriter_Dealloc=PROCEDURE,-
+_PyBytesWriter_Finish=PROCEDURE,-
+_PyBytesWriter_Init=PROCEDURE,-
+_PyBytesWriter_Prepare=PROCEDURE,-
+_PyBytesWriter_Resize=PROCEDURE,-
+_PyBytesWriter_WriteBytes=PROCEDURE,-
+_PyBytes_DecodeEscape=PROCEDURE,-
+_PyBytes_FormatEx=PROCEDURE,-
+_PyBytes_FromHex=PROCEDURE,-
+_PyBytes_Join=PROCEDURE,-
+_PyBytes_Resize=PROCEDURE,-
+_PyCFunction_DebugMallocStats=PROCEDURE,-
+_PyCFunction_FastCallDict=PROCEDURE,-
+_PyCode_CheckLineNumber=PROCEDURE,-
+_PyCode_ConstantKey=PROCEDURE,-
+_PyCode_GetExtra=PROCEDURE,-
+_PyCode_InitOpcache=PROCEDURE,-
+_PyCode_SetExtra=PROCEDURE,-
+_PyCodecInfo_GetIncreme06rkpfs$=PROCEDURE,-
+_PyCodecInfo_GetIncreme30gl7kb$=PROCEDURE,-
+_PyCodec_DecodeText=PROCEDURE,-
+_PyCodec_EncodeText=PROCEDURE,-
+_PyCodec_Forget=PROCEDURE,-
+_PyCodec_Lookup=PROCEDURE,-
+_PyCodec_LookupTextEncoding=PROCEDURE,-
+_PyComplex_FormatAdvancedWriter=PROCEDURE,-
+_PyConfig_Copy=PROCEDURE,-
+_PyConfig_InitCompatConfig=PROCEDURE,-
+_PyConfig_InitPathConfig=PROCEDURE,-
+_PyConfig_SetPyArgv=PROCEDURE,-
+_PyConfig_Write=PROCEDURE,-
+_PyConfig_WritePathConfig=PROCEDURE,-
+_PyContext_Fini=PROCEDURE,-
+_PyContext_Init=PROCEDURE,-
+_PyContext_NewHamtForTests=PROCEDURE,-
+_PyCoroWrapper_Type=DATA,-
+_PyCoro_GetAwaitableIter=PROCEDURE,-
+_PyCrossInterpreterData0etrgar$=PROCEDURE,-
+_PyCrossInterpreterData0ipttne$=PROCEDURE,-
+_PyCrossInterpreterData_Lookup=PROCEDURE,-
+_PyCrossInterpreterData_Release=PROCEDURE,-
+_PyDebugAllocatorStats=PROCEDURE,-
+_PyDictKeys_DecRef=PROCEDURE,-
+_PyDictView_Intersect=PROCEDURE,-
+_PyDictView_New=PROCEDURE,-
+_PyDict_CheckConsistency=PROCEDURE,-
+_PyDict_Contains=PROCEDURE,-
+_PyDict_DebugMallocStats=PROCEDURE,-
+_PyDict_DelItemId=PROCEDURE,-
+_PyDict_DelItemIf=PROCEDURE,-
+_PyDict_DelItem_KnownHash=PROCEDURE,-
+_PyDict_FromKeys=PROCEDURE,-
+_PyDict_GetItemId=PROCEDURE,-
+_PyDict_GetItemIdWithError=PROCEDURE,-
+_PyDict_GetItemStringWithError=PROCEDURE,-
+_PyDict_GetItem_KnownHash=PROCEDURE,-
+_PyDict_HasOnlyStringKeys=PROCEDURE,-
+_PyDict_KeysSize=PROCEDURE,-
+_PyDict_LoadGlobal=PROCEDURE,-
+_PyDict_MaybeUntrack=PROCEDURE,-
+_PyDict_MergeEx=PROCEDURE,-
+_PyDict_NewKeysForClass=PROCEDURE,-
+_PyDict_NewPresized=PROCEDURE,-
+_PyDict_Next=PROCEDURE,-
+_PyDict_Pop=PROCEDURE,-
+_PyDict_Pop_KnownHash=PROCEDURE,-
+_PyDict_SetItemId=PROCEDURE,-
+_PyDict_SetItem_KnownHash=PROCEDURE,-
+_PyDict_SizeOf=PROCEDURE,-
+_PyErr_BadInternalCall=PROCEDURE,-
+_PyErr_ChainExceptions=PROCEDURE,-
+_PyErr_CheckSignals=PROCEDURE,-
+_PyErr_Clear=PROCEDURE,-
+_PyErr_Display=PROCEDURE,-
+_PyErr_ExceptionMatches=PROCEDURE,-
+_PyErr_Fetch=PROCEDURE,-
+_PyErr_Format=PROCEDURE,-
+_PyErr_FormatFromCause=PROCEDURE,-
+_PyErr_GetTopmostException=PROCEDURE,-
+_PyErr_Init=PROCEDURE,-
+_PyErr_NormalizeException=PROCEDURE,-
+_PyErr_Print=PROCEDURE,-
+_PyErr_Restore=PROCEDURE,-
+_PyErr_SetKeyError=PROCEDURE,-
+_PyErr_SetNone=PROCEDURE,-
+_PyErr_SetObject=PROCEDURE,-
+_PyErr_SetString=PROCEDURE,-
+_PyErr_TrySetFromCause=PROCEDURE,-
+_PyErr_WarnUnawaitedCoroutine=PROCEDURE,-
+_PyErr_WriteUnraisableD0gkavvc$=PROCEDURE,-
+_PyErr_WriteUnraisableMsg=PROCEDURE,-
+_PyEval_AddPendingCall=PROCEDURE,-
+_PyEval_CallTracing=PROCEDURE,-
+_PyEval_EvalCodeWithName=PROCEDURE,-
+_PyEval_EvalFrameDefault=PROCEDURE,-
+_PyEval_Fini=PROCEDURE,-
+_PyEval_FiniThreads=PROCEDURE,-
+_PyEval_GetAsyncGenFinalizer=PROCEDURE,-
+_PyEval_GetAsyncGenFirstiter=PROCEDURE,-
+_PyEval_GetBuiltinId=PROCEDURE,-
+_PyEval_GetCoroutineOri166ulm8$=PROCEDURE,-
+_PyEval_GetSwitchInterval=PROCEDURE,-
+_PyEval_Initialize=PROCEDURE,-
+_PyEval_ReInitThreads=PROCEDURE,-
+_PyEval_RequestCodeExtraIndex=PROCEDURE,-
+_PyEval_SetAsyncGenFinalizer=PROCEDURE,-
+_PyEval_SetAsyncGenFirstiter=PROCEDURE,-
+_PyEval_SetCoroutineOri2cosu4s$=PROCEDURE,-
+_PyEval_SetSwitchInterval=PROCEDURE,-
+_PyEval_SignalAsyncExc=PROCEDURE,-
+_PyEval_SignalReceived=PROCEDURE,-
+_PyEval_SliceIndex=PROCEDURE,-
+_PyEval_SliceIndexNotNone=PROCEDURE,-
+_PyExc_Fini=PROCEDURE,-
+_PyExc_Init=PROCEDURE,-
+_PyFaulthandler_Fini=PROCEDURE,-
+_PyFaulthandler_Init=PROCEDURE,-
+_PyFileIO_closed=PROCEDURE,-
+_PyFloat_DebugMallocStats=PROCEDURE,-
+_PyFloat_FormatAdvancedWriter=PROCEDURE,-
+_PyFloat_Init=PROCEDURE,-
+_PyFloat_Pack2=PROCEDURE,-
+_PyFloat_Pack4=PROCEDURE,-
+_PyFloat_Pack8=PROCEDURE,-
+_PyFloat_Unpack2=PROCEDURE,-
+_PyFloat_Unpack4=PROCEDURE,-
+_PyFloat_Unpack8=PROCEDURE,-
+_PyFrame_DebugMallocStats=PROCEDURE,-
+_PyFrame_New_NoTrack=PROCEDURE,-
+_PyFunction_FastCallDict=PROCEDURE,-
+_PyFunction_Vectorcall=PROCEDURE,-
+_PyGC_CollectIfEnabled=PROCEDURE,-
+_PyGC_CollectNoFail=PROCEDURE,-
+_PyGC_Dump=PROCEDURE,-
+_PyGC_DumpShutdownStats=PROCEDURE,-
+_PyGC_Fini=PROCEDURE,-
+_PyGC_Initialize=PROCEDURE,-
+_PyGILState_Fini=PROCEDURE,-
+_PyGILState_GetInterpre09it46k$=PROCEDURE,-
+_PyGILState_Init=PROCEDURE,-
+_PyGILState_Reinit=PROCEDURE,-
+_PyGen_FetchStopIterationValue=PROCEDURE,-
+_PyGen_Finalize=PROCEDURE,-
+_PyGen_Send=PROCEDURE,-
+_PyGen_SetStopIterationValue=PROCEDURE,-
+_PyGen_yf=PROCEDURE,-
+_PyHamtItems_Type=DATA,-
+_PyHamtKeys_Type=DATA,-
+_PyHamtValues_Type=DATA,-
+_PyHamt_ArrayNode_Type=DATA,-
+_PyHamt_Assoc=PROCEDURE,-
+_PyHamt_BitmapNode_Type=DATA,-
+_PyHamt_CollisionNode_Type=DATA,-
+_PyHamt_Eq=PROCEDURE,-
+_PyHamt_Find=PROCEDURE,-
+_PyHamt_Fini=PROCEDURE,-
+_PyHamt_Init=PROCEDURE,-
+_PyHamt_Len=PROCEDURE,-
+_PyHamt_New=PROCEDURE,-
+_PyHamt_NewIterItems=PROCEDURE,-
+_PyHamt_NewIterKeys=PROCEDURE,-
+_PyHamt_NewIterValues=PROCEDURE,-
+_PyHamt_Type=DATA,-
+_PyHamt_Without=PROCEDURE,-
+_PyHash_Fini=PROCEDURE,-
+_PyIOBase_check_closed=PROCEDURE,-
+_PyIOBase_check_readable=PROCEDURE,-
+_PyIOBase_check_seekable=PROCEDURE,-
+_PyIOBase_check_writable=PROCEDURE,-
+_PyIOBase_finalize=PROCEDURE,-
+_PyIO_Module=DATA,-
+_PyIO_empty_bytes=DATA,-
+_PyIO_empty_str=DATA,-
+_PyIO_find_line_ending=PROCEDURE,-
+_PyIO_get_locale_module=PROCEDURE,-
+_PyIO_get_module_state=PROCEDURE,-
+_PyIO_str_close=DATA,-
+_PyIO_str_closed=DATA,-
+_PyIO_str_decode=DATA,-
+_PyIO_str_encode=DATA,-
+_PyIO_str_fileno=DATA,-
+_PyIO_str_flush=DATA,-
+_PyIO_str_getstate=DATA,-
+_PyIO_str_isatty=DATA,-
+_PyIO_str_newlines=DATA,-
+_PyIO_str_nl=DATA,-
+_PyIO_str_peek=DATA,-
+_PyIO_str_read1=DATA,-
+_PyIO_str_read=DATA,-
+_PyIO_str_readable=DATA,-
+_PyIO_str_readall=DATA,-
+_PyIO_str_readinto=DATA,-
+_PyIO_str_readline=DATA,-
+_PyIO_str_reset=DATA,-
+_PyIO_str_seek=DATA,-
+_PyIO_str_seekable=DATA,-
+_PyIO_str_setstate=DATA,-
+_PyIO_str_tell=DATA,-
+_PyIO_str_truncate=DATA,-
+_PyIO_str_writable=DATA,-
+_PyIO_str_write=DATA,-
+_PyIO_trap_eintr=PROCEDURE,-
+_PyImportHooks_Init=PROCEDURE,-
+_PyImportZip_Init=PROCEDURE,-
+_PyImport_AcquireLock=PROCEDURE,-
+_PyImport_AddModuleObject=PROCEDURE,-
+_PyImport_DynLoadFiletab=DATA,-
+_PyImport_FindBuiltin=PROCEDURE,-
+_PyImport_FindExtensionObject=PROCEDURE,-
+_PyImport_FindExtensionObjectEx=PROCEDURE,-
+_PyImport_FindSharedFuncptr=PROCEDURE,-
+_PyImport_Fini2=PROCEDURE,-
+_PyImport_Fini=PROCEDURE,-
+_PyImport_FixupBuiltin=PROCEDURE,-
+_PyImport_FixupExtensionObject=PROCEDURE,-
+_PyImport_GetModuleId=PROCEDURE,-
+_PyImport_Init=PROCEDURE,-
+_PyImport_Inittab=DATA,-
+_PyImport_IsInitialized=PROCEDURE,-
+_PyImport_LoadDynamicMo1v767fh$=PROCEDURE,-
+_PyImport_ReInitLock=PROCEDURE,-
+_PyImport_ReleaseLock=PROCEDURE,-
+_PyImport_SetModule=PROCEDURE,-
+_PyImport_SetModuleString=PROCEDURE,-
+_PyIncrementalNewlineDe3ke4gfc$=PROCEDURE,-
+_PyInterpreterID_LookUp=PROCEDURE,-
+_PyInterpreterID_New=PROCEDURE,-
+_PyInterpreterID_Type=DATA,-
+_PyInterpreterState_Del0mj6vhm$=PROCEDURE,-
+_PyInterpreterState_Enable=PROCEDURE,-
+_PyInterpreterState_Get0lrqb7p$=PROCEDURE,-
+_PyInterpreterState_Get=PROCEDURE,-
+_PyInterpreterState_GetIDObject=PROCEDURE,-
+_PyInterpreterState_IDDecref=PROCEDURE,-
+_PyInterpreterState_IDIncref=PROCEDURE,-
+_PyInterpreterState_IDInitref=PROCEDURE,-
+_PyInterpreterState_LookUpID=PROCEDURE,-
+_PyInterpreterState_Req0tb95rd$=PROCEDURE,-
+_PyInterpreterState_Req2qu49fg$=PROCEDURE,-
+_PyList_DebugMallocStats=PROCEDURE,-
+_PyList_Extend=PROCEDURE,-
+_PyLong_AsByteArray=PROCEDURE,-
+_PyLong_AsInt=PROCEDURE,-
+_PyLong_AsTime_t=PROCEDURE,-
+_PyLong_Copy=PROCEDURE,-
+_PyLong_DigitValue=DATA,-
+_PyLong_DivmodNear=PROCEDURE,-
+_PyLong_Format=PROCEDURE,-
+_PyLong_FormatAdvancedWriter=PROCEDURE,-
+_PyLong_FormatBytesWriter=PROCEDURE,-
+_PyLong_FormatWriter=PROCEDURE,-
+_PyLong_Frexp=PROCEDURE,-
+_PyLong_FromByteArray=PROCEDURE,-
+_PyLong_FromBytes=PROCEDURE,-
+_PyLong_FromGid=PROCEDURE,-
+_PyLong_FromNbIndexOrNbInt=PROCEDURE,-
+_PyLong_FromNbInt=PROCEDURE,-
+_PyLong_FromTime_t=PROCEDURE,-
+_PyLong_FromUid=PROCEDURE,-
+_PyLong_GCD=PROCEDURE,-
+_PyLong_Init=PROCEDURE,-
+_PyLong_Lshift=PROCEDURE,-
+_PyLong_New=PROCEDURE,-
+_PyLong_NumBits=PROCEDURE,-
+_PyLong_One=DATA,-
+_PyLong_Rshift=PROCEDURE,-
+_PyLong_Sign=PROCEDURE,-
+_PyLong_Size_t_Converter=PROCEDURE,-
+_PyLong_UnsignedInt_Converter=PROCEDURE,-
+_PyLong_UnsignedLongLon0ntrsub$=PROCEDURE,-
+_PyLong_UnsignedLong_Converter=PROCEDURE,-
+_PyLong_UnsignedShort_Converter=PROCEDURE,-
+_PyLong_Zero=DATA,-
+_PyManagedBuffer_Type=DATA,-
+_PyMem_DumpTraceback=PROCEDURE,-
+_PyMem_GetAllocatorName=PROCEDURE,-
+_PyMem_GetCurrentAllocatorName=PROCEDURE,-
+_PyMem_RawStrdup=PROCEDURE,-
+_PyMem_RawWcsdup=PROCEDURE,-
+_PyMem_SetDefaultAllocator=PROCEDURE,-
+_PyMem_SetupAllocators=PROCEDURE,-
+_PyMem_Strdup=PROCEDURE,-
+_PyMethodDef_RawFastCal31habv6$=PROCEDURE,-
+_PyMethodDef_RawFastCallDict=PROCEDURE,-
+_PyMethodWrapper_Type=DATA,-
+_PyMethod_DebugMallocStats=PROCEDURE,-
+_PyModuleSpec_IsInitializing=PROCEDURE,-
+_PyModule_Clear=PROCEDURE,-
+_PyModule_ClearDict=PROCEDURE,-
+_PyModule_CreateInitialized=PROCEDURE,-
+_PyNamespace_New=PROCEDURE,-
+_PyNamespace_Type=DATA,-
+_PyNode_FinalizeEndPos=PROCEDURE,-
+_PyNode_SizeOf=PROCEDURE,-
+_PyNone_Type=DATA,-
+_PyNotImplemented_Type=DATA,-
+_PyOS_GetOpt=PROCEDURE,-
+_PyOS_IsMainThread=PROCEDURE,-
+_PyOS_ReadlineTState=DATA,-
+_PyOS_ResetGetOpt=PROCEDURE,-
+_PyOS_URandom=PROCEDURE,-
+_PyOS_URandomNonblock=PROCEDURE,-
+_PyOS_mystrnicmp_hack=DATA,-
+_PyOS_optarg=DATA,-
+_PyOS_opterr=DATA,-
+_PyOS_optind=DATA,-
+_PyObjectDict_SetItem=PROCEDURE,-
+_PyObject_AssertFailed=PROCEDURE,-
+_PyObject_CallFunction_SizeT=PROCEDURE,-
+_PyObject_CallMethodId=PROCEDURE,-
+_PyObject_CallMethodIdObjArgs=PROCEDURE,-
+_PyObject_CallMethodId_SizeT=PROCEDURE,-
+_PyObject_CallMethod_SizeT=PROCEDURE,-
+_PyObject_Call_Prepend=PROCEDURE,-
+_PyObject_CheckConsistency=PROCEDURE,-
+_PyObject_CheckCrossInt10cv01b$=PROCEDURE,-
+_PyObject_DebugMallocStats=PROCEDURE,-
+_PyObject_DebugTypeStats=PROCEDURE,-
+_PyObject_Dump=PROCEDURE,-
+_PyObject_FastCallDict=PROCEDURE,-
+_PyObject_FastCall_Prepend=PROCEDURE,-
+_PyObject_GC_Calloc=PROCEDURE,-
+_PyObject_GC_Malloc=PROCEDURE,-
+_PyObject_GC_New=PROCEDURE,-
+_PyObject_GC_NewVar=PROCEDURE,-
+_PyObject_GC_Resize=PROCEDURE,-
+_PyObject_GenericGetAtt3rvp6ap$=PROCEDURE,-
+_PyObject_GenericSetAtt0su4orl$=PROCEDURE,-
+_PyObject_GetAttrId=PROCEDURE,-
+_PyObject_GetCrossInter120g118$=PROCEDURE,-
+_PyObject_GetDictPtr=PROCEDURE,-
+_PyObject_GetMethod=PROCEDURE,-
+_PyObject_HasAttrId=PROCEDURE,-
+_PyObject_HasLen=PROCEDURE,-
+_PyObject_IsAbstract=PROCEDURE,-
+_PyObject_IsFreed=PROCEDURE,-
+_PyObject_LookupAttr=PROCEDURE,-
+_PyObject_LookupAttrId=PROCEDURE,-
+_PyObject_LookupSpecial=PROCEDURE,-
+_PyObject_MakeTpCall=PROCEDURE,-
+_PyObject_New=PROCEDURE,-
+_PyObject_NewVar=PROCEDURE,-
+_PyObject_NextNotImplemented=PROCEDURE,-
+_PyObject_RealIsInstance=PROCEDURE,-
+_PyObject_RealIsSubclass=PROCEDURE,-
+_PyObject_SetAttrId=PROCEDURE,-
+_PyParser_Grammar=DATA,-
+_PyParser_TokenNames=DATA,-
+_PyPathConfig_Calculate=PROCEDURE,-
+_PyPathConfig_ClearGlobal=PROCEDURE,-
+_PyPathConfig_ComputeSysPath0=PROCEDURE,-
+_PyPreCmdline_Clear=PROCEDURE,-
+_PyPreCmdline_Read=PROCEDURE,-
+_PyPreCmdline_SetArgv=PROCEDURE,-
+_PyPreCmdline_SetConfig=PROCEDURE,-
+_PyPreConfig_AsDict=PROCEDURE,-
+_PyPreConfig_GetConfig=PROCEDURE,-
+_PyPreConfig_InitCompatConfig=PROCEDURE,-
+_PyPreConfig_InitFromConfig=PROCEDURE,-
+_PyPreConfig_InitFromPreConfig=PROCEDURE,-
+_PyPreConfig_Read=PROCEDURE,-
+_PyPreConfig_Write=PROCEDURE,-
+_PyRuntime=DATA,-
+_PyRuntimeState_Fini=PROCEDURE,-
+_PyRuntimeState_Init=PROCEDURE,-
+_PyRuntimeState_ReInitThreads=PROCEDURE,-
+_PyRuntime_Finalize=PROCEDURE,-
+_PyRuntime_Initialize=PROCEDURE,-
+_PySequence_BytesToCharpArray=PROCEDURE,-
+_PySequence_IterSearch=PROCEDURE,-
+_PySet_Dummy=DATA,-
+_PySet_NextEntry=PROCEDURE,-
+_PySet_Update=PROCEDURE,-
+_PySignal_AfterFork=PROCEDURE,-
+_PySlice_FromIndices=PROCEDURE,-
+_PySlice_GetLongIndices=PROCEDURE,-
+_PyStack_AsDict=PROCEDURE,-
+_PyStack_UnpackDict=PROCEDURE,-
+_PyState_AddModule=PROCEDURE,-
+_PyState_ClearModules=PROCEDURE,-
+_PyStructSequence_Init=PROCEDURE,-
+_PySys_ClearAuditHooks=PROCEDURE,-
+_PySys_Create=PROCEDURE,-
+_PySys_GetObjectId=PROCEDURE,-
+_PySys_GetSizeOf=PROCEDURE,-
+_PySys_ImplCacheTag=DATA,-
+_PySys_ImplName=DATA,-
+_PySys_InitMain=PROCEDURE,-
+_PySys_ReadPreinitWarnOptions=PROCEDURE,-
+_PySys_ReadPreinitXOptions=PROCEDURE,-
+_PySys_SetObjectId=PROCEDURE,-
+_PySys_SetPreliminaryStderr=PROCEDURE,-
+_PyThreadState_DeleteExcept=PROCEDURE,-
+_PyThreadState_Init=PROCEDURE,-
+_PyThreadState_Prealloc=PROCEDURE,-
+_PyThreadState_Swap=PROCEDURE,-
+_PyThreadState_UncheckedGet=PROCEDURE,-
+_PyThread_CurrentFrames=PROCEDURE,-
+_PyThread_cond_after=PROCEDURE,-
+_PyThread_cond_init=PROCEDURE,-
+_PyTime_AsMicroseconds=PROCEDURE,-
+_PyTime_AsMilliseconds=PROCEDURE,-
+_PyTime_AsNanosecondsObject=PROCEDURE,-
+_PyTime_AsSecondsDouble=PROCEDURE,-
+_PyTime_AsTimespec=PROCEDURE,-
+_PyTime_AsTimeval=PROCEDURE,-
+_PyTime_AsTimevalTime_t=PROCEDURE,-
+_PyTime_AsTimeval_noraise=PROCEDURE,-
+_PyTime_FromMillisecondsObject=PROCEDURE,-
+_PyTime_FromNanoseconds=PROCEDURE,-
+_PyTime_FromNanosecondsObject=PROCEDURE,-
+_PyTime_FromSeconds=PROCEDURE,-
+_PyTime_FromSecondsObject=PROCEDURE,-
+_PyTime_FromTimespec=PROCEDURE,-
+_PyTime_FromTimeval=PROCEDURE,-
+_PyTime_GetMonotonicClo0cvp326$=PROCEDURE,-
+_PyTime_GetMonotonicClock=PROCEDURE,-
+_PyTime_GetPerfCounter=PROCEDURE,-
+_PyTime_GetPerfCounterWithInfo=PROCEDURE,-
+_PyTime_GetSystemClock=PROCEDURE,-
+_PyTime_GetSystemClockWithInfo=PROCEDURE,-
+_PyTime_Init=PROCEDURE,-
+_PyTime_MulDiv=PROCEDURE,-
+_PyTime_ObjectToTime_t=PROCEDURE,-
+_PyTime_ObjectToTimespec=PROCEDURE,-
+_PyTime_ObjectToTimeval=PROCEDURE,-
+_PyTime_gmtime=PROCEDURE,-
+_PyTime_localtime=PROCEDURE,-
+_PyTraceBack_FromFrame=PROCEDURE,-
+_PyTraceMalloc_Fini=PROCEDURE,-
+_PyTraceMalloc_GetTraceback=PROCEDURE,-
+_PyTraceMalloc_Init=PROCEDURE,-
+_PyTraceMalloc_NewReference=PROCEDURE,-
+_PyTraceback_Add=PROCEDURE,-
+_PyTrash_deposit_object=PROCEDURE,-
+_PyTrash_destroy_chain=PROCEDURE,-
+_PyTrash_thread_deposit_object=PROCEDURE,-
+_PyTrash_thread_destroy_chain=PROCEDURE,-
+_PyTuple_DebugMallocStats=PROCEDURE,-
+_PyTuple_FromArray=PROCEDURE,-
+_PyTuple_MaybeUntrack=PROCEDURE,-
+_PyTuple_Resize=PROCEDURE,-
+_PyType_CalculateMetaclass=PROCEDURE,-
+_PyType_CheckConsistency=PROCEDURE,-
+_PyType_Fini=PROCEDURE,-
+_PyType_GetDocFromInternalDoc=PROCEDURE,-
+_PyType_GetTextSignatur2m88202$=PROCEDURE,-
+_PyType_Lookup=PROCEDURE,-
+_PyType_LookupId=PROCEDURE,-
+_PyType_Name=PROCEDURE,-
+_PyTypes_Init=PROCEDURE,-
+_PyUnicodeTranslateError_Create=PROCEDURE,-
+_PyUnicodeWriter_Dealloc=PROCEDURE,-
+_PyUnicodeWriter_Finish=PROCEDURE,-
+_PyUnicodeWriter_Init=PROCEDURE,-
+_PyUnicodeWriter_Prepar08gfmbu$=PROCEDURE,-
+_PyUnicodeWriter_Prepar34806s7$=PROCEDURE,-
+_PyUnicodeWriter_WriteA2qb8qnu$=PROCEDURE,-
+_PyUnicodeWriter_WriteChar=PROCEDURE,-
+_PyUnicodeWriter_WriteL13fdv54$=PROCEDURE,-
+_PyUnicodeWriter_WriteStr=PROCEDURE,-
+_PyUnicodeWriter_WriteSubstring=PROCEDURE,-
+_PyUnicode_AsASCIIString=PROCEDURE,-
+_PyUnicode_AsKind=PROCEDURE,-
+_PyUnicode_AsLatin1String=PROCEDURE,-
+_PyUnicode_AsUTF8String=PROCEDURE,-
+_PyUnicode_AsUnicode=PROCEDURE,-
+_PyUnicode_CheckConsistency=PROCEDURE,-
+_PyUnicode_ClearStaticStrings=PROCEDURE,-
+_PyUnicode_Copy=PROCEDURE,-
+_PyUnicode_DecodeUnicodeEscape=PROCEDURE,-
+_PyUnicode_EQ=PROCEDURE,-
+_PyUnicode_EncodeCharmap=PROCEDURE,-
+_PyUnicode_EncodeUTF16=PROCEDURE,-
+_PyUnicode_EncodeUTF32=PROCEDURE,-
+_PyUnicode_EncodeUTF7=PROCEDURE,-
+_PyUnicode_EqualToASCIIId=PROCEDURE,-
+_PyUnicode_EqualToASCIIString=PROCEDURE,-
+_PyUnicode_ExtendedCase=DATA,-
+_PyUnicode_FastCopyCharacters=PROCEDURE,-
+_PyUnicode_FastFill=PROCEDURE,-
+_PyUnicode_FindMaxChar=PROCEDURE,-
+_PyUnicode_Fini=PROCEDURE,-
+_PyUnicode_FormatAdvancedWriter=PROCEDURE,-
+_PyUnicode_FormatLong=PROCEDURE,-
+_PyUnicode_FromASCII=PROCEDURE,-
+_PyUnicode_FromId=PROCEDURE,-
+_PyUnicode_Init=PROCEDURE,-
+_PyUnicode_InitEncodings=PROCEDURE,-
+_PyUnicode_InsertThousa3dqn1s5$=PROCEDURE,-
+_PyUnicode_IsAlpha=PROCEDURE,-
+_PyUnicode_IsCaseIgnorable=PROCEDURE,-
+_PyUnicode_IsCased=PROCEDURE,-
+_PyUnicode_IsDecimalDigit=PROCEDURE,-
+_PyUnicode_IsDigit=PROCEDURE,-
+_PyUnicode_IsLinebreak=PROCEDURE,-
+_PyUnicode_IsLowercase=PROCEDURE,-
+_PyUnicode_IsNumeric=PROCEDURE,-
+_PyUnicode_IsPrintable=PROCEDURE,-
+_PyUnicode_IsTitlecase=PROCEDURE,-
+_PyUnicode_IsUppercase=PROCEDURE,-
+_PyUnicode_IsWhitespace=PROCEDURE,-
+_PyUnicode_IsXidContinue=PROCEDURE,-
+_PyUnicode_IsXidStart=PROCEDURE,-
+_PyUnicode_JoinArray=PROCEDURE,-
+_PyUnicode_Ready=PROCEDURE,-
+_PyUnicode_ToDecimalDigit=PROCEDURE,-
+_PyUnicode_ToDigit=PROCEDURE,-
+_PyUnicode_ToFoldedFull=PROCEDURE,-
+_PyUnicode_ToLowerFull=PROCEDURE,-
+_PyUnicode_ToLowercase=PROCEDURE,-
+_PyUnicode_ToNumeric=PROCEDURE,-
+_PyUnicode_ToTitleFull=PROCEDURE,-
+_PyUnicode_ToTitlecase=PROCEDURE,-
+_PyUnicode_ToUpperFull=PROCEDURE,-
+_PyUnicode_ToUppercase=PROCEDURE,-
+_PyUnicode_TransformDec0maj7tg$=PROCEDURE,-
+_PyUnicode_TypeRecords=DATA,-
+_PyUnicode_XStrip=PROCEDURE,-
+_PyWarnings_Fini=PROCEDURE,-
+_PyWarnings_Init=PROCEDURE,-
+_PyWeakref_CallableProxyType=DATA,-
+_PyWeakref_ClearRef=PROCEDURE,-
+_PyWeakref_GetWeakrefCount=PROCEDURE,-
+_PyWeakref_ProxyType=DATA,-
+_PyWeakref_RefType=DATA,-
+_PyWideStringList_AsList=PROCEDURE,-
+_PyWideStringList_Check1etephj$=PROCEDURE,-
+_PyWideStringList_Clear=PROCEDURE,-
+_PyWideStringList_Copy=PROCEDURE,-
+_PyWideStringList_Extend=PROCEDURE,-
+_Py_AnnAssign=PROCEDURE,-
+_Py_Assert=PROCEDURE,-
+_Py_Assign=PROCEDURE,-
+_Py_AsyncFor=PROCEDURE,-
+_Py_AsyncFunctionDef=PROCEDURE,-
+_Py_AsyncWith=PROCEDURE,-
+_Py_Attribute=PROCEDURE,-
+_Py_AugAssign=PROCEDURE,-
+_Py_Await=PROCEDURE,-
+_Py_BinOp=PROCEDURE,-
+_Py_BoolOp=PROCEDURE,-
+_Py_Break=PROCEDURE,-
+_Py_BreakPoint=PROCEDURE,-
+_Py_BuildValue_SizeT=PROCEDURE,-
+_Py_Call=PROCEDURE,-
+_Py_CheckFunctionResult=PROCEDURE,-
+_Py_CheckRecursionLimit=DATA,-
+_Py_CheckRecursiveCall=PROCEDURE,-
+_Py_ClassDef=PROCEDURE,-
+_Py_ClearArgcArgv=PROCEDURE,-
+_Py_ClearFileSystemEncoding=PROCEDURE,-
+_Py_ClearStandardStreamEncoding=PROCEDURE,-
+_Py_CoerceLegacyLocale=PROCEDURE,-
+_Py_Compare=PROCEDURE,-
+_Py_Constant=PROCEDURE,-
+_Py_Continue=PROCEDURE,-
+_Py_Dealloc=PROCEDURE,-
+_Py_DecodeLocaleEx=PROCEDURE,-
+_Py_DecodeUTF8Ex=PROCEDURE,-
+_Py_DecodeUTF8_surrogateescape=PROCEDURE,-
+_Py_Delete=PROCEDURE,-
+_Py_Dict=PROCEDURE,-
+_Py_DictComp=PROCEDURE,-
+_Py_DisplaySourceLine=PROCEDURE,-
+_Py_DumpASCII=PROCEDURE,-
+_Py_DumpDecimal=PROCEDURE,-
+_Py_DumpHexadecimal=PROCEDURE,-
+_Py_DumpPathConfig=PROCEDURE,-
+_Py_DumpTraceback=PROCEDURE,-
+_Py_DumpTracebackThreads=PROCEDURE,-
+_Py_EllipsisObject=DATA,-
+_Py_EncodeLocaleEx=PROCEDURE,-
+_Py_EncodeLocaleRaw=PROCEDURE,-
+_Py_EncodeUTF8Ex=PROCEDURE,-
+_Py_ExceptHandler=PROCEDURE,-
+_Py_Expr=PROCEDURE,-
+_Py_Expression=PROCEDURE,-
+_Py_ExtSlice=PROCEDURE,-
+_Py_FalseStruct=DATA,-
+_Py_FindEnvConfigValue=PROCEDURE,-
+_Py_FinishPendingCalls=PROCEDURE,-
+_Py_For=PROCEDURE,-
+_Py_FormattedValue=PROCEDURE,-
+_Py_FreeCharPArray=PROCEDURE,-
+_Py_FunctionDef=PROCEDURE,-
+_Py_FunctionType=PROCEDURE,-
+_Py_GeneratorExp=PROCEDURE,-
+_Py_GetAllocatedBlocks=PROCEDURE,-
+_Py_GetConfigsAsDict=PROCEDURE,-
+_Py_GetEnv=PROCEDURE,-
+_Py_GetErrorHandler=PROCEDURE,-
+_Py_GetForceASCII=PROCEDURE,-
+_Py_GetLocaleconvNumeric=PROCEDURE,-
+_Py_Gid_Converter=PROCEDURE,-
+_Py_Global=PROCEDURE,-
+_Py_HandleSystemExit=PROCEDURE,-
+_Py_HasFileSystemDefaul1d82ugm$=DATA,-
+_Py_HashBytes=PROCEDURE,-
+_Py_HashDouble=PROCEDURE,-
+_Py_HashPointer=PROCEDURE,-
+_Py_HashRandomization_Fini=PROCEDURE,-
+_Py_HashRandomization_Init=PROCEDURE,-
+_Py_HashSecret=DATA,-
+_Py_If=PROCEDURE,-
+_Py_IfExp=PROCEDURE,-
+_Py_Import=PROCEDURE,-
+_Py_ImportFrom=PROCEDURE,-
+_Py_Index=PROCEDURE,-
+_Py_InitializeMain=PROCEDURE,-
+_Py_Interactive=PROCEDURE,-
+_Py_IsCoreInitialized=PROCEDURE,-
+_Py_IsFinalizing=PROCEDURE,-
+_Py_IsLocaleCoercionTarget=PROCEDURE,-
+_Py_JoinedStr=PROCEDURE,-
+_Py_KeyedHash=PROCEDURE,-
+_Py_Lambda=PROCEDURE,-
+_Py_LegacyLocaleDetected=PROCEDURE,-
+_Py_List=PROCEDURE,-
+_Py_ListComp=PROCEDURE,-
+_Py_M__importlib_bootst3jkv519$=DATA,-
+_Py_M__importlib_bootstrap=DATA,-
+_Py_M__zipimport=DATA,-
+_Py_Mangle=PROCEDURE,-
+_Py_Module=PROCEDURE,-
+_Py_Name=PROCEDURE,-
+_Py_NamedExpr=PROCEDURE,-
+_Py_NoneStruct=DATA,-
+_Py_Nonlocal=PROCEDURE,-
+_Py_NotImplementedStruct=DATA,-
+_Py_PackageContext=DATA,-
+_Py_Pass=PROCEDURE,-
+_Py_PreInitializeFromConfig=PROCEDURE,-
+_Py_PreInitializeFromPyArgv=PROCEDURE,-
+_Py_PyAtExit=PROCEDURE,-
+_Py_Raise=PROCEDURE,-
+_Py_ResetForceASCII=PROCEDURE,-
+_Py_RestoreSignals=PROCEDURE,-
+_Py_Return=PROCEDURE,-
+_Py_Set=PROCEDURE,-
+_Py_SetComp=PROCEDURE,-
+_Py_SetFileSystemEncoding=PROCEDURE,-
+_Py_SetLocaleFromEnv=PROCEDURE,-
+_Py_SetProgramFullPath=PROCEDURE,-
+_Py_Sigset_Converter=PROCEDURE,-
+_Py_Slice=PROCEDURE,-
+_Py_SourceAsString=PROCEDURE,-
+_Py_Starred=PROCEDURE,-
+_Py_Subscript=PROCEDURE,-
+_Py_Suite=PROCEDURE,-
+_Py_SwappedOp=DATA,-
+_Py_SymtableStringObjectFlags=PROCEDURE,-
+_Py_TrueStruct=DATA,-
+_Py_Try=PROCEDURE,-
+_Py_Tuple=PROCEDURE,-
+_Py_TypeIgnore=PROCEDURE,-
+_Py_Uid_Converter=PROCEDURE,-
+_Py_UnaryOp=PROCEDURE,-
+_Py_UnhandledKeyboardInterrupt=DATA,-
+_Py_VaBuildStack=PROCEDURE,-
+_Py_VaBuildStack_SizeT=PROCEDURE,-
+_Py_VaBuildValue_SizeT=PROCEDURE,-
+_Py_While=PROCEDURE,-
+_Py_With=PROCEDURE,-
+_Py_Yield=PROCEDURE,-
+_Py_YieldFrom=PROCEDURE,-
+_Py_abstract_hack=DATA,-
+_Py_add_one_to_index_C=PROCEDURE,-
+_Py_add_one_to_index_F=PROCEDURE,-
+_Py_alias=PROCEDURE,-
+_Py_arg=PROCEDURE,-
+_Py_arguments=PROCEDURE,-
+_Py_ascii_whitespace=DATA,-
+_Py_asdl_int_seq_new=PROCEDURE,-
+_Py_asdl_seq_new=PROCEDURE,-
+_Py_bytes_capitalize=PROCEDURE,-
+_Py_bytes_contains=PROCEDURE,-
+_Py_bytes_count=PROCEDURE,-
+_Py_bytes_endswith=PROCEDURE,-
+_Py_bytes_find=PROCEDURE,-
+_Py_bytes_index=PROCEDURE,-
+_Py_bytes_isalnum=PROCEDURE,-
+_Py_bytes_isalpha=PROCEDURE,-
+_Py_bytes_isascii=PROCEDURE,-
+_Py_bytes_isdigit=PROCEDURE,-
+_Py_bytes_islower=PROCEDURE,-
+_Py_bytes_isspace=PROCEDURE,-
+_Py_bytes_istitle=PROCEDURE,-
+_Py_bytes_isupper=PROCEDURE,-
+_Py_bytes_lower=PROCEDURE,-
+_Py_bytes_maketrans=PROCEDURE,-
+_Py_bytes_rfind=PROCEDURE,-
+_Py_bytes_rindex=PROCEDURE,-
+_Py_bytes_startswith=PROCEDURE,-
+_Py_bytes_swapcase=PROCEDURE,-
+_Py_bytes_title=PROCEDURE,-
+_Py_bytes_upper=PROCEDURE,-
+_Py_c_abs=PROCEDURE,-
+_Py_c_diff=PROCEDURE,-
+_Py_c_neg=PROCEDURE,-
+_Py_c_pow=PROCEDURE,-
+_Py_c_prod=PROCEDURE,-
+_Py_c_quot=PROCEDURE,-
+_Py_c_sum=PROCEDURE,-
+_Py_capitalize__doc__=DATA,-
+_Py_comprehension=PROCEDURE,-
+_Py_convert_optional_to_ssize_t=PROCEDURE,-
+_Py_count__doc__=DATA,-
+_Py_ctype_table=DATA,-
+_Py_ctype_tolower=DATA,-
+_Py_ctype_toupper=DATA,-
+_Py_device_encoding=PROCEDURE,-
+_Py_dg_dtoa=PROCEDURE,-
+_Py_dg_freedtoa=PROCEDURE,-
+_Py_dg_infinity=PROCEDURE,-
+_Py_dg_stdnan=PROCEDURE,-
+_Py_dg_strtod=PROCEDURE,-
+_Py_dup=PROCEDURE,-
+_Py_endswith__doc__=DATA,-
+_Py_find__doc__=DATA,-
+_Py_fopen=PROCEDURE,-
+_Py_fopen_obj=PROCEDURE,-
+_Py_fstat=PROCEDURE,-
+_Py_fstat_noraise=PROCEDURE,-
+_Py_get_blocking=PROCEDURE,-
+_Py_get_env_flag=PROCEDURE,-
+_Py_get_inheritable=PROCEDURE,-
+_Py_get_xoption=PROCEDURE,-
+_Py_gitidentifier=PROCEDURE,-
+_Py_gitversion=PROCEDURE,-
+_Py_hashtable_clear=PROCEDURE,-
+_Py_hashtable_compare_direct=PROCEDURE,-
+_Py_hashtable_copy=PROCEDURE,-
+_Py_hashtable_destroy=PROCEDURE,-
+_Py_hashtable_foreach=PROCEDURE,-
+_Py_hashtable_get=PROCEDURE,-
+_Py_hashtable_get_entry=PROCEDURE,-
+_Py_hashtable_hash_ptr=PROCEDURE,-
+_Py_hashtable_new=PROCEDURE,-
+_Py_hashtable_new_full=PROCEDURE,-
+_Py_hashtable_pop=PROCEDURE,-
+_Py_hashtable_set=PROCEDURE,-
+_Py_hashtable_size=PROCEDURE,-
+_Py_index__doc__=DATA,-
+_Py_isalnum__doc__=DATA,-
+_Py_isalpha__doc__=DATA,-
+_Py_isascii__doc__=DATA,-
+_Py_isdigit__doc__=DATA,-
+_Py_islower__doc__=DATA,-
+_Py_isspace__doc__=DATA,-
+_Py_istitle__doc__=DATA,-
+_Py_isupper__doc__=DATA,-
+_Py_keyword=PROCEDURE,-
+_Py_lower__doc__=DATA,-
+_Py_maketrans__doc__=DATA,-
+_Py_normalize_encoding=PROCEDURE,-
+_Py_open=PROCEDURE,-
+_Py_open_noraise=PROCEDURE,-
+_Py_parse_inf_or_nan=PROCEDURE,-
+_Py_path_config=DATA,-
+_Py_read=PROCEDURE,-
+_Py_rfind__doc__=DATA,-
+_Py_rindex__doc__=DATA,-
+_Py_set_blocking=PROCEDURE,-
+_Py_set_inheritable=PROCEDURE,-
+_Py_set_inheritable_async_safe=PROCEDURE,-
+_Py_startswith__doc__=DATA,-
+_Py_stat=PROCEDURE,-
+_Py_str_to_int=PROCEDURE,-
+_Py_strhex=PROCEDURE,-
+_Py_strhex_bytes=PROCEDURE,-
+_Py_strhex_bytes_with_sep=PROCEDURE,-
+_Py_strhex_with_sep=PROCEDURE,-
+_Py_string_to_number_wi1h7jsg3$=PROCEDURE,-
+_Py_swapcase__doc__=DATA,-
+_Py_title__doc__=DATA,-
+_Py_tracemalloc_config=DATA,-
+_Py_upper__doc__=DATA,-
+_Py_wfopen=PROCEDURE,-
+_Py_wgetcwd=PROCEDURE,-
+_Py_withitem=PROCEDURE,-
+_Py_wreadlink=PROCEDURE,-
+_Py_wrealpath=PROCEDURE,-
+_Py_write=PROCEDURE,-
+_Py_write_noraise=PROCEDURE,-
+vms__StdioReadline=PROCEDURE,-
+g_vms_select=PROCEDURE,-
+round_imp=PROCEDURE,-
+read_pipe_bytes=PROCEDURE-
+)
\ No newline at end of file
diff --git a/opt/python3.opt b/opt/python3.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5dGhvbjMub3B0
--- /dev/null
+++ b/opt/python3.opt
@@ -0,0 +1,2 @@
+python$build_out:[000000]python$shr.exe/share
+sys$library:pthread$rtl.exe/share
diff --git a/opt/readline.opt b/opt/readline.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3JlYWRsaW5lLm9wdA==
--- /dev/null
+++ b/opt/readline.opt
@@ -0,0 +1,6 @@
+oss$root:[lib]libreadline32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_readline=PROCEDURE)
diff --git a/opt/select.opt b/opt/select.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3NlbGVjdC5vcHQ=
--- /dev/null
+++ b/opt/select.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_select=PROCEDURE)
diff --git a/opt/syslog.opt b/opt/syslog.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3N5c2xvZy5vcHQ=
--- /dev/null
+++ b/opt/syslog.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_syslog=PROCEDURE)
diff --git a/opt/unicodedata.opt b/opt/unicodedata.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3VuaWNvZGVkYXRhLm9wdA==
--- /dev/null
+++ b/opt/unicodedata.opt
@@ -0,0 +1,5 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_unicodedata=PROCEDURE)
diff --git a/opt/xxlimited.opt b/opt/xxlimited.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3h4bGltaXRlZC5vcHQ=
--- /dev/null
+++ b/opt/xxlimited.opt
@@ -0,0 +1,4 @@
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_xxlimited=PROCEDURE)
\ No newline at end of file
diff --git a/opt/zlib.opt b/opt/zlib.opt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3psaWIub3B0
--- /dev/null
+++ b/opt/zlib.opt
@@ -0,0 +1,6 @@
+oss$root:[lib]libz32.olb/lib
+sys$library:pthread$rtl.exe/share
+python$build_out:[000000]python$shr.exe/share
+GSMATCH=LEQUAL,1,0
+CASE_SENSITIVE=YES
+SYMBOL_VECTOR=(PyInit_zlib=PROCEDURE)
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_cmVxdWlyZW1lbnRzLnR4dA==
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,92 @@
+apispec
+apispec_webframeworks
+async_generator
+attrs
+Automat
+betamax
+blinker
+bottle
+brotli
+cffi
+chardet
+cheroot
+CherryPy
+click
+constantly
+cryptography
+cryptography_vectors
+cython
+decorator
+elementpath
+flasgger
+Flask
+flex
+freezegun
+ftputil
+httpbin
+hypothesis
+idna
+incremental
+iniconfig
+iso8601
+itsdangerous
+jaraco.classes
+jaraco.collections
+jaraco.functools
+jaraco.text
+Jinja2
+jsonpointer
+jsonschema
+MarkupSafe
+marshmallow
+mistune
+mock
+more_itertools
+numpy
+outcome
+packaging
+path
+pika
+pluggy
+portend
+prance
+pretend
+py
+pyasn1
+pyasn1_modules
+pycparser
+Pygments
+pyparsing
+pyrsistent
+pytest
+pytest_flask
+pytest_httpbin
+pytest_httpserver
+pytest_localserver
+python_dateutil
+pytz
+PyYAML
+raven
+requests
+responses
+rfc3987
+semver
+service_identity
+setuptools_scm
+simplejson
+six
+sniffio
+sortedcontainers
+strict_rfc3339
+suds_py3
+sure
+tempora
+toml
+trustme
+urllib3
+validate_email
+wcwidth
+Werkzeug
+wheel
+xmlschema
+zc.lockfile
diff --git a/vms/create_kit_files.py b/vms/create_kit_files.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL2NyZWF0ZV9raXRfZmlsZXMucHk=
--- /dev/null
+++ b/vms/create_kit_files.py
@@ -0,0 +1,191 @@
+import os
+import re
+import sys
+
+def spec_replacer(match):
+    if match.group(0) == ' ':
+        return '^_'
+    return '^' + match.group(0)
+
+def create_content(type, major, minor, level, edit):
+    python_dir = '/python$root'
+    python_dir_len = len(python_dir)
+    all_dirs = []
+    all_files = []
+    spec_pattern = re.compile('([. ^+()])')
+    for root, dirs, files in os.walk(python_dir):
+        inner_dirs = list(filter(lambda x: x != '', spec_pattern.sub(spec_replacer, root[python_dir_len:]).split('/')))
+        kit_dir = '[' + '.'.join(['python'] + inner_dirs) + ']'
+        all_dirs.append('directory "' + kit_dir + '" version limit 1;')
+        for file in files:
+            file_name, file_ext = os.path.splitext(file)
+            if file_ext == '':
+                file_ext = '.'
+            file_name = spec_pattern.sub(spec_replacer, file_name)
+            all_files.append('file "' + \
+                kit_dir + file_name + file_ext + \
+                '" source "' + \
+                kit_dir + file_name + file_ext + \
+                '";')
+        try:
+            dirs.remove('__pycache__')
+        except:
+            pass
+
+    kit_template = '''--
+-- (C) Copyright 2020 VMS Software Inc.
+--
+product VSI I64VMS PYTHON {type}{major}.{minor}-{level}{edit} FULL ;
+
+--
+--  Execute the preconfigure procedure
+--
+    execute preconfigure "@pcsi$source:[python]python$pcsi_preconfigure.com" uses [python]python$pcsi_preconfigure.com ;
+
+--
+--  Make sure VMS V8.4 or above is installed
+--
+    if ((not <software VSI I64VMS VMS version minimum V8.4>) and (not <software HP I64VMS VMS version minimum V8.4>)) ;
+        error NO_MIN_VMS abort ;
+    end if ;
+
+--
+--  ODS-5 Disk(s) should be available on this system
+--
+    if (<logical name PYTHON$ODS5_AVAIL equals 0 table LNM$JOB>) ;
+        error NO_ODS5_DISKS ;
+    end if ;
+
+--
+-- Directories...
+--
+
+    {dirs}
+
+--
+-- Files...
+--
+
+    {files}
+
+--
+-- Start-up and shutdown scripts
+--
+   file "[sys$startup]python$define_root.com" source "[python]python$define_root.com";
+   file "[sys$startup]python$startup.com" source "[python]python$startup.com";
+   file "[sys$startup]python$shutdown.com" source "[python]python$shutdown.com";
+
+
+--
+-- Release notes
+--
+-- (none)
+
+
+--
+-- Do post-install tasks
+--
+   execute postinstall "@pcsi$source:[python]python$define_root.com" interactive uses "[python]python$define_root.com" ;
+
+--
+-- Okay, done.  Tell the user what to do next.
+--
+   information POST_INSTALL  phase after with helptext;
+
+--
+-- All done
+--
+
+end product;
+'''
+    # type, major, minor, level, edit must be the same as in pythlib.pcsi$text
+    kit_content = kit_template.format(
+        type=type,
+        major=major,
+        minor=minor,
+        level=level,
+        edit=edit,
+        dirs='\n    '.join(all_dirs),
+        files='\n    '.join(all_files))
+    with open('python.pcsi$desc', 'w') as file:
+        file.write(kit_content)
+
+    text_template = '''=product VSI I64VMS PYTHON {type}{major}.{minor}-{level}{edit} full
+1 'PRODUCT
+=prompt Python for OpenVMS is based on Python Version 3.8.2 ({edit})
+
+1 'PRODUCER
+=prompt VSI Software Inc.
+
+1 'NOTICE
+=prompt (C) Copyright 2020 VMS Software Inc.
+
+1 NO_MIN_VMS
+=prompt Minimum OpenVMS software version not found on this system, abort instalation
+This kit requires a minimum of OpenVMS I64 V8.4.
+
+1 NO_ODS5_DISKS
+=prompt ODS-5 disk(s) not found on this system, abort installation
+This kit requires an ODS-5 disk to be correctly installed in this system.
+
+1 POST_INSTALL
+=prompt Post-installation tasks are required.
+To define the Python runtime at system boot time, add the
+following lines to SYS$MANAGER:SYSTARTUP_VMS.COM:
+
+    $ file := SYS$STARTUP:PYTHON$STARTUP.COM
+    $ if f$search("''file'") .nes. "" then @'file'
+
+To shutdown the Python runtime at system shutdown time, add the
+following lines to SYS$MANAGER:SYSHUTDWN.COM:
+
+    $ file := SYS$STARTUP:PYTHON$SHUTDOWN.COM
+    $ if f$search("''file'") .nes. "" then @'file'
+
+
+'''
+    text_content = text_template.format(
+        type=type,
+        major=major,
+        minor=minor,
+        level=level,
+        edit=edit,
+        dirs='\n    '.join(all_dirs),
+        files='\n    '.join(all_files))
+    with open('python.pcsi$text', 'w') as file:
+        file.write(text_content)
+
+if __name__ == "__main__":
+
+    import getopt
+    import datetime
+
+    opts, args = getopt.getopt(sys.argv[1:], '', ['type=', 'major=', 'minor=', 'level=', 'edit='])
+
+    type = 'A'
+    major = '3'
+    minor = '8'
+    level = '2'
+    edit = ''   # 'd' + datetime.date.today().strftime('%Y%m%d')
+
+    for opt, optarg in opts:
+        if opt in ['--type']:
+            type = optarg
+        elif opt in ['--major']:
+            major = optarg
+        elif opt in ['--minor']:
+            minor = optarg
+        elif opt in ['--level']:
+            level = optarg
+        elif opt in ['--edit']:
+            edit = optarg
+        else:
+            print('Unknown option %s' % opt)
+
+    create_content(
+        type,
+        major,
+        minor,
+        level,
+        edit,
+    )
diff --git a/vms/exec64.c b/vms/exec64.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL2V4ZWM2NC5j
--- /dev/null
+++ b/vms/exec64.c
@@ -0,0 +1,130 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <assert.h>
+
+extern __char_ptr32 _strdup32(__const_char_ptr64);
+extern __void_ptr32 _malloc32(size_t);
+
+int execve64(const __char_ptr64 file_spec, __char_ptr64 argv[], __char_ptr64 envp[])
+{
+    int i, n, m;
+    __char_ptr_ptr32 argv32 = NULL;
+    __char_ptr_ptr32 envp32 = NULL;
+    int rv;
+    n = 0;
+
+    while (argv[n]) {
+        n++;
+    }
+
+    argv32 = (__char_ptr_ptr32) _malloc32((n + 1) * sizeof(char *));
+    assert(argv32);
+
+    for (i = 0; i < n; i++) {
+        argv32[i] = _strdup32(argv[i]);
+        assert(argv32[i]);
+    }
+
+    argv32[n] = NULL;
+
+    m = 0;
+
+    while (envp[m]) {
+        m++;
+    }
+
+    envp32 = (__char_ptr_ptr32) _malloc32((m + 1) * sizeof(char *));
+    assert(envp32);
+
+    for (i = 0; i < m; i++) {
+        envp32[i] = _strdup32(envp[i]);
+        assert(envp32[i]);
+    }
+
+    envp32[m] = NULL;
+
+    rv = execve(file_spec, argv32, envp32);
+
+    /* If all is well we will not get here, but just in case the execv() failed let's have a bit of a tidy-up... */
+    for (i = 0; i < n; i++) {
+        free(argv32[i]);
+    }
+    free(argv32);
+
+    for (i = 0; i < m; i++) {
+        free(envp32[i]);
+    }
+    free(envp32);
+
+    /* ... and return our status */
+    return (rv);
+}
+
+int execv64(const __char_ptr64 file_spec, __char_ptr64 argv[])
+{
+    int i, n;
+    __char_ptr_ptr32 argv32 = NULL;
+    int rv;
+    n = 0;
+
+    while (argv[n]) {
+        n++;
+    }
+
+    argv32 = (__char_ptr_ptr32) _malloc32((n + 1) * sizeof(char *));
+    assert(argv32);
+
+    for (i = 0; i < n; i++) {
+        argv32[i] = _strdup32(argv[i])
+        assert(argv32[i]);
+    }
+
+    argv32[n] = NULL;
+
+    rv = execv(file_spec, argv32);
+
+    /* If all is well we will not get here, but just in case the execv() failed let's have a bit of a tidy-up... */
+    for (i = 0; i < n; i++) {
+        free(argv32[i]);
+    }
+    free(argv32);
+
+    /* ... and return our status */
+    return (rv);
+}
+
+
+int execvp64(const __char_ptr64 file_spec, __char_ptr64 argv[])
+{
+    int i, n;
+    __char_ptr_ptr32 argv32 = NULL;
+    int rv;
+    n = 0;
+
+    while (argv[n]) {
+        n++;
+    }
+
+    argv32 = (__char_ptr_ptr32) _malloc32((n + 1) * sizeof(char *));
+    assert(argv32);
+
+    for (i = 0; i < n; i++) {
+        argv32[i] = _strdup32(argv[i])
+        assert(argv32[i]);
+    }
+
+    argv32[n] = NULL;
+
+    rv = execvp(file_spec, argv32);
+
+    /* If all is well we will not get here, but just in case the execv() failed let's have a bit of a tidy-up... */
+    for (i = 0; i < n; i++) {
+        free(argv32[i]);
+    }
+    free(argv32);
+
+    /* ... and return our status */
+    return (rv);
+}
diff --git a/vms/format_macros.h b/vms/format_macros.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL2Zvcm1hdF9tYWNyb3MuaA==
--- /dev/null
+++ b/vms/format_macros.h
@@ -0,0 +1,171 @@
+/* ANSI/ISO C99 says these should not be visible in C++ unless
+   explicitly requested.  */
+
+#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
+
+#define PRId8       "hhd"
+#define PRId16      "hd"
+#define PRId32      "ld"
+#define PRId64      "lld"
+#define PRIdLEAST8  "hhd"
+#define PRIdLEAST16 "hd"
+#define PRIdLEAST32 "d"
+#define PRIdLEAST64 "lld"
+#define PRIdFAST8   "hhd"
+#define PRIdFAST16  "d"
+#define PRIdFAST32  "d"
+#define PRIdFAST64  "lld"
+#define PRIdMAX     "lld"
+#define PRIdPTR     "ld"
+
+#define PRIi8       "hhi"
+#define PRIi16      "hi"
+#define PRIi32      "li"
+#define PRIi64      "lli"
+#define PRIiLEAST8  "hhi"
+#define PRIiLEAST16 "hi"
+#define PRIiLEAST32 "i"
+#define PRIiLEAST64 "lli"
+#define PRIiFAST8   "hhi"
+#define PRIiFAST16  "i"
+#define PRIiFAST32  "i"
+#define PRIiFAST64  "lli"
+#define PRIiMAX     "lli"
+#define PRIiPTR     "li"
+
+#define PRIo8       "hho"
+#define PRIo16      "ho"
+#define PRIo32      "lo"
+#define PRIo64      "llo"
+#define PRIoLEAST8  "hho"
+#define PRIoLEAST16 "ho"
+#define PRIoLEAST32 "o"
+#define PRIoLEAST64 "llo"
+#define PRIoFAST8   "hho"
+#define PRIoFAST16  "o"
+#define PRIoFAST32  "o"
+#define PRIoFAST64  "llo"
+#define PRIoMAX     "llo"
+#define PRIoPTR     "lo"
+
+#define PRIu8       "hhu"
+#define PRIu16      "hu"
+#define PRIu32      "lu"
+#define PRIu64      "llu"
+#define PRIuLEAST8  "hhu"
+#define PRIuLEAST16 "hu"
+#define PRIuLEAST32 "u"
+#define PRIuLEAST64 "llu"
+#define PRIuFAST8   "hhu"
+#define PRIuFAST16  "u"
+#define PRIuFAST32  "u"
+#define PRIuFAST64  "llu"
+#define PRIuMAX     "llu"
+#define PRIuPTR     "lu"
+
+#define PRIx8       "hhx"
+#define PRIx16      "hx"
+#define PRIx32      "lx"
+#define PRIx64      "llx"
+#define PRIxLEAST8  "hhx"
+#define PRIxLEAST16 "hx"
+#define PRIxLEAST32 "x"
+#define PRIxLEAST64 "llx"
+#define PRIxFAST8   "hhx"
+#define PRIxFAST16  "x"
+#define PRIxFAST32  "x"
+#define PRIxFAST64  "llx"
+#define PRIxMAX     "llx"
+#define PRIxPTR     "lx"
+
+#define PRIX8       "hhX"
+#define PRIX16      "hX"
+#define PRIX32      "lX"
+#define PRIX64      "llX"
+#define PRIXLEAST8  "hhX"
+#define PRIXLEAST16 "hX"
+#define PRIXLEAST32 "X"
+#define PRIXLEAST64 "llX"
+#define PRIXFAST8   "hhX"
+#define PRIXFAST16  "X"
+#define PRIXFAST32  "X"
+#define PRIXFAST64  "llX"
+#define PRIXMAX     "llX"
+#define PRIXPTR     "lX"
+
+#define SCNd8       "hhd"
+#define SCNd16      "hd"
+#define SCNd32      "ld"
+#define SCNd64      "lld"
+#define SCNdLEAST8  "hhd"
+#define SCNdLEAST16 "hd"
+#define SCNdLEAST32 "d"
+#define SCNdLEAST64 "lld"
+#define SCNdFAST8   "hhd"
+#define SCNdFAST16  "d"
+#define SCNdFAST32  "d"
+#define SCNdFAST64  "lld"
+#define SCNdMAX     "lld"
+#define SCNdPTR     "ld"
+
+#define SCNi8       "hhi"
+#define SCNi16      "hi"
+#define SCNi32      "li"
+#define SCNi64      "lli"
+#define SCNiLEAST8  "hhi"
+#define SCNiLEAST16 "hi"
+#define SCNiLEAST32 "i"
+#define SCNiLEAST64 "lli"
+#define SCNiFAST8   "hhi"
+#define SCNiFAST16  "i"
+#define SCNiFAST32  "i"
+#define SCNiFAST64  "lli"
+#define SCNiMAX     "lli"
+#define SCNiPTR     "li"
+
+#define SCNo8       "hho"
+#define SCNo16      "ho"
+#define SCNo32      "lo"
+#define SCNo64      "llo"
+#define SCNoLEAST8  "hho"
+#define SCNoLEAST16 "ho"
+#define SCNoLEAST32 "o"
+#define SCNoLEAST64 "llo"
+#define SCNoFAST8   "hho"
+#define SCNoFAST16  "o"
+#define SCNoFAST32  "o"
+#define SCNoFAST64  "llo"
+#define SCNoMAX     "llo"
+#define SCNoPTR     "lo"
+
+#define SCNu8       "hhu"
+#define SCNu16      "hu"
+#define SCNu32      "lu"
+#define SCNu64      "llu"
+#define SCNuLEAST8  "hhu"
+#define SCNuLEAST16 "hu"
+#define SCNuLEAST32 "u"
+#define SCNuLEAST64 "llu"
+#define SCNuFAST8   "hhu"
+#define SCNuFAST16  "u"
+#define SCNuFAST32  "u"
+#define SCNuFAST64  "llu"
+#define SCNuMAX     "llu"
+#define SCNuPTR     "lu"
+
+#define SCNx8       "hhx"
+#define SCNx16      "hx"
+#define SCNx32      "lx"
+#define SCNx64      "llx"
+#define SCNxLEAST8  "hhx"
+#define SCNxLEAST16 "hx"
+#define SCNxLEAST32 "x"
+#define SCNxLEAST64 "llx"
+#define SCNxFAST8   "hhx"
+#define SCNxFAST16  "x"
+#define SCNxFAST32  "x"
+#define SCNxFAST64  "llx"
+#define SCNxMAX     "llx"
+#define SCNxPTR     "lx"
+
+#endif /* !__cplusplus || __STDC_FORMAT_MACROS */
diff --git a/vms/make_kit.com b/vms/make_kit.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL21ha2Vfa2l0LmNvbQ==
--- /dev/null
+++ b/vms/make_kit.com
@@ -0,0 +1,28 @@
+$ set verify
+$
+$ delete/log/noconf vsi-i64vms-python-*.pcsi;*
+$ delete/log/noconf vsi-i64vms-python-*.pcsi$compressed;*
+$
+$ com_nam = f$environment("procedure")
+$ com_dir = f$parse(com_nam,,,"directory")
+$ com_dev = f$parse(com_nam,,,"device")
+$ out_pat = com_dev + com_dir - "vms]" + "out.]"
+$
+$ product package python -
+        /source=python.pcsi$desc -
+        /destination=[] -
+        /material=('out_pat') -
+        /format=sequential -
+        /opt=noconf -
+        /log -
+        /producer=VSI
+$
+$ product copy python/source=[]/dest=[]/format=compressed/opt=noconf
+$ purge/log
+$
+$ purge/log [...]
+$
+$ set noverify
+$
+$ exit
+
diff --git a/vms/py_vms.h b/vms/py_vms.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5X3Ztcy5o
--- /dev/null
+++ b/vms/py_vms.h
@@ -0,0 +1,37 @@
+#ifndef PLATFORM
+#define PLATFORM "OpenVMS"
+#endif
+
+#ifndef ABIFLAGS
+#define ABIFLAGS ""
+#endif
+
+#ifndef SOABI
+#define SOABI "cpython-38-ia64-openvms"
+#endif
+
+#ifndef PYTHONPATH
+#define PYTHONPATH ":plat-openvms"
+#endif
+
+#ifndef PREFIX
+#define PREFIX "/python$root"
+#endif
+
+#ifndef EXEC_PREFIX
+#define EXEC_PREFIX "/python$root"
+#endif
+
+#ifndef VERSION
+#define VERSION "3.8"
+#endif
+
+#ifndef VPATH
+#define VPATH ""
+#endif
+
+#define _POSIX_EXIT 1
+
+#define SIGBUS     10
+
+#define O_BINARY 0100
diff --git a/vms/pyconfig.h b/vms/pyconfig.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5Y29uZmlnLmg=
--- /dev/null
+++ b/vms/pyconfig.h
@@ -0,0 +1,1785 @@
+#include "py_vms.h"
+
+/* pyconfig.h Created from Python 3.5 for VMS source */
+
+
+#ifndef Py_PYCONFIG_H
+#define Py_PYCONFIG_H
+
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want
+   support for AIX C++ shared extension modules. */
+#undef AIX_GENUINE_CPLUSPLUS
+
+/* Alternative SOABI used in debug build to load C extensions built in release
+   mode */
+#undef ALT_SOABI
+
+/* The Android API level. */
+#undef ANDROID_API_LEVEL
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM
+   mixed-endian order (byte order 45670123) */
+#undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the most
+   significant byte first */
+#undef DOUBLE_IS_BIG_ENDIAN_IEEE754
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the
+   least significant byte first */
+#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
+
+/* Define if --enable-ipv6 is specified */
+#define ENABLE_IPV6 1
+
+/* Define to 1 if your system stores words within floats with the most
+   significant word first */
+#undef FLOAT_WORDS_BIGENDIAN
+
+/* Define if flock needs to be linked with bsd library. */
+#undef FLOCK_NEEDS_LIBBSD
+
+/* Define if getpgrp() must be called as getpgrp(0). */
+#undef GETPGRP_HAVE_ARG
+
+/* Define if gettimeofday() does not have second (timezone) argument This is
+   the case on Motorola V4 (R40V4.2) */
+#undef GETTIMEOFDAY_NO_TZ
+
+/* Define to 1 if you have the `accept4' function. */
+#define HAVE_ACCEPT4 1
+
+/* Define to 1 if you have the `acosh' function. */
+#define HAVE_ACOSH 1
+
+/* struct addrinfo (netdb.h) */
+#define HAVE_ADDRINFO 1
+
+/* Define to 1 if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define if aligned memory access is required */
+#undef HAVE_ALIGNED_REQUIRED
+
+/* Define to 1 if you have the <alloca.h> header file. */
+#undef HAVE_ALLOCA_H
+
+#define alloca __ALLOCA
+
+/* Define this if your time.h defines altzone. */
+#undef HAVE_ALTZONE
+
+/* Define to 1 if you have the `asinh' function. */
+#define HAVE_ASINH 1
+
+/* Define to 1 if you have the <asm/types.h> header file. */
+#define HAVE_ASM_TYPES_H 1
+
+/* Define to 1 if you have the `atanh' function. */
+#define HAVE_ATANH 1
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+
+/* Define to 1 if you have the <bluetooth/bluetooth.h> header file. */
+#undef HAVE_BLUETOOTH_BLUETOOTH_H
+
+/* Define to 1 if you have the <bluetooth.h> header file. */
+#undef HAVE_BLUETOOTH_H
+
+/* Define if mbstowcs(NULL, "text", 0) does not return the number of wide
+   chars that would be converted. */
+#undef HAVE_BROKEN_MBSTOWCS
+
+/* Define if nice() returns success/failure instead of the new priority. */
+#undef HAVE_BROKEN_NICE
+
+/* Define if the system reports an invalid PIPE_BUF value. */
+#undef HAVE_BROKEN_PIPE_BUF
+
+/* Define if poll() sets errno on invalid file descriptors. */
+#undef HAVE_BROKEN_POLL
+
+/* Define if the Posix semaphores do not work on your system */
+#undef HAVE_BROKEN_POSIX_SEMAPHORES
+
+/* Define if pthread_sigmask() does not work on your system. */
+#undef HAVE_BROKEN_PTHREAD_SIGMASK
+
+/* define to 1 if your sem_getvalue is broken. */
+#undef HAVE_BROKEN_SEM_GETVALUE
+
+/* Define if `unsetenv` does not return an int. */
+#define HAVE_BROKEN_UNSETENV 1
+
+/* Has builtin atomics */
+#undef HAVE_BUILTIN_ATOMIC
+
+/* Define this if you have the type _Bool. */
+#define HAVE_C99_BOOL 1
+
+/* Define to 1 if you have the 'chflags' function. */
+#undef HAVE_CHFLAGS
+
+/* Define to 1 if you have the `chown' function. */
+#define HAVE_CHOWN 1
+
+/* Define if you have the 'chroot' function. */
+#undef HAVE_CHROOT
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define to 1 if you have the `clock_getres' function. */
+#define HAVE_CLOCK_GETRES 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the `clock_settime' function. */
+#undef HAVE_CLOCK_SETTIME
+
+/* Define if the C compiler supports computed gotos. */
+#undef HAVE_COMPUTED_GOTOS
+
+/* Define to 1 if you have the `confstr' function. */
+#define HAVE_CONFSTR 1
+
+/* Define to 1 if you have the <conio.h> header file. */
+#undef HAVE_CONIO_H
+
+/* Define to 1 if you have the `copysign' function. */
+#define HAVE_COPYSIGN 1
+
+/* Define to 1 if you have the `copy_file_range' function. */
+#undef HAVE_COPY_FILE_RANGE
+
+/* Define to 1 if you have the <crypt.h> header file. */
+#undef HAVE_CRYPT_H
+
+/* Define if you have the crypt_r() function. */
+#undef HAVE_CRYPT_R
+
+/* Define to 1 if you have the `ctermid' function. */
+#define HAVE_CTERMID 1
+
+/* Define if you have the 'ctermid_r' function. */
+#undef HAVE_CTERMID_R
+
+/* Define if you have the 'filter' function. */
+#undef HAVE_CURSES_FILTER
+
+/* Define to 1 if you have the <curses.h> header file. */
+#undef HAVE_CURSES_H
+
+/* Define if you have the 'has_key' function. */
+#undef HAVE_CURSES_HAS_KEY
+
+/* Define if you have the 'immedok' function. */
+#undef HAVE_CURSES_IMMEDOK
+
+/* Define if you have the 'is_pad' function or macro. */
+#undef HAVE_CURSES_IS_PAD
+
+/* Define if you have the 'is_term_resized' function. */
+#undef HAVE_CURSES_IS_TERM_RESIZED
+
+/* Define if you have the 'resizeterm' function. */
+#undef HAVE_CURSES_RESIZETERM
+
+/* Define if you have the 'resize_term' function. */
+#undef HAVE_CURSES_RESIZE_TERM
+
+/* Define if you have the 'syncok' function. */
+#undef HAVE_CURSES_SYNCOK
+
+/* Define if you have the 'typeahead' function. */
+#undef HAVE_CURSES_TYPEAHEAD
+
+/* Define if you have the 'use_env' function. */
+#undef HAVE_CURSES_USE_ENV
+
+/* Define if you have the 'wchgat' function. */
+#undef HAVE_CURSES_WCHGAT
+
+/* Define to 1 if you have the declaration of `isfinite', and to 0 if you
+   don't. */
+#undef HAVE_DECL_ISFINITE
+
+/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ISINF
+
+/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
+   */
+#define HAVE_DECL_ISNAN 1
+
+/* Define to 1 if you have the declaration of `RTLD_DEEPBIND', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_DEEPBIND
+
+/* Define to 1 if you have the declaration of `RTLD_GLOBAL', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_GLOBAL
+
+/* Define to 1 if you have the declaration of `RTLD_LAZY', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_LAZY
+
+/* Define to 1 if you have the declaration of `RTLD_LOCAL', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_LOCAL
+
+/* Define to 1 if you have the declaration of `RTLD_MEMBER', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_MEMBER
+
+/* Define to 1 if you have the declaration of `RTLD_NODELETE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_NODELETE
+
+/* Define to 1 if you have the declaration of `RTLD_NOLOAD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_NOLOAD
+
+/* Define to 1 if you have the declaration of `RTLD_NOW', and to 0 if you
+   don't. */
+#undef HAVE_DECL_RTLD_NOW
+
+/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
+   */
+#undef HAVE_DECL_TZNAME
+
+/* Define to 1 if you have the device macros. */
+#undef HAVE_DEVICE_MACROS
+
+/* Define to 1 if you have the /dev/ptc device file. */
+#undef HAVE_DEV_PTC
+
+/* Define to 1 if you have the /dev/ptmx device file. */
+#undef HAVE_DEV_PTMX
+
+/* Define to 1 if you have the <direct.h> header file. */
+#undef HAVE_DIRECT_H
+
+/* Define to 1 if the dirent structure has a d_type field */
+#undef HAVE_DIRENT_D_TYPE
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define if you have the 'dirfd' function or macro. */
+#undef HAVE_DIRFD
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `dlopen' function. */
+#define HAVE_DLOPEN 1
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define to 1 if you have the `dup3' function. */
+#undef HAVE_DUP3
+
+/* Defined when any dynamic module loading is enabled. */
+#define HAVE_DYNAMIC_LOADING 1
+
+/* Define to 1 if you have the <endian.h> header file. */
+#define HAVE_ENDIAN_H 1
+
+/* Define if you have the 'epoll' functions. */
+#undef HAVE_EPOLL
+
+/* Define if you have the 'epoll_create1' function. */
+#undef HAVE_EPOLL_CREATE1
+
+/* Define to 1 if you have the `erf' function. */
+#define HAVE_ERF 1
+
+/* Define to 1 if you have the `erfc' function. */
+#define HAVE_ERFC 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the `execv' function. */
+#define HAVE_EXECV 1
+
+/* Define to 1 if you have the `explicit_bzero' function. */
+#undef HAVE_EXPLICIT_BZERO
+
+/* Define to 1 if you have the `explicit_memset' function. */
+#undef HAVE_EXPLICIT_MEMSET
+
+/* Define to 1 if you have the `expm1' function. */
+#define HAVE_EXPM1 1
+
+/* Define to 1 if you have the `faccessat' function. */
+#undef HAVE_FACCESSAT
+
+/* Define if you have the 'fchdir' function. */
+#undef HAVE_FCHDIR
+
+/* Define to 1 if you have the `fchmod' function. */
+#define HAVE_FCHMOD 1
+
+/* Define to 1 if you have the `fchmodat' function. */
+#undef HAVE_FCHMODAT
+
+/* Define to 1 if you have the `fchown' function. */
+#define HAVE_FCHOWN 1
+
+/* Define to 1 if you have the `fchownat' function. */
+#undef HAVE_FCHOWNAT
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the 'fdatasync' function. */
+#undef HAVE_FDATASYNC
+
+/* Define to 1 if you have the `fdopendir' function. */
+#undef HAVE_FDOPENDIR
+
+/* Define to 1 if you have the `fdwalk' function. */
+#undef HAVE_FDWALK
+
+/* Define to 1 if you have the `fexecve' function. */
+#undef HAVE_FEXECVE
+
+/* Define to 1 if you have the `finite' function. */
+#undef HAVE_FINITE
+
+/* Define to 1 if you have the `flock' function. */
+#undef HAVE_FLOCK
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if you have the `forkpty' function. */
+#undef HAVE_FORKPTY
+
+/* Define to 1 if you have the `fpathconf' function. */
+#define HAVE_FPATHCONF 1
+
+/* Define to 1 if you have the `fseek64' function. */
+#undef HAVE_FSEEK64
+
+/* Define to 1 if you have the `fseeko' function. */
+#define HAVE_FSEEKO 1
+
+/* Define to 1 if you have the `fstatat' function. */
+#undef HAVE_FSTATAT
+
+/* Define to 1 if you have the `fstatvfs' function. */
+#define HAVE_FSTATVFS 1
+
+/* Define if you have the 'fsync' function. */
+#define HAVE_FSYNC 1
+
+/* Define to 1 if you have the `ftell64' function. */
+#undef HAVE_FTELL64
+
+/* Define to 1 if you have the `ftello' function. */
+#define HAVE_FTELLO 1
+
+/* Define to 1 if you have the `ftime' function. */
+#define HAVE_FTIME 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `futimens' function. */
+#undef HAVE_FUTIMENS
+
+/* Define to 1 if you have the `futimes' function. */
+#undef HAVE_FUTIMES
+
+/* Define to 1 if you have the `futimesat' function. */
+#undef HAVE_FUTIMESAT
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#define HAVE_GAI_STRERROR 1
+
+/* Define to 1 if you have the `gamma' function. */
+#define HAVE_GAMMA 1
+
+/* Define if we can use gcc inline assembler to get and set mc68881 fpcr */
+#undef HAVE_GCC_ASM_FOR_MC68881
+
+/* Define if we can use x64 gcc inline assembler */
+#undef HAVE_GCC_ASM_FOR_X64
+
+/* Define if we can use gcc inline assembler to get and set x87 control word
+   */
+#undef HAVE_GCC_ASM_FOR_X87
+
+/* Define if your compiler provides __uint128_t */
+#undef HAVE_GCC_UINT128_T
+
+/* Define if you have the getaddrinfo function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */
+#define HAVE_GETC_UNLOCKED 1
+
+/* Define to 1 if you have the `getentropy' function. */
+#define HAVE_GETENTROPY 1
+
+/* Define to 1 if you have the `getgrgid_r' function. */
+#undef HAVE_GETGRGID_R
+
+/* Define to 1 if you have the `getgrnam_r' function. */
+#undef HAVE_GETGRNAM_R
+
+/* Define to 1 if you have the `getgrouplist' function. */
+#undef HAVE_GETGROUPLIST
+
+/* Define to 1 if you have the `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
+/* Define this if you have some version of gethostbyname_r() */
+#define HAVE_GETHOSTBYNAME_R 1
+
+/* Define this if you have the 3-arg version of gethostbyname_r(). */
+#undef HAVE_GETHOSTBYNAME_R_3_ARG
+
+/* Define this if you have the 5-arg version of gethostbyname_r(). */
+#undef HAVE_GETHOSTBYNAME_R_5_ARG
+
+/* Define this if you have the 6-arg version of gethostbyname_r(). */
+#define HAVE_GETHOSTBYNAME_R_6_ARG 1
+
+/* Define to 1 if you have the `getitimer' function. */
+#define HAVE_GETITIMER 1
+
+/* Define to 1 if you have the `getloadavg' function. */
+#undef HAVE_GETLOADAVG
+
+/* Define to 1 if you have the `getlogin' function. */
+#define HAVE_GETLOGIN 1
+
+/* Define to 1 if you have the `getnameinfo' function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define if you have the 'getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getpeername' function. */
+#define HAVE_GETPEERNAME 1
+
+/* Define to 1 if you have the `getpgid' function. */
+#define HAVE_GETPGID 1
+
+/* Define to 1 if you have the `getpgrp' function. */
+#define HAVE_GETPGRP 1
+
+/* Define to 1 if you have the `getpid' function. */
+#define HAVE_GETPID 1
+
+/* Define to 1 if you have the `getpriority' function. */
+#undef HAVE_GETPRIORITY
+
+/* Define to 1 if you have the `getpwent' function. */
+#define HAVE_GETPWENT 1
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+#undef HAVE_GETPWNAM_R
+
+/* Define to 1 if you have the `getpwuid_r' function. */
+#define HAVE_GETPWUID_R 1
+
+/* Define to 1 if the getrandom() function is available */
+#undef HAVE_GETRANDOM
+
+/* Define to 1 if the Linux getrandom() syscall is available */
+#undef HAVE_GETRANDOM_SYSCALL
+
+/* Define to 1 if you have the `getresgid' function. */
+#undef HAVE_GETRESGID
+
+/* Define to 1 if you have the `getresuid' function. */
+#undef HAVE_GETRESUID
+
+/* Define to 1 if you have the `getsid' function. */
+#define HAVE_GETSID 1
+
+/* Define to 1 if you have the `getspent' function. */
+#undef HAVE_GETSPENT
+
+/* Define to 1 if you have the `getspnam' function. */
+#undef HAVE_GETSPNAM
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getwd' function. */
+#define HAVE_GETWD 1
+
+/* Define if glibc has incorrect _FORTIFY_SOURCE wrappers for memmove and
+   bcopy. */
+#undef HAVE_GLIBC_MEMMOVE_BUG
+
+/* Define to 1 if you have the <grp.h> header file. */
+#define HAVE_GRP_H 1
+
+/* Define if you have the 'hstrerror' function. */
+#undef HAVE_HSTRERROR
+
+/* Define this if you have le64toh() */
+#define HAVE_HTOLE64 1
+
+/* Define to 1 if you have the `hypot' function. */
+#define HAVE_HYPOT 1
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#undef HAVE_IEEEFP_H
+
+/* Define to 1 if you have the `if_nameindex' function. */
+#define HAVE_IF_NAMEINDEX 1
+
+/* Define if you have the 'inet_aton' function. */
+#define HAVE_INET_ATON 1
+
+/* Define if you have the 'inet_pton' function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
+
+/* Define if your compiler provides int32_t. */
+#define HAVE_INT32_T 1
+
+/* Define if your compiler provides int64_t. */
+#define HAVE_INT64_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <io.h> header file. */
+#undef HAVE_IO_H
+
+/* Define if gcc has the ipa-pure-const bug. */
+#undef HAVE_IPA_PURE_CONST_BUG
+
+/* Define to 1 if you have the `kill' function. */
+#define HAVE_KILL 1
+
+/* Define to 1 if you have the `killpg' function. */
+#undef HAVE_KILLPG
+
+/* Define if you have the 'kqueue' functions. */
+#undef HAVE_KQUEUE
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#define HAVE_LANGINFO_H 1
+
+/* Defined to enable large file support when an off_t is bigger than a long
+   and long long is at least as big as an off_t. You may need to add some
+   flags for configuration and compilation to enable this mode. (For Solaris
+   and Linux, the necessary defines are already defined.) */
+#undef HAVE_LARGEFILE_SUPPORT
+
+/* Define to 1 if you have the 'lchflags' function. */
+#undef HAVE_LCHFLAGS
+
+/* Define to 1 if you have the `lchmod' function. */
+#undef HAVE_LCHMOD
+
+/* Define to 1 if you have the `lchown' function. */
+#define HAVE_LCHOWN 1
+
+/* Define to 1 if you have the `lgamma' function. */
+#define HAVE_LGAMMA 1
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#define HAVE_LIBDL 1
+
+/* Define to 1 if you have the `dld' library (-ldld). */
+#undef HAVE_LIBDLD
+
+/* Define to 1 if you have the `ieee' library (-lieee). */
+#undef HAVE_LIBIEEE
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#undef HAVE_LIBINTL_H
+
+/* Define if you have the readline library (-lreadline). */
+#define HAVE_LIBREADLINE 1
+
+/* Define to 1 if you have the `resolv' library (-lresolv). */
+#undef HAVE_LIBRESOLV
+
+/* Define to 1 if you have the `sendfile' library (-lsendfile). */
+#undef HAVE_LIBSENDFILE
+
+/* Define to 1 if you have the <libutil.h> header file. */
+#undef HAVE_LIBUTIL_H
+
+/* Define if you have the 'link' function. */
+#define HAVE_LINK 1
+
+/* Define to 1 if you have the `linkat' function. */
+#undef HAVE_LINKAT
+
+/* Define to 1 if you have the <linux/can/bcm.h> header file. */
+#undef HAVE_LINUX_CAN_BCM_H
+
+/* Define to 1 if you have the <linux/can.h> header file. */
+#undef HAVE_LINUX_CAN_H
+
+/* Define if compiling using Linux 3.6 or later. */
+#undef HAVE_LINUX_CAN_RAW_FD_FRAMES
+
+/* Define to 1 if you have the <linux/can/raw.h> header file. */
+#undef HAVE_LINUX_CAN_RAW_H
+
+/* Define to 1 if you have the <linux/memfd.h> header file. */
+#undef HAVE_LINUX_MEMFD_H
+
+/* Define to 1 if you have the <linux/netlink.h> header file. */
+#undef HAVE_LINUX_NETLINK_H
+
+/* Define to 1 if you have the <linux/qrtr.h> header file. */
+#undef HAVE_LINUX_QRTR_H
+
+/* Define to 1 if you have the <linux/random.h> header file. */
+#undef HAVE_LINUX_RANDOM_H
+
+/* Define to 1 if you have the <linux/tipc.h> header file. */
+#undef HAVE_LINUX_TIPC_H
+
+/* Define to 1 if you have the <linux/vm_sockets.h> header file. */
+#undef HAVE_LINUX_VM_SOCKETS_H
+
+/* Define to 1 if you have the `lockf' function. */
+#undef HAVE_LOCKF
+
+/* Define to 1 if you have the `log1p' function. */
+#define HAVE_LOG1P 1
+
+/* Define to 1 if you have the `log2' function. */
+#define HAVE_LOG2 1
+
+/* Define to 1 if the system has the type `long double'. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define this if you have the type long long. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define to 1 if you have the `lutimes' function. */
+#undef HAVE_LUTIMES
+
+/* Define to 1 if you have the `madvise' function. */
+#undef HAVE_MADVISE
+
+/* Define this if you have the makedev macro. */
+#undef HAVE_MAKEDEV
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
+/* Define if you have the 'memfd_create' function. */
+#undef HAVE_MEMFD_CREATE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if you have the `mkdirat' function. */
+#undef HAVE_MKDIRAT
+
+/* Define to 1 if you have the `mkfifo' function. */
+#undef HAVE_MKFIFO
+
+/* Define to 1 if you have the `mkfifoat' function. */
+#undef HAVE_MKFIFOAT
+
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
+/* Define to 1 if you have the `mknodat' function. */
+#undef HAVE_MKNODAT
+
+/* Define to 1 if you have the `mktime' function. */
+#define HAVE_MKTIME 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `mremap' function. */
+#undef HAVE_MREMAP
+
+/* Define to 1 if you have the <ncurses.h> header file. */
+#undef HAVE_NCURSES_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the <netpacket/packet.h> header file. */
+#undef HAVE_NETPACKET_PACKET_H
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have the `nice' function. */
+#define HAVE_NICE 1
+
+/* Define to 1 if you have the `openat' function. */
+#undef HAVE_OPENAT
+
+/* Define to 1 if you have the `openpty' function. */
+#undef HAVE_OPENPTY
+
+/* Define to 1 if you have the `pathconf' function. */
+#define HAVE_PATHCONF 1
+
+/* Define to 1 if you have the `pause' function. */
+#define HAVE_PAUSE 1
+
+/* Define to 1 if you have the `pipe2' function. */
+#undef HAVE_PIPE2
+
+/* Define to 1 if you have the `plock' function. */
+#undef HAVE_PLOCK
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the <poll.h> header file. */
+#define HAVE_POLL_H 1
+
+/* Define to 1 if you have the `posix_fadvise' function. */
+#undef HAVE_POSIX_FADVISE
+
+/* Define to 1 if you have the `posix_fallocate' function. */
+#undef HAVE_POSIX_FALLOCATE
+
+/* Define to 1 if you have the `posix_spawn' function. */
+#undef HAVE_POSIX_SPAWN
+
+/* Define to 1 if you have the `posix_spawnp' function. */
+#undef HAVE_POSIX_SPAWNP
+
+/* Define to 1 if you have the `pread' function. */
+#define HAVE_PREAD 1
+
+/* Define to 1 if you have the `preadv' function. */
+#undef HAVE_PREADV
+
+/* Define to 1 if you have the `preadv2' function. */
+#undef HAVE_PREADV2
+
+/* Define if you have the 'prlimit' functions. */
+#define HAVE_PRLIMIT 1
+
+/* Define to 1 if you have the <process.h> header file. */
+#undef HAVE_PROCESS_H
+
+/* Define if your compiler supports function prototype */
+#define HAVE_PROTOTYPES 1
+
+/* Define to 1 if you have the `pthread_atfork' function. */
+#undef HAVE_PTHREAD_ATFORK
+
+/* Define to 1 if you have the `pthread_condattr_setclock' function. */
+#undef HAVE_PTHREAD_CONDATTR_SETCLOCK
+
+/* Defined for Solaris 2.6 bug in pthread header. */
+#undef HAVE_PTHREAD_DESTRUCTOR
+
+/* Define to 1 if you have the `pthread_getcpuclockid' function. */
+#undef HAVE_PTHREAD_GETCPUCLOCKID
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the `pthread_init' function. */
+#undef HAVE_PTHREAD_INIT
+
+/* Define to 1 if you have the `pthread_kill' function. */
+#undef HAVE_PTHREAD_KILL
+
+/* Define to 1 if you have the `pthread_sigmask' function. */
+#undef HAVE_PTHREAD_SIGMASK
+
+/* Define to 1 if you have the <pty.h> header file. */
+#define HAVE_PTY_H 1
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define to 1 if you have the `pwrite' function. */
+#define HAVE_PWRITE 1
+
+/* Define if the libcrypto has RAND_egd */
+#define HAVE_RAND_EGD 1
+
+/* Define to 1 if you have the `pwritev' function. */
+#undef HAVE_PWRITEV
+
+/* Define to 1 if you have the `pwritev2' function. */
+#undef HAVE_PWRITEV2
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the `readlinkat' function. */
+#undef HAVE_READLINKAT
+
+/* Define to 1 if you have the `readv' function. */
+#define HAVE_READV 1
+
+/* Define to 1 if you have the `realpath' function. */
+#define HAVE_REALPATH 1
+
+/* Define to 1 if you have the `renameat' function. */
+#undef HAVE_RENAMEAT
+
+/* Define if readline supports append_history */
+#define HAVE_RL_APPEND_HISTORY 1
+
+/* Define if you can turn off readline's signal handling. */
+#define HAVE_RL_CATCH_SIGNAL 1
+
+/* Define if you have readline 2.2 */
+#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1
+
+/* Define if you have readline 4.0 */
+#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1
+
+/* Define if you have readline 4.2 */
+#define HAVE_RL_COMPLETION_MATCHES 1
+
+/* Define if you have rl_completion_suppress_append */
+#define HAVE_RL_COMPLETION_SUPPRESS_APPEND 1
+
+/* Define if you have readline 4.0 */
+#define HAVE_RL_PRE_INPUT_HOOK 1
+
+/* Define if you have readline 4.0 */
+#undef HAVE_RL_RESIZE_TERMINAL
+
+/* Define to 1 if you have the `round' function. */
+#undef HAVE_ROUND
+#if __CRTL_VER > 80400000
+#define HAVE_ROUND 1
+#endif
+
+/* Define to 1 if you have the `rtpSpawn' function. */
+#undef HAVE_RTPSPAWN
+
+/* Define to 1 if you have the `sched_get_priority_max' function. */
+#define HAVE_SCHED_GET_PRIORITY_MAX 1
+
+/* Define to 1 if you have the <sched.h> header file. */
+#undef HAVE_SCHED_H
+
+/* Define to 1 if you have the `sched_rr_get_interval' function. */
+#define HAVE_SCHED_RR_GET_INTERVAL 1
+
+/* Define to 1 if you have the `sched_setaffinity' function. */
+#define HAVE_SCHED_SETAFFINITY 1
+
+/* Define to 1 if you have the `sched_setparam' function. */
+#undef HAVE_SCHED_SETPARAM
+
+/* Define to 1 if you have the `sched_setscheduler' function. */
+#undef HAVE_SCHED_SETSCHEDULER
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `sem_getvalue' function. */
+#define HAVE_SEM_GETVALUE 1
+
+/* Define to 1 if you have the `sem_open' function. */
+#define HAVE_SEM_OPEN 1
+
+/* Define to 1 if you have the `sem_timedwait' function. */
+#define HAVE_SEM_TIMEDWAIT 1
+
+/* Define to 1 if you have the `sem_unlink' function. */
+#define HAVE_SEM_UNLINK 1
+
+/* Define to 1 if you have the `sendfile' function. */
+#undef HAVE_SENDFILE
+
+/* Define to 1 if you have the `setegid' function. */
+#undef HAVE_SETEGID
+
+/* Define to 1 if you have the `seteuid' function. */
+#define HAVE_SETEUID 1
+
+/* Define to 1 if you have the `setgid' function. */
+#define HAVE_SETGID 1
+
+/* Define if you have the 'setgroups' function. */
+#undef HAVE_SETGROUPS
+
+/* Define to 1 if you have the `sethostname' function. */
+#undef HAVE_SETHOSTNAME
+
+/* Define to 1 if you have the `setitimer' function. */
+#define HAVE_SETITIMER 1
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the `setpgid' function. */
+#define HAVE_SETPGID 1
+
+/* Define to 1 if you have the `setpgrp' function. */
+#define HAVE_SETPGRP 1
+
+/* Define to 1 if you have the `setpriority' function. */
+#undef HAVE_SETPRIORITY
+
+/* Define to 1 if you have the `setregid' function. */
+#define HAVE_SETREGID 1
+
+/* Define to 1 if you have the `setresgid' function. */
+#undef HAVE_SETRESGID
+
+/* Define to 1 if you have the `setresuid' function. */
+#undef HAVE_SETRESUID
+
+/* Define to 1 if you have the `setreuid' function. */
+#define HAVE_SETREUID 1
+
+/* Define to 1 if you have the `setsid' function. */
+#define HAVE_SETSID 1
+
+/* Define to 1 if you have the `setuid' function. */
+#define HAVE_SETUID 1
+
+/* Define to 1 if you have the `setvbuf' function. */
+#define HAVE_SETVBUF 1
+
+/* Define to 1 if you have the <shadow.h> header file. */
+#undef HAVE_SHADOW_H
+
+/* Define to 1 if you have the `shm_open' function. */
+#define HAVE_SHM_OPEN 1
+
+/* Define to 1 if you have the `shm_unlink' function. */
+#define HAVE_SHM_UNLINK 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#undef HAVE_SIGALTSTACK
+
+/* Define to 1 if you have the `sigfillset' function. */
+#define HAVE_SIGFILLSET 1
+
+/* Define to 1 if `si_band' is a member of `siginfo_t'. */
+#define HAVE_SIGINFO_T_SI_BAND 1
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#undef HAVE_SIGINTERRUPT
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `sigpending' function. */
+#define HAVE_SIGPENDING 1
+
+/* Define to 1 if you have the `sigrelse' function. */
+#define HAVE_SIGRELSE 1
+
+/* Define to 1 if you have the `sigtimedwait' function. */
+#define HAVE_SIGTIMEDWAIT 1
+
+/* Define to 1 if you have the `sigwait' function. */
+#define HAVE_SIGWAIT 1
+
+/* Define to 1 if you have the `sigwaitinfo' function. */
+#define HAVE_SIGWAITINFO 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* struct sockaddr_alg (linux/if_alg.h) */
+#undef HAVE_SOCKADDR_ALG
+
+/* Define if sockaddr has sa_len member */
+#undef HAVE_SOCKADDR_SA_LEN
+#undef _SOCKADDR_LEN
+#define HAVE_SOCKADDR_SA_LEN 1
+#define _SOCKADDR_LEN 1
+
+/* struct sockaddr_storage (sys/socket.h) */
+#define HAVE_SOCKADDR_STORAGE 1
+
+/* Define if you have the 'socketpair' function. */
+#define HAVE_SOCKETPAIR 1
+
+/* Define to 1 if you have the <spawn.h> header file. */
+#define HAVE_SPAWN_H 1
+
+/* Define if your compiler provides ssize_t */
+#define HAVE_SSIZE_T 1
+
+/* Define to 1 if you have the `statvfs' function. */
+#define HAVE_STATVFS 1
+
+/* Define if you have struct stat.st_mtim.tv_nsec */
+#undef HAVE_STAT_TV_NSEC
+
+/* Define if you have struct stat.st_mtimensec */
+#undef HAVE_STAT_TV_NSEC2
+
+/* Define if your compiler supports variable length function prototypes (e.g.
+   void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
+#define HAVE_STDARG_PROTOTYPES 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Has stdatomic.h with atomic_int and atomic_uintptr_t */
+#undef HAVE_STD_ATOMIC
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcpy' function. */
+#undef HAVE_STRLCPY
+
+/* Define to 1 if you have the <stropts.h> header file. */
+#define HAVE_STROPTS_H 1
+
+/* Define to 1 if you have the `strsignal' function. */
+#undef HAVE_STRSIGNAL
+
+/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */
+#undef HAVE_STRUCT_PASSWD_PW_GECOS
+
+/* Define to 1 if `pw_passwd' is a member of `struct passwd'. */
+#undef HAVE_STRUCT_PASSWD_PW_PASSWD
+
+/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BIRTHTIME
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define to 1 if `st_flags' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_FLAGS
+
+/* Define to 1 if `st_gen' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_GEN
+
+/* Define to 1 if `st_rdev' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+
+/* Define to 1 if `tm_zone' is a member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
+   `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
+#define HAVE_ST_BLOCKS 1
+
+/* Define if you have the 'symlink' function. */
+#define HAVE_SYMLINK 1
+
+/* Define to 1 if you have the `symlinkat' function. */
+#undef HAVE_SYMLINKAT
+
+/* Define to 1 if you have the `sync' function. */
+#undef HAVE_SYNC
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the <sysexits.h> header file. */
+#undef HAVE_SYSEXITS_H
+
+/* Define to 1 if you have the <sys/audioio.h> header file. */
+#undef HAVE_SYS_AUDIOIO_H
+
+/* Define to 1 if you have the <sys/bsdtty.h> header file. */
+#undef HAVE_SYS_BSDTTY_H
+
+/* Define to 1 if you have the <sys/devpoll.h> header file. */
+#undef HAVE_SYS_DEVPOLL_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/endian.h> header file. */
+#undef HAVE_SYS_ENDIAN_H
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+#undef HAVE_SYS_EPOLL_H
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+#undef HAVE_SYS_EVENT_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/kern_control.h> header file. */
+#undef HAVE_SYS_KERN_CONTROL_H
+
+/* Define to 1 if you have the <sys/loadavg.h> header file. */
+#undef HAVE_SYS_LOADAVG_H
+
+/* Define to 1 if you have the <sys/lock.h> header file. */
+#undef HAVE_SYS_LOCK_H
+
+/* Define to 1 if you have the <sys/memfd.h> header file. */
+#undef HAVE_SYS_MEMFD_H
+
+/* Define to 1 if you have the <sys/mkdev.h> header file. */
+#undef HAVE_SYS_MKDEV_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/modem.h> header file. */
+#undef HAVE_SYS_MODEM_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#define HAVE_SYS_POLL_H 1
+
+/* Define to 1 if you have the <sys/random.h> header file. */
+#undef HAVE_SYS_RANDOM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/sendfile.h> header file. */
+#undef HAVE_SYS_SENDFILE_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#define HAVE_SYS_STATVFS_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/syscall.h> header file. */
+#undef HAVE_SYS_SYSCALL_H
+
+/* Define to 1 if you have the <sys/sysmacros.h> header file. */
+#undef HAVE_SYS_SYSMACROS_H
+
+/* Define to 1 if you have the <sys/sys_domain.h> header file. */
+#undef HAVE_SYS_SYS_DOMAIN_H
+
+/* Define to 1 if you have the <sys/termio.h> header file. */
+#undef HAVE_SYS_TERMIO_H
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#define HAVE_SYS_UN_H 1
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+#define HAVE_SYS_UTSNAME_H 1
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the <sys/xattr.h> header file. */
+#define HAVE_SYS_XATTR_H 1
+
+/* Define to 1 if you have the `tcgetpgrp' function. */
+#undef HAVE_TCGETPGRP
+
+/* Define to 1 if you have the `tcsetpgrp' function. */
+#undef HAVE_TCSETPGRP
+
+/* Define to 1 if you have the `tempnam' function. */
+#define HAVE_TEMPNAM 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the <term.h> header file. */
+#undef HAVE_TERM_H
+
+/* Define to 1 if you have the `tgamma' function. */
+#define HAVE_TGAMMA 1
+
+/* Define to 1 if you have the `timegm' function. */
+#undef HAVE_TIMEGM
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if you have the `tmpfile' function. */
+#define HAVE_TMPFILE 1
+
+/* Define to 1 if you have the `tmpnam' function. */
+#define HAVE_TMPNAM 1
+
+/* Define to 1 if you have the `tmpnam_r' function. */
+#define HAVE_TMPNAM_R 1
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+   `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#define HAVE_TM_ZONE 1
+
+/* Define to 1 if you have the `truncate' function. */
+#define HAVE_TRUNCATE 1
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+   `tzname'. */
+#undef HAVE_TZNAME
+
+/* Define this if you have tcl and TCL_UTF_MAX==6 */
+#undef HAVE_UCS4_TCL
+
+/* Define if your compiler provides uint32_t. */
+#define HAVE_UINT32_T 1
+
+/* Define if your compiler provides uint64_t. */
+#define HAVE_UINT64_T 1
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#define HAVE_UINTPTR_T 1
+
+/* Define to 1 if you have the `uname' function. */
+#define HAVE_UNAME 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unlinkat' function. */
+#undef HAVE_UNLINKAT
+
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
+/* Define if you have a useable wchar_t type defined in wchar.h; useable means
+   wchar_t must be an unsigned type with at least 16 bits. (see
+   Include/unicodeobject.h). */
+#define HAVE_USABLE_WCHAR_T 1
+
+/* Define to 1 if you have the <util.h> header file. */
+#undef HAVE_UTIL_H
+
+/* Define to 1 if you have the `utimensat' function. */
+#undef HAVE_UTIMENSAT
+
+/* Define to 1 if you have the `utimes' function. */
+#define HAVE_UTIMES 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define if uuid_create() exists. */
+#undef HAVE_UUID_CREATE
+
+/* Define if uuid_enc_be() exists. */
+#undef HAVE_UUID_ENC_BE
+
+/* Define if uuid_generate_time_safe() exists. */
+#undef HAVE_UUID_GENERATE_TIME_SAFE
+
+/* Define to 1 if you have the <uuid.h> header file. */
+#undef HAVE_UUID_H
+
+/* Define to 1 if you have the <uuid/uuid.h> header file. */
+#undef HAVE_UUID_UUID_H
+
+/* Define to 1 if you have the `wait3' function. */
+#undef HAVE_WAIT3
+
+/* Define to 1 if you have the `wait4' function. */
+#undef HAVE_WAIT4
+
+/* Define to 1 if you have the `waitid' function. */
+#undef HAVE_WAITID
+
+/* Define to 1 if you have the `waitpid' function. */
+#define HAVE_WAITPID 1
+
+/* Define if the compiler provides a wchar.h header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcsftime' function. */
+/* Actually OpenVMS has `wcsftime' function, but it does not work as it is supposed to work */
+#undef HAVE_WCSFTIME
+
+/* Define to 1 if you have the `wcsxfrm' function. */
+/* Actually OpenVMS has `wcsxfrm' function, but it returns non-unicode strings */
+#undef HAVE_WCSXFRM
+
+/* Define to 1 if you have the `wmemcmp' function. */
+#undef HAVE_WMEMCMP
+
+/* Define if tzset() actually switches the local timezone in a meaningful way.
+   */
+#define HAVE_WORKING_TZSET 1
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+
+/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
+#undef HAVE_X509_VERIFY_PARAM_SET1_HOST
+
+/* Define if the zlib library has inflateCopy */
+#define HAVE_ZLIB_COPY 1
+
+/* Define to 1 if you have the `_getpty' function. */
+#undef HAVE__GETPTY
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+   */
+#undef MAJOR_IN_MKDEV
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+   <sysmacros.h>. */
+#undef MAJOR_IN_SYSMACROS
+
+/* Define if mvwdelch in curses.h is an expression. */
+#undef MVWDELCH_IS_EXPRESSION
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define if POSIX semaphores aren't enabled on your system */
+#undef POSIX_SEMAPHORES_NOT_ENABLED
+
+/* Define if pthread_key_t is compatible with int. */
+#undef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT
+
+/* Defined if PTHREAD_SCOPE_SYSTEM supported. */
+#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1
+
+/* Define as the preferred size in bits of long digits */
+#undef PYLONG_BITS_IN_DIGIT
+
+/* Define to printf format modifier for long long type */
+#define PY_FORMAT_LONG_LONG "ll"
+
+/* Define to printf format modifier for Py_ssize_t */
+/* #define PY_FORMAT_SIZE_T "z" */
+#define PY_FORMAT_SIZE_T "l"
+
+/* Define if you want to coerce the C locale to a UTF-8 based locale */
+#undef PY_COERCE_C_LOCALE
+
+/* Default cipher suites list for ssl module. 1: Python's preferred selection,
+   2: leave OpenSSL defaults untouched, 0: custom string */
+#undef PY_SSL_DEFAULT_CIPHERS
+
+/* Cipher suite string for PY_SSL_DEFAULT_CIPHERS=0 */
+#undef PY_SSL_DEFAULT_CIPHER_STRING
+
+/* Define if you want to build an interpreter with many run-time checks. */
+/* #undef Py_DEBUG */
+
+/* Defined if Python is built as a shared library. */
+/* #undef Py_ENABLE_SHARED */
+
+/* Define hash algorithm for str, bytes and memoryview. SipHash24: 1, FNV: 2,
+   externally defined: 0 */
+#undef Py_HASH_ALGORITHM
+
+/* Define if you want to enable tracing references for debugging purpose */
+#undef Py_TRACE_REFS
+
+/* assume C89 semantics that RETSIGTYPE is always void */
+#define RETSIGTYPE void
+
+/* Define if setpgrp() must be called as setpgrp(0, 0). */
+#undef SETPGRP_HAVE_ARG
+
+/* Define to 1 if you must link with -lrt for shm_open(). */
+#undef SHM_NEEDS_LIBRT
+
+/* Define if i>>j for signed int i does not extend the sign bit when i < 0 */
+#undef SIGNED_RIGHT_SHIFT_ZERO_FILLS
+
+/* The size of `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of `float', as computed by sizeof. */
+#define SIZEOF_FLOAT 4
+
+/* The size of `fpos_t', as computed by sizeof. */
+#define SIZEOF_FPOS_T 8
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `long double', as computed by sizeof. */
+#define SIZEOF_LONG_DOUBLE 16
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* The size of `off_t', as computed by sizeof. */
+#define SIZEOF_OFF_T 4
+
+/* The size of `pid_t', as computed by sizeof. */
+#define SIZEOF_PID_T 4
+
+/* The size of `pthread_key_t', as computed by sizeof. */
+#undef SIZEOF_PTHREAD_KEY_T
+
+/* The size of `pthread_t', as computed by sizeof. */
+#define SIZEOF_PTHREAD_T 8
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `time_t', as computed by sizeof. */
+#define SIZEOF_TIME_T 4
+
+/* The size of `uintptr_t', as computed by sizeof. */
+#define SIZEOF_UINTPTR_T 8
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 4
+
+/* The size of `wchar_t', as computed by sizeof. */
+#define SIZEOF_WCHAR_T 4
+
+/* The size of `_Bool', as computed by sizeof. */
+#define SIZEOF__BOOL 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/select.h> and <sys/time.h>
+   (which you can't on SCO ODT 3.0). */
+#define SYS_SELECT_WITH_SYS_TIME 1
+
+/* Define if tanh(-0.) is -0., or if platform doesn't have signed zeros */
+#define TANH_PRESERVES_ZERO_SIGN 1
+
+/* Library needed by timemodule.c: librt may be needed for clock_gettime() */
+#undef TIMEMODULE_LIB
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define if you want to use computed gotos in ceval.c. */
+#undef USE_COMPUTED_GOTOS
+
+/* Define to use the C99 inline keyword. */
+#define USE_INLINE 1
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+
+
+/* Define if WINDOW in curses.h offers a field _flags. */
+#undef WINDOW_HAS_FLAGS
+
+/* Define if you want documentation strings in extension modules */
+#define WITH_DOC_STRINGS 1
+
+/* Define if you want to compile in DTrace support */
+#undef WITH_DTRACE
+
+/* Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic
+   linker (dyld) instead of the old-style (NextStep) dynamic linker (rld).
+   Dyld is necessary to support frameworks. */
+#undef WITH_DYLD
+
+/* Define to 1 if libintl is needed for locale functions. */
+#undef WITH_LIBINTL
+
+/* Define if you want to produce an OpenStep/Rhapsody framework (shared
+   library plus accessory files). */
+#undef WITH_NEXT_FRAMEWORK
+
+/* Define if you want to compile in Python-specific mallocs */
+#define WITH_PYMALLOC 1
+
+/* Define if you want to compile in rudimentary thread support */
+#define WITH_THREAD 1
+
+/* Define if you want pymalloc to be disabled when running under valgrind */
+#undef WITH_VALGRIND
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* #  undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define if arithmetic is subject to x87-style double rounding issue */
+#undef X87_DOUBLE_ROUNDING
+
+/* Define on OpenBSD to activate all library features */
+#undef _BSD_SOURCE
+
+/* Define on Irix to enable u_int */
+#define _BSD_TYPES 1
+
+/* Define on Darwin to activate all library features */
+#define _DARWIN_C_SOURCE 1
+
+/* This must be set to 64 on some systems to enable large file support. */
+#define _FILE_OFFSET_BITS 64
+
+/* Define on Linux to activate all library features */
+#define _GNU_SOURCE 1
+
+/* Define to include mbstate_t for mbrtowc */
+#undef _INCLUDE__STDC_A1_SOURCE
+
+/* This must be defined on some systems to enable large file support. */
+#define _LARGEFILE_SOURCE 1
+
+/* This must be defined on AIX systems to enable large file support. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define on NetBSD to activate all library features */
+#define _NETBSD_SOURCE 1
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to activate features from IEEE Stds 1003.1-2008 */
+#define _POSIX_C_SOURCE 200809L
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#define _POSIX_SOURCE 1
+
+/* Define if you have POSIX threads, and your system does not define that. */
+#define _POSIX_THREADS
+
+/* framework name */
+#define _PYTHONFRAMEWORK ""
+
+/* Define to force use of thread-safe errno, h_errno, and other functions */
+#undef _REENTRANT
+
+/* Define to the level of X/Open that your system supports */
+#define _XOPEN_SOURCE 700
+
+/* Define to activate Unix95-and-earlier features */
+#define _XOPEN_SOURCE_EXTENDED 1
+
+/* Define on FreeBSD to activate all library features */
+#define __BSD_VISIBLE 1
+
+/* Define to 1 if type `char' is unsigned and you are not using gcc.  */
+#ifndef __CHAR_UNSIGNED__
+/* # undef __CHAR_UNSIGNED__ */
+#endif
+
+/* Define to 'long' if <time.h> doesn't define. */
+#undef clock_t
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to empty if the keyword does not work. */
+#undef signed
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to `int' if <sys/socket.h> does not define. */
+/* #undef socklen_t */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+
+/* Define the macros needed if on a UnixWare 7.x system. */
+#if defined(__USLC__) && defined(__SCO_VERSION__)
+#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
+#endif
+
+/* VMS specific */
+
+#ifndef INT32_MIN
+#define INT32_MIN __INT32_MIN
+#endif
+
+#ifndef INT32_MAX
+#define INT32_MAX __INT32_MAX
+#endif
+
+#ifndef INT64_MIN
+#define INT64_MIN __INT64_MIN
+#endif
+
+#ifndef INT64_MAX
+#define INT64_MAX __INT64_MAX
+#endif
+
+#ifndef UINT32_MAX
+#define UINT32_MAX __UINT32_MAX
+#endif
+
+#ifndef UINT64_MAX
+#define UINT64_MAX __UINT64_MAX
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX __UINT32_MAX
+#endif
+
+#ifndef LLONG_MIN
+#define LLONG_MIN __INT64_MIN
+#endif
+
+#ifndef LLONG_MAX
+#define LLONG_MAX __INT64_MAX
+#endif
+
+#ifndef ULLONG_MAX
+#define ULLONG_MAX __UINT64_MAX
+#endif
+
+#define va_copy(dest,src)       ((dest) = (src))
+
+#define WCSTOK(a,b,c) wcstok((a),(b))
+
+#if !defined __SOCKET_TYPEDEFS
+#   define __SOCKET_TYPEDEFS 1
+    typedef unsigned char  u_char;
+    typedef unsigned short u_short;
+    typedef unsigned long  u_long;
+#endif
+
+/* the following macros come from Python: Modules/signalmodule.c */
+#ifndef NSIG
+# if defined(_NSIG)
+#  define NSIG _NSIG            /* For BSD/SysV */
+# elif defined(_SIGMAX)
+#  define NSIG (_SIGMAX + 1)    /* For QNX */
+# elif defined(SIGMAX)
+#  define NSIG (SIGMAX + 1)     /* For djgpp */
+# else
+#  define NSIG 64               /* Use a reasonable default value */
+# endif
+#endif
+
+#endif /*Py_PYCONFIG_H*/
+
diff --git a/vms/python$define_root.com b/vms/python$define_root.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRkZWZpbmVfcm9vdC5jb20=
--- /dev/null
+++ b/vms/python$define_root.com
@@ -0,0 +1,18 @@
+$! 'f$verify(0)
+$
+$! Create python$define_logicals.com such that python$root is corectly defined
+$!
+$
+$ if "" .nes. f$trnlnm("python$verify") then set verify
+$
+$ root = f$trnlmn("pcsi$destination") - "]" + "python.]"
+$
+$ open/write fd sys$common:[sysmgr]python$define_logicals.com
+$ write fd "$ define/system/trans=concealed python$root ''root'"
+$ write fd "$ define/system python$shr python$root:[lib]python$shr.exe"
+$ write fd "$ define/system PYTHONHOME ""/python$root"""
+$ write fd "$ exit"
+$ close fd
+$ purge/nolog sys$startup:python$define_logicals.com
+$
+$ exit
diff --git a/vms/python$pcsi_preconfigure.com b/vms/python$pcsi_preconfigure.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRwY3NpX3ByZWNvbmZpZ3VyZS5jb20=
--- /dev/null
+++ b/vms/python$pcsi_preconfigure.com
@@ -0,0 +1,19 @@
+$ verify = f$verify(0)
+$ set noon
+$
+$ define/job/nolog python$ods5_avail 0
+$
+$ loop:
+$    dev = f$device("*", "DISK")
+$    if dev .nes. ""
+$    then
+$       if f$getdvi("''dev'", "ACPTYPE") .eqs. "F11V5"
+$       then
+$          define/job/nolog python$ods5_avail 1
+$       else
+$          goto loop
+$       endif
+$    endif
+$
+$ verify = f$verify(verify)
+$ exit
diff --git a/vms/python$shutdown.com b/vms/python$shutdown.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRzaHV0ZG93bi5jb20=
--- /dev/null
+++ b/vms/python$shutdown.com
@@ -0,0 +1,28 @@
+$ ! PYTHON$SHUTDOWN.COM
+$ !+
+$ ! 06-May-2020
+$ ! Shutdown file for Python 3.8.2 on OpenVMS
+$ !
+$ !-
+$
+$ verify = f$verify(0)
+$ set noon
+$
+$! Cleanup logical names...
+$!
+$!! if f$file_attributes("PYTHON$SHR","KNOWN")
+$!! then
+$!!    install remove python$shr
+$!! endif
+$
+$ if f$trnlnm("PYTHON$SHR", "LNM$SYSTEM_TABLE") .nes. ""
+$ then
+$    deassign/sys PYTHON$SHR
+$ endif
+$
+$ if f$trnlnm("PYTHON$ROOT", "LNM$SYSTEM_TABLE") .nes. ""
+$ then
+$    deassign/sys PYTHON$ROOT
+$ endif
+$
+$ exit
diff --git a/vms/python$startup.com b/vms/python$startup.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRzdGFydHVwLmNvbQ==
--- /dev/null
+++ b/vms/python$startup.com
@@ -0,0 +1,35 @@
+$ ! PYTHON$STARTUP.COM
+$ !+
+$ ! 06-May-2020
+$ ! Startup file for Python 3.8.2 on OpenVMS
+$ !
+$ !-
+$
+$ set noon
+$
+$ file = f$search("sys$startup:python$define_logicals.com")
+$
+$ if file .eqs. ""
+$ then
+$    root = f$trnlmn("pcsi$destination")
+$    if "''root'" .eqs. ""
+$    then
+$       write sys$output "The logical name python$root is not defined; check installation."
+$       exit
+$    endif
+$
+$    root = "''root" - "]" + "python.]"
+$    define/system/trans=concealed python$root 'root
+$    define/system python$shr python$root:[lib]python$shr.exe
+$ else
+$    @sys$startup:python$define_logicals.com
+$ endif
+$
+$!! if f$file_attributes("PYTHON$SHR","KNOWN")
+$!! then
+$!!    install replace python$shr
+$!! else
+$!!    install add python$shr /open /header_res /share
+$!! endif
+$
+$ exit
diff --git a/vms/python_wheels$define_root.com b/vms/python_wheels$define_root.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbl93aGVlbHMkZGVmaW5lX3Jvb3QuY29t
--- /dev/null
+++ b/vms/python_wheels$define_root.com
@@ -0,0 +1,15 @@
+$! 'f$verify(0)
+$
+$! Create python_wheels$define_logicals.com such that python_wheels$root is corectly defined
+$!
+$
+$ root = f$trnlmn("pcsi$destination") - "]" + "wheels.]"
+$
+$ open/write fd sys$common:[sysmgr]python_wheels$define_logicals.com
+$ write fd "$ define/system/trans=concealed python_wheels$root ''root'"
+$ write fd "$ define/system PIP_FIND_LINKS ""/PYTHON_WHEELS$ROOT"""
+$ write fd "$ exit"
+$ close fd
+$ purge/nolog sys$startup:python_wheels$define_logicals.com
+$
+$ exit
diff --git a/vms/python_wheels$startup.com b/vms/python_wheels$startup.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbl93aGVlbHMkc3RhcnR1cC5jb20=
--- /dev/null
+++ b/vms/python_wheels$startup.com
@@ -0,0 +1,28 @@
+$ ! PYTHON_WHEELS$STARTUP.COM
+$ !+
+$ ! 02-Nov-2020
+$ ! Startup file for wheels for Python 3.8.2 on OpenVMS
+$ !
+$ !-
+$
+$ set noon
+$
+$ file = f$search("sys$startup:python_wheels$define_logicals.com")
+$
+$ if file .eqs. ""
+$ then
+$    root = f$trnlmn("pcsi$destination")
+$    if "''root'" .eqs. ""
+$    then
+$       write sys$output "The logical name python_wheels$root is not defined; check installation."
+$       exit
+$    endif
+$
+$    root = "''root" - "]" + "wheels.]"
+$    define/system/trans=concealed PYTHON_WHEELS$ROOT 'root
+$    define/system PIP_FIND_LINKS "/PYTHON_WHEELS$ROOT"
+$ else
+$    @sys$startup:python_wheels$define_logicals.com
+$ endif
+$
+$ exit
diff --git a/vms/static_assert.h b/vms/static_assert.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N0YXRpY19hc3NlcnQuaA==
--- /dev/null
+++ b/vms/static_assert.h
@@ -0,0 +1,16 @@
+#ifndef STATIC_ASSERT
+#define ASSERT_CONCAT_(a, b) a##b
+#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b)
+/* These can't be used after statements in c89. */
+#ifdef __COUNTER__
+  #define STATIC_ASSERT(e,m) \
+    ;enum { ASSERT_CONCAT(static_assert_, __COUNTER__) = 1/(int)(!!(e)) }
+#else
+  /* This can't be used twice on the same line so ensure if using in headers
+   * that the headers are not included twice (by wrapping in #ifndef...#endif)
+   * Note it doesn't cause an issue when used on same line of separate modules
+   * compiled with gcc -combine -fwhole-program.  */
+  #define STATIC_ASSERT(e,m) \
+    ;enum { ASSERT_CONCAT(assert_line_, __LINE__) = 1/(int)(!!(e)) }
+#endif
+#endif
diff --git a/vms/stdioreadline.c b/vms/stdioreadline.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N0ZGlvcmVhZGxpbmUuYw==
--- /dev/null
+++ b/vms/stdioreadline.c
@@ -0,0 +1,106 @@
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <descrip.h>
+#include <lib$routines.h>
+#include <smg$routines.h>				/* SMG$name   */
+#include <smgdef.h>					/* SMG$x_name */
+#include <smgmsg.h>					/* SMG$_name  */
+#include <ssdef.h>					/* SS$_NAME   */
+#include <trmdef.h>
+#include <stsdef.h>
+
+#define S_PASSWORD 255  /* size of password buffer */
+
+/* SMG$ support */
+static unsigned long                             pyvms_gl_keyboard_id;   /* SMG$ */
+static unsigned long                             pyvms_gl_key_table_id;  /* SMG$ */
+static char LineBuffer[256];
+
+char *
+vms__StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
+{
+	int n;
+	struct dsc$descriptor_s	inputD;
+	struct dsc$descriptor_s	promptD;
+	struct dsc$descriptor_s* promptPtr;
+	unsigned short int reslen;
+	unsigned long flags = 0;
+	int s;
+	char promptLocal[32];
+
+	if (pyvms_gl_key_table_id == 0) {
+		s = smg$create_key_table(&pyvms_gl_key_table_id);
+		if (!$VMS_STATUS_SUCCESS(s)) {
+			perror("SMG$CREATE_KEY_TABLE() failed\n");
+			exit(s);
+		}
+	}
+	if (pyvms_gl_keyboard_id == 0) {
+		s = smg$create_virtual_keyboard(&pyvms_gl_keyboard_id);
+		if (!$VMS_STATUS_SUCCESS(s)) {
+			perror("SMG$CREATE_VIRTUAL_KEYBOARD() failed\n");
+			exit(s);
+    		}
+	}
+
+	fflush(stdout);
+
+	/* set up descriptors */
+	inputD.dsc$w_length  = sizeof(LineBuffer) - 2;
+	inputD.dsc$b_dtype   = DSC$K_DTYPE_T;
+	inputD.dsc$b_class   = DSC$K_CLASS_S; /* @@ use a Dyndesc ? */
+	inputD.dsc$a_pointer = LineBuffer;
+
+	if (prompt)
+	{
+	    strcpy(promptLocal, prompt);
+	    promptD.dsc$w_length  = strlen(prompt);
+	    promptD.dsc$b_dtype   = DSC$K_DTYPE_T;
+	    promptD.dsc$b_class   = DSC$K_CLASS_S;
+	    promptD.dsc$a_pointer = promptLocal;
+	    promptPtr = &promptD;
+	}
+	else
+	{
+	    promptPtr = 0;			/* no prompt */
+	}
+
+	s = smg$read_composed_line
+		(&pyvms_gl_keyboard_id		/* keyboard-id            */
+		,&pyvms_gl_key_table_id		/* [key-table-id]         */
+		,&inputD			/* resultant-string       */
+		,promptPtr			/* [prompt-string]        */
+		,&reslen	 		/* [resultant-length]     */
+		,0				/* [display-id]           */
+		,&flags				/* [flags]                */
+		,0				/* [initial-string]       */
+		,0				/* [timeout]              */
+		,0				/* [rendition-set]        */
+		,0				/* [rendition-complement] */
+		,0				/* [word-terminator-code] */
+		);
+
+	if ((s != SS$_NORMAL) &&
+	    (s != SS$_ABORT)  &&
+	    (s != SS$_CANCEL) &&
+	    (s != SMG$_EOF)
+	   )
+	{
+	    return NULL;
+	}
+
+	if (s == SMG$_EOF) {
+	    LineBuffer[reslen] = '\0';
+	} else if ((s == SS$_ABORT)  || (s == SS$_CANCEL)) {
+	    return NULL;
+	} else {
+	    LineBuffer[reslen] = '\n';
+      	    LineBuffer[reslen+1] = '\0';
+	}
+
+	return LineBuffer;
+}
+
diff --git a/vms/syslog.c b/vms/syslog.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N5c2xvZy5j
--- /dev/null
+++ b/vms/syslog.c
@@ -0,0 +1,454 @@
+#pragma module SYSLOG "V1.03"
+
+/*
+**
+** � Copyright 2002 Hewlett-Packard Development Company, L.P.
+**
+** Hewlett-Packard and the Hewlett-Packard logo are trademarks
+** of Hewlett-Packard Development Company L.P. in the U.S. and/or
+** other countries.
+**
+** Confidential computer software.
+** Valid license from Hewlett-Packard required for possession, use
+** or copying.  Consistent with FAR 12.211 and 12.212, Commercial
+** Computer Software, Computer Software Documentation, and Technical
+** Data for Commercial.  Items are licensed to the U.S. Government
+** under vendor's standard commercial license.
+**
+** Hewlett-Packard shall not be liable for technical or editorial
+** errors or omissions contained herein.  The information is provided
+** "as is" without warranty of any kind and is subject to change
+** without notice.  The warranties for Hewlett-Packard products are
+** set forth in the express warranty statements accompanying such
+** products.  Nothing herein should be construed as constituting an
+** additional warranty.
+**
+*/
+
+/*
+**
+**  FACILITY:
+**
+**      Secure Web Server
+**
+**  ABSTRACT:
+**
+**	Interface for openlog, syslog, closelog
+**
+**  AUTHOR:
+**
+**      Matthew Doremus
+**
+**
+**  CREATION DATE:   August 29, 2001
+**
+**  MODIFICATION HISTORY:
+**
+**  V1.00 	        Matthew Doremus                 29-Aug-2001
+**        Initial development.
+**
+*/
+
+#ifndef __NEW_STARLET
+#define __NEW_STARLET
+#define __NEW_STARLET_SET
+#endif
+
+#include <builtins.h>
+#include <starlet.h>
+#include <unixlib.h>
+#include <descrip.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <opcdef.h>
+#include <prdef.h>
+#include <stdio.h>
+#include <time.h>
+
+#include  "syslog.h"
+
+#ifdef  __NEW_STARLET_SET
+#undef  __NEW_STARLET_SET
+#undef  __NEW_STARLET
+#endif
+
+/*
+** Define local macro definitions
+*/
+#define SYSLOG_MSG_SIZE 1024
+#define OPCOM_MSG_SIZE	128
+#define OPCOM_HDR_SIZE	8
+#ifndef MIN
+#define MIN(x, y) (((x) < (y)) ? (x) : (y))
+#endif
+
+/*
+** Define the code table structure
+*/
+typedef struct _CodeTable {
+    char	*text;
+    int		code;
+} CodeTable;
+
+#ifdef TEST_SYSLOG
+/*
+** Define the Options table array
+*/
+static const CodeTable OptionsTable[] = {
+	"pid",		LOG_PID,
+	"cons",		LOG_CONS,
+	"odelay",	LOG_ODELAY,
+	"ndelay",	LOG_NDELAY,
+	"nowait",	LOG_NOWAIT,
+	"perror",	LOG_PERROR,
+	"",		-1};
+#endif
+
+/*
+** Define the Facility table array
+*/
+static const CodeTable FacilityTable[] = {
+	"kern",		LOG_KERN,
+	"user",		LOG_USER,
+	"mail",		LOG_MAIL,
+	"daemon",	LOG_DAEMON,
+	"auth",		LOG_AUTH,
+	"syslog",	LOG_SYSLOG,
+	"lpr",		LOG_LPR,
+	"news",		LOG_NEWS,
+	"uucp",		LOG_UUCP,
+	"cron", 	LOG_CRON,
+	"",		0,
+	"",		0,
+	"",		0,
+	"",		0,
+	"",		0,
+	"",		0,
+	"local0",	LOG_LOCAL0,
+	"local1",	LOG_LOCAL1,
+	"local2",	LOG_LOCAL2,
+	"local3",	LOG_LOCAL3,
+	"local4",	LOG_LOCAL4,
+	"local5",	LOG_LOCAL5,
+	"local6",	LOG_LOCAL6,
+	"local7",	LOG_LOCAL7,
+	"",		-1};
+
+/*
+** Define the Priority table array
+*/
+static const CodeTable PriorityTable[] = {
+	"emerg",	LOG_EMERG,
+	"alert",	LOG_ALERT,
+	"crit",		LOG_CRIT,
+	"err",		LOG_ERR,
+	"warning",	LOG_WARNING,
+	"notice",	LOG_NOTICE,
+	"info",		LOG_INFO,
+	"debug",	LOG_DEBUG,
+	"",		-1};
+
+/*
+** Define the static values for syslog functions
+*/
+static char *SysLogIdent = NULL;
+static int SysLogOpt = -1;
+static int SysLogPri = -1;
+
+/*
+** Define prototypes for local functions
+*/
+#ifdef TEST_SYSLOG
+static int ParseArg (char *, const CodeTable [], int);
+#endif
+
+#ifdef TEST_SYSLOG
+/******************************************************************************/
+/***                                                                        ***/
+/******************************************************************************/
+main (int argc, char *argv[])
+{
+int Opt = LOG_PERROR,
+    Fac = LOG_USER,
+    Pri = LOG_INFO,
+    status,
+    i;
+
+/*
+** Get the path name
+*/
+if (argc < 2 || argc > 5)
+    {
+    printf ("Usage: SYSLOG message [options] [facility] [priority]\n");
+    printf ("\tmessage: syslog message\n");
+    printf ("\toptions: openlog options (default LOG_PERROR)\n");
+    for (i = 0; OptionsTable[i].code != -1; i++)
+	if (strlen (OptionsTable[i].text) > 0)
+	    printf ("\t\tLOG_%s\n", OptionsTable[i].text);
+    printf ("\tfacility: openlog facility (default LOG_USER)\n");
+    for (i = 0; FacilityTable[i].code != -1; i++)
+	if (strlen (FacilityTable[i].text) > 0)
+	    printf ("\t\tLOG_%s\n", FacilityTable[i].text);
+    printf ("\tpriority: syslog priority (default LOG_INFO)\n");
+    for (i = 0; PriorityTable[i].code != -1; i++)
+	if (strlen (PriorityTable[i].text) > 0)
+	    printf ("\t\tLOG_%s\n", PriorityTable[i].text);
+    exit (1);
+    }
+
+/*
+** Parse the Options
+*/
+if (argc > 2)
+    Opt = ParseArg (argv[2], OptionsTable, Opt);
+
+/*
+** Parse the Facility
+*/
+if (argc > 3)
+    Fac = ParseArg (argv[3], FacilityTable, Fac);
+
+/*
+** Parse the Priority
+*/
+if (argc > 4)
+    Pri = ParseArg (argv[4], PriorityTable, Pri);
+
+/*
+** Call the openlog, syslog, closelog functions
+*/
+openlog ("TEST", Opt, Fac);
+syslog (Pri, argv[1]);
+closelog ();
+
+}
+/******************************************************************************/
+/***                                                                        ***/
+/******************************************************************************/
+static int ParseArg (char *ArgStr, const CodeTable ArgTbl[], int DefVal)
+{
+char *StrPtr = ArgStr,
+     *TokPtr = ArgStr;
+int Finished = 0,
+    SetVal = 0,
+    RetVal = 0,
+    i;
+
+while (TokPtr)
+    {
+    /*
+    ** Locate the next token and null terminate it
+    */
+    TokPtr = strstr (StrPtr, "|");
+    if (TokPtr)
+	*TokPtr = '\0';
+
+    if (strncasecmp (StrPtr, "LOG_", 4) == 0)
+	StrPtr = StrPtr + 4;
+
+    for (i = 0; ArgTbl[i].code != -1; i++)
+	{
+	if (strcasecmp (StrPtr, ArgTbl[i].text) == 0)
+	    {
+	    RetVal |= ArgTbl[i].code;
+	    SetVal = 1;
+	    break;
+	    }
+	}
+
+    /*
+    ** Move past the last token
+    */
+    if (TokPtr)
+	StrPtr = TokPtr + 1;
+    }
+
+/*
+** If node code value was found then return the default value
+*/
+if (SetVal == 0)
+    RetVal = DefVal;
+
+/*
+** Return the code value
+*/
+return (RetVal);
+
+}
+#endif
+
+/******************************************************************************/
+/***                                                                        ***/
+/******************************************************************************/
+void syslog (int priority, const char *message, ...)
+{
+struct dsc64$descriptor OpComDesc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
+char MsgHdr[SYSLOG_MSG_SIZE];
+char MsgBuf[SYSLOG_MSG_SIZE];
+char SndBuf[SYSLOG_MSG_SIZE];
+OPCDEF OpComMsg;
+time_t TimeBin;
+char *TimeStr;
+int FacilityIdx,
+    PriorityIdx,
+    status = 1,
+    SndLen;
+va_list ap;
+
+/*
+** Construct the variable length message
+*/
+va_start (ap, message);
+vsprintf (MsgBuf, message, ap);
+va_end (ap);
+
+/*
+** Initialize the syslog info if necessary
+*/
+if (SysLogOpt < 0 || SysLogPri < 0)
+    closelog ();
+
+/*
+** Determine the Facility & Priority array indexes
+*/
+FacilityIdx = (LOG_FAC(priority) ? LOG_FAC(priority) : LOG_FAC(SysLogPri));
+PriorityIdx = LOG_PRI(priority);
+
+/*
+** Construct the log message header
+*/
+sprintf (MsgHdr, "[%s] [%s] ",
+	 FacilityTable[FacilityIdx].text, PriorityTable[PriorityIdx].text);
+if (SysLogOpt & LOG_PID)
+    sprintf (MsgHdr + strlen (MsgHdr), "(%08X) ", getpid ());
+if (SysLogIdent)
+    sprintf (MsgHdr + strlen (MsgHdr), "%s:", SysLogIdent);
+
+/*
+** Send the message to the console if requested
+*/
+if (SysLogOpt & LOG_CONS)
+    {
+    /*
+    ** Create the opcom log message to be sent
+    */
+    sprintf (SndBuf, "%s%s", MsgHdr, MsgBuf);
+
+    /*
+    ** Establish the message length
+    */
+    SndLen = MIN(strlen (SndBuf), OPCOM_MSG_SIZE);
+
+    /*
+    ** Setup the opcom request
+    */
+    memset (&OpComMsg, 0, sizeof (OpComMsg));
+    OpComMsg.opc$b_ms_type = OPC$_RQ_RQST;
+    OpComMsg.opc$b_ms_target = OPC$M_NM_CENTRL;
+    OpComMsg.opc$l_ms_rqstid = 0;
+    memcpy (&OpComMsg.opc$l_ms_text, SndBuf, SndLen);
+
+    /*
+    ** Setup the opcom request descriptor
+    */
+    OpComDesc.dsc64$q_length = SndLen + OPCOM_HDR_SIZE;
+    OpComDesc.dsc64$pq_pointer = (char *) &OpComMsg;
+
+    /*
+    ** Send the log message to opcom
+    */
+    status = SYS$SNDOPR (&OpComDesc, 0);
+    }
+
+/*
+** Send the message to standard error if requested or console write failed
+*/
+if (SysLogOpt & LOG_PERROR || ! (status & 1))
+    {
+    /*
+    ** Get the current time
+    */
+    TimeBin = time (NULL);
+    TimeStr = ctime (&TimeBin);
+    TimeStr[strlen (TimeStr) - 1] = '\0';
+
+    /*
+    ** Create the standard error log message to be written
+    */
+    sprintf (SndBuf, "[%s] %s%s", TimeStr, MsgHdr, MsgBuf);
+
+    /*
+    ** Write the log message to standard error
+    */
+    fprintf (stderr, SndBuf);
+    }
+
+}
+
+/******************************************************************************/
+/***                                                                        ***/
+/******************************************************************************/
+void openlog (const char *ident, int logopt, int facility)
+{
+unsigned __int64 CurMode = (__PAL_RD_PS() & PR$M_PS_CURMOD) >> 3;
+int i;
+
+/*
+** Close any previous log info
+*/
+closelog ();
+
+/*
+** Save the log ident
+*/
+if (ident)
+    SysLogIdent = strdup (ident);
+
+/*
+** Save the log options
+*/
+if (! ((logopt & LOG_PERROR) || (logopt & LOG_CONS)))
+    SysLogOpt = logopt | LOG_PERROR;
+else
+    SysLogOpt = logopt;
+
+/*
+** Initialize the priority
+*/
+if (facility == LOG_KERN && CurMode != PR$C_PS_KERNEL)
+    SysLogPri = LOG_USER;
+else
+    SysLogPri = facility;
+for (i = 0; PriorityTable[i].code != -1; i++)
+    SysLogPri |= PriorityTable[i].code;
+
+}
+
+/******************************************************************************/
+/***                                                                        ***/
+/******************************************************************************/
+void closelog (void)
+{
+int i;
+
+/*
+** Initialize the ident
+*/
+if (SysLogIdent)
+    free (SysLogIdent);
+SysLogIdent = NULL;
+
+/*
+** Initialize the options
+*/
+SysLogOpt = LOG_PERROR;
+
+/*
+** Initialize the priority
+*/
+SysLogPri = LOG_USER;
+for (i = 0; PriorityTable[i].code != -1; i++)
+    SysLogPri |= PriorityTable[i].code;
+
+}
diff --git a/vms/syslog.h b/vms/syslog.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N5c2xvZy5o
--- /dev/null
+++ b/vms/syslog.h
@@ -0,0 +1,92 @@
+/*
+**
+** � Copyright 2002 Hewlett-Packard Development Company, L.P.
+**
+** Hewlett-Packard and the Hewlett-Packard logo are trademarks
+** of Hewlett-Packard Development Company L.P. in the U.S. and/or
+** other countries.
+**
+** Confidential computer software.
+** Valid license from Hewlett-Packard required for possession, use
+** or copying.  Consistent with FAR 12.211 and 12.212, Commercial
+** Computer Software, Computer Software Documentation, and Technical
+** Data for Commercial.  Items are licensed to the U.S. Government
+** under vendor's standard commercial license.
+**
+** Hewlett-Packard shall not be liable for technical or editorial
+** errors or omissions contained herein.  The information is provided
+** "as is" without warranty of any kind and is subject to change
+** without notice.  The warranties for Hewlett-Packard products are
+** set forth in the express warranty statements accompanying such
+** products.  Nothing herein should be construed as constituting an
+** additional warranty.
+**
+*/
+
+#ifndef __SYSLOG_H
+#define __SYSLOG_H 1
+
+#define LOG_KERN	(0<<3)	/* kernel messages 			    */
+#define LOG_USER	(1<<3)	/* random user-level messages 		    */
+#define LOG_MAIL	(2<<3)	/* mail system 				    */
+#define LOG_DAEMON	(3<<3)	/* system daemons 			    */
+#define LOG_AUTH	(4<<3)	/* security/authorization messages 	    */
+#define LOG_SYSLOG	(5<<3)	/* messages generated internally by syslogd */
+#define LOG_LPR		(6<<3)	/* line printer subsystem 		    */
+#define LOG_NEWS	(7<<3)	/* network news subsystem 		    */
+#define LOG_UUCP	(8<<3)	/* UUCP subsystem 			    */
+#define	LOG_CRON	(9<<3)	/* clock daemon 			    */
+#define LOG_LOCAL0	(16<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL1	(17<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL2	(18<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL3	(19<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL4	(20<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL5	(21<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL6	(22<<3)	/* reserved for local use 		    */
+#define LOG_LOCAL7	(23<<3)	/* reserved for local use 		    */
+
+#define LOG_NFACILITIES	24	/* maximum number of facilities 	    */
+#define LOG_FACMASK	0x03f8	/* mask to extract facility part 	    */
+#define LOG_FAC(p)	(((p) & LOG_FACMASK) >> 3)	/* extract facility */
+
+/*
+** Priorities (these are ordered)
+*/
+#define LOG_EMERG	0	/* system is unusable 			    */
+#define LOG_ALERT	1	/* action must be taken immediately 	    */
+#define LOG_CRIT	2	/* critical conditions 			    */
+#define LOG_ERR		3	/* error conditions 			    */
+#define LOG_WARNING	4	/* warning conditions 			    */
+#define LOG_NOTICE	5	/* normal but signification condition 	    */
+#define LOG_INFO	6	/* informational 			    */
+#define LOG_DEBUG	7	/* debug-level messages 		    */
+
+#define LOG_PRIMASK	0x0007	/* mask to extract priority part (internal) */
+#define LOG_PRI(p)	((p) & LOG_PRIMASK)		/* extract priority */
+#define	LOG_MAKEPRI(fac, pri)	(((fac) << 3) | (pri))
+
+/*
+** arguments to setlogmask.
+*/
+#define	LOG_MASK(pri)	(1 << (pri))		/* mask for one priority     */
+#define	LOG_UPTO(pri)	((1 << ((pri)+1)) - 1)	/* all priorities through pri*/
+
+/*
+ *  Option flags for openlog.
+ *
+ *	LOG_ODELAY no longer does anything; LOG_NDELAY is the
+ *	inverse of what it used to be.
+ */
+#define	LOG_PID		0x01	/* log the pid with each message */
+#define	LOG_CONS	0x02	/* log on the console if errors in sending */
+#define	LOG_ODELAY	0x04	/* delay open until syslog() is called */
+#define LOG_NDELAY	0x08	/* don't delay open */
+#define LOG_NOWAIT	0x10	/* if forking to log on console, don't wait() */
+#define LOG_PERROR	0x20	/* print log message also to standard error */
+
+void openlog (const char *, int, int);
+void syslog (int, const char *, ...);
+void closelog (void);
+int setlogmask (int);
+
+#endif /* __SYSLOG_H */
diff --git a/vms/termios.h b/vms/termios.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Rlcm1pb3MuaA==
--- /dev/null
+++ b/vms/termios.h
@@ -0,0 +1,321 @@
+/*
+ *************************************************************************
+ *                                                                       *
+ * Copyright 2000 Compaq Computer Corporation                            *
+ *                                                                       *
+ * COMPAQ Registered in U.S. Patent and Trademark Office.                *
+ *                                                                       *
+ *************************************************************************
+ * IMPORTANT: Carefully read the License Terms below before              *
+ * proceeding.  By use of these materials you agree to these terms.      *
+ * If you do not agree to these terms, you may not use this software or  *
+ * the accompanying documentation.                                       *
+ *************************************************************************
+ * LICENSE TERMS                                                         *
+ * 1. GRANT                                                              *
+ * Compaq Computer Corporation ("COMPAQ") grants you the right to use,   *
+ * modify, and distribute the following source code (the "Software")     *
+ * on any number of computers. You may use the Software as part of       *
+ * creating a software program or product intended for commercial or     *
+ * non-commercial distribution in machine-readable source code, binary,  *
+ * or executable formats. You may distribute the Software as             *
+ * machine-readable source code provided this license is not removed     *
+ * from the Software and any modifications are conspicuously indicated.  *
+ * 2. COPYRIGHT                                                          *
+ * The Software is owned by COMPAQ and its suppliers and is protected by *
+ * copyright laws and international treaties.  Your use of the Software  *
+ * and associated documentation is subject to the applicable copyright   *
+ * laws and the express rights and restrictions of these terms.          *
+ * 3. RESTRICTIONS                                                       *
+ * You may not remove any copyright, trademark, or other proprietary     *
+ * notices from the Software or the associated  documentation.           *
+ * You are responsible for compliance with all applicable export or      *
+ * re-export control laws and regulations if you export the Software.    *
+ * This license is governed by and is to be construed under the laws     *
+ * of the State of Texas.                                                *
+ *                                                                       *
+ * DISCLAIMER OF WARRANTY AND LIABILITY                                  *
+ * Compaq shall not be liable for technical or editorial errors or       *
+ * omissions contained herein. The information contained herein is       *
+ * subject to change without notice.                                     *
+ *                                                                       *
+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.       *
+ * THE ENTIRE RISK ARISING OUT OF THE USE OF THIS SOFTWARE REMAINS WITH  *
+ * RECIPIENT.  IN NO EVENT SHALL COMPAQ BE LIABLE FOR ANY DIRECT,        *
+ * CONSEQUENTIAL, INCIDENTAL, SPECIAL, PUNITIVE OR OTHER DAMAGES         *
+ * WHATSOEVER (INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS *
+ * PROFITS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS INFORMATION),     *
+ * EVEN IF COMPAQ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES    *
+ * AND WHETHER IN AN ACTION OF CONTRACT OR TORT INCLUDING NEGLIGENCE.    *
+ *                                                                       *
+ * If you have any questions concerning this license, please contact:    *
+ * Compaq Computer Corporation, Software Business Practices, ZKO1-2/D22, *
+ * 110 Spit Brook Road, Nashua, NH. 03062-2698.                          *
+ *                                                                       *
+ *************************************************************************
+ */
+
+# ifndef __TERMIOS_LOADED
+# define __TERMIOS_LOADED 1
+
+
+# if __DECC_VER<50000000 && __DECCXX_VER<50000000   /* PROLOGUE version X-7 */
+#   error POSIX for OpenVMS V3.0 requires DEC C or DEC C++ V5.0 or later
+# endif
+# if __64BITS_A || __64BITS_B
+#   error The /INTS compile time option is not supported
+# endif
+# pragma __environment __save
+# pragma __environment __header_defaults
+# pragma __extern_model __strict_refdef
+# if __cplusplus
+extern "C" {
+# endif
+# ifndef __CHAR_SP
+#   define __CHAR_SP 1
+#   ifdef __INITIAL_POINTER_SIZE
+#   pragma __required_pointer_size __long
+#   endif
+    typedef char *	__char_lp;	/* 64-bit pointer */
+    typedef void *	__void_lp;	/* 64-bit pointer */
+    typedef int *	__int_lp;	/* 64-bit pointer */
+    typedef const char *__kchar_lp;	/* 64-bit pointer */
+    typedef const void *__kvoid_lp;	/* 64-bit pointer */
+    typedef const int  *__kint_lp;	/* 64-bit pointer */
+#   ifdef __INITIAL_POINTER_SIZE
+#   pragma __required_pointer_size __short
+#   endif
+    typedef char *	__char_sp;	/* 32-bit pointer */
+    typedef void *	__void_sp;	/* 32-bit pointer */
+    typedef int *	__int_sp;	/* 32-bit pointer */
+    typedef const char *__kchar_sp;	/* 32-bit pointer */
+    typedef const void *__kvoid_sp;	/* 32-bit pointer */
+    typedef const int  *__kint_sp;	/* 64-bit pointer */
+# endif
+
+typedef unsigned long	tcflag_t;
+typedef unsigned char	speed_t;
+typedef unsigned char	cc_t;
+
+# define VINTR	 0
+# define VQUIT	 1
+# define VERASE	 2
+# define VKILL	 3
+# define VEOF	 4
+# define VMIN	 5
+# define VEOL	 6
+# define VTIME	 7
+# define VSUSP	 8
+# define VSTART  9
+# define VSTOP	10
+# define VDEBUG	11
+
+# define VEOL2		12		/* BRC 22-Jun-2017 */
+# define VWERASE 	13		/* BRC 22-Jun-2017 */
+# define VREPRINT	14		/* BRC 22-Jun-2017 */
+# define VDSUSP		14		/* BRC 22-Jun-2017 */
+# define VLNEXT		16		/* BRC 22-Jun-2017 */
+# define VDISCARD	17		/* BRC 22-Jun-2017 */
+# define VSTATUS	18		/* BRC 22-Jun-2017 */
+
+# define NCCS	20	/* Includes room for future extensions		    */
+
+struct termios
+{
+    tcflag_t	c_iflag;
+#   define		IGNBRK	0000001
+#   define		BRKINT	0000002
+#   define		IGNPAR	0000004
+#   define		PARMRK	0000010
+#   define		INPCK	0000020
+#   define		ISTRIP	0000040
+#   define		INLCR	0000100
+#   define		IGNCR	0000200
+#   define		ICRNL	0000400
+#   define		IUCLC	0001000
+#   define		IXON	0002000
+#   define		IXANY	0004000
+#   define		IXOFF	0010000
+#   define 		IMAXBEL 0020000		/* BRC 22-Jun-2017 */
+
+    tcflag_t	c_oflag;
+#   define		OPOST	0000001
+#   define		OLCUC	0000002
+#   define		ONLCR	0000004
+#   define		OCRNL	0000010
+#   define		ONOCR	0000020
+#   define		ONLRET	0000040
+#   define		OFILL	0000100
+#   define		OFDEL	0000200
+#   define		NLDLY	0000400
+#   define		    NL0	0000000
+#   define		    NL1	0000400
+#   define		VTDLY	0001000
+#   define		    VT0	0000000
+#   define		    VT1	0001000
+#   define		TABDLY	0006000
+#   define		   TAB0	0000000
+#   define		   TAB1	0002000
+#   define		   TAB2	0004000
+#   define		   TAB3	0006000
+#   define		CRDLY	0030000
+#   define		    CR0	0000000
+#   define		    CR1	0010000
+#   define		    CR2	0020000
+#   define		    CR3	0030000
+#   define		FFDLY	0040000
+#   define		    FF0	0000000
+#   define		    FF1	0040000
+#   define		BSDLY	0100000
+#   define		    BS0	0000000
+#   define		    BS1	0100000
+
+    tcflag_t	c_cflag;
+#   define 		CIGNORE 0000001 		/* BRC 22-Jun-2017 */
+#   define		CSIZE	0000060
+#   define		    CS5	0000000
+#   define		    CS6	0000020
+#   define		    CS7	0000040
+#   define		    CS8	0000060
+#   define		CSTOPB	0000100
+#   define		CREAD	0000200
+#   define		PARENB	0000400
+#   define		PARODD	0001000
+#   define		HUPCL	0002000
+#   define		CLOCAL	0004000
+#   define 		CRTSCTS 0200000			/* BRC 22-Jun-2017 */
+#   define 		CDTRCTS 0400000			/* BRC 22-Jun-2017 */
+#   define 		MDMBUF  4000000			/* BRC 22-Jun-2017 */
+
+    tcflag_t	c_lflag;
+#ifdef	__USE_BSD
+# define ECHOKE	(1 << 0)	/* Visual erase for KILL.  */
+#endif
+#define	_ECHOE	(1 << 1)	/* Visual erase for ERASE.  */
+#define	ECHOE	_ECHOE
+#define	_ECHOK	(1 << 2)	/* Echo NL after KILL.  */
+#define	ECHOK	_ECHOK
+#define	_ECHO	(1 << 3)	/* Enable echo.  */
+#define	ECHO	_ECHO
+#define	_ECHONL	(1 << 4)	/* Echo NL even if ECHO is off.  */
+#define	ECHONL	_ECHONL
+#ifdef	__USE_BSD
+# define ECHOPRT	(1 << 5)	/* Hardcopy visual erase.  */
+# define ECHOCTL	(1 << 6)	/* Echo control characters as ^X.  */
+#endif
+#define	_ISIG	(1 << 7)	/* Enable signals.  */
+#define	ISIG	_ISIG
+#define	_ICANON	(1 << 8)	/* Do erase and kill processing.  */
+#define	ICANON	_ICANON
+#ifdef	__USE_BSD
+# define ALTWERASE (1 << 9)	/* Alternate WERASE algorithm.  */
+#endif
+#define	_IEXTEN	(1 << 10)	/* Enable DISCARD and LNEXT.  */
+#define	IEXTEN	_IEXTEN
+#define	EXTPROC	(1 << 11)	/* External processing.  */
+#define	_TOSTOP	(1 << 22)	/* Send SIGTTOU for background output.  */
+#define	TOSTOP	_TOSTOP
+#ifdef	__USE_BSD
+# define FLUSHO	(1 << 23)	/* Output being flushed (state).  */
+# define NOKERNINFO (1 << 25)	/* Disable VSTATUS.  */
+# define PENDIN	(1 << 29)	/* Retype pending input (state).  */
+#endif
+#define	_NOFLSH	(1 << 31)	/* Disable flush after interrupt.  */
+#define	NOFLSH	_NOFLSH
+#if 0
+#   define		ISIG	0000001
+#   define		ICANON	0000002
+#   define		XCASE	0000004
+#   define		ECHO	0000010
+#   define		ECHOE	0000020
+#   define		ECHOK	0000040
+#   define		ECHONL	0000100
+#   define		NOFLSH	0000200
+#   define		TOSTOP	(0x40<<16)
+#   define		IEXTEN	(0x80<<16)
+#endif
+
+    speed_t	c_ispeed;
+    speed_t	c_ospeed;
+#   define		    B0	 0
+#   define		   B50	 1
+#   define		   B75	 2
+#   define		  B110	 3
+#   define		  B134	 4
+#   define		  B150	 5
+#   define		  B200 255	/* Not available on VAX/VMS	    */
+#   define		  B300	 6
+#   define		  B600	 7
+#   define		 B1200	 8
+#   define		 B1800	 9
+#   define		 B2000	10	/* Non-standard speed		    */
+#   define		 B2400	11
+#   define		 B3600	12	/* Non-standard speed		    */
+#   define		 B4800	13
+#   define		 B7200	14	/* Non-standard speed		    */
+#   define		 B9600	15
+#   define		B19200	16
+#   define		B38400	17
+
+    cc_t	c_cc [NCCS];
+} ;
+
+# define TCSANOW	0
+# define TCSADRAIN	1
+# define TCSAFLUSH	2
+
+# define TCIFLUSH	0
+# define TCOFLUSH	1
+# define TCIOFLUSH	2
+
+# define TCOOFF		0
+# define TCOON		1
+# define TCIOFF		2
+# define TCION		3
+
+# if __INITIAL_POINTER_SIZE > 0
+#   pragma __pointer_size __long
+# endif
+
+int tcgetattr       (int __fd, struct termios * __termios_p);
+int tcsetattr       (int __fd, int __opt, const struct termios * __termios_p);
+int tcsendbreak     (int __fd, int __duration);
+int tcdrain         (int __fd);
+int tcflush         (int __fd, int __queue);
+int tcflow          (int __fd, int __action);
+
+# if __cplusplus
+    inline speed_t cfgetispeed (const struct termios * __termios_p)
+    {
+	return __termios_p->c_ispeed;
+    }
+    inline speed_t cfgetospeed (const struct termios * __termios_p)
+    {
+	return __termios_p->c_ospeed;
+    }
+    inline int cfsetispeed (struct termios * __termios_p, speed_t __speed)
+    {
+	__termios_p->c_ispeed = __speed;  return 0;
+    }
+    inline int cfsetospeed (struct termios * __termios_p, speed_t __speed)
+    {
+	__termios_p->c_ospeed = __speed;  return 0;
+    }
+# else
+    speed_t cfgetispeed (const struct termios * __termios_p);
+    speed_t cfgetospeed (const struct termios * __termios_p);
+    int cfsetispeed     (struct termios * __termios_p, speed_t __speed);
+    int cfsetospeed     (struct termios * __termios_p, speed_t __speed);
+#   define cfgetispeed(tp)	((tp)->c_ispeed)
+#   define cfgetospeed(tp)	((tp)->c_ospeed)
+#   define cfsetispeed(tp,sp)	((tp)->c_ispeed=(sp), 0)
+#   define cfsetospeed(tp,sp)	((tp)->c_ospeed=(sp), 0)
+# endif
+
+# if __cplusplus				    /* EPILOGUE version X-5 */
+}
+# endif
+# pragma __environment __restore
+
+# endif		/* _TERMIOS_LOADED */
+
diff --git a/vms/termios.h-keep b/vms/termios.h-keep
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Rlcm1pb3MuaC1rZWVw
--- /dev/null
+++ b/vms/termios.h-keep
@@ -0,0 +1,270 @@
+/*
+ *************************************************************************
+ *                                                                       *
+ * Copyright 2000 Compaq Computer Corporation                            *
+ *                                                                       *
+ * COMPAQ Registered in U.S. Patent and Trademark Office.                *
+ *                                                                       *
+ *************************************************************************
+ * IMPORTANT: Carefully read the License Terms below before              *
+ * proceeding.  By use of these materials you agree to these terms.      *
+ * If you do not agree to these terms, you may not use this software or  *
+ * the accompanying documentation.                                       *
+ *************************************************************************
+ * LICENSE TERMS                                                         *
+ * 1. GRANT                                                              *
+ * Compaq Computer Corporation ("COMPAQ") grants you the right to use,   *
+ * modify, and distribute the following source code (the "Software")     *
+ * on any number of computers. You may use the Software as part of       *
+ * creating a software program or product intended for commercial or     *
+ * non-commercial distribution in machine-readable source code, binary,  *
+ * or executable formats. You may distribute the Software as             *
+ * machine-readable source code provided this license is not removed     *
+ * from the Software and any modifications are conspicuously indicated.  *
+ * 2. COPYRIGHT                                                          *
+ * The Software is owned by COMPAQ and its suppliers and is protected by *
+ * copyright laws and international treaties.  Your use of the Software  *
+ * and associated documentation is subject to the applicable copyright   *
+ * laws and the express rights and restrictions of these terms.          *
+ * 3. RESTRICTIONS                                                       *
+ * You may not remove any copyright, trademark, or other proprietary     *
+ * notices from the Software or the associated  documentation.           *
+ * You are responsible for compliance with all applicable export or      *
+ * re-export control laws and regulations if you export the Software.    *
+ * This license is governed by and is to be construed under the laws     *
+ * of the State of Texas.                                                *
+ *                                                                       *
+ * DISCLAIMER OF WARRANTY AND LIABILITY                                  *
+ * Compaq shall not be liable for technical or editorial errors or       *
+ * omissions contained herein. The information contained herein is       *
+ * subject to change without notice.                                     *
+ *                                                                       *
+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.       *
+ * THE ENTIRE RISK ARISING OUT OF THE USE OF THIS SOFTWARE REMAINS WITH  *
+ * RECIPIENT.  IN NO EVENT SHALL COMPAQ BE LIABLE FOR ANY DIRECT,        *
+ * CONSEQUENTIAL, INCIDENTAL, SPECIAL, PUNITIVE OR OTHER DAMAGES         *
+ * WHATSOEVER (INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS *
+ * PROFITS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS INFORMATION),     *
+ * EVEN IF COMPAQ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES    *
+ * AND WHETHER IN AN ACTION OF CONTRACT OR TORT INCLUDING NEGLIGENCE.    *
+ *                                                                       *
+ * If you have any questions concerning this license, please contact:    *
+ * Compaq Computer Corporation, Software Business Practices, ZKO1-2/D22, *
+ * 110 Spit Brook Road, Nashua, NH. 03062-2698.                          *
+ *                                                                       *
+ *************************************************************************
+ */
+
+# ifndef __TERMIOS_LOADED
+# define __TERMIOS_LOADED 1
+
+
+# if __DECC_VER<50000000 && __DECCXX_VER<50000000   /* PROLOGUE version X-7 */
+#   error POSIX for OpenVMS V3.0 requires DEC C or DEC C++ V5.0 or later
+# endif
+# if __64BITS_A || __64BITS_B
+#   error The /INTS compile time option is not supported
+# endif
+# pragma __environment __save
+# pragma __environment __header_defaults
+# pragma __extern_model __strict_refdef
+# if __cplusplus
+extern "C" {
+# endif
+# ifndef __CHAR_SP
+#   define __CHAR_SP 1
+#   ifdef __INITIAL_POINTER_SIZE
+#   pragma __required_pointer_size __long
+#   endif
+    typedef char *	__char_lp;	/* 64-bit pointer */
+    typedef void *	__void_lp;	/* 64-bit pointer */
+    typedef int *	__int_lp;	/* 64-bit pointer */
+    typedef const char *__kchar_lp;	/* 64-bit pointer */
+    typedef const void *__kvoid_lp;	/* 64-bit pointer */
+    typedef const int  *__kint_lp;	/* 64-bit pointer */
+#   ifdef __INITIAL_POINTER_SIZE
+#   pragma __required_pointer_size __short
+#   endif
+    typedef char *	__char_sp;	/* 32-bit pointer */
+    typedef void *	__void_sp;	/* 32-bit pointer */
+    typedef int *	__int_sp;	/* 32-bit pointer */
+    typedef const char *__kchar_sp;	/* 32-bit pointer */
+    typedef const void *__kvoid_sp;	/* 32-bit pointer */
+    typedef const int  *__kint_sp;	/* 64-bit pointer */
+# endif
+
+typedef unsigned long	tcflag_t;
+typedef unsigned char	speed_t;
+typedef unsigned char	cc_t;
+
+# define VINTR	 0
+# define VQUIT	 1
+# define VERASE	 2
+# define VKILL	 3
+# define VEOF	 4
+# define VMIN	 5
+# define VEOL	 6
+# define VTIME	 7
+# define VSUSP	 8
+# define VSTART  9
+# define VSTOP	10
+# define VDEBUG	11
+# define NCCS	18	/* Includes room for future extensions		    */
+
+struct termios
+{
+    tcflag_t	c_iflag;
+#   define		IGNBRK	0000001
+#   define		BRKINT	0000002
+#   define		IGNPAR	0000004
+#   define		PARMRK	0000010
+#   define		INPCK	0000020
+#   define		ISTRIP	0000040
+#   define		INLCR	0000100
+#   define		IGNCR	0000200
+#   define		ICRNL	0000400
+#   define		IUCLC	0001000
+#   define		IXON	0002000
+#   define		IXANY	0004000
+#   define		IXOFF	0010000
+
+    tcflag_t	c_oflag;
+#   define		OPOST	0000001
+#   define		OLCUC	0000002
+#   define		ONLCR	0000004
+#   define		OCRNL	0000010
+#   define		ONOCR	0000020
+#   define		ONLRET	0000040
+#   define		OFILL	0000100
+#   define		OFDEL	0000200
+#   define		NLDLY	0000400
+#   define		    NL0	0000000
+#   define		    NL1	0000400
+#   define		VTDLY	0001000
+#   define		    VT0	0000000
+#   define		    VT1	0001000
+#   define		TABDLY	0006000
+#   define		   TAB0	0000000
+#   define		   TAB1	0002000
+#   define		   TAB2	0004000
+#   define		   TAB3	0006000
+#   define		CRDLY	0030000
+#   define		    CR0	0000000
+#   define		    CR1	0010000
+#   define		    CR2	0020000
+#   define		    CR3	0030000
+#   define		FFDLY	0040000
+#   define		    FF0	0000000
+#   define		    FF1	0040000
+#   define		BSDLY	0100000
+#   define		    BS0	0000000
+#   define		    BS1	0100000
+
+    tcflag_t	c_cflag;
+#   define		CSIZE	0000060
+#   define		    CS5	0000000
+#   define		    CS6	0000020
+#   define		    CS7	0000040
+#   define		    CS8	0000060
+#   define		CSTOPB	0000100
+#   define		CREAD	0000200
+#   define		PARENB	0000400
+#   define		PARODD	0001000
+#   define		HUPCL	0002000
+#   define		CLOCAL	0004000
+
+    tcflag_t	c_lflag;
+#   define		ISIG	0000001
+#   define		ICANON	0000002
+#   define		XCASE	0000004
+#   define		ECHO	0000010
+#   define		ECHOE	0000020
+#   define		ECHOK	0000040
+#   define		ECHONL	0000100
+#   define		NOFLSH	0000200
+#   define		TOSTOP	(0x40<<16)
+#   define		IEXTEN	(0x80<<16)
+
+    speed_t	c_ispeed;
+    speed_t	c_ospeed;
+#   define		    B0	 0
+#   define		   B50	 1
+#   define		   B75	 2
+#   define		  B110	 3
+#   define		  B134	 4
+#   define		  B150	 5
+#   define		  B200 255	/* Not available on VAX/VMS	    */
+#   define		  B300	 6
+#   define		  B600	 7
+#   define		 B1200	 8
+#   define		 B1800	 9
+#   define		 B2000	10	/* Non-standard speed		    */
+#   define		 B2400	11
+#   define		 B3600	12	/* Non-standard speed		    */
+#   define		 B4800	13
+#   define		 B7200	14	/* Non-standard speed		    */
+#   define		 B9600	15
+#   define		B19200	16
+#   define		B38400	17
+
+    cc_t	c_cc [NCCS];
+} ;
+
+# define TCSANOW	0
+# define TCSADRAIN	1
+# define TCSAFLUSH	2
+
+# define TCIFLUSH	0
+# define TCOFLUSH	1
+# define TCIOFLUSH	2
+
+# define TCOOFF		0
+# define TCOON		1
+# define TCIOFF		2
+# define TCION		3
+
+# if __INITIAL_POINTER_SIZE > 0
+#   pragma __pointer_size __long
+# endif
+
+int tcgetattr       (int __fd, struct termios * __termios_p);
+int tcsetattr       (int __fd, int __opt, const struct termios * __termios_p);
+int tcsendbreak     (int __fd, int __duration);
+int tcdrain         (int __fd);int tcflush         (int __fd, int __queue);
+int tcflow          (int __fd, int __action);
+
+# if __cplusplus
+    inline speed_t cfgetispeed (const struct termios * __termios_p)
+    {
+	return __termios_p->c_ispeed;
+    }
+    inline speed_t cfgetospeed (const struct termios * __termios_p)
+    {
+	return __termios_p->c_ospeed;
+    }
+    inline int cfsetispeed (struct termios * __termios_p, speed_t __speed)
+    {
+	__termios_p->c_ispeed = __speed;  return 0;
+    }
+    inline int cfsetospeed (struct termios * __termios_p, speed_t __speed)
+    {
+	__termios_p->c_ospeed = __speed;  return 0;
+    }
+# else
+    speed_t cfgetispeed (const struct termios * __termios_p);
+    speed_t cfgetospeed (const struct termios * __termios_p);
+    int cfsetispeed     (struct termios * __termios_p, speed_t __speed);
+    int cfsetospeed     (struct termios * __termios_p, speed_t __speed);
+#   define cfgetispeed(tp)	((tp)->c_ispeed)
+#   define cfgetospeed(tp)	((tp)->c_ospeed)
+#   define cfsetispeed(tp,sp)	((tp)->c_ispeed=(sp), 0)
+#   define cfsetospeed(tp,sp)	((tp)->c_ospeed=(sp), 0)
+# endif
+
+# if __cplusplus				    /* EPILOGUE version X-5 */
+}
+# endif
+# pragma __environment __restore
+
+# endif		/* _TERMIOS_LOADED */
+
diff --git a/vms/tio.c b/vms/tio.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Rpby5j
--- /dev/null
+++ b/vms/tio.c
@@ -0,0 +1,1142 @@
+#ifndef __USE_BSD
+#define __USE_BSD 1
+#endif
+#ifndef __USE_GNU
+#define __USE_GNU 1
+#endif
+#ifndef __USE_XOPEN
+#define __USE_XOPEN 1
+#endif
+#ifndef __USE_MISC
+#define __USE_MISC 1
+#endif
+
+#include <errno.h>
+#include <stdlib.h>
+#include <stsdef.h>
+#include <descrip.h>
+#include <efndef.h>
+#include <string.h>
+#include <iodef.h>
+#include <unixlib.h>
+#include <unixio.h>
+#include <unistd.h>
+#include <ssdef.h>
+#include <libclidef.h>
+
+#define __NEW_STARLET 1
+#include <ttdef.h>
+#include <tt3def.h>
+#include <tt2def.h>
+
+#include "termios.h"
+
+/* General structure of these routines is that they will check the file
+ * descriptor to see if it is a tty and what its name is, and then use a
+ * VMS channel for it to do the QIOW, and a structure of UNIX attributes
+ * to actually do the I/O.  The first access of a tty file descriptor will
+ * cause the VMS channel to be created and the structure of UNIX attributes
+ * to be populated.
+ */
+
+
+#pragma member_alignment save
+#pragma nomember_alignment longword
+#pragma message save
+#pragma message disable misalgndmem
+
+/* Generic VMS item list structure */
+struct itmlst_3 {
+  unsigned short int buflen;
+  unsigned short int itmcode;
+  void *bufadr;
+  unsigned short int *retlen;
+};
+
+struct tt_framing_st {
+    unsigned tt_v_framesize : 4;
+    unsigned tt_v_altframe : 1;
+    unsigned tt_v_altrpar : 1;
+    unsigned tt_v_parity : 1;
+    unsigned tt_v_odd : 1;
+    unsigned tt_v_twostop : 1;
+    unsigned tt_v_disparerr : 1;
+    unsigned tt_v_altdispar : 1;
+    unsigned tt_v_break : 1;
+    unsigned tt_v_fill_43_ : 4;
+};
+
+
+struct term_mode_iosb_st {
+    unsigned short sts;
+    unsigned char txspeed;
+    unsigned char rxspeed;
+    unsigned char cr_fill;
+    unsigned char lf_fill;
+    struct tt_framing_st framing;
+};
+
+struct term_char_st {
+    unsigned char class;
+    unsigned char type;
+    unsigned short page_width;
+    TTDEF ttdef;
+    TT2DEF tt2def;
+#if (__CRTL_VER >= 080200000) && !defined (__VAX)
+    TT3DEF tt3def;
+#endif
+};
+
+struct term_speed_st {
+    unsigned char txspeed;
+    unsigned char rxspeed;
+    unsigned short speed_fill_mbz;
+};
+
+struct term_fill_st {
+    unsigned short cr_fill;
+    unsigned short lf_fill;
+};
+
+struct term_read_iosb_st {
+    unsigned short sts;
+    unsigned short count;
+    unsigned short terminator;
+    unsigned short terminator_count;
+};
+
+struct term_write_iosb_st {
+    unsigned short sts;
+    unsigned short count;
+    unsigned short unknown1;
+    unsigned short unknown2;
+};
+
+#pragma message restore
+#pragma member_alignment restore
+
+int LIB$DISABLE_CTRL(const unsigned long * new_mask,
+		     unsigned long * old_mask);
+
+int LIB$ENABLE_CTRL(const unsigned long * new_mask,
+		    unsigned long * old_mask);
+
+int LIB$SIGNAL(int);
+
+int SYS$ASSIGN(
+	const struct dsc$descriptor_s * devnam,
+        unsigned short * chan,
+        unsigned long acmode,
+        const struct dsc$descriptor_s * mbxnam,
+        unsigned long flags);
+
+int   SYS$CRELNM(
+	const unsigned long * attr,
+	const struct dsc$descriptor_s * table_dsc,
+	const struct dsc$descriptor_s * name_dsc,
+	const unsigned char * acmode,
+	const struct itmlst_3 * item_list);
+
+int SYS$DASSGN(unsigned short chan);
+
+unsigned long SYS$QIOW(
+	unsigned long efn,
+        unsigned short chan,
+        unsigned long func,
+        void * iosb,
+        void (* astadr)(void *),
+        ...);
+
+int SYS$READEF(unsigned long efn, unsigned long * state);
+
+int   SYS$TRNLNM(
+	const unsigned long * attr,
+	const struct dsc$descriptor_s * table_dsc,
+	struct dsc$descriptor_s * name_dsc,
+	const unsigned char * acmode,
+	const struct itmlst_3 * item_list);
+
+struct vms_info_st {
+	unsigned short channel;		/* VMS channel assigned */
+	unsigned short ref_cnt;		/* Number of references */
+	char * device_name;		/* VMS device name for channel */
+	unsigned long oldctrlmask;	/* Old Control Mask */
+	struct termios * term_attr;	/* Unix terminal attributes */
+	struct term_char_st *vms_char;  /* VMS terminal characteristics */
+	struct term_mode_iosb_st * vms_iosb; /* IOSB from sense mode */
+};
+
+
+/* Array to hold file descriptors that we are intercepting I/O for. */
+static struct vms_info_st * vms_info = NULL;
+static int vms_info_size = -1;
+
+
+
+/* fd lookup routine.  We need our special data with some file descriptors */
+
+static struct vms_info_st * vms_lookup_fd(int fd) {
+
+    /* Make sure memory of file descriptors is set up. */
+    if (vms_info == NULL) {
+
+	/* Find out how many channels are possible */
+	vms_info_size = getdtablesize();
+
+	/* Allocate the array */
+	vms_info = malloc(vms_info_size * sizeof(struct vms_info_st));
+	if (vms_info == NULL) {
+
+	    /* We are probably out of memory, so degrade gracefully */
+	    vms_info_size = -1;
+	} else {
+	    memset(vms_info, 0, vms_info_size * sizeof(struct vms_info_st));
+	}
+    }
+    return &vms_info[fd];
+}
+
+
+
+
+/* When we encounter a terminal device, we need to see if it is one
+ * that we already know about.
+ * The first time we encounter a terminal device, we need to look up its
+ * Unix terminal characteristics so we can do terminal I/O properly on it.
+ * Poll/select from glib are modified to only deassign channels that they
+ * assigned.  Eventually this module should become common to glib so that
+ * glib can get the better terminal support
+ */
+
+
+static int vms_channel_lookup(int fd, unsigned short *channel)
+{
+int status;
+char device_name[256];
+char * retname;
+struct dsc$descriptor_s dev_desc;
+int call_stat;
+unsigned short chan;
+struct vms_info_st * info;
+
+    status = -1;
+
+    /* Make sure memory of file descriptors is set up. */
+    if (vms_info == NULL) {
+
+	/* Find out how many channels are possible */
+	vms_info_size = getdtablesize();
+
+	/* Allocate the array */
+	vms_info = malloc(vms_info_size * sizeof(struct vms_info_st));
+	if (vms_info == NULL) {
+
+	    /* We are probably out of memory, so degrade gracefully */
+	    vms_info_size = -1;
+	} else {
+	    memset(vms_info, 0, vms_info_size * sizeof(struct vms_info_st));
+	}
+    }
+
+    /* Do we know about this one? */
+    info = vms_lookup_fd(fd);
+    if (info->ref_cnt > 0) {
+	/* We found it */
+	*channel = info->channel;
+
+	/* Do not increment the ref count for STDIN/STDOUT/STDERR */
+	if (fd > 2) {
+	    info->ref_cnt++;
+	}
+	return 0;
+    }
+
+     /* get the name */
+    /*--------------*/
+    retname = getname(fd, device_name, 1);
+    if (retname != NULL) {
+
+	/* Store the name */
+	info->device_name = strdup(device_name);
+
+	 /* Assign the channel */
+	/*--------------------*/
+	dev_desc.dsc$a_pointer = device_name;
+	dev_desc.dsc$w_length = strlen(device_name);
+	dev_desc.dsc$b_dtype = DSC$K_DTYPE_T;
+	dev_desc.dsc$b_class = DSC$K_CLASS_S;
+	call_stat = SYS$ASSIGN(&dev_desc, &chan, 0, 0, 0);
+	if ($VMS_STATUS_SUCCESS(call_stat)) {
+	    *channel = chan;
+	    info->channel = chan;
+	    info->ref_cnt = 1;
+	    status = 0;
+	}
+
+	/* Initialize the rest of the structure */
+	info->term_attr = NULL;
+    }
+
+    return status;
+}
+
+
+/* Close the vms_channel on the last lookup */
+
+static int vms_channel_close(int fd) {
+    int status = 0;
+
+    if (vms_info[fd].ref_cnt) {
+	if (fd > 2) {
+	    vms_info[fd].ref_cnt--;
+	}
+    }
+    if (vms_info[fd].ref_cnt == 0) {
+    int call_stat;
+
+	/* All references done, time to clean up */
+
+	/* Cancel any ASTs for signals */
+
+	/* Remove the channel */
+	call_stat = SYS$DASSGN(vms_info[fd].channel);
+	if ($VMS_STATUS_SUCCESS(call_stat)) {
+	    status = 0;
+	} else {
+	    errno = EIO;
+	    status = -1;
+	}
+
+	/* Clean up the cached device name */
+	if (vms_info[fd].device_name != NULL) {
+	    free(vms_info[fd].device_name);
+	    vms_info[fd].device_name = NULL;
+	}
+
+	/* Clean up the VMS terminal attributes */
+	if (vms_info[fd].vms_char != NULL) {
+	    free(vms_info[fd].vms_char);
+	    vms_info[fd].vms_char = NULL;
+	}
+	if (vms_info[fd].vms_iosb != NULL) {
+	    free(vms_info[fd].vms_iosb);
+	    vms_info[fd].vms_iosb = NULL;
+	}
+
+	/* Clean up the Unix terminal attributes */
+	if (vms_info[fd].term_attr != NULL) {
+	    free(vms_info[fd].term_attr);
+	    vms_info[fd].term_attr = NULL;
+	}
+    }
+    return status;
+}
+
+
+
+
+
+/* vms_speed_to_unix
+ *
+ * speed - VMS Speed value
+ *
+ * returns Unix speed value or 0 if speed can not be calculated.
+ *
+ */
+
+static int vms_speed_to_unix_speed(unsigned char speed) {
+    switch(speed) {
+    case TT$C_BAUD_50:		return B50;
+    case TT$C_BAUD_75:		return B75;
+    case TT$C_BAUD_110: 	return B110;
+    case TT$C_BAUD_134: 	return B134;
+    case TT$C_BAUD_150: 	return B150;
+    case TT$C_BAUD_300: 	return B300;
+    case TT$C_BAUD_600: 	return B600;
+    case TT$C_BAUD_1200:	return B1200;
+    case TT$C_BAUD_2400:	return B2400;
+    case TT$C_BAUD_4800:	return B4800;
+    case TT$C_BAUD_7200:	return B7200;
+    case TT$C_BAUD_9600:	return B9600;
+    case TT$C_BAUD_19200:	return B19200;
+    case TT$C_BAUD_38400:	return B38400;
+    }
+    return 0;
+}
+
+/* unix_speed_to_vms
+ *
+ * speed - Unix Speed value
+ *
+ * returns VMS speed value or 0 if speed can not be calculated.
+ *
+ */
+
+static int unix_speed_to_vms_speed(unsigned char speed) {
+    switch(speed) {
+    case B50:		return TT$C_BAUD_50;
+    case B75:		return TT$C_BAUD_75;
+    case B110: 		return TT$C_BAUD_110;
+    case B134: 		return TT$C_BAUD_134;
+    case B150: 		return TT$C_BAUD_150;
+    case B300: 		return TT$C_BAUD_300;
+    case B600: 		return TT$C_BAUD_600;
+    case B1200:		return TT$C_BAUD_1200;
+    case B2400:		return TT$C_BAUD_2400;
+    case B4800:		return TT$C_BAUD_4800;
+    case B7200:		return TT$C_BAUD_7200;
+    case B9600:		return TT$C_BAUD_9600;
+    case B19200:	return TT$C_BAUD_19200;
+    case B38400:	return TT$C_BAUD_38400;
+    }
+    return 0;
+}
+
+/* vms_term_qio_tcgetattr
+ * Does the actual work of getting those VMS terminal characteristics
+ * that can be mapped to Unix terminal characteristics.
+ *
+ * vms_info - on input, the VMS device channel, and other information.
+ *            on output, updated to reflect the current status.
+ *
+ * my_attr  - Structure containing the equivalent Unix characteristics.
+ *
+ * Returns 0 for success, -1 for an error and sets errno on failure.
+ *
+ */
+int vms_term_qio_tcgetattr(struct vms_info_st * vms_info,
+			   struct termios *my_attr) {
+int status;
+struct term_mode_iosb_st * mode_iosb;
+struct term_char_st * termchar;
+const unsigned long newmask = 0;
+unsigned int opost_active = 0;
+unsigned int any_fill = 0;
+unsigned int cflag_active = 0;
+int ret_stat = 0;
+
+    /* Get the old control character mask */
+    status = LIB$ENABLE_CTRL(&newmask, &vms_info->oldctrlmask);
+    if (!$VMS_STATUS_SUCCESS(status)) {
+	errno = EIO;
+	return -1;
+    }
+
+    /* Set up the structures to hold the information if not already there */
+    if (vms_info->vms_char == NULL) {
+	vms_info->vms_char = malloc(sizeof(struct term_char_st));
+	if (vms_info->vms_char == NULL) {
+	    return -1;
+	}
+    }
+    termchar = vms_info->vms_char;
+
+    if (vms_info->vms_iosb == NULL) {
+	vms_info->vms_iosb = malloc(sizeof(struct term_mode_iosb_st));
+	if (vms_info->vms_iosb == NULL) {
+	    return -1;
+	}
+    }
+    mode_iosb = vms_info->vms_iosb;
+
+    if (vms_info->term_attr == NULL) {
+	vms_info->term_attr = malloc(sizeof(struct termios));
+	if (vms_info->term_attr == NULL) {
+	    return -1;
+	}
+    }
+
+    status = SYS$QIOW
+       (EFN$C_ENF,
+	vms_info->channel,
+	IO$_SENSEMODE,
+	vms_info->vms_iosb,
+	NULL,
+	NULL,
+	termchar, sizeof(struct term_char_st), 0, 0, 0, 0);
+    if ($VMS_STATUS_SUCCESS(status) &&
+	$VMS_STATUS_SUCCESS(mode_iosb->sts)) {
+	    /* We have data */
+	    ret_stat = 0;
+    } else {
+	/* Something really wrong */
+	ret_stat = -1;
+	errno = EIO;
+	return ret_stat;
+    }
+
+    memset(my_attr, 0, sizeof(struct termios));
+
+    /* Input Flags */
+    my_attr->c_iflag |= IGNBRK; /* VMS driver handles BREAK */
+/*			BKRINT     VMS driver handles BREAK */
+/*			IGNPAR     VMS fatal error on bad parity */
+/*                      PARMRK     VMS can not mark parity errors */
+    if (mode_iosb->framing.tt_v_disparerr) {
+        my_attr->c_iflag |= INPCK;  /* Parity is enabled */
+    }
+    if (!termchar->ttdef.tt$v_eightbit) {
+	my_attr->c_iflag |= ISTRIP;  /* Strip 8th bit off characters */
+    }
+/*			INLCR	VMS terminates on linefeed and passes through */
+/*			IGNCR   VMS can not ignore CR */
+    my_attr->c_iflag |= ICRNL;   /* VMS RMS maps CR to LF on input */
+    if (termchar->ttdef.tt$v_ttsync) {
+	my_attr->c_iflag |= IXON;  /* XON/XOFF on output */
+    }
+    if (termchar->ttdef.tt$v_hostsync) {
+	my_attr->c_iflag |= IXOFF; /* XON/XOFF on input */
+    }
+#ifdef __USE_BSD
+/*			IXANY	VMS will not do this. */
+    my_attr->c_iflag |= IMAXBEL;    /* VMS rings bell when queue full */
+#endif
+#ifdef __USE_GNU
+/*			IUCLC   VMS will not translate upper to lower */
+#endif
+
+
+    /* Output flags */
+#if defined __USE_BSD || defined __USE_XOPEN
+    my_attr->c_oflag |= ONLCR;  /* VMS RMS does this automatically */
+    opost_active = 1;
+#endif
+#ifdef __USE_BSD
+/*			OXTABS	 (ALIAS for TAB3)  Expand tabs to spaces */
+/*			ONOEOT		VMS does not pass through ^Z EOF */
+/*					to output.			 */
+/*					Ignore for now.			 */
+#endif
+#if defined __USE_BSD || defined __USE_XOPEN
+/*			OCRNL	VMS will not map CR to NL on output */
+/*			ONOCR   Will VMS discard CRs when on column 0? */
+    my_attr->c_oflag |= ONLRET; /*VMS RMS adds a CR to NL on output */
+    opost_active = 1;
+#endif
+#if defined __USE_MISC || defined __USE_XOPEN
+/* NLDLY */
+/*				NL0 - No delay */
+/*				NL1 - Delay 0.10 seconds (2 chars) */
+/* FFDLY */
+/*				FF0 - No delay */
+/*				FF1 - Delay about 2 seconds */
+/* VTDLY */
+/*				VT0 - No delay */
+/*				VT1 - Delay about 2 seconds */
+    if (mode_iosb->lf_fill != 0) {
+	any_fill = 1;
+	opost_active = 1;
+	my_attr->c_oflag |= (VT1|FF1|VT1);
+    }
+/* CRDLY */
+/*				CR0 - No delay */
+/*				CR1 - column dependent (2 chars) */
+/*				CR2 - Delay 0.10 seconds (4 chars) */
+/*				CR3 - Delay 0.15 seconds */
+    if (mode_iosb->cr_fill != 0) {
+	any_fill = 1;
+	opost_active = 1;
+	if (mode_iosb->cr_fill > 4) {
+	    my_attr->c_oflag |= CR3;
+	} else if (mode_iosb->cr_fill > 2) {
+	    my_attr->c_oflag |= CR2;
+	} else {
+	    my_attr->c_oflag |= CR1;
+	}
+    }
+/* TABDLY */
+/*				TAB0 - No delay */
+/*				TAB1 - column dependent */
+/*				TAB2 - Delay 0.10 seconds (2 chars) */
+/*				TAB3 - Expand TAB to spaces */
+    if (!termchar->ttdef.tt$v_mechtab) {
+	my_attr->c_oflag |= TAB3;	/* Expand tabs to spaces */
+	opost_active = 1;
+    }
+/* BSDLY Not present on VMS */
+#endif
+#ifdef __USE_GNU
+    if (!termchar->ttdef.tt$v_lower) {
+	my_attr->c_oflag |= OLCUC;	/* VMS output all upper case */
+	opost_active = 1;
+    }
+#endif
+/*			    OFDEL	X/Open says use DEL instead of NULL */
+/*					GNU/Linux does not have a definition */
+#ifdef __USE_XOPEN
+    if (any_fill) {
+					/* X/Open Says this means 2	  */
+					/* characters sent for delay	  */
+	my_attr->c_oflag |= OFILL;	/* Send fill characters for delay */
+	opost_active = 1;
+    }
+#endif
+
+    if (opost_active) {
+	my_attr->c_oflag |= OPOST;  /* VMS At least one post feature active */
+    }
+
+    /* Control Modes */
+    if (mode_iosb->framing.tt_v_altframe) {
+	switch(mode_iosb->framing.tt_v_framesize) {
+	case 6: my_attr->c_cflag |= CS6;
+		cflag_active = 1;
+		break;
+	case 7: my_attr->c_cflag |= CS7;
+		cflag_active = 1;
+		break;
+	case 8: my_attr->c_cflag |= CS8;
+		cflag_active = 1;
+		break;
+	}
+    }
+    if (mode_iosb->framing.tt_v_twostop) {  /* two stop bits */
+	my_attr->c_cflag |= CSTOPB;
+	cflag_active = 1;
+    }
+    my_attr->c_cflag |= CREAD;	/* VMS not easily available, so say ready */
+    cflag_active = 1;
+    if (mode_iosb->framing.tt_v_parity) { /* Enable parity */
+	my_attr->c_cflag |= PARENB;
+	cflag_active = 1;
+    }
+    if (mode_iosb->framing.tt_v_odd) { /* Odd parity */
+	my_attr->c_cflag |=  PARODD;
+	cflag_active = 1;
+    }
+    if (!termchar->ttdef.tt$v_modem ) {
+	my_attr->c_cflag |= CLOCAL;	/* Local terminal */
+	cflag_active = 1;
+    } else {
+	my_attr->c_cflag |= HUPCL;	/* Hang up on last close */
+    }
+
+#ifdef __USE_BSD
+#if (__CRTL_VER >= 080200000) && !defined (__VAX)
+    if (termchar->tt3def.tt3$v_rts_flow) {
+        my_attr->c_cflag |= CRTSCTS;	/* VMS 8.2 has CTRCTS flow control */
+	cflag_active = 1;
+    }
+#else
+    if (termchar->tt2def.tt2$v_commsync) {
+	my_attr->c_cflag |= CRTSCTS;	/* Comm sync uses hardware flow ctrl */
+	cflag_active = 1;
+    }
+#endif
+    if (termchar->tt2def.tt2$v_commsync) {
+	my_attr->c_cflag |= CDTRCTS;	/* Comm sync uses hardware flow ctrl */
+	cflag_active = 1;
+    }
+    if (termchar->ttdef.tt$v_modem) {
+	my_attr->c_cflag |= MDMBUF;	/* Modem connected terminal */
+	cflag_active = 1;
+    }
+
+    if (!cflag_active) {
+	my_attr->c_cflag |= CIGNORE; /* Only if no control flags are set */
+    }
+#endif
+
+    /* Local Modes */
+    if (termchar->ttdef.tt$v_scope) {   /* VMS terminal SCOPE set */
+	my_attr->c_lflag |= ECHOKE;
+	my_attr->c_lflag |= ECHOE;
+    } else {
+	my_attr->c_lflag |= ECHOK;
+    }
+
+    if (!termchar->ttdef.tt$v_noecho) {  /* Characters are echoed */
+	my_attr->c_lflag |= ECHO;
+    }
+/*			ENCHONL   VMS will not echo NL with echo off */
+#ifdef __USE_BSD
+    my_attr->c_lflag |= ECHOPRT;	/* VMS echos erase characters */
+    my_attr->c_lflag |= ECHOCTL;	/* VMS echos control characters */
+#endif
+
+					/* VMS pass all input characters */
+    if (!termchar->ttdef.tt$v_passall && !termchar->tt2def.tt2$v_pasthru) {
+	my_attr->c_lflag |= ISIG;	/* VMS normal mode */
+	my_attr->c_lflag |= ICANON;
+    }
+#ifdef __USE_BSD
+/*			ALTWERASE	VMS is hard coded */
+#endif
+    if (!termchar->ttdef.tt$v_passall && !termchar->tt2def.tt2$v_pasthru) {
+	my_attr->c_lflag |= IEXTEN; /* VMS does ^O and ^V normally */
+    } else {
+	my_attr->c_lflag |= EXTPROC; /* Application, not interactive */
+    }
+/*			TOSTOP		VMS does not have SIGTTOU */
+#ifdef __USE_BSD
+/*			FLUSHO		VMS and Linux do not do this. */
+    if ((vms_info->oldctrlmask & LIB$M_CLI_CTRLT) == 0) {
+	my_attr->c_lflag |= NOKERNINFO; /* VMS Control-T Disabled */
+    }
+/*			PENDIN		Not sure how to do on VMS */
+#endif
+/*			NOFLSH		VMS does not do this */
+
+/*			XCASE		VMS does not have this */
+
+    /* Control Character Array */
+    my_attr->c_cc[VEOF] = 26;		/* VMS EOF is Control-Z */
+					/* Unix EOF is Control-D */
+    my_attr->c_cc[VEOL] = 0;		/* Not used with VMS/Linux */
+#ifdef __USE_BSD
+    my_attr->c_cc[VEOL2] = 0;		/* Not used with VMS/Linux */
+#endif
+    my_attr->c_cc[VERASE] = 127;	/* VMS default is DEL */
+#if (__CRTL_VER >= 080200000) && !defined (__VAX)
+    if (termchar->tt3def.tt3$v_bs) {
+	my_attr->c_cc[VERASE] = 8;	/* VMS 8.2 can set BS */
+    }
+#endif
+#ifdef __USE_BSD
+    my_attr->c_cc[VWERASE] = 10;	/* VMS uses LF to delete word */
+					/* Unix uses Control-W */
+#endif
+    my_attr->c_cc[VKILL] = 21;		/* VMS uses Control-U to delete line */
+    my_attr->c_cc[VREPRINT] = 18;	/* VMS uses Control-R to reprint */
+    my_attr->c_cc[VINTR] = 3;		/* VMS uses Control-C */
+    my_attr->c_cc[VQUIT] = 0;		/* VMS does not have Quit Character */
+					/* Unix uses Control-\ */
+    my_attr->c_cc[VSUSP] = 0;		/* VMS does not have Suspend */
+#ifdef __USE_BSD
+    my_attr->c_cc[VDSUSP] = 0;	/* VMS does not have a Delayed suspend */
+				/* Unix uses Control-y */
+#endif
+    my_attr->c_cc[VSTART] = 17;		/* VMS uses Control-Q */
+    my_attr->c_cc[VSTOP] = 19;		/* VMS uses Control-S */
+    my_attr->c_cc[VLNEXT] = 22;		/* VMS uses Control-V */
+    my_attr->c_cc[VDISCARD] = 15;	/* VMS uses Control-O */
+    my_attr->c_cc[VSTATUS] = 20;	/* VMS uses Control-T */
+
+    /* Speed section */
+    my_attr->c_ospeed = vms_speed_to_unix_speed(mode_iosb->txspeed);
+    if (mode_iosb->rxspeed == 0) {
+	my_attr->c_ispeed = my_attr->c_ospeed;
+    } else {
+	my_attr->c_ispeed = vms_speed_to_unix_speed(mode_iosb->rxspeed);
+    }
+
+    memcpy(vms_info->term_attr, my_attr, sizeof(struct termios));
+
+    return ret_stat;
+}
+
+
+/* vms_term_qio_tcsetattr
+ * Does the actual work of setting those VMS terminal characteristics
+ * that can be set, ignoring the rest.
+ * The vms_term_qio_tcgetattr routine needs to initially populate the vms_info
+ * structure that is passed by reference before this call.
+ * The vms_info structure will be updated to reflect the changes.
+ *
+ * vms_info - on input, the VMS device channel, and other information.
+ *            on output, updated to reflect any change requested.
+ *
+ * my_attr  - Readonly structure containing the desired Unix characteristics.
+ *
+ * We do not seem to be able to set fill here and have not tested
+ * Setting speed.  Attempting to set parity returns a SS$_BADPARAM
+ * On VMS these should be set before running the program.
+ *
+ * Returns 0 for success, -1 for an error and sets errno on failure.
+ *
+ */
+int vms_term_qio_tcsetattr(struct vms_info_st * vms_info,
+			   const struct termios *my_attr) {
+int status;
+struct term_mode_iosb_st * mode_iosb;
+struct term_char_st * termchar;
+const unsigned long newmask = LIB$M_CLI_CTRLT;
+unsigned long oldmask;
+int is_modem;
+int is_scope;
+int ret_stat;
+struct term_mode_iosb_st set_mode_iosb;
+
+    /* Set up the structures to hold the information if not already there */
+    if (vms_info->vms_char == NULL) {
+	struct termios old_attr;
+	ret_stat = vms_term_qio_tcgetattr(vms_info, &old_attr);
+	if (ret_stat < 0) {
+	    return ret_stat;
+	}
+    }
+
+    termchar = vms_info->vms_char;
+    mode_iosb = vms_info->vms_iosb;
+
+    is_modem = termchar->ttdef.tt$v_modem;
+    is_scope = termchar->ttdef.tt$v_scope;
+
+    /* Input Flags */
+/*			IGNBRK     VMS driver handles BREAK */
+/*			BKRINT     VMS driver handles BREAK */
+/*			IGNPAR     VMS fatal error on bad parity */
+/*                      PARMRK     VMS can not mark parity errors */
+
+/* On VMS, we are not setting the framing or parity this way */
+/*			INPCK	   Parity is enabled ? */
+
+    if ((my_attr->c_iflag & ISTRIP) != 0) {  /* Strip 8th bit off characters */
+        termchar->ttdef.tt$v_eightbit = 0;
+    } else {
+        termchar->ttdef.tt$v_eightbit = 1;
+    }
+/*			INLCR	VMS terminates on linefeed and passes through */
+/*			IGNCR   VMS can not ignore CR */
+/*			ICRNL   VMS RMS maps CR to LF on input */
+
+    if ((my_attr->c_iflag & IXON) != 0) {  /* XON/XOFF on output */
+        termchar->ttdef.tt$v_ttsync = 1;
+    } else {
+        termchar->ttdef.tt$v_ttsync = 0;
+    }
+    if ((my_attr->c_iflag & IXOFF) != 0) { /* XON/XOFF on input */
+        termchar->ttdef.tt$v_hostsync = 1;
+    } else {
+        termchar->ttdef.tt$v_hostsync = 0;
+    }
+#ifdef __USE_BSD
+/*			IXANY	VMS will not do this. */
+/*			IMAXBEL VMS rings bell when queue full */
+#endif
+#ifdef __USE_GNU
+/*			IUCLC   VMS will not translate upper to lower */
+#endif
+
+
+    /* Output flags */
+#if defined __USE_BSD || defined __USE_XOPEN
+/*			ONLCR	VMS RMS does this automatically */
+#endif
+
+#ifdef __USE_BSD
+/*			OXTABS	Alias for TAB3 */
+/*			ONOEOT		VMS does not pass through ^Z EOF */
+/*					to output.			 */
+/*					Ignore for now.			 */
+#endif
+#if defined __USE_BSD || defined __USE_XOPEN
+/*			OCRNL	VMS will not map CR to NL on output */
+/*			ONOCR   Will VMS discard CRs when on column 0? */
+/*			ONLRET  VMS RMS adds a CR to NL on output */
+#endif
+#if defined __USE_MISC || defined __USE_XOPEN
+/* NLDLY */
+/*				NL0 - No delay */
+/*				NL1 - Delay 0.10 seconds (2 chars) */
+/* FFDLY */
+/*				FF0 - No delay */
+/*				FF1 - Delay about 2 seconds */
+/* VTDLY */
+/*				VT0 - No delay */
+/*				VT1 - Delay about 2 seconds */
+/* CRDLY */
+/*				CR0 - No delay */
+/*				CR1 - column dependent (2 chars) */
+/*				CR2 - Delay 0.10 seconds (4 chars) */
+/*				CR3 - Delay 0.15 seconds */
+/* TABDLY */
+/*				TAB0 - No delay */
+/*				TAB1 - column dependent */
+/*				TAB2 - Delay 0.10 seconds (2 chars) */
+/*				TAB3 - Expand TAB to spaces */
+    if ((my_attr->c_oflag & TAB3) != 0) {	/* Expand tabs to spaces */
+	termchar->ttdef.tt$v_mechtab = 0;
+    } else {
+	termchar->ttdef.tt$v_mechtab = 1;
+    }
+
+
+/* BSDLY Not present on VMS */
+#endif
+#ifdef __USE_GNU
+    if ((my_attr->c_oflag & OLCUC) != 0) {  /* VMS output all upper case */
+	termchar->ttdef.tt$v_lower = 0;
+    } else {
+	termchar->ttdef.tt$v_lower = 1;
+    }
+#endif
+/*			    OFDEL	X/Open says use DEL instead of NULL */
+/*					GNU/Linux does not have a definition */
+#ifdef __USE_XOPEN
+					/* X/Open Says this means 2	  */
+					/* characters sent for delay	  */
+/*			OFILL	*/	/* Send fill characters for delay */
+#endif
+
+/*			OPOST		VMS At least one post feature active */
+
+    /* Control Modes */
+
+#ifdef __USE_BSD
+/*			CIGNORE		Only if no control flags are set */
+    if ((my_attr->c_cflag & CIGNORE) != 0) {
+#endif
+
+/*		CSIZE == CS6 , CS7, CS8  Frame size not set here on VMS */
+/*			CSTOPB		Stop bits not set here on VMS */
+
+/*  			CREAD	    VMS not easily available, so say ready */
+
+/*			PARENB	    VMS not setting parity here */
+/*			PARODD	    VMS not setting Odd parity here */
+
+/*			HUPCL		Hangup modem on logout */
+/*			CLOCAL		Local terminal - Not modem */
+/* Resolving conflict by having HUPCL override CLOCAL */
+/* Setting modem by sensemode should disconnect or logout the process */
+	if ((my_attr->c_cflag & CLOCAL) != 0) {
+	    is_modem = 0;
+	}
+	if ((my_attr->c_cflag & HUPCL) != 0) {
+	    is_modem = 1;
+	}
+
+#ifdef __USE_BSD
+	/* VMS 8.2 has CTRCTS flow control */
+#if (__CRTL_VER >= 080200000) && !defined (__VAX)
+	if ((my_attr->c_cflag & CRTSCTS) != 0) {
+	    termchar->tt3def.tt3$v_rts_flow = 1;
+	} else {
+	    termchar->tt3def.tt3$v_rts_flow = 0;
+	}
+#else
+	if ((my_attr->c_cflag & CRTSCTS) != 0) {
+	    /* Comm sync uses hardware flow ctrl */
+	    termchar->tt2def.tt2$v_commsync = 1;
+	} else {
+	   termchar->tt2def.tt2$v_commsync = 0;
+	}
+#endif
+	/* Comm sync uses hardware flow ctrl */
+	if ((my_attr->c_cflag & CDTRCTS) != 0) {
+	    termchar->tt2def.tt2$v_commsync = 1;
+	} else {
+	    termchar->tt2def.tt2$v_commsync = 0;
+	}
+	if ((my_attr->c_cflag & MDMBUF) != 0) {	/* Modem connected terminal */
+	    is_modem = 1;
+	}
+#endif
+
+#ifdef __USE_BSD
+    }
+#endif
+
+    /* Local Modes */
+    if (((my_attr->c_lflag & ECHOKE) != 0) ||
+	((my_attr->c_lflag & ECHOE) != 0)) {
+	is_scope = 1;			/* VMS terminal SCOPE set */
+    } else if ((my_attr->c_lflag & ECHOK) != 0) {
+	is_scope = 0;			/* VMS terminal SCOPE clear */
+    }
+
+
+/*			ECHOK		Echo NL after kill (non-scope) */
+
+    if ((my_attr->c_lflag & ECHO) != 0) {
+	termchar->ttdef.tt$v_noecho = 0;  /* Characters are echoed */
+    } else {
+	termchar->ttdef.tt$v_noecho = 1;  /* Characters are not echoed */
+    }
+/*			ENCHONL   VMS will not echo NL with echo off */
+#ifdef __USE_BSD
+/*			ECHOPRT   VMS hardcopy echos erase characters */
+/*			ECHOCTL	  VMS echos control characters */
+#endif
+
+    if (((my_attr->c_lflag & ISIG) != 0) ||
+	((my_attr->c_lflag & ICANON) != 0) ||
+	((my_attr->c_lflag & IEXTEN) != 0)) {
+
+	/* VMS interpret input characters */
+	termchar->tt2def.tt2$v_pasthru = 0;
+    } else {
+	/* VMS pass-through input characters */
+	termchar->tt2def.tt2$v_pasthru = 1;
+    }
+#ifdef __USE_BSD
+/*			ALTWERASE	VMS is hard coded */
+#endif
+/*			IEXTEN		VMS does ^O and ^V normally */
+
+/*			EXTPROC		Application, not interactive */
+/*					Need to set before entering */
+/*			TOSTOP		VMS does not have SIGTTOU */
+#ifdef __USE_BSD
+/*			FLUSHO		VMS and Linux do not do this. */
+    if ((my_attr->c_lflag & NOKERNINFO) != 0) {  /* VMS Control-T handling */
+	if ((vms_info->oldctrlmask & LIB$M_CLI_CTRLT) != 0) {
+	    status = LIB$DISABLE_CTRL(&newmask, &oldmask);
+	}
+    } else {
+	if ((vms_info->oldctrlmask & LIB$M_CLI_CTRLT) == 0) {
+	    status = LIB$ENABLE_CTRL(&newmask, &oldmask);
+	}
+    }
+/*			PENDIN		Not sure how to do on VMS */
+#endif
+/*			NOFLSH		VMS does not do this */
+
+/*			XCASE		VMS does not have this */
+
+    /* Control Character Array */
+/*    my_attr->c_cc[VEOF] = 26; */	/* VMS EOF is Control-Z */
+					/* Unix EOF is Control-D */
+/*    my_attr->c_cc[VEOL] = 0; */	/* Not used with VMS/Linux */
+#ifdef __USE_BSD
+/*    my_attr->c_cc[VEOL2] = 0; */	/* Not used with VMS/Linux */
+#endif
+/*    my_attr->c_cc[VERASE] = 127; */	/* VMS default is DEL */
+#if (__CRTL_VER >= 080200000) && !defined (__VAX)
+    if (my_attr->c_cc[VERASE] == 8) {	/* VMS 8.2 can set BS */
+    	termchar->tt3def.tt3$v_bs = 1;
+    } else {
+	termchar->tt3def.tt3$v_bs = 0;
+    }
+#endif
+#ifdef __USE_BSD
+/*  my_attr->c_cc[VWERASE] = 10; */	/* VMS uses LF to delete word */
+					/* Unix uses Control-W */
+#endif
+/*    my_attr->c_cc[VKILL] = 21; */	/* VMS uses Control-U to delete line */
+/*    my_attr->c_cc[VREPRINT] = 18; */	/* VMS uses Control-R to reprint */
+/*    my_attr->c_cc[VINTR] = 3;	*/	/* VMS uses Control-C */
+/*    my_attr->c_cc[VQUIT] = 0;	*/	/* VMS does not have Quit Character */
+					/* Unix uses Control-\ */
+/*    my_attr->c_cc[VSUSP] = 0; */	/* VMS does not have Suspend */
+#ifdef __USE_BSD
+/*    my_attr->c_cc[VDSUSP] = 0; */ /* VMS does not have a Delayed suspend */
+				/* Unix uses Control-y */
+#endif
+/*    my_attr->c_cc[VSTART] = 17; */	/* VMS uses Control-Q */
+/*    my_attr->c_cc[VSTOP] = 19; */	/* VMS uses Control-S */
+/*    my_attr->c_cc[VLNEXT] = 22; */	/* VMS uses Control-V */
+/*    my_attr->c_cc[VDISCARD] = 15; */	/* VMS uses Control-O */
+/*    my_attr->c_cc[VSTATUS] = 20; */	/* VMS uses Control-T */
+
+    /* Is this a video terminal? */
+    termchar->ttdef.tt$v_scope = is_scope;
+
+    /* Is this a modem? */
+    termchar->ttdef.tt$v_modem = is_modem;
+
+    status = SYS$QIOW
+       (EFN$C_ENF,
+	vms_info->channel,
+	IO$_SETMODE,
+	&set_mode_iosb,
+	NULL,
+	NULL,
+	termchar, sizeof(struct term_char_st),
+	0, 0, 0, 0);
+    if ($VMS_STATUS_SUCCESS(status) &&
+	$VMS_STATUS_SUCCESS(set_mode_iosb.sts)) {
+
+	    /* We set the data, cache it */
+	    vms_info->term_attr->c_iflag = my_attr->c_iflag;
+	    vms_info->term_attr->c_oflag = my_attr->c_oflag;
+	    vms_info->term_attr->c_lflag = my_attr->c_lflag;
+	    if (termchar->tt2def.tt2$v_pasthru) {
+	        vms_info->term_attr->c_lflag &= ~(ISIG|ICANON|IEXTEN);
+	    }
+
+	    /* Except if CIGNORE set for changes */
+	    if ((my_attr->c_cflag & CIGNORE) == 0) {
+		vms_info->term_attr->c_cflag = my_attr->c_cflag;
+	    }
+
+	    /* VMS 8.2 can set BS, so this could have changed */
+	    vms_info->term_attr->c_cc[VERASE] = my_attr->c_cc[VERASE];
+
+    } else {
+	/* Something really wrong */
+	ret_stat = -1;
+	errno = EIO;
+    }
+
+    return ret_stat;
+}
+
+
+
+  /********************************/
+ /* termios replacement routines */
+/********************************/
+int tcgetattr(int fd, struct termios * buf) {
+int result;
+unsigned short chan;
+int status;
+
+    /* Would someone call this on a non-terminal? */
+#if 0
+    if (!isatty(fd)) {
+	errno = EBADF;
+	return -1;
+    }
+#endif
+    /* Open the channel if needed */
+    status = vms_channel_lookup(fd, &chan);
+    if (status == 0) {
+
+
+	/* We need to first get the current settings */
+	status = vms_term_qio_tcgetattr(&vms_info[fd], buf);
+
+	if (status != 0) {
+	    vms_channel_close(fd);
+	    return -1;
+	}
+
+
+	/* Unix mode, just look up the last cached value */
+	memcpy(buf, vms_info[fd].term_attr, sizeof (struct termios));
+	status = 0;
+
+	/* close the channel if we opened it */
+	vms_channel_close(fd);
+    }
+    return status;
+}
+
+
+
+int tcsetattr(int fd, int action, const struct termios * buf) {
+
+int result;
+unsigned short chan;
+int status;
+
+    /* Would someone call this on a non-terminal? */
+#if 0
+    if (!isatty(fd)) {
+	errno = EBADF;
+	return -1;
+    }
+#endif
+    if (action != TCSANOW) {
+	/* Unless we totally take over the I/O, the best that */
+	/* we can do is attempt a a fsync() */
+	fsync(fd);
+    }
+
+    /* Open the channel if needed */
+    status = vms_channel_lookup(fd, &chan);
+    if (status == 0) {
+	/* Now attempt to set them */
+	status = vms_term_qio_tcsetattr(&vms_info[fd], buf);
+    }
+
+    /* close the channel if we opened it */
+    vms_channel_close(fd);
+    return status;
+}
+
+
+
+
diff --git a/vms/vms_crtl_init.c b/vms/vms_crtl_init.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Ztc19jcnRsX2luaXQuYw==
--- /dev/null
+++ b/vms/vms_crtl_init.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <errno.h>
+#include <unixlib.h>
+
+
+/*
+** Sets current value for a feature
+*/
+static void set(char *name, int value)
+{
+     int index;
+     errno = 0;
+
+     index = decc$feature_get_index(name);
+
+     if (index > 0)
+	decc$feature_set_value(index, 1, value);
+}
+
+/*
+** Sets default value for a feature
+*/
+static void set_default(char *name, int value)
+{
+     int index;
+     errno = 0;
+
+     index = decc$feature_get_index(name);
+
+     if (index > 0)
+	decc$feature_set_value (index, 0, value);
+}
+
+static void set_coe ( void )
+{
+    set ("DECC$UNIX_LEVEL", 100);
+    set ("DECC$ARGV_PARSE_STYLE", 1);
+    set ("DECC$DETACHED_CHILD_PROCESS", 0);
+    set ("DECC$EFS_CASE_PRESERVE", 1);
+    set ("DECC$EFS_CASE_SPECIAL", 0);
+    set ("DECC$EFS_CHARSET", 1);
+    set ("DECC$ENABLE_GETENV_CACHE", 1);
+    set ("DECC$EXIT_AFTER_FAILED_EXEC", 1);
+    set ("DECC$FILE_SHARING", 1);
+    set ("DECC$MAILBOX_CTX_STM", 1);
+    set ("DECC$POPEN_NO_CRLF_REC_ATTR", 1);
+    set ("DECC$POSIX_SEEK_STREAM_FILE", 1);
+    set ("DECC$POSIX_STYLE_UID", 0);    // else getpwuid() doesn't work
+    set ("DECC$READDIR_DROPDOTNOTYPE", 1);
+}
+
+#pragma extern_model save
+#pragma extern_model strict_refdef "LIB$INITIALIZE" nowrt, long
+#if __INITIAL_POINTER_SIZE
+#    pragma __pointer_size __save
+#    pragma __pointer_size 32
+#else
+#    pragma __required_pointer_size __save
+#    pragma __required_pointer_size 32
+#endif
+void (* const iniarray[])() = {set_coe, } ;	/* Set our contribution to the LIB$INITIALIZE array */
+#if __INITIAL_POINTER_SIZE
+#    pragma __pointer_size __restore
+#else
+#    pragma __required_pointer_size __restore
+#endif
+#pragma extern_model restore
+
+int LIB$INITIALIZE();
+/* globaldef */ int (*lib_init_ref)() = LIB$INITIALIZE;
diff --git a/vms/vms_poll_select_hack.c b/vms/vms_poll_select_hack.c
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Ztc19wb2xsX3NlbGVjdF9oYWNrLmM=
--- /dev/null
+++ b/vms/vms_poll_select_hack.c
@@ -0,0 +1,1059 @@
+/* File: VMS_POLL_SELECT_HACK.C */
+/* Hack to make poll() and select() appear to work on pipes and terminals */
+
+/* This file is included in gmain.c to easily add it into the build */
+
+#include <dcdef>
+#include <descrip.h>
+#include <dvidef>
+#include <efndef.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <iodef.h>
+#include <iosbdef.h>
+#include <poll.h>
+#include <socket.h>
+#include <ssdef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stsdef.h>
+#include <unistd.h>
+#include <unixio.h>
+#include <unixlib.h>
+#include <time.h>
+/*
+#include "python_root:[include]Python.h"
+#include "python_root:[include]floatobject.h"
+#include "python_root:[include]object.h"
+#include "python_root:[include]pyport.h"
+*/
+
+int LIB$SIGNAL(int);
+
+int SYS$ASSIGN(const struct dsc$descriptor_s *devnam, unsigned short *chan,
+               unsigned long acmode, const struct dsc$descriptor_s *mbxnam,
+               unsigned long flags);
+
+int SYS$DASSGN(unsigned short chan);
+
+unsigned long SYS$QIOW(unsigned long efn, unsigned short chan,
+                       unsigned long func, void *iosb, void (*astadr)(void *),
+                       ...);
+
+int SYS$READEF(unsigned long efn, unsigned long *state);
+
+int SYS$GETDVIW(unsigned int efn, unsigned short int chan, void *devnam,
+                void *itmlst, void *iosb, void (*astadr)(void *), int astprm,
+                void *nullarg, ...);
+
+static int g_vms_channel_lookup(int fd, unsigned short *channel) {
+  int status;
+  char devicename[256];
+  char *retname;
+  struct dsc$descriptor_s dev_desc;
+  int call_stat;
+  unsigned short chan;
+
+  status = -1;
+
+  /* get the name */
+  /*--------------*/
+  retname = getname(fd, devicename, 1);
+  if (retname != NULL) {
+    /* Assign the channel */
+    /*--------------------*/
+    dev_desc.dsc$a_pointer = devicename;
+    dev_desc.dsc$w_length = strlen(devicename);
+    dev_desc.dsc$b_dtype = DSC$K_DTYPE_T;
+    dev_desc.dsc$b_class = DSC$K_CLASS_S;
+    call_stat = SYS$ASSIGN(&dev_desc, &chan, 0, 0, 0);
+    if ($VMS_STATUS_SUCCESS(call_stat)) {
+      *channel = chan;
+      status = 0;
+    }
+  }
+  return status;
+}
+
+static int g_vms_channelname_lookup(int fd, char *channel) {
+  int status;
+  char devicename[256];
+  char *retname;
+  struct dsc$descriptor_s dev_desc;
+  int call_stat;
+  unsigned short chan;
+
+  status = -1;
+
+  /* get the name */
+  /*--------------*/
+  retname = getname(fd, devicename, 1);
+  if (retname != NULL) {
+    strcpy(channel, devicename);
+    status = 0;
+  } else
+    status = 1;
+  return status;
+}
+
+unsigned long read_pipe_bytes(int fd, char *buf, int size, int *pid_ptr) {
+  unsigned short channel;
+  int nbytes = 0;
+  if (g_vms_channel_lookup(fd, &channel) == 0) {
+    struct {
+      unsigned short sts;
+      unsigned short bytes_read;
+      unsigned long pid;
+    } mbx_iosb_read;
+    int status = SYS$QIOW(EFN$C_ENF, channel, IO$_READVBLK, &mbx_iosb_read,
+                          NULL, NULL, buf, size, 0, 0, 0, 0);
+    if ($VMS_STATUS_SUCCESS(status)) {
+      if (mbx_iosb_read.sts == SS$_ENDOFFILE) {
+        nbytes = 0;
+      } else {
+        nbytes = mbx_iosb_read.bytes_read;
+        if (nbytes == 0) {
+          nbytes = 1;
+          buf[0] = '\n';
+        }
+      }
+    }    SYS$DASSGN(channel);
+    if (pid_ptr) {
+      *pid_ptr = mbx_iosb_read.pid;
+    }
+  }
+  return nbytes;
+}
+
+struct vms_pollfd_st {
+  struct pollfd *fd_desc_ptr;
+  unsigned short channel;
+  unsigned short pad;
+};
+
+static int vms_poll_terminal(const struct vms_pollfd_st *term_array, int ti) {
+  int i;
+  int ret_stat;
+  int count;
+  int status;
+#pragma member_alignment save
+#pragma nomember_alignment
+  struct term_mode_iosb_st {
+    unsigned short sts;
+    unsigned short speed;
+    unsigned long other;
+  } mode_iosb;
+
+  struct typeahead_st {
+    unsigned short numchars;
+    unsigned char firstchar;
+    unsigned char reserved0;
+    unsigned long reserved1;
+  } typeahead;
+#pragma member_alignment restore
+
+  ret_stat = 0;
+
+  /* Loop through the terminal channels */
+  for (i = 0; i < ti; i++) {
+
+    term_array[i].fd_desc_ptr->revents = 0;
+
+    /* assume output is always available */
+    term_array[i].fd_desc_ptr->revents =
+        term_array[i].fd_desc_ptr->events & POLL_OUT;
+
+    /* Poll input status */
+    if (term_array[i].fd_desc_ptr->events & POLL_IN) {
+      status = SYS$QIOW(EFN$C_ENF, term_array[i].channel,
+                        IO$_SENSEMODE | IO$M_TYPEAHDCNT, &mode_iosb, NULL, NULL,
+                        &typeahead, 8, 0, 0, 0, 0);
+      if ($VMS_STATUS_SUCCESS(status) && $VMS_STATUS_SUCCESS(mode_iosb.sts)) {
+        if (typeahead.numchars != 0) {
+          term_array[i].fd_desc_ptr->revents =
+              term_array[i].fd_desc_ptr->events & POLL_IN;
+        }
+      } else {
+        /* Something really wrong */
+        ret_stat = -1;
+        errno = EIO;
+        break;
+      }
+    }
+    /* Increment the return status */
+    if (term_array[i].fd_desc_ptr->revents != 0)
+      ret_stat++;
+  }
+
+  return ret_stat;
+}
+
+static int vms_poll_pipe(const struct vms_pollfd_st *pipe_array, int pi) {
+  int i;
+  int ret_stat;
+  int status;
+#pragma member_alignment save
+#pragma nomember_alignment
+  struct mbx_gmif_iosb_st {
+    unsigned short sts;
+    unsigned short num_msg;
+    unsigned long num_bytes;
+  } mbx_iosb;
+#pragma member_alignment restore
+
+  ret_stat = 0;
+
+  /* Loop through the pipes */
+  for (i = 0; i < pi; i++) {
+    pipe_array[i].fd_desc_ptr->revents = 0;
+
+    /* Check the mailbox status */
+    if (pipe_array[i].fd_desc_ptr->events & (POLL_IN | POLL_OUT)) {
+      status = SYS$QIOW(EFN$C_ENF, pipe_array[i].channel, IO$_SENSEMODE,
+                        &mbx_iosb, NULL, NULL, 0, 0, 0, 0, 0, 0);
+      if ($VMS_STATUS_SUCCESS(status) && $VMS_STATUS_SUCCESS(mbx_iosb.sts)) {
+
+        /* Got some information */
+
+        if (mbx_iosb.num_msg != 0) {
+          /* There is data to read */
+          pipe_array[i].fd_desc_ptr->revents =
+              pipe_array[i].fd_desc_ptr->events & POLL_IN;
+        } else {
+          /* Pipe is empty, ok to write */
+          pipe_array[i].fd_desc_ptr->revents =
+              pipe_array[i].fd_desc_ptr->events & POLL_OUT;
+        }
+      } else {
+        /* Something really wrong */
+        ret_stat = -1;
+        errno = EIO;
+        break;
+      }
+    }
+    /* Increment the return status */
+    if (pipe_array[i].fd_desc_ptr->revents != 0)
+      ret_stat++;
+  }
+  return ret_stat;
+}
+
+static int vms_poll_x11_efn(const struct vms_pollfd_st *efn_array, int xi) {
+  int i;
+  int ret_stat;
+  int status;
+  unsigned long state;
+
+  ret_stat = 0;
+
+  /* Loop through the event flags */
+  for (i = 0; i < xi; i++) {
+    efn_array[i].fd_desc_ptr->revents = 0;
+
+    /* assume output is always available */
+    efn_array[i].fd_desc_ptr->revents =
+        efn_array[i].fd_desc_ptr->events & POLL_OUT;
+
+    /* Check the mailbox status */
+    if (efn_array[i].fd_desc_ptr->events & (POLL_IN | POLL_OUT)) {
+      status = SYS$READEF(efn_array[i].fd_desc_ptr->fd, &state);
+      if ($VMS_STATUS_SUCCESS(status)) {
+
+        /* Got some information */
+        if (status == SS$_WASSET) {
+          /* There is data to read */
+          efn_array[i].fd_desc_ptr->revents =
+              efn_array[i].fd_desc_ptr->events & POLL_IN;
+        }
+      } else {
+        /* Something really wrong */
+        ret_stat = -1;
+        errno = EIO;
+        break;
+      }
+    }
+    /* Increment the return status */
+    if (efn_array[i].fd_desc_ptr->revents != 0)
+      ret_stat++;
+  }
+  return ret_stat;
+}
+
+/*******************************************************************
+ OpenVMS Open Source Community poll hack...
+
+ this code acts as a wrapper for poll() and supports:
+        pipes
+        mailboxes
+        terminals
+        sockets
+
+
+ *******************************************************************/
+
+int g_vms_poll(struct pollfd fd_array[], nfds_t nfds, int timeout) {
+  int ret_stat;
+
+  struct {
+    short int buf_len;
+    short int item;
+    char *buf_addr;
+    unsigned short int *ret_len;
+    int end;
+  } item_list;
+
+  int mbx_len;
+  unsigned int mbx_char;
+
+  struct vms_pollfd_st *sock_array;
+  struct pollfd *sfd_array;
+  struct vms_pollfd_st *term_array;
+  struct vms_pollfd_st *pipe_array;
+  struct vms_pollfd_st *xefn_array;
+
+  /* Sort out the pipes, terminals from the array */
+  if ((nfds != 0) && (fd_array != NULL)) {
+    int i;
+    int pi;
+    int ti;
+    int si;
+    int xi;
+    int status;
+    int ti_stat;
+    int pi_stat;
+    int si_stat;
+    int xi_stat;
+
+    ti_stat = 0;
+    pi_stat = 0;
+    si_stat = 0;
+    xi_stat = 0;
+
+    /* Need 5 new arrays */
+    sock_array = malloc(sizeof(struct vms_pollfd_st) * nfds);
+    if (sock_array == NULL)
+      return -1;
+    sfd_array = malloc(sizeof(struct pollfd) * nfds);
+    if (sfd_array == NULL) {
+      free(sock_array);
+      return -1;
+    }
+    term_array = malloc(sizeof(struct vms_pollfd_st) * nfds);
+    if (term_array == NULL) {
+      free(sock_array);
+      free(sfd_array);
+      return -1;
+    }
+    pipe_array = malloc(sizeof(struct vms_pollfd_st) * nfds);
+    if (pipe_array == NULL) {
+      free(term_array);
+      free(sock_array);
+      free(sfd_array);
+      return -1;
+    }
+    xefn_array = malloc(sizeof(struct vms_pollfd_st) * nfds);
+    if (xefn_array == NULL) {
+      free(pipe_array);
+      free(term_array);
+      free(sock_array);
+      free(sfd_array);
+      return -1;
+    }
+    memset(sock_array, 0, sizeof(struct vms_pollfd_st) * nfds);
+    memset(sfd_array, 0, sizeof(struct pollfd) * nfds);
+    memset(term_array, 0, sizeof(struct vms_pollfd_st) * nfds);
+    memset(pipe_array, 0, sizeof(struct vms_pollfd_st) * nfds);
+    memset(xefn_array, 0, sizeof(struct vms_pollfd_st) * nfds);
+
+    /* Now actually separate things out */
+    for (i = 0, pi = 0, si = 0, ti = 0, xi = 0; i < nfds; i++) {
+      fd_array[i].revents = 0;
+
+      /* Only care about devices that are waiting for something */
+      if (fd_array[i].events != 0) {
+
+        /* First look for pipes */
+        if (isapipe(fd_array[i].fd) == 1) {
+          pipe_array[pi].fd_desc_ptr = NULL;
+          if (fd_array[i].events & (POLL_IN | POLL_OUT)) {
+            pipe_array[pi].fd_desc_ptr = &fd_array[i];
+            status =
+                g_vms_channel_lookup(fd_array[i].fd, &pipe_array[pi].channel);
+            if (status == 0)
+              pi++;
+          }
+        }
+        /* Then look for terminals */
+        else if (isatty(fd_array[i].fd) == 1) {
+          term_array[ti].fd_desc_ptr = NULL;
+          if (fd_array[i].events & (POLL_IN | POLL_OUT)) {
+            term_array[ti].fd_desc_ptr = &fd_array[i];
+            status =
+                g_vms_channel_lookup(fd_array[i].fd, &term_array[ti].channel);
+            if (status == 0)
+              ti++;
+          }
+        }
+        /* Should be a socket */
+        else if (decc$get_sdc(fd_array[i].fd) != 0) {
+          sfd_array[si] = fd_array[i];
+          sock_array[si].fd_desc_ptr = &fd_array[i];
+          si++;
+        } else {
+          /**** WAP 24 Nov 2015 *********/
+          /* see if it is a mailbox and then treat as a pipe or X11 event if not
+           * mailbox */
+          pipe_array[pi].fd_desc_ptr = NULL;
+
+          /* Only care about something with read/write events */
+          mbx_char = 0;
+          if (fd_array[i].events & (POLL_IN | POLL_OUT)) {
+            pipe_array[pi].fd_desc_ptr = &fd_array[i];
+            status = g_vms_channel_lookup(i, &pipe_array[pi].channel);
+            if (status == 0) {
+              item_list.buf_len = 4;
+              item_list.item = DVI$_DEVCLASS;
+              item_list.buf_addr = (void *)&mbx_char;
+              item_list.ret_len = (void *)&mbx_len;
+              item_list.end = 0;
+
+              SYS$GETDVIW(0, pipe_array[pi].channel, 0, &item_list, 0, 0, 0, 0);
+              if ((mbx_char & DC$_MAILBOX) != 0) {
+                pi++;
+              } else {
+                SYS$DASSGN(pipe_array[pi].channel);
+              }
+            } /* if status */
+          }   /* if events MBX... */
+
+          /* What's left? X11 event flags */
+          else if ((mbx_char & DC$_MAILBOX) == 0) {
+
+            xefn_array[xi].fd_desc_ptr = NULL;
+            if (fd_array[i].events & (POLL_IN | POLL_OUT)) {
+              xefn_array[xi].fd_desc_ptr = &fd_array[i];
+              xi++;
+            }
+          }
+        }
+      } /* if events */
+    }   /* for... */
+    if ((ti == 0) && (pi == 0) && (si == 0) && (xi == 0)) {
+      /* Trivial case, all sockets */
+      ret_stat = poll(fd_array, nfds, timeout);
+    } else {
+      int timeleft;
+
+      timeleft = timeout;
+      ret_stat = 0;
+
+      /* Terminals and or pipes and or sockets  */
+      /* Now we have to periodically poll everything with timeout */
+      while (ret_stat == 0) {
+        int sleeptime;
+
+        if (ti != 0) {
+          ti_stat = vms_poll_terminal(term_array, ti);
+        }
+        if (pi != 0) {
+          pi_stat = vms_poll_pipe(pipe_array, pi);
+        }
+        if (xi != 0) {
+          xi_stat = vms_poll_x11_efn(xefn_array, xi);
+        }
+
+        if ((ti_stat != 0) || (pi_stat != 0) || (xi_stat != 0))
+          sleeptime = 0;
+        else {
+          sleeptime = 100;
+          if ((timeleft < sleeptime) && (timeleft > -1))
+            sleeptime = timeleft;
+        }
+
+        if (si == 0) {
+          /* sleep for shorter of 100 Ms or timeout and retry */
+          if (sleeptime > 0)
+            usleep(sleeptime * 1000);
+        } else {
+          int j;
+
+          /* select for shorter of 100 Ms or timeout and retry */
+          si_stat = poll(sfd_array, si, sleeptime);
+          if (si_stat != 0) {
+
+            /* Need to copy the results back to original array */
+            for (j = 0; j < si; j++) {
+              sock_array[j].fd_desc_ptr[0] = sfd_array[j];
+            }
+          }
+        }
+        /* one last poll of terminals and pipes */
+        if ((sleeptime > 0) || (si_stat > 0)) {
+          if ((ti != 0) && (ti_stat == 0)) {
+            ti_stat = vms_poll_terminal(term_array, ti);
+          }
+          if ((pi != 0) && (pi_stat == 0)) {
+            pi_stat = vms_poll_pipe(pipe_array, pi);
+          }
+          if ((xi != 0) && (xi_stat == 0)) {
+            xi_stat = vms_poll_x11_efn(xefn_array, xi);
+          }
+        }
+        if (timeleft > 0) {
+          timeleft -= sleeptime;
+          if (timeleft < 0)
+            timeleft = 0;
+        }
+
+        /* Gather up any results */
+        if ((ti_stat == -1) || (pi_stat == -1) || (si_stat == -1) ||
+            (xi_stat == -1)) {
+          ret_stat = -1;
+        } else {
+          ret_stat = ti_stat + pi_stat + si_stat + xi_stat;
+        }
+
+        /* Out of time? */
+        if (timeleft <= 0)
+          break;
+      }
+    }
+
+    /* Clean up channels */
+    free(xefn_array);
+    while (ti > 0) {
+      ti--;
+      if (term_array[ti].fd_desc_ptr != NULL) {
+        SYS$DASSGN(term_array[ti].channel);
+        term_array[ti].fd_desc_ptr = NULL;
+      }
+    }
+    free(term_array);
+    while (pi > 0) {
+      pi--;
+      if (pipe_array[ti].fd_desc_ptr != NULL) {
+        SYS$DASSGN(pipe_array[pi].channel);
+        pipe_array[pi].fd_desc_ptr = NULL;
+      }
+    }
+    free(pipe_array);
+    free(sock_array);
+    free(sfd_array);
+
+  } else {
+    /* Why would this be called with an empty array? */
+    ret_stat = poll(fd_array, nfds, timeout);
+  }
+
+  return ret_stat;
+}
+/*******************************************************************
+ Python API to the VMS select routine.
+
+ Python gives us the max number of fds in a given array of fds, this is
+ different than the max_fd which is used by select which is the
+ highest value of the fd's.
+
+ The arrays are just integer arrays of with the file numbers.
+
+ "tout" is the pointer to the time sent by Python, which we need to
+ put into a timeval structure for the call to g_vms_select.
+
+ On return we test the file number values which are returned and we
+ update the arrays so we identity the channel to then do the IO on
+ for the Python code.
+
+ The Python code returns a triplet-tuple of file numbers for read
+ write, exception.
+
+
+
+*******************************************************************/
+
+int py_g_vms_select(int nfds, int *rfds, int *wfds, int *xfds, void *tout) {
+
+  int g_vms_select(int nfds, fd_set *readfds, fd_set *writefds,
+                   fd_set *exceptfds, struct timeval *timeout);
+
+  int ret_stat;
+  int i, ri, wi, xi;
+  int max_fd;
+  double timeout;
+  long seconds;
+
+  fd_set rdfds, wrfds, xpfds, *readfds, *writefds, *exceptfds;
+
+  struct timeval tv, *tvp;
+
+  tvp = (struct timeval *)0;
+  /* Changed by Rinat to throw out PyFloat_AS_DOUBLE
+      if (tout == NULL)
+          tvp = (struct timeval *)0;
+      else {
+          timeout = PyFloat_AS_DOUBLE(tout);
+          if (timeout == -1)
+              return 0;
+          if (timeout > (double)LONG_MAX)
+              return 0;
+
+          seconds = (long)timeout;
+          timeout = timeout - (double)seconds;
+          tv.tv_sec = seconds;
+          tv.tv_usec = (long)(timeout * 1E6);
+          tvp = &tv;
+      }
+  */
+  /* printf ("py_b_vms_select nfds: %d rfds[0]: %d\n", nfds, rfds[0]); */
+
+  if (rfds == NULL)
+    readfds = (void *)0;
+  else
+    readfds = &rdfds;
+  if (wfds == NULL)
+    writefds = (void *)0;
+  else
+    writefds = &wrfds;
+  if (xfds == NULL)
+    exceptfds = (void *)0;
+  else
+    exceptfds = &xpfds;
+  max_fd = 0;
+  for (i = 0; i < nfds; i++) {
+    if (rfds[i] != 0) {
+      if (rfds[i] > max_fd)
+        max_fd = rfds[i];
+      FD_SET(rfds[i], &rdfds);
+    }
+    if (wfds[i] != 0) {
+      if (wfds[i] > max_fd)
+        max_fd = wfds[i];
+      FD_SET(wfds[i], &wrfds);
+    }
+    if (xfds[i] != 0) {
+      if (xfds[i] > max_fd)
+        max_fd = xfds[i];
+      FD_SET(xfds[i], &xpfds);
+    }
+  }
+
+  /* printf ("max_fd: %d, readfds: %x, writefsd: %x, exceptfds: %x, tvp: %x\n",
+                  max_fd, readfds, writefds, exceptfds,  tvp);
+  */
+  ret_stat = g_vms_select(max_fd, readfds, writefds, exceptfds, tvp);
+
+  for (i = 0; i < nfds; i++) {
+    rfds[i] = 0;
+    wfds[i] = 0;
+    xfds[i] = 0;
+  }
+
+  for (i = 0, ri = 0, wi = 0, xi = 0; i < max_fd; i++) {
+    if (FD_ISSET(i, &rdfds)) {
+      rfds[ri] = i;
+      ri++;
+    }
+    if (FD_ISSET(i, &wrfds)) {
+      wfds[ri] = i;
+      wi++;
+    }
+    if (FD_ISSET(i, &xpfds)) {
+      xfds[ri] = i;
+      xi++;
+    }
+  }
+  return ret_stat;
+}
+
+/*******************************************************************
+ OpenVMS Open Source Community select hack...
+
+ Check channel for provided fd to see of there is data waiting...
+
+ *******************************************************************/
+
+int py_g_vms_buffer_data(int fd) {
+  int ret_stat;
+  unsigned short channel;
+  int status;
+#pragma member_alignment save
+#pragma nomember_alignment
+  struct mbx_gmif_iosb_st {
+    unsigned short sts;
+    unsigned short num_msg;
+    unsigned long num_bytes;
+  } mbx_iosb;
+#pragma member_alignment restore
+
+  mbx_iosb.num_msg = 0;
+  mbx_iosb.num_bytes = 0;
+  ret_stat = 0;
+  ret_stat = g_vms_channel_lookup(fd, &channel);
+  if (ret_stat == 0) {
+    status = SYS$QIOW(EFN$C_ENF, channel, IO$_SENSEMODE, &mbx_iosb, NULL, NULL,
+                      0, 0, 0, 0, 0, 0);
+    if ($VMS_STATUS_SUCCESS(status) && $VMS_STATUS_SUCCESS(mbx_iosb.sts)) {
+
+      /* Got some information */
+      if (mbx_iosb.num_msg != 0) {
+        /* There is data to read */
+        ret_stat = mbx_iosb.num_msg;
+      } else {
+        ret_stat = 0;
+      }
+    } else {
+      /* Something really wrong */
+      ret_stat = -1;
+      errno = EIO;
+    }
+  }
+  SYS$DASSGN(channel);
+  return ret_stat;
+}
+/*******************************************************************
+ OpenVMS Open Source Community select hack...
+
+ this code acts as a wrapper for poll() and supports:
+        pipes
+        mailboxes
+        terminals
+        sockets
+
+ *******************************************************************/
+
+int g_vms_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+                 struct timeval *timeout) {
+  int ret_stat;
+  int siif_index;
+  int old_siif_value;
+  int new_siif_value;
+  int i;
+
+  struct {
+    short int buf_len;
+    short int item;
+    char *buf_addr;
+    unsigned short int *ret_len;
+    int end;
+  } item_list;
+
+  int mbx_len;
+  unsigned int mbx_char;
+
+  const char *select_ignores_invalid_fd = "DECC$SELECT_IGNORES_INVALID_FD";
+
+  /* Get old ignore setting and enable new */
+  /* threaded applications need this setting enabled before this routine */
+  siif_index = decc$feature_get_index(select_ignores_invalid_fd);
+  if (siif_index >= 0)
+    old_siif_value = decc$feature_set_value(siif_index, 1, 1);
+
+  if (nfds != 0) {
+    int i;
+    struct pollfd *poll_array;
+    struct vms_pollfd_st *term_array;
+    struct vms_pollfd_st *pipe_array;
+    struct vms_pollfd_st *xefn_array;
+    int ti;
+    int si;
+    int pi;
+    int xi;
+    int status;
+
+    /* Need structures to separate terminals and pipes */
+    poll_array = malloc(sizeof(struct pollfd) * (nfds + 1));
+    if (poll_array == NULL) {
+      return -1;
+    }
+    term_array = malloc(sizeof(struct vms_pollfd_st) * (nfds + 1));
+    if (term_array == NULL) {
+      free(poll_array);
+      return -1;
+    }
+    pipe_array = malloc(sizeof(struct vms_pollfd_st) * (nfds + 1));
+    if (pipe_array == NULL) {
+      free(term_array);
+      free(poll_array);
+      return -1;
+    }
+    xefn_array = malloc(sizeof(struct vms_pollfd_st) * (nfds + 1));
+    if (xefn_array == NULL) {
+      free(pipe_array);
+      free(term_array);
+      free(poll_array);
+      return -1;
+    }
+
+    /* printf (" in g_vms_select\n"); */
+
+    /* Find all of the terminals and pipe fds  for polling */
+    for (i = 0, pi = 0, ti = 0, xi = 0, si = 0; i <= nfds; i++) {
+      /* printf ("fds : %d\n", i); */
+      /* Copy file descriptor arrays into a poll structure */
+      poll_array[i].fd = i;
+      poll_array[i].events = 0;
+      poll_array[i].revents = 0;
+
+      /* Now separate out the pipes */
+      if (isapipe(i) == 1) {
+        /* printf ("pipe\n"); */
+        pipe_array[pi].fd_desc_ptr = &poll_array[i];
+        if (readfds != NULL) {
+          /* printf ("pipe array read: %d\n", i); */
+          if (FD_ISSET(i, readfds))
+            poll_array[i].events |= POLL_IN;
+        }
+        if (writefds != NULL) {
+          /* printf ("pipe array write: %d\n", i); */
+          if (FD_ISSET(i, writefds))
+            poll_array[i].events |= POLL_OUT;
+        }
+        /* Only care about something with read/write events */
+        if (poll_array[i].events != 0) {
+          status = g_vms_channel_lookup(i, &pipe_array[pi].channel);
+          if (status == 0) {
+            /* printf ("pipe array accepted\n"); */
+            pi++;
+          }
+        }
+      }
+      /* Not a pipe, see if a terminal */
+      else if (isatty(i) == 1) {
+        /* printf ("terminal\n"); */
+        term_array[ti].fd_desc_ptr = &poll_array[i];
+        if (readfds != NULL) {
+          if (FD_ISSET(i, readfds))
+            poll_array[i].events |= POLL_IN;
+        }
+        if (writefds != NULL) {
+          if (FD_ISSET(i, writefds))
+            poll_array[i].events |= POLL_OUT;
+        }
+        /* Only care about something with read/write events */
+        if (poll_array[i].events != 0) {
+          status = g_vms_channel_lookup(i, &term_array[ti].channel);
+          if (status == 0) {
+            ti++;
+          }
+        }
+      } else if (decc$get_sdc(i) != 0) {
+        /* printf ("socket\n"); */
+        /* Not pipe or terminal, use built in select on this */
+        si++;
+      } else {
+        /* see if it is a mailbox and then treat as a pipe or X11 event if not
+         * mailbox */
+        /* printf ("mailbox\n"); */
+        pipe_array[pi].fd_desc_ptr = &poll_array[i];
+        if (readfds != NULL) {
+          if (FD_ISSET(i, readfds))
+            poll_array[i].events |= POLL_IN;
+        }
+        if (writefds != NULL) {
+          if (FD_ISSET(i, writefds))
+            poll_array[i].events |= POLL_OUT;
+        }
+        /* Only care about something with read/write events */
+        mbx_char = 0;
+        if (poll_array[i].events != 0) {
+          status = g_vms_channel_lookup(i, &pipe_array[pi].channel);
+          if (status == 0) {
+            item_list.buf_len = 4;
+            item_list.item = DVI$_DEVCLASS;
+            item_list.buf_addr = (void *)&mbx_char;
+            item_list.ret_len = (void *)&mbx_len;
+            item_list.end = 0;
+
+            SYS$GETDVIW(0, pipe_array[pi].channel, 0, &item_list, 0, 0, 0, 0);
+            if ((mbx_char & DC$_MAILBOX) != 0) {
+              pi++;
+            } else {
+              poll_array[i].events = 0;
+              SYS$DASSGN(pipe_array[pi].channel);
+            }
+          } else {
+            poll_array[i].events = 0;
+          }
+        }
+        /* What's left? X11 event flags */
+        else if ((mbx_char & DC$_MAILBOX) == 0) {
+          /* printf ("X11\n"); */
+          xefn_array[xi].fd_desc_ptr = &poll_array[i];
+          if (readfds != NULL) {
+            if (FD_ISSET(i, readfds))
+              poll_array[i].events |= POLL_IN;
+          }
+          if (writefds != NULL) {
+            if (FD_ISSET(i, writefds))
+              poll_array[i].events |= POLL_OUT;
+          }
+          /* Only care about something with read/write events */
+          if (poll_array[i].events != 0) {
+            xi++;
+          }
+        }
+      }
+    }
+    if ((pi == 0) && (ti == 0) && (xi == 0)) {
+      /* printf ("socket select\n"); */
+      /* All sockets, let select do everything */
+      ret_stat = select(nfds, readfds, writefds, exceptfds, timeout);
+    } else {
+      int utimeleft;    /* Microseconds left */
+      int ti_stat;
+      int pi_stat;
+      int si_stat;
+      int xi_stat;
+      struct timespec end_time;
+
+      ti_stat = 0;
+      pi_stat = 0;
+      si_stat = 0;
+      xi_stat = 0;
+      end_time.tv_sec = 0;
+      end_time.tv_nsec = 0;
+      #define FULL_NSEC 1000000000
+      #define FULL_USEC 1000000
+      utimeleft = FULL_USEC;
+      if (timeout != NULL) {
+        if (clock_gettime(CLOCK_REALTIME, &end_time)) {
+          end_time.tv_sec = 0;
+          end_time.tv_nsec = 0;
+        } else {
+          end_time.tv_sec += timeout->tv_sec;
+          end_time.tv_nsec += timeout->tv_usec * (FULL_NSEC / FULL_USEC);
+          while (end_time.tv_nsec >= FULL_NSEC) {
+            ++end_time.tv_sec;
+            end_time.tv_nsec -= FULL_NSEC;
+          }
+
+        }
+      }
+      ret_stat = 0;
+
+      /* Terminals and or pipes (and or MBXs) and or sockets  */
+      /* Now we have to periodically poll everything with timeout */
+      while (ret_stat == 0) {
+        int sleeptime;
+
+        if (ti != 0) {
+          /* printf ("terminal poll\n"); */
+          ti_stat = vms_poll_terminal(term_array, ti);
+        }
+        if (pi != 0) {
+          /* printf ("pipe poll\n");  */
+          pi_stat = vms_poll_pipe(pipe_array, pi);
+        }
+        if (xi != 0) {
+          xi_stat = vms_poll_x11_efn(xefn_array, xi);
+        }
+
+        if (ti_stat != 0 || pi_stat != 0 || xi_stat != 0) {
+          /* printf ("ti_stat: %d pi_stat: %d xi_stat: %d\n", ti_stat, pi_stat,
+           * xi_stat);  */
+          sleeptime = 0;
+        } else {
+          sleeptime = 100 * 1000;
+          if (utimeleft < sleeptime) {
+            sleeptime = utimeleft;
+          }
+        }
+        if (si == 0) {
+          /* sleep for shorter of 100 Ms or timeout and retry */
+          if (sleeptime > 0)
+            usleep(sleeptime);
+        } else {
+            struct timeval sleep_timeout;
+            sleep_timeout.tv_sec = 0;
+            sleep_timeout.tv_usec = sleeptime;
+            si_stat = select(nfds, readfds, writefds, exceptfds, &sleep_timeout);
+        }
+        /* one last poll of terminals and pipes */
+        if ((sleeptime > 0) || (si_stat > 0)) {
+          if ((ti != 0) && (ti_stat == 0)) {
+            ti_stat = vms_poll_terminal(term_array, ti);
+          }
+          if ((pi != 0) && (pi_stat == 0)) {
+            pi_stat = vms_poll_pipe(pipe_array, pi);
+          }
+          if ((xi != 0) && (xi_stat == 0)) {
+            xi_stat = vms_poll_x11_efn(xefn_array, xi);
+          }
+        }
+
+        /* Gather up any results */
+        if ((ti_stat == -1) || (pi_stat == -1) || (si_stat == -1) || (xi_stat == -1)) {
+          ret_stat = -1;
+        } else {
+          ret_stat = ti_stat + pi_stat + si_stat + xi_stat;
+        }
+
+        /* Copy the pipe and terminal information */
+        if ((ti_stat > 0) || (pi_stat > 0) || (xi_stat > 0)) {
+          int j;
+          for (j = 0; j < nfds; j++) {
+            if (poll_array[j].events != 0) {
+              if (readfds != NULL) {
+                if (poll_array[j].revents & POLL_IN)
+                  FD_SET(poll_array[j].fd, readfds);
+                else
+                  FD_CLR(poll_array[j].fd, readfds);
+              }
+              if (writefds != NULL) {
+                if (poll_array[j].revents & POLL_OUT)
+                  FD_SET(poll_array[j].fd, writefds);
+                else
+                  FD_CLR(poll_array[j].fd, writefds);
+              }
+            }
+          }
+        }
+        /* Timed out? */
+        if (timeout != NULL) {
+          struct timespec cur_time;
+          if (clock_gettime(CLOCK_REALTIME, &cur_time)) {
+            // failed to obtain current time
+            break;
+          } else {
+            if (cur_time.tv_sec > end_time.tv_sec ||
+                cur_time.tv_sec == end_time.tv_sec && cur_time.tv_nsec >= end_time.tv_nsec) {
+                // time out
+                break;
+            } else {
+              if (end_time.tv_sec - cur_time.tv_sec <= 1) {
+                utimeleft = (end_time.tv_sec - cur_time.tv_sec) * FULL_USEC;
+                utimeleft += (end_time.tv_nsec - cur_time.tv_nsec) / (FULL_NSEC / FULL_USEC);
+                if (utimeleft < 0) {
+                  // something wrong
+                  break;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    while (pi > 0) {
+      pi--;
+      SYS$DASSGN(pipe_array[pi].channel);
+    }
+    free(poll_array);
+    while (ti > 0) {
+      ti--;
+      SYS$DASSGN(term_array[ti].channel);
+    }
+    free(term_array);
+    free(pipe_array);
+    free(xefn_array);
+  } else {
+    ret_stat = select(nfds, readfds, writefds, exceptfds, timeout);
+  }
+
+  /* Restore old setting */
+  if (siif_index >= 0)
+    new_siif_value = decc$feature_set_value(siif_index, 1, old_siif_value);
+
+  return ret_stat;
+}
+
+#define poll g_vms_poll
+#define select(__v, __w, __x, __y, __z) g_vms_select(__v, __w, __x, __y, __z)
diff --git a/vms/vms_sqlite3_first.h b/vms/vms_sqlite3_first.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Ztc19zcWxpdGUzX2ZpcnN0Lmg=
--- /dev/null
+++ b/vms/vms_sqlite3_first.h
@@ -0,0 +1,6 @@
+#ifndef __SQLITE3_H__
+#define __SQLITE3_H__
+
+#define MODULE_NAME "sqlite3"
+
+#endif
diff --git a/vms/wheels_create_kit_files.py b/vms/wheels_create_kit_files.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3doZWVsc19jcmVhdGVfa2l0X2ZpbGVzLnB5
--- /dev/null
+++ b/vms/wheels_create_kit_files.py
@@ -0,0 +1,184 @@
+import os
+import re
+import sys
+
+def spec_replacer(match):
+    if match.group(0) == ' ':
+        return '^_'
+    return '^' + match.group(0)
+
+def create_content(type, major, minor, level, edit):
+    re_is_compiled = re.compile(r'([^-]*)-([^-]*)-([^-]*)-([^-]*)-openvms(.*?).whl', flags=re.IGNORECASE)
+    python_wheels_dir = '/python_wheels$root'
+    python_wheels_dir_len = len(python_wheels_dir)
+    all_dirs = []
+    all_files = []
+    spec_pattern = re.compile('([. ^+()])')
+    for root, dirs, files in os.walk(python_wheels_dir):
+        inner_dirs = list(filter(lambda x: x != '', spec_pattern.sub(spec_replacer, root[python_wheels_dir_len:]).split('/')))
+        kit_dir = '[' + '.'.join(['wheels'] + inner_dirs) + ']'
+        src_dir = '[000000]'
+        if len(inner_dirs):
+            src_dir = '[' + '.'.join(inner_dirs) + ']'
+        all_dirs.append('directory "' + kit_dir + '" version limit 1;')
+        for file in files:
+            file_name, file_ext = os.path.splitext(file)
+            if file_ext == '':
+                file_ext = '.'
+            file_name = spec_pattern.sub(spec_replacer, file_name)
+            kit_file_name = file_name
+            # test if module is compiled
+            matched = re_is_compiled.match(file)
+            if matched:
+                kit_file_name = spec_pattern.sub(spec_replacer,
+                    matched.group(1) + '-' +    # name
+                    matched.group(2) +          # version
+                    '-py2.py3-none-any')        # built for
+            all_files.append('file "' + \
+                kit_dir + kit_file_name + file_ext + \
+                '" source "' + \
+                src_dir + file_name + file_ext + \
+                '";')
+        try:
+            dirs.remove('__pycache__')
+        except:
+            pass
+
+    kit_template = '''--
+-- (C) Copyright 2020 VMS Software Inc.
+--
+product VSI I64VMS PYTHWHLS {type}{major}.{minor}-{level}{edit} FULL ;
+
+--
+-- Directories...
+--
+
+    {dirs}
+
+--
+-- Files...
+--
+
+    {files}
+
+--
+-- Start-up and shutdown scripts
+--
+--    file "[sys$startup]python_wheels$define_root.com" source "[000000]python_wheels$define_root.com";
+--    file "[sys$startup]python_wheels$startup.com" source "[000000]python_wheels$startup.com";
+
+--
+-- Do post-install tasks
+--
+
+    execute postinstall (
+        "root = f$trnlmn(""pcsi$destination"") - ""]"" + ""wheels.]""",
+        "define/system/trans=concealed python_wheels$root 'root'",
+        "define/system PIP_FIND_LINKS ""/python_wheels$root""",
+        "open/write fd sys$startup:wheels$startup.com",
+        "write fd ""$!Define logical names for Python wheels packages...""",
+        "write fd ""$define/system/trans=concealed python_wheels$root ''root'""",
+        "write fd ""$define/system PIP_FIND_LINKS """"/python_wheels$root""""",
+        "write fd ""$exit""",
+        "close fd"
+     );
+
+--    execute postinstall (
+--        "root = f$trnlmn(""pcsi$destination"") - ""]"" + ""wheels.]""",
+--        "define/system/trans=concealed python_wheels$root 'root'",
+--        "define/system PIP_FIND_LINKS ""/python_wheels$root""",
+--        "write sys$output ""% Add next commands to the system startup file:""",
+--        "write sys$output ""%     $define/system/trans=concealed python_wheels$root ''root'""",
+--        "write sys$output ""%     $define/system PIP_FIND_LINKS """"/python_wheels$root"""""
+--     ) interactive ;
+
+--    execute
+--        postinstall
+--            "@pcsi$source:[000000]python_wheels$define_root.com"
+--            interactive
+--            uses [000000]python_wheels$define_root.com
+--    ;
+
+--
+-- Okay, done.  Tell the user what to do next.
+--
+   information POST_INSTALL  phase after with helptext;
+
+end product;
+'''
+    # type, major, minor, level, edit must be the same as in pythlib.pcsi$text
+    kit_content = kit_template.format(
+        type=type,
+        major=major,
+        minor=minor,
+        level=level,
+        edit=edit,
+        dirs='\n    '.join(all_dirs),
+        files='\n    '.join(all_files))
+    with open('pythwhls.pcsi$desc', 'w') as file:
+        file.write(kit_content)
+
+    text_template = '''=product VSI I64VMS PYTHWHLS {type}{major}.{minor}-{level}{edit} full
+1 'PRODUCT
+=prompt Python wheels collection for OpenVMS ({edit})
+
+1 'PRODUCER
+=prompt VSI Software Inc.
+
+1 'NOTICE
+=prompt (C) Copyright 2020 VMS Software Inc.
+
+1 POST_INSTALL
+=prompt Post-installation tasks are required.
+To define the Wheels for Python runtime at system boot time, add the
+following lines to SYS$MANAGER:SYSTARTUP_VMS.COM:
+
+    $ file := sys$startup:wheels$startup.com
+    $ if f$search("''file'") .nes. "" then @'file'
+
+'''
+    text_content = text_template.format(
+        type=type,
+        major=major,
+        minor=minor,
+        level=level,
+        edit=edit,
+        dirs='\n    '.join(all_dirs),
+        files='\n    '.join(all_files))
+    with open('pythwhls.pcsi$text', 'w') as file:
+        file.write(text_content)
+
+if __name__ == "__main__":
+
+    import getopt
+    import datetime
+
+    opts, args = getopt.getopt(sys.argv[1:], '', ['type=', 'major=', 'minor=', 'level=', 'edit='])
+
+    type = 'A'
+    major = '0'
+    minor = '0'
+    level = '1'
+    edit = ''   # 'd' + datetime.date.today().strftime('%Y%m%d')
+
+    for opt, optarg in opts:
+        if opt in ['--type']:
+            type = optarg
+        elif opt in ['--major']:
+            major = optarg
+        elif opt in ['--minor']:
+            minor = optarg
+        elif opt in ['--level']:
+            level = optarg
+        elif opt in ['--edit']:
+            edit = optarg
+        else:
+            print('Unknown option %s' % opt)
+
+    create_content(
+        type,
+        major,
+        minor,
+        level,
+        edit,
+    )
diff --git a/vms/wheels_make_kit.com b/vms/wheels_make_kit.com
new file mode 100644
index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3doZWVsc19tYWtlX2tpdC5jb20=
--- /dev/null
+++ b/vms/wheels_make_kit.com
@@ -0,0 +1,23 @@
+$ set verify
+$
+$ delete/log/noconf vsi-i64vms-pythwhls-*.pcsi;*
+$ delete/log/noconf vsi-i64vms-pythwhls-*.pcsi$compressed;*
+$
+$ product package pythwhls -
+        /source=pythwhls.pcsi$desc -
+        /destination=[] -
+        /material=(python_wheels$root:) -
+        /format=sequential -
+        /opt=noconf -
+        /log -
+        /producer=VSI
+$
+$ product copy pythwhls/source=[]/dest=[]/format=compressed/opt=noconf
+$ purge/log
+$
+$ purge/log [...]
+$
+$ set noverify
+$
+$ exit
+