Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jun 2019 22:31:53 +0000 (UTC)
From:      Martin Matuska <mm@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r349523 - in stable/12: contrib/libarchive contrib/libarchive/libarchive contrib/libarchive/libarchive/test contrib/libarchive/libarchive_fe contrib/libarchive/tar lib/libarchive lib/li...
Message-ID:  <201906282231.x5SMVrAH064604@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mm
Date: Fri Jun 28 22:31:53 2019
New Revision: 349523
URL: https://svnweb.freebsd.org/changeset/base/349523

Log:
  MFC r348993,349135:
  Sync libarchive with vendor including security fixes
  
  r348993:
    - version bumped to 3.4.0
    - check_symlinks_fsobj() without chdir() and fchdir()
    - bsdtar.1 manpage fixes
    - patches from OpenBSD to libarchive_fe/passphrase.c
  
  r349135:
    PR #1212: RAR5 reader - window_mask was not updated correctly
              (OSS-Fuzz 15278)
    OSS-Fuzz 15120: RAR reader - extend use after free bugfix

Added:
  stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu
     - copied unchanged from r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu
  stable/12/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu
     - copied unchanged from r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu
Modified:
  stable/12/contrib/libarchive/NEWS
  stable/12/contrib/libarchive/README.md
  stable/12/contrib/libarchive/libarchive/archive.h
  stable/12/contrib/libarchive/libarchive/archive_entry.h
  stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c
  stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c
  stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c
  stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c
  stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c
  stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c
  stable/12/contrib/libarchive/libarchive_fe/line_reader.c
  stable/12/contrib/libarchive/libarchive_fe/passphrase.c
  stable/12/contrib/libarchive/tar/bsdtar.1
  stable/12/lib/libarchive/config_freebsd.h
  stable/12/lib/libarchive/tests/Makefile
  stable/12/usr.bin/bsdcat/Makefile
  stable/12/usr.bin/cpio/Makefile
  stable/12/usr.bin/tar/Makefile
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/contrib/libarchive/NEWS
==============================================================================
--- stable/12/contrib/libarchive/NEWS	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/NEWS	Fri Jun 28 22:31:53 2019	(r349523)
@@ -1,3 +1,7 @@
+Jun 11, 2019: libarchive 3.4.0 released
+
+May 18, 2019: Fixes for reading Android APK and JAR archives
+
 Apr 16, 2019: Support for non-recursive list and extract
 
 Apr 14, 2019: New tar option: --exclude-vcs
@@ -6,7 +10,7 @@ Mar 27, 2019: Support for file and directory symlinks 
 
 Mar 12, 2019: Important fixes for storing file attributes and flags
 
-Jan 20, 2019: Support for xz, lzma, ppmd8 and bzip2 compression in zip archives
+Jan 20, 2019: Support for xz, lzma, ppmd8 and bzip2 decompression in ZIP files
 
 Oct 06, 2018: RAR 5.0 reader
 

Modified: stable/12/contrib/libarchive/README.md
==============================================================================
--- stable/12/contrib/libarchive/README.md	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/README.md	Fri Jun 28 22:31:53 2019	(r349523)
@@ -81,6 +81,7 @@ Currently, the library automatically detects and reads
   * Binary cpio (big-endian or little-endian)
   * ISO9660 CD-ROM images (with optional Rockridge or Joliet extensions)
   * ZIP archives (with uncompressed or "deflate" compressed entries, including support for encrypted Zip archives)
+  * ZIPX archives (with support for bzip2, ppmd8, lzma and xz compressed entries)
   * GNU and BSD 'ar' archives
   * 'mtree' format
   * 7-Zip archives

Modified: stable/12/contrib/libarchive/libarchive/archive.h
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive.h	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/archive.h	Fri Jun 28 22:31:53 2019	(r349523)
@@ -36,7 +36,7 @@
  * assert that ARCHIVE_VERSION_NUMBER >= 2012108.
  */
 /* Note: Compiler will complain if this does not match archive_entry.h! */
-#define	ARCHIVE_VERSION_NUMBER 3003003
+#define	ARCHIVE_VERSION_NUMBER 3004000
 
 #include <sys/stat.h>
 #include <stddef.h>  /* for wchar_t */
@@ -155,7 +155,7 @@ __LA_DECL int		archive_version_number(void);
 /*
  * Textual name/version of the library, useful for version displays.
  */
-#define	ARCHIVE_VERSION_ONLY_STRING "3.3.3"
+#define	ARCHIVE_VERSION_ONLY_STRING "3.4.0"
 #define	ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
 __LA_DECL const char *	archive_version_string(void);
 

Modified: stable/12/contrib/libarchive/libarchive/archive_entry.h
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_entry.h	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_entry.h	Fri Jun 28 22:31:53 2019	(r349523)
@@ -30,7 +30,7 @@
 #define	ARCHIVE_ENTRY_H_INCLUDED
 
 /* Note: Compiler will complain if this does not match archive.h! */
-#define	ARCHIVE_VERSION_NUMBER 3003003
+#define	ARCHIVE_VERSION_NUMBER 3004000
 
 /*
  * Note: archive_entry.h is for use outside of libarchive; the

Modified: stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c	Fri Jun 28 22:31:53 2019	(r349523)
@@ -1027,6 +1027,7 @@ archive_read_format_rar_read_data(struct archive_read 
     if (ret != ARCHIVE_OK && ret != ARCHIVE_WARN) {
       __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context);
       rar->start_new_table = 1;
+      rar->ppmd_valid = 0;
     }
     break;
 

Modified: stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c	Fri Jun 28 22:31:53 2019	(r349523)
@@ -1125,6 +1125,13 @@ static void init_header(struct archive_read* a) {
 	a->archive.archive_format_name = "RAR5";
 }
 
+static void init_window_mask(struct rar5* rar) {
+	if (rar->cstate.window_size)
+		rar->cstate.window_mask = rar->cstate.window_size - 1;
+	else
+		rar->cstate.window_mask = 0;
+}
+
 enum HEADER_FLAGS {
 	HFL_EXTRA_DATA = 0x0001,
 	HFL_DATA = 0x0002,
@@ -1672,6 +1679,7 @@ static int process_head_file(struct archive_read* a, s
 	/* Values up to 64M should fit into ssize_t on every
 	 * architecture. */
 	rar->cstate.window_size = (ssize_t) window_size;
+	init_window_mask(rar);
 
 	rar->file.solid = (compression_info & SOLID) > 0;
 	rar->file.service = 0;
@@ -2235,10 +2243,7 @@ static int rar5_read_header(struct archive_read *a,
 
 static void init_unpack(struct rar5* rar) {
 	rar->file.calculated_crc32 = 0;
-	if (rar->cstate.window_size)
-		rar->cstate.window_mask = rar->cstate.window_size - 1;
-	else
-		rar->cstate.window_mask = 0;
+	init_window_mask(rar);
 
 	free(rar->cstate.window_buf);
 	free(rar->cstate.filtered_buf);
@@ -2851,7 +2856,7 @@ static int do_uncompress_block(struct archive_read* a,
 		 * - Values lower than 256 are just bytes. Those codes
 		 *   can be stored in the output buffer directly.
 		 *
-		 * - Code 256 defines a new filter, which is later used to 
+		 * - Code 256 defines a new filter, which is later used to
 		 *   ransform the data block accordingly to the filter type.
 		 *   The data block needs to be fully uncompressed first.
 		 *
@@ -3906,7 +3911,7 @@ static int rar5_read_data_skip(struct archive_read *a)
 			/* Turn off "skip mode". */
 			rar->skip_mode--;
 
-			if(ret < 0) {
+			if(ret < 0 || ret == ARCHIVE_EOF) {
 				/* Propagate any potential error conditions
 				 * to the caller. */
 				return ret;

Modified: stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c	Fri Jun 28 22:31:53 2019	(r349523)
@@ -60,7 +60,7 @@ static int archive_filter_b64encode_write(struct archi
     const void *, size_t);
 static int archive_filter_b64encode_close(struct archive_write_filter *);
 static int archive_filter_b64encode_free(struct archive_write_filter *);
-static void b64_encode(struct archive_string *, const unsigned char *, size_t);
+static void la_b64_encode(struct archive_string *, const unsigned char *, size_t);
 static int64_t atol8(const char *, size_t);
 
 static const char base64[] = {
@@ -180,7 +180,7 @@ archive_filter_b64encode_open(struct archive_write_fil
 }
 
 static void
-b64_encode(struct archive_string *as, const unsigned char *p, size_t len)
+la_b64_encode(struct archive_string *as, const unsigned char *p, size_t len)
 {
 	int c;
 
@@ -234,12 +234,12 @@ archive_filter_b64encode_write(struct archive_write_fi
 		}
 		if (state->hold_len < LBYTES)
 			return (ret);
-		b64_encode(&state->encoded_buff, state->hold, LBYTES);
+		la_b64_encode(&state->encoded_buff, state->hold, LBYTES);
 		state->hold_len = 0;
 	}
 
 	for (; length >= LBYTES; length -= LBYTES, p += LBYTES)
-		b64_encode(&state->encoded_buff, p, LBYTES);
+		la_b64_encode(&state->encoded_buff, p, LBYTES);
 
 	/* Save remaining bytes. */
 	if (length > 0) {
@@ -270,7 +270,7 @@ archive_filter_b64encode_close(struct archive_write_fi
 
 	/* Flush remaining bytes. */
 	if (state->hold_len != 0)
-		b64_encode(&state->encoded_buff, state->hold, state->hold_len);
+		la_b64_encode(&state->encoded_buff, state->hold, state->hold_len);
 	archive_string_sprintf(&state->encoded_buff, "====\n");
 	/* Write the last block */
 	archive_write_set_bytes_in_last_block(f->archive, 1);

Modified: stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c	Fri Jun 28 22:31:53 2019	(r349523)
@@ -165,6 +165,10 @@ __FBSDID("$FreeBSD$");
 #define O_NOFOLLOW 0
 #endif
 
+#ifndef AT_FDCWD
+#define AT_FDCWD -100
+#endif
+
 struct fixup_entry {
 	struct fixup_entry	*next;
 	struct archive_acl	 acl;
@@ -348,6 +352,8 @@ struct archive_write_disk {
 
 #define HFS_BLOCKS(s)	((s) >> 12)
 
+
+static int	la_opendirat(int, const char *);
 static void	fsobj_error(int *, struct archive_string *, int, const char *,
 		    const char *);
 static int	check_symlinks_fsobj(char *, int *, struct archive_string *,
@@ -401,6 +407,37 @@ static ssize_t	_archive_write_disk_data_block(struct a
 		    size_t, int64_t);
 
 static int
+la_opendirat(int fd, const char *path) {
+	const int flags = O_CLOEXEC
+#if defined(O_BINARY)
+	    | O_BINARY
+#endif
+#if defined(O_DIRECTORY)
+	    | O_DIRECTORY
+#endif
+#if defined(O_PATH)
+	    | O_PATH
+#elif defined(O_SEARCH)
+	    | O_SEARCH
+#elif defined(O_EXEC)
+	    | O_EXEC
+#else
+	    | O_RDONLY
+#endif
+	    ;
+
+#if !defined(HAVE_OPENAT)
+	if (fd != AT_FDCWD) {
+		errno = ENOTSUP;
+		return (-1);
+	} else
+		return (open(fd, path, flags));
+#else
+	return (openat(fd, path, flags));
+#endif
+}
+
+static int
 lazy_stat(struct archive_write_disk *a)
 {
 	if (a->pst != NULL) {
@@ -1909,7 +1946,7 @@ edit_deep_directories(struct archive_write_disk *a)
 		return;
 
 	/* Try to record our starting dir. */
-	a->restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC);
+	a->restore_pwd = la_opendirat(AT_FDCWD, ".");
 	__archive_ensure_cloexec_flag(a->restore_pwd);
 	if (a->restore_pwd < 0)
 		return;
@@ -2342,7 +2379,7 @@ _archive_write_disk_close(struct archive *_a)
 {
 	struct archive_write_disk *a = (struct archive_write_disk *)_a;
 	struct fixup_entry *next, *p;
-	int ret;
+	int fd, ret;
 
 	archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
 	    ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
@@ -2353,21 +2390,33 @@ _archive_write_disk_close(struct archive *_a)
 	p = sort_dir_list(a->fixup_list);
 
 	while (p != NULL) {
+		fd = -1;
 		a->pst = NULL; /* Mark stat cache as out-of-date. */
+		if (p->fixup &
+		    (TODO_TIMES | TODO_MODE_BASE | TODO_ACLS | TODO_FFLAGS)) {
+			fd = open(p->name,
+			    O_WRONLY | O_BINARY | O_NOFOLLOW | O_CLOEXEC);
+		}
 		if (p->fixup & TODO_TIMES) {
-			set_times(a, -1, p->mode, p->name,
+			set_times(a, fd, p->mode, p->name,
 			    p->atime, p->atime_nanos,
 			    p->birthtime, p->birthtime_nanos,
 			    p->mtime, p->mtime_nanos,
 			    p->ctime, p->ctime_nanos);
 		}
-		if (p->fixup & TODO_MODE_BASE)
+		if (p->fixup & TODO_MODE_BASE) {
+#ifdef HAVE_FCHMOD
+			if (fd >= 0)
+				fchmod(fd, p->mode);
+			else
+#endif
 			chmod(p->name, p->mode);
+		}
 		if (p->fixup & TODO_ACLS)
-			archive_write_disk_set_acls(&a->archive, -1, p->name,
-			    &p->acl, p->mode);
+			archive_write_disk_set_acls(&a->archive, fd,
+			    p->name, &p->acl, p->mode);
 		if (p->fixup & TODO_FFLAGS)
-			set_fflags_platform(a, -1, p->name,
+			set_fflags_platform(a, fd, p->name,
 			    p->mode, p->fflags_set, 0);
 		if (p->fixup & TODO_MAC_METADATA)
 			set_mac_metadata(a, p->name, p->mac_metadata,
@@ -2376,6 +2425,8 @@ _archive_write_disk_close(struct archive *_a)
 		archive_acl_clear(&p->acl);
 		free(p->mac_metadata);
 		free(p->name);
+		if (fd >= 0)
+			close(fd);
 		free(p);
 		p = next;
 	}
@@ -2540,8 +2591,6 @@ fsobj_error(int *a_eno, struct archive_string *a_estr,
  * scan the path and both can be optimized by comparing against other
  * recent paths.
  */
-/* TODO: Extend this to support symlinks on Windows Vista and later. */
-
 /*
  * Checks the given path to see if any elements along it are symlinks.  Returns
  * ARCHIVE_OK if there are none, otherwise puts an error in errmsg.
@@ -2550,7 +2599,8 @@ static int
 check_symlinks_fsobj(char *path, int *a_eno, struct archive_string *a_estr,
     int flags)
 {
-#if !defined(HAVE_LSTAT)
+#if !defined(HAVE_LSTAT) && \
+    !(defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT))
 	/* Platform doesn't have lstat, so we can't look for symlinks. */
 	(void)path; /* UNUSED */
 	(void)error_number; /* UNUSED */
@@ -2565,7 +2615,10 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 	char c;
 	int r;
 	struct stat st;
-	int restore_pwd;
+	int chdir_fd;
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+	int fd;
+#endif
 
 	/* Nothing to do here if name is empty */
 	if(path[0] == '\0')
@@ -2586,9 +2639,9 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 	 *  c holds what used to be in *tail
 	 *  last is 1 if this is the last tail
 	 */
-	restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC);
-	__archive_ensure_cloexec_flag(restore_pwd);
-	if (restore_pwd < 0) {
+	chdir_fd = la_opendirat(AT_FDCWD, ".");
+	__archive_ensure_cloexec_flag(chdir_fd);
+	if (chdir_fd < 0) {
 		fsobj_error(a_eno, a_estr, errno,
 		    "Could not open ", path);
 		return (ARCHIVE_FATAL);
@@ -2621,7 +2674,11 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 		c = tail[0];
 		tail[0] = '\0';
 		/* Check that we haven't hit a symlink. */
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+		r = fstatat(chdir_fd, head, &st, AT_SYMLINK_NOFOLLOW);
+#else
 		r = lstat(head, &st);
+#endif
 		if (r != 0) {
 			tail[0] = c;
 			/* We've hit a dir that doesn't exist; stop now. */
@@ -2647,7 +2704,19 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 			}
 		} else if (S_ISDIR(st.st_mode)) {
 			if (!last) {
-				if (chdir(head) != 0) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+				fd = la_opendirat(chdir_fd, head);
+				if (fd < 0)
+					r = -1;
+				else {
+					r = 0;
+					close(chdir_fd);
+					chdir_fd = fd;
+				}
+#else
+				r = chdir(head);
+#endif
+				if (r != 0) {
 					tail[0] = c;
 					fsobj_error(a_eno, a_estr, errno,
 					    "Could not chdir ", path);
@@ -2664,7 +2733,12 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 				 * so we can overwrite it with the
 				 * item being extracted.
 				 */
-				if (unlink(head)) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+				r = unlinkat(chdir_fd, head, 0);
+#else
+				r = unlink(head);
+#endif
+				if (r != 0) {
 					tail[0] = c;
 					fsobj_error(a_eno, a_estr, errno,
 					    "Could not remove symlink ",
@@ -2694,7 +2768,12 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 				break;
 			} else if (flags & ARCHIVE_EXTRACT_UNLINK) {
 				/* User asked us to remove problems. */
-				if (unlink(head) != 0) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+				r = unlinkat(chdir_fd, head, 0);
+#else
+				r = unlink(head);
+#endif
+				if (r != 0) {
 					tail[0] = c;
 					fsobj_error(a_eno, a_estr, 0,
 					    "Cannot remove intervening "
@@ -2712,7 +2791,11 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 				 * This is needed to extract hardlinks over
 				 * symlinks.
 				 */
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+				r = fstatat(chdir_fd, head, &st, 0);
+#else
 				r = la_stat(head, &st);
+#endif
 				if (r != 0) {
 					tail[0] = c;
 					if (errno == ENOENT) {
@@ -2725,7 +2808,19 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 						break;
 					}
 				} else if (S_ISDIR(st.st_mode)) {
-					if (chdir(head) != 0) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+					fd = la_opendirat(chdir_fd, head);
+					if (fd < 0)
+						r = -1;
+					else {
+						r = 0;
+						close(chdir_fd);
+						chdir_fd = fd;
+					}
+#else
+					r = chdir(head);
+#endif
+					if (r != 0) {
 						tail[0] = c;
 						fsobj_error(a_eno, a_estr,
 						    errno,
@@ -2761,16 +2856,21 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
 	}
 	/* Catches loop exits via break */
 	tail[0] = c;
-#ifdef HAVE_FCHDIR
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+	/* If we operate with openat(), fstatat() and unlinkat() there was
+	 * no chdir(), so just close the fd */
+	if (chdir_fd >= 0)
+		close(chdir_fd);
+#elif HAVE_FCHDIR
 	/* If we changed directory above, restore it here. */
-	if (restore_pwd >= 0) {
-		r = fchdir(restore_pwd);
+	if (chdir_fd >= 0) {
+		r = fchdir(chdir_fd);
 		if (r != 0) {
 			fsobj_error(a_eno, a_estr, errno,
 			    "chdir() failure", "");
 		}
-		close(restore_pwd);
-		restore_pwd = -1;
+		close(chdir_fd);
+		chdir_fd = -1;
 		if (r != 0) {
 			res = (ARCHIVE_FATAL);
 		}
@@ -3387,6 +3487,7 @@ static int
 set_mode(struct archive_write_disk *a, int mode)
 {
 	int r = ARCHIVE_OK;
+	int r2;
 	mode &= 07777; /* Strip off file type bits. */
 
 	if (a->todo & TODO_SGID_CHECK) {
@@ -3480,21 +3581,19 @@ set_mode(struct archive_write_disk *a, int mode)
 		 * post-extract fixup, which is handled elsewhere.
 		 */
 #ifdef HAVE_FCHMOD
-		if (a->fd >= 0) {
-			if (fchmod(a->fd, mode) != 0) {
-				archive_set_error(&a->archive, errno,
-				    "Can't set permissions to 0%o", (int)mode);
-				r = ARCHIVE_WARN;
-			}
-		} else
+		if (a->fd >= 0)
+			r2 = fchmod(a->fd, mode);
+		else
 #endif
-			/* If this platform lacks fchmod(), then
-			 * we'll just use chmod(). */
-			if (chmod(a->name, mode) != 0) {
-				archive_set_error(&a->archive, errno,
-				    "Can't set permissions to 0%o", (int)mode);
-				r = ARCHIVE_WARN;
-			}
+		/* If this platform lacks fchmod(), then
+		 * we'll just use chmod(). */
+		r2 = chmod(a->name, mode);
+
+		if (r2 != 0) {
+			archive_set_error(&a->archive, errno,
+			    "Can't set permissions to 0%o", (int)mode);
+			r = ARCHIVE_WARN;
+		}
 	}
 	return (r);
 }

Modified: stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c	Fri Jun 28 22:31:53 2019	(r349523)
@@ -3776,6 +3776,35 @@ DEFINE_TEST(test_read_format_rar_ppmd_use_after_free)
   assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
   assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
+  /* Test EOF */
+  assertA(1 == archive_read_next_header(a, &ae));
+
+  assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+  assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_ppmd_use_after_free2)
+{
+  uint8_t buf[16];
+  const char* reffile = "test_read_format_rar_ppmd_use_after_free2.rar";
+
+  struct archive_entry *ae;
+  struct archive *a;
+
+  extract_reference_file(reffile);
+  assert((a = archive_read_new()) != NULL);
+  assertA(0 == archive_read_support_filter_all(a));
+  assertA(0 == archive_read_support_format_all(a));
+  assertA(0 == archive_read_open_filename(a, reffile, 10240));
+
+  assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
+  assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+  assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
+  assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+
+  /* Test EOF */
+  assertA(1 == archive_read_next_header(a, &ae));
+
   assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
   assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }

Modified: stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c	Fri Jun 28 22:28:51 2019	(r349522)
+++ stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c	Fri Jun 28 22:31:53 2019	(r349523)
@@ -1194,3 +1194,24 @@ DEFINE_TEST(test_read_format_rar5_fileattr)
 
 	EPILOGUE();
 }
+
+DEFINE_TEST(test_read_format_rar5_different_window_size)
+{
+	char buf[4096];
+	PROLOGUE("test_read_format_rar5_different_window_size.rar");
+
+	/* Return codes of those calls are ignored, because this sample file
+	 * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+	 * errors during processing. */
+
+	(void) archive_read_next_header(a, &ae);
+	while(0 != archive_read_data(a, buf, sizeof(buf))) {}
+
+	(void) archive_read_next_header(a, &ae);
+	while(0 != archive_read_data(a, buf, sizeof(buf))) {}
+
+	(void) archive_read_next_header(a, &ae);
+	while(0 != archive_read_data(a, buf, sizeof(buf))) {}
+
+	EPILOGUE();
+}

Copied: stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu (from r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu	Fri Jun 28 22:31:53 2019	(r349523, copy of r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu)
@@ -0,0 +1,675 @@
+begin 600 test_read_format_rar5_different_window_size.rar
+M4F%R(1H'`0"-[P+2``'#M#P\7P$'`0"-[P+2``7#`/KZ^OKZA5N8F)B8F)@`
+MF`*8T@7"F!=A_________P$$_____________________R%285(A&@?_____
+M_________________V@`[E##M#P\7P$'`0"-[P+2``7"87)26`!W=%)A<B$:
+M!P$`C>\"T@`"QP\)`'(A&@<!&B/2+0`"**%285(A&@=A<B$:!P$`C>\"T@`"
+MQP\`"7(AFC`!&B/2+0`"*"%285(A&@<8`0"-[P+2``7#10!A4B$:!Q@!`#)S
+M-/_______U)A<B$:!P$`C>\"T@`"!QS1T='1T='1T='6T='1T='1T='1T='1
+MT='1T='1T='1T='1T=&UQX`.`"'X"/\E``*H'#`"`/+__TO__O_G*_____\`
+M`"\O``#_02+M____`-X`_["&AFVQJ@,#45TW,?;V]@$``/____\3]O;V]O;_
+M_S\``/]!(.VG+R\``/]!(.T)__^PWOS_```O+S$``/8@[;L`````````````
+M-3XR9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7#)<7#9<,F1I9V5R=#4V,61I870]+@HN"G0@9&5V270@9&1I9V5S7%Q<7'=E
+M9"XR9&EG97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+@HN"@HF
+M+BX**%)A<B$:!P$`C>\"T@`"!QS1T='1T='1T='6T='1T='1T='1T='1T='1
+MT='1T='1T='1T=&UQX`.`"'X"/\E``*H'#`"`/+__TO__O_G*_____\``"\O
+M``#_02+M____`-X`_["&AFVQJ@,#45TW,?;V]@$````````3]O;V]O;__S\`
+M`/]!(.VG+R\``/]!(.T)__^PWOS_```O+P```/8@[;L`````````````-38R
+M9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7#)<
+M7#9<,F1I9V5R=#4V,61I870]+@HN"G0@9&5V270@9&1I9V5S7%Q<7'=E9"XR
+M9&EG97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+@HN"@HF+E)A
+M<B$:!P$`C>\"T@`"PP<<K/UN``#___\+`0`"(<O_`0(`+W-E="!T:6UE`/[_
+M_^P`````````````````````````````````````````````````````````
+M````````````````````````````````````````!0``````````````````
+M````````````````````````````````````````````````````````````
+M`````#\56BUL:#4M#0````%L<0!SI/\````!]9^?G_*?`9_?GY_U0.`56BUL
+M:```````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````&UM)C$@4@H#`\[_CQ5:+6QH-BTZ,PD@.W-L<0'(_P(````!
+M#B<G````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````]_\`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````P,#`P,#`P,#`P,#`P,#
+M`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````X-S(M,#$E,U0S.GH``O__/\/#P\/#P\/#P\/#(@##
+MP\/#PP'#P\/#P\/#P___________________________________________
+M____________________________]/_______\/#P\/#P\/#P\/#P\/#+</#
+MP\/#P^KJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZF1I9V5S=#TN"BX*+@H*)BXN
+M"B@*+BX**`HN"BX*+C`**`H*+@HN+E!<-3,R4>KJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNK#P\/#P\/#P\/#R\-MP\/#
+MP\/#P\/#P\/#P\/#P\/#`</#P\/#P\/#____________________________
+M_________________________________________S8R9&EG97)T6STN"BX*
+M+@H*)F5V:6,V_________\/#P\/#P\/#P\/#P\/#+</#P\/#P\/#P\/#PS8N
+M"@HN"@HN+PHR,#<P-S`O<TYT("!@<W0]P\/#P\/#P\/#PP`0:#HR,PT*;%=O
+M861?;"X*+@IG89P`,#`P,#`P,#`P,#`P,#`P,#`!`#`W,#<P,C`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,$,P,#`P,#`P,#`P,#`P
+M,#`P,#`P-3`P,#`X,#`P,#`P,#`P13`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P
+M,#`P,#`P`0`"*"%285(A&@<8`0"-[P+2``7#`!H'``1G``````````#O`M(`
+M`L</``D`+@DR'`#]`0`7__\)`"X),AP`_0$`%___$5)A<B'_$5)A<B$:AP$`
+MC>\"T@`#QP\`"2$:TB,M``(H(5)A4B$:!Q@!`(WO`M(`!0``````````````
+M`````````0``````_____P#_965E965E965E965E965E965E8'-T/2X*+@HN
+M"C(P-S`W,&EA='EA<B$*+@H*)BXF+@HH"BX*+@HN4%XO83(U:39D9V5S=#TN
+M"BX*+@H*)BXN"@H*)BXN"B@*+@HN"BY07#4S,C8R9"]S3G0@(%MS=#T]+@HN
+M"BX*"B8N+@HH"BX*+@HN4%PU,S(V(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2X*"B8N+BY<-EPR9&EG97)T-38R9&EA=#TN"BX*="XN+@HH"BX*+@HN
+M4%QH83(U-F0N+PHR,"4P-S`O<TYT("!D<W0]+@HN"BX*"B9T/2X*+@HN"@H*
+M)BX*+BXH+PHN"BY07&AA,C4V9&EG97-T/2X*+@HN"@HF+BX**`H_+@HN"BY0
+M7%Q<7%Q<7%Q<7%Q<,C8R9&EG97)T-38R9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<
+M7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7#)<7#9<,F1I9V5R=#4V,F1I870]+@HN
+M"G0@9&5V270@9&1I9V5S=#TN"BX*+@H*)BXN"B@*+BX**`HN"BX]+@HN"BX*
+M"B8N+@HH"BX*+@HN4%Q<7%Q<7%Q<7%Q<7#(V,F1I9V5R=#4V,F1<7%Q<7%Q<
+M7%Q<7%Q<>EQ<*EQ<7%PO7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%PR7%PV7#!D:6=E
+M<G0U-C%D:6%T/2X*+@IT(&1E=DET(&0Z[NXZ,````"L-"E=!4D,M1&%T93H)
+M,3@W,BTP-RTS5#,Z-SHU6@T*#0I#BVYT^)=7=#%Z5T%20R\Q+C`-"D-O;G1E
+M;G0M3&5N9W1H.C`V#0I7*5=!4B\O.ZRL-&X*05)#+ZRL@9$-"DQA<W0M36]D
+M:69I960Z"3$X-S(M,#$E,U0S.GH``O__/\/#P\/#P\/#P\/#(@##P\/#PP'#
+MP\/#P\/#P______________________________________#P\/#P\/#P\,`
+M$&@Z,C,-"FQ7;V%D7VPN"BX*9V&<`#`P,#`P,#`P,#`P,#`P,#`P`0`P-S`W
+M,#(P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#!#,#`P
+M,#`P,#`P,#`P,#`P,#`P,#4P,#`P.#`P,#`P,#`P,$4P,#`P,#`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`P,`$``B@A4F%2(1H'&`$`C>\"T@`%PP`:!P`$9P``
+M````````[P+2``+'#P`)`"X),AP`_0$`%___"0`N"3(<`/T!`!?__Q%287(A
+M_Q%287(A&H<!`(WO`M(``\</``DA&M(C+0`"*"%285(A&@<8`0"-[P+2``4`
+M``````````````````````$``````/____\``"\O``#_02#M____L-X`_P"&
+MAK%M]O;V`ZK^]O_/_P#$OM\1]O__L`#M4?\O45%/>\Q`"@HW,@```/V-[P+2
+M``+'`"X),1P`_0$`%___$5)A<@$`C>\"T@`%PP`:!P`$9P``````````[P+2
+M``+'#P`)`"X),AP`_0$`%___$5)A<B$:!P$`C>\"T@`#QP\`"2$:TB,M``DA
+M&M(C+0`"*"%285(A&@<8`0"-[P+2``7#`!H'`/R8__]E965E965E965E965E
+M965E965@<W0]+@HN"BX*,C`W,#<P:6%T>6%R(0HN"@HF+B8N"B@*+@HN"BY0
+M7B]A,C5I-F1G97-T/2X*+@HN"@HF+BX*"@HF+BX**`HN"BX*+E!<-3,R-C)D
+M+W-.="`@6W-T/3TN"BX*+@H*)BXN"B@*+@HN"BY07#4S,C8A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A+@H*)BXN+EPV7#)D:6=E<G0U-C)D:6%T/2X*
+M+@IT+BXN"B@*+@HN"BY07&AA,C4V9"XO"C(P)3`W,"]S3G0@(&1S=#TN"BX*
+M+@H*)G0]+@HN"BX*"@HF+@HN+B@O"BX*+E!<:&$R-39D:6=E<W0]+@HN"BX*
+M"B8N+@HH"C\N"BX*+E!<7%Q<7%Q<7%Q<7%PR-C)D:6=E<G0U-C)D7%Q<7%Q<
+M7%Q<7%Q<7'I<7"I<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<,EQ<-EPR9&EG
+M97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+@HN"@HF+BX**`HN
+M+@HH"BX*+CTN"BX*+@H*)BXN"B@*+@HN"BY07%Q<7%Q<7%Q<7%Q<,C8R9&EG
+M97)T-38R9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7%Q<7#)<7#9<,&1I9V5R=#4V,61I870]+@HN"G0@9&5V270@9#KN[CHP````
+M*PT*5T%20RU$871E.@DQ.#<R+3`W+3-4,SHW.C5:#0H-"D.+;G3XEU=T,7I7
+M05)#+S$N,`T*0V]N=&5N="U,96YG=&@Z,#8-"E<I5T%2+R\[K*PT;@I!4D,O
+MK*R!D0T*3&%S="U-;V1I9FEE9#H),3@W,BTP,24S5#,Z>@`"__\_P\/#P\/#
+MP\/#P\,B`,/#P\/#`</#P\/#P\/#________________________________
+M_______________________________________T________P\/#P\/#P\/#
+MP\/#P\,MP\/#P\/#ZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ9&EG97-T/2X*
+M+@HN"@HF+BX**`HN+@HH"BX*+@HN,`HH"@HN"BXN4%PU,S)1ZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZL/#P\/#P\/#
+MP\/+PVW#P\/#P\/#P\/#P\/#P\/#P\,!P\/#P\/#P\/_________________
+M____________________________________________________-C)D:6=E
+M<G1;/2X*+@HN"@HF979I8S;_________P\/#P\/#P\/#P\/#P\,MP\/#P\/#
+MP\/#P\/#-BX*"BX*"BXO"C(P-S`W,"]S3G0@(&!S=#W#P\/#P\/#P\/#`!!H
+M.C(S#0IL5V]A9%]L+@HN"F=AG``P,#`P,#`P,#`P,#`P,#`P,`$`,#<P-S`R
+M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P0S`P,#`P
+M,#`P,#`P,#`P,#`P,#`U,#`P,#@P,#`P,#`P,#!%,#`P,#`P,#`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`!``(H(5)A4B$:!Q@!`(WO`M(`!<,`&@<`!&<`````
+M`````.\"T@`"QP\`"0`N"3(<`/T!`!?__PD`+@DR'`#]`0`7__\14F%R(?\1
+M4F%R(1J'`0"-[P+2``/'#P`)(1K2(RT``B@A4F%2(1H'&`$`C>\"T@`%````
+M```````````````````!``````#_____```O+P``_T$@[?___[#>`/\`AH:Q
+M;?;V]@.J_O;_S_\`Q+[?$?;?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?___?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W_^[XP##
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````#_________
+M__________________________________________\`````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````"``````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````+8`````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!287(A&@<!
+M`(WO`M(``L,''(`'`0#__PL!``(ARP$"`````/\`_P$`<<?_____________
+M______________________\!`````````/________\!````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````0``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````_/\`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````-_?W]_?W]_?W]_?W]_?W]_?#]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]\A("`@("`@(-_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]]V````W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?WT%.4TE?6-_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]O?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]]?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?WP``````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````/__________________
+M____________________________________________________````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``0`````````````````````````````````````````````````````````
+M`````````````````````````````````````````````P``````````````
+M``````````!A86$`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````,#`S,#@Q-@`P,S<T-3,T`#`P,3$V,3``,#`P
+M,#`P,#`P,#<`,3(U,S$Q-#4S-S$`(#$R,#<Q`"`Q````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````'5S=&!R
+M`#`Q9'9Y=6MO=@````````````````````````````````!E;F<`````````
+M``````````#_`0```````````````#`P,``P,#`P,#`P,#`P,```````````
+M````````````````````````````````````````````````````````````
+M````````````````]P``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````#,*`````````````0```````!``
+M```````````````````$T031T4T```"`__\U*Q8T`````````-_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````F-(%PIAT;W!D:7+___\!!/__________
+M__________\A4F%2(1H'__________________\A4F%2(1H'____________
+M__________]H`.Y0P[0\/%\!!P$`C>\"T@`%PF%R4E@`=W1287(A&@<!`(WO
+M`M(``L</"0!R(1H'`1HCTCH``BBA75U=75U=75U=75U=75U=75U=75U=75T`
+M````````````````````````````````````````````````````````````
+M````````````````!````````````@``````````````````````````````
+M````````````````*```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````'X````````````````````````````````````````$
+M(DT81'`=#P(`@'''`.[_________________________________________
+M_________________WP$________________________________________
+M_____________________________________________________[T``+JK
+MVP&ZNKJZ_____________S#_________________________````%@``````
+M``!^?GY^?GY^?GY^?GY^?GY^?GY^?GY^_________PI^?GY^?GY^?GY^?@`!
+M+?____8M+2TM"@H*"C(*"@H*"@H*"CT*"@H*"@H*"@H*"@H*"@!7(B___PS#
+M/0`P`&$!`&%A86">EFZ>45J>E"(8*1QP&#AP1O__`````!X`````````````
+MNKJZNKJZN@'U``"R____`````!X```"`````````````````````````````
+M`"Q!`````````"T`%0``:#H`6@$M<VPW-@#($0````````#BH0!C:3``,@!E
+M,0``________________````````````"@H*"@```%U=75U=75U=75U=75U=
+M70```````````````````````````````````%)A<B$:!P$`C>\"T@`"PP<<
+MP@2```#_;24``F<<`0(`#@```0!02P@#`"8F)@!`___/0T+_____\?__K2-T
+M='3_______[______R9"____,3,U__\3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$R8J8BQB`/______0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V
+M-C8V&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H
+M*"@H*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``
+M````````````````````````````V]O;V]L`VP````#;V]L`VR@H*"@H*#8V
+M-C8V-C8V-C8VEC8V-C8V-C8VV]O;``````````````````````````````#;
+MV]O;VP#;`````-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;
+MV]O;V]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V
+M-B@H*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V
+M-C8VV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V-C8V-C8V-C8V-I8V-C8V-C8V-MO;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;VT)"0D(`
+M````````````````````````````````````````````````````````````
+M`````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V
+M-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"
+M*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````````````````````
+M`````````-O;V]O;`-L`````V]O;`-L``````````````````````$)"0D)"
+M0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+MV]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V
+M-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V
+M-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;`-L`
+M````V]O;`-LH*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````
+M````````````````````V]O;V]L`VP````#;V]L`VP``````````````````
+M````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U2
+M85(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V
+M-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````````````````````````
+MV]O;V]L`VP````#;V]L`VP!W=%)A<B$:!P$`````````````````````````
+M`````(WO`M(``L</"0!R(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(`
+M`L</``ER(9HP`1HCTBT``B@A4F%2(1H'&`$`C>\"T@`%PT4```!&%<</``ER
+M(1H'`1HCTBT:!P$:#2$[````````=EL````````````0^OKZ^OJ%F)B8F)B8
+M`)@"F-(%PI@78?________\!!/____________________\A4F%2(1H'____
+M______________\A4F%2(1H'______________________]H`.Y0P[0\/%\!
+M!P$`C>\"T@`%PF%R4E@`=W1287(A&@<!`(WO`M(``L</"0!R(1H'`1HCTCH`
+M`BBA75U=75U=75U=75U=75U=75U=75U=75T`````````````````````````
+M````````````````````````````````````````````````````!```````
+M`````````````````````````````"@`````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````!^````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````0B31A$<!T/`@"`<<<`[O______________
+M____________________________________________?`3_____________
+M____________________________________________________________
+M____________________O0``NJO;`;JZNKK_____________,/__________
+M______________\````6`````````'Y^?GY^?GY^?GY^?GY^?GY^?GY^?G[_
+M________"GY^?GY^?GY^?GY^``$M____]BTM+2T*"@H*,@H*"@H*"@H*/0H*
+M"@H*"@H*"@H*"@H*`%<B+___#,,]`#``80$`86%A8)Z6;IY16IZ4(A@I''`8
+M.'!&__\`````'@````````````"ZNKJZNKJZ`?4``++___\`````'@```(``
+M````````````````````````````+$$`````````+0`5``!H.@!:`2US;#<V
+M`,@1`````````.*A`&-I,``R`&4Q``#_______________\````````````*
+M"@H*````75U=75U=75U=75U=75U=````````````````````````````````
+M````4F%R(1H'`0"-[P+2``+#!QS"!(```/]M)0`"9QP!`@`.```!`%!+"`,`
+M)B8F`$#__\]#0O_____Q__^M(W1T=/_______O______)D+___\Q,S7__Q,3
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3)BIB+&(`
+M_________\[.SL[.SL[.SL[.SL[.SJTC='1T_________S0S-C`Y.#(P-#/(
+MX%)#+40Z8`HR'YT/.6C@4D,M1#I@"C(?G0\Y:+1@@S4X`(``4F$N,R\**G-`
+M``````<``"\F*G,``L,''(`$@```_VTE^0)G'`$"``X```$`4$L(`P`F*F(L
+M8@#_W0`A``!/`/T`,3(P-#$R.#$P.3'(X%)#+40Z8`HR'YT/.&BT8(,U.```
+M`%)A+B\*,RIS`````````!D_)B]S+PHJ<R\*("8F)@!GP(XJ`````*^M(P\!
+M'R8F)B8G)B8F)B8F)B8F)B8F`$#__\]#0O\````````O)B9S+PHJ<R\*("8F
+M)A\F)B8F)B8F)B8F)B8F)"8F)@!`___/0T+_______^M(W1T=/__________
+M____________________________________________________________
+M____________________________________________________)B`F)A\F
+M)B8F)B8F)B8F)B8G)B8`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````]@``E#@X.#A=.#@XY>7EY0H```#EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>5W=V%R(2\O+R`N"@H*75U=75U9R,C(R,C(R,C(R,C(R"<.`'\`
+M``I=70!=!UU=7=D`Y>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY4$X.#@X]C@X+3@X.#@X.#@X.#@X.#@X.#@X
+M.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#AR.#@X.#@X.#@X.#@X.#@X.#@X
+M.#@X./DX.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X<C@X.'?^_________QE,
+M(0(V-C8V-C8V-C8V-C8V,AE,(0(V-C8V-C8V-C8V-C8V-C8V-C8V-@@V-C8V
+MEC8V-C8V-C8VV]O;V]O;V]O_V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V-C8V
+M-C8V-C8(-C8V-I8V-C8V-C8V-MO;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+M-C8V-C8VV]O;V]O;V]O;V]M=75U=75U=75U=75U=75U=75U=7=O;V]O;V]O;
+M-C8V-C8V-AE,(0(V-C8V-C8V-C;;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MVS8V-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8VEC8V-C8V-C8VV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;0D)"0@``````````````````````````
+M````````````````````````````````````````````````0D)"0D)"0D)"
+M<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U285(A&@=A<D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;
+MV]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V
+M-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V
+M-C8V-C8V-MO;VP``````````````````````````````V]O;V]L`VP````#;
+MV]L`VP``````````````````````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)=75U285(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H
+M*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````
+M````````````````````````V]O;V]L`VP````#;V]L`VR@H*"@H*#8V-C8V
+M-C8V-C8VEC8V-C8V-C8VV]O;``````````````````````````````#;V]O;
+MVP#;`````-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;
+MV]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H
+M*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8V
+MV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;`M(`
+M`L</"0!R(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(``L</``ER(9HP
+M`1HCTBT``B@A4F%2(1H'&`$`C>\"T@`%P_J%6YB8F)B8F`"8`IC2!<*8%V'_
+M________`03_____________________(5)A4B$:!___________________
+M____:`#N4,.T/#Q?`0<!`(WO`M(`!<)A<E)8`'=T4F%R(1H'`0"-[P+2``+'

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201906282231.x5SMVrAH064604>