Hello community,

here is the log from the commit of package mozilla-nspr for openSUSE:Factory 
checked in at 2019-05-17 23:37:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mozilla-nspr (Old)
 and      /work/SRC/openSUSE:Factory/.mozilla-nspr.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mozilla-nspr"

Fri May 17 23:37:45 2019 rev:69 rq:702839 version:4.21

Changes:
--------
--- /work/SRC/openSUSE:Factory/mozilla-nspr/mozilla-nspr.changes        
2018-10-29 14:56:54.349728318 +0100
+++ /work/SRC/openSUSE:Factory/.mozilla-nspr.new.5148/mozilla-nspr.changes      
2019-05-17 23:37:49.474088465 +0200
@@ -1,0 +2,11 @@
+Tue Apr 23 12:03:45 UTC 2019 - Wolfgang Rosenauer <w...@rosenauer.org>
+
+- update to version 4.21
+  * Use MAP_SHARED for read-only file mappings on MacOS and Android
+  * Changed prbit.h to use builtin function on aarch64
+  * Test program build fixes
+  * Minor fixes to support unified builds
+  * Update library copyright notices
+  * Removed Gonk/B2G references
+
+-------------------------------------------------------------------

Old:
----
  nspr-4.20.tar.gz

New:
----
  nspr-4.21.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mozilla-nspr.spec ++++++
--- /var/tmp/diff_new_pack.S7f8wT/_old  2019-05-17 23:37:50.654087844 +0200
+++ /var/tmp/diff_new_pack.S7f8wT/_new  2019-05-17 23:37:50.658087841 +0200
@@ -1,8 +1,8 @@
 #
 # spec file for package mozilla-nspr
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
-#               2006-2018 Wolfgang Rosenauer
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+#               2006-2019 Wolfgang Rosenauer
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 
 Name:           mozilla-nspr
-Version:        4.20
+Version:        4.21
 Release:        0
 Summary:        Netscape Portable Runtime
 License:        MPL-2.0

++++++ nspr-4.20.tar.gz -> nspr-4.21.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/.hg_archival.txt 
new/nspr-4.21/nspr/.hg_archival.txt
--- old/nspr-4.20/nspr/.hg_archival.txt 2018-08-28 14:42:28.000000000 +0200
+++ new/nspr-4.21/nspr/.hg_archival.txt 2019-03-07 11:04:05.000000000 +0100
@@ -1,4 +1,4 @@
 repo: a4b34919bf34db2ee22acbbc305693c8980b6dc6
-node: 098415a64f86e6dd98a2afb915526b1bfaf55409
+node: 7f6c18ae404c71b41e8e24504c857ed46ed4c818
 branch: default
-tag: NSPR_4_20_RTM
+tag: NSPR_4_21_RTM
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/configure new/nspr-4.21/nspr/configure
--- old/nspr-4.20/nspr/configure        2018-08-28 14:42:28.000000000 +0200
+++ new/nspr-4.21/nspr/configure        2019-03-07 11:04:05.000000000 +0100
@@ -783,7 +783,6 @@
 with_android_toolchain
 with_android_version
 with_android_platform
-with_gonk
 with_dist_prefix
 with_dist_bindir
 with_dist_includedir
@@ -873,6 +872,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1484,7 +1484,6 @@
                           Android platform version, default 5 for arm, 9 for 
x86/mips
   --with-android-platform=DIR
                           location of platform dir
-  --with-gonk=DIR         location of gonk dir
   --with-dist-prefix=DIST_PREFIX
                           place build files in DIST_PREFIX dist
   --with-dist-bindir=DIR  build execuatables in DIR DIST_PREFIX/bin
@@ -2488,7 +2487,7 @@
   program_prefix=${target_alias}-
 
 MOD_MAJOR_VERSION=4
-MOD_MINOR_VERSION=20
+MOD_MINOR_VERSION=21
 MOD_PATCH_VERSION=0
 NSPR_MODNAME=nspr20
 _HAVE_PTHREADS=
@@ -2656,19 +2655,6 @@
     ;;
 esac
 
-
-
-# Check whether --with-gonk was given.
-if test "${with_gonk+set}" = set; then :
-  withval=$with_gonk; gonkdir=$withval
-fi
-
-
-if test -n "$gonkdir" ; then
-
-    $as_echo "#define ANDROID 1" >>confdefs.h
-
-else
 case "$target" in
 *-android*|*-linuxandroid*)
     if test -z "$android_ndk" ; then
@@ -2754,7 +2740,6 @@
 
     ;;
 esac
-fi
 
 dist_prefix='${MOD_DEPTH}/dist'
 dist_bindir='${dist_prefix}/bin'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/configure.in 
new/nspr-4.21/nspr/configure.in
--- old/nspr-4.20/nspr/configure.in     2018-08-28 14:42:28.000000000 +0200
+++ new/nspr-4.21/nspr/configure.in     2019-03-07 11:04:05.000000000 +0100
@@ -15,7 +15,7 @@
 dnl = Defaults
 dnl ========================================================
 MOD_MAJOR_VERSION=4
-MOD_MINOR_VERSION=20
+MOD_MINOR_VERSION=21
 MOD_PATCH_VERSION=0
 NSPR_MODNAME=nspr20
 _HAVE_PTHREADS=
@@ -147,21 +147,6 @@
     ;;
 esac
 
-dnl ========================================================
-dnl = Gonk is a fork of Android used for Mozilla's B2G project.
-dnl = Configuration is done largely by the top level config
-dnl = and the specified gonk directory doesn't matter here.
-dnl ========================================================
-
-AC_ARG_WITH(gonk,
-[  --with-gonk=DIR         location of gonk dir],
-    gonkdir=$withval)
-
-if test -n "$gonkdir" ; then
-    dnl Most things are directly configured by env vars when building for gonk
-
-    AC_DEFINE(ANDROID)
-else
 case "$target" in
 *-android*|*-linuxandroid*)
     if test -z "$android_ndk" ; then
@@ -246,7 +231,6 @@
     AC_DEFINE(ANDROID)
     ;;
 esac
-fi
 
 dnl ========================================================
 dnl =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/lib/ds/plvrsion.c 
new/nspr-4.21/nspr/lib/ds/plvrsion.c
--- old/nspr-4.20/nspr/lib/ds/plvrsion.c        2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/lib/ds/plvrsion.c        2019-03-07 11:04:05.000000000 
+0100
@@ -54,7 +54,7 @@
     /* filename         */  _PRODUCTION,        /* the produced library name */
     /* description      */ "Portable runtime",  /* what we are */
     /* security         */ "N/A",               /* not applicable here */
-    /* copywrite        */  "Copyright (c) 1998 Netscape Communications 
Corporation. All Rights Reserved",
+    /* copywrite        */ "This Source Code Form is subject to the terms of 
the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed 
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.";,
     /* comment          */  "http://www.mozilla.org/MPL/";,
     /* specialString    */ ""
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/lib/libc/src/plvrsion.c 
new/nspr-4.21/nspr/lib/libc/src/plvrsion.c
--- old/nspr-4.20/nspr/lib/libc/src/plvrsion.c  2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/lib/libc/src/plvrsion.c  2019-03-07 11:04:05.000000000 
+0100
@@ -54,7 +54,7 @@
     /* filename         */  _PRODUCTION,        /* the produced library name */
     /* description      */ "Portable runtime",  /* what we are */
     /* security         */ "N/A",               /* not applicable here */
-    /* copywrite        */  "Copyright (c) 1998 Netscape Communications 
Corporation. All Rights Reserved",
+    /* copywrite        */ "This Source Code Form is subject to the terms of 
the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed 
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.";,
     /* comment          */  "http://www.mozilla.org/MPL/";,
     /* specialString    */ ""
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/lib/prstreams/plvrsion.c 
new/nspr-4.21/nspr/lib/prstreams/plvrsion.c
--- old/nspr-4.20/nspr/lib/prstreams/plvrsion.c 2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/lib/prstreams/plvrsion.c 2019-03-07 11:04:05.000000000 
+0100
@@ -54,7 +54,7 @@
     /* filename         */  _PRODUCTION,        /* the produced library name */
     /* description      */ "Portable runtime",  /* what we are */
     /* security         */ "N/A",               /* not applicable here */
-    /* copywrite        */  "Copyright (c) 1998 Netscape Communications 
Corporation. All Rights Reserved",
+    /* copywrite        */ "This Source Code Form is subject to the terms of 
the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed 
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.";,
     /* comment          */  "http://www.mozilla.org/MPL/";,
     /* specialString    */ ""
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/include/md/_win32_errors.h 
new/nspr-4.21/nspr/pr/include/md/_win32_errors.h
--- old/nspr-4.20/nspr/pr/include/md/_win32_errors.h    2018-08-28 
14:42:28.000000000 +0200
+++ new/nspr-4.21/nspr/pr/include/md/_win32_errors.h    2019-03-07 
11:04:05.000000000 +0100
@@ -83,7 +83,7 @@
 extern void _MD_win32_map_acceptex_error(PRInt32 err);
 #define        _PR_MD_MAP_ACCEPTEX_ERROR       _MD_win32_map_acceptex_error
 
-extern PRInt32 _MD_win32_map_connect_error(PRInt32 err);
+extern void _MD_win32_map_connect_error(PRInt32 err);
 #define        _PR_MD_MAP_CONNECT_ERROR        _MD_win32_map_connect_error
 
 extern void _MD_win32_map_bind_error(PRInt32 err);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/include/prbit.h 
new/nspr-4.21/nspr/pr/include/prbit.h
--- old/nspr-4.20/nspr/pr/include/prbit.h       2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/include/prbit.h       2019-03-07 11:04:05.000000000 
+0100
@@ -14,7 +14,8 @@
 ** functions.
 */
 #if defined(_WIN32) && (_MSC_VER >= 1300) && \
-    (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM))
+    (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM) || \
+     defined(_M_ARM64))
 # include <intrin.h>
 # pragma  intrinsic(_BitScanForward,_BitScanReverse)
   __forceinline static int __prBitScanForward32(unsigned int val)
@@ -33,7 +34,8 @@
 # define pr_bitscan_clz32(val)  __prBitScanReverse32(val)
 # define  PR_HAVE_BUILTIN_BITSCAN32
 #elif ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) && \
-       (defined(__i386__) || defined(__x86_64__) || defined(__arm__))
+       (defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \
+        defined(__aarch64__))
 # define pr_bitscan_ctz32(val)  __builtin_ctz(val)
 # define pr_bitscan_clz32(val)  __builtin_clz(val)
 # define  PR_HAVE_BUILTIN_BITSCAN32
@@ -136,7 +138,7 @@
 */
 
 #if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64) || \
-    defined(_M_X64) || defined(_M_ARM))
+    defined(_M_X64) || defined(_M_ARM) || defined(_M_ARM64))
 #include <stdlib.h>
 #pragma intrinsic(_rotl, _rotr)
 #define PR_ROTATE_LEFT32(a, bits) _rotl(a, bits)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/include/prinit.h 
new/nspr-4.21/nspr/pr/include/prinit.h
--- old/nspr-4.20/nspr/pr/include/prinit.h      2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/include/prinit.h      2019-03-07 11:04:05.000000000 
+0100
@@ -31,9 +31,9 @@
 ** The format of the version string is
 **     "<major version>.<minor version>[.<patch level>] [<Beta>]"
 */
-#define PR_VERSION  "4.20"
+#define PR_VERSION  "4.21"
 #define PR_VMAJOR   4
-#define PR_VMINOR   20
+#define PR_VMINOR   21
 #define PR_VPATCH   0
 #define PR_BETA     PR_FALSE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/src/io/pripv6.c 
new/nspr-4.21/nspr/pr/src/io/pripv6.c
--- old/nspr-4.20/nspr/pr/src/io/pripv6.c       2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/src/io/pripv6.c       2019-03-07 11:04:05.000000000 
+0100
@@ -16,8 +16,8 @@
 static PRIOMethods ipv6_to_v4_udpMethods;
 static PRDescIdentity _pr_ipv6_to_ipv4_id;
 extern PRBool IsValidNetAddr(const PRNetAddr *addr);
-extern PRIPv6Addr _pr_in6addr_any;
-extern PRIPv6Addr _pr_in6addr_loopback;
+extern const PRIPv6Addr _pr_in6addr_any;
+extern const PRIPv6Addr _pr_in6addr_loopback;
 
 /*
  * convert an IPv4-mapped IPv6 addr to an IPv4 addr
@@ -247,7 +247,7 @@
 
 #if defined(_PR_INET6_PROBE)
 static PRBool ipv6_is_present;
-extern PRBool _pr_test_ipv6_socket(void);
+PR_EXTERN(PRBool) _pr_test_ipv6_socket(void);
 
 #if !defined(_PR_INET6) && defined(_PR_HAVE_GETIPNODEBYNAME)
 extern PRStatus _pr_find_getipnodebyname(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/src/md/unix/unix.c 
new/nspr-4.21/nspr/pr/src/md/unix/unix.c
--- old/nspr-4.20/nspr/pr/src/md/unix/unix.c    2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/src/md/unix/unix.c    2019-03-07 11:04:05.000000000 
+0100
@@ -59,7 +59,7 @@
 ** Global lock variable used to bracket calls into rusty libraries that
 ** aren't thread safe (like libc, libX, etc).
 */
-static PRLock *_pr_rename_lock = NULL;
+static PRLock *_pr_unix_rename_lock = NULL;
 static PRMonitor *_pr_Xfe_mon = NULL;
 
 static PRInt64 minus_one;
@@ -204,8 +204,8 @@
     ** of an existing file. Holding a lock across these two function
     ** and the open function is known to be a bad idea, but ....
     */
-    if (NULL != _pr_rename_lock)
-        PR_Lock(_pr_rename_lock);
+    if (NULL != _pr_unix_rename_lock)
+        PR_Lock(_pr_unix_rename_lock);
     if (0 == access(to, F_OK))
         PR_SetError(PR_FILE_EXISTS_ERROR, 0);
     else
@@ -216,8 +216,8 @@
             _PR_MD_MAP_RENAME_ERROR(err);
         }
     }
-    if (NULL != _pr_rename_lock)
-        PR_Unlock(_pr_rename_lock);
+    if (NULL != _pr_unix_rename_lock)
+        PR_Unlock(_pr_unix_rename_lock);
     return rv;
 }
 
@@ -260,15 +260,15 @@
     ** This lock is used to enforce rename semantics as described
     ** in PR_Rename. Look there for more fun details.
     */
-    if (NULL !=_pr_rename_lock)
-        PR_Lock(_pr_rename_lock);
+    if (NULL !=_pr_unix_rename_lock)
+        PR_Lock(_pr_unix_rename_lock);
     rv = mkdir(name, mode);
     if (rv < 0) {
         err = _MD_ERRNO();
         _PR_MD_MAP_MKDIR_ERROR(err);
     }
-    if (NULL !=_pr_rename_lock)
-        PR_Unlock(_pr_rename_lock);
+    if (NULL !=_pr_unix_rename_lock)
+        PR_Unlock(_pr_unix_rename_lock);
     return rv;
 }
 
@@ -2219,8 +2219,8 @@
     if (flags & PR_CREATE_FILE)
     {
         osflags |= O_CREAT;
-        if (NULL !=_pr_rename_lock)
-            PR_Lock(_pr_rename_lock);
+        if (NULL !=_pr_unix_rename_lock)
+            PR_Lock(_pr_unix_rename_lock);
     }
 
 #if defined(ANDROID)
@@ -2234,8 +2234,8 @@
         _PR_MD_MAP_OPEN_ERROR(err);
     }
 
-    if ((flags & PR_CREATE_FILE) && (NULL !=_pr_rename_lock))
-        PR_Unlock(_pr_rename_lock);
+    if ((flags & PR_CREATE_FILE) && (NULL !=_pr_unix_rename_lock))
+        PR_Unlock(_pr_unix_rename_lock);
     return rv;
 }
 
@@ -2871,8 +2871,8 @@
     rv = sigaction(SIGPIPE, &sigact, 0);
     PR_ASSERT(0 == rv);
 
-    _pr_rename_lock = PR_NewLock();
-    PR_ASSERT(NULL != _pr_rename_lock);
+    _pr_unix_rename_lock = PR_NewLock();
+    PR_ASSERT(NULL != _pr_unix_rename_lock);
     _pr_Xfe_mon = PR_NewMonitor();
     PR_ASSERT(NULL != _pr_Xfe_mon);
 
@@ -2881,9 +2881,9 @@
 
 void _PR_UnixCleanup(void)
 {
-    if (_pr_rename_lock) {
-        PR_DestroyLock(_pr_rename_lock);
-        _pr_rename_lock = NULL;
+    if (_pr_unix_rename_lock) {
+        PR_DestroyLock(_pr_unix_rename_lock);
+        _pr_unix_rename_lock = NULL;
     }
     if (_pr_Xfe_mon) {
         PR_DestroyMonitor(_pr_Xfe_mon);
@@ -3569,12 +3569,20 @@
     }
     if (fmap->prot == PR_PROT_READONLY) {
         fmap->md.prot = PROT_READ;
-#ifdef OSF1V4_MAP_PRIVATE_BUG
+#if defined(OSF1V4_MAP_PRIVATE_BUG) || defined(DARWIN) || defined(ANDROID)
         /*
          * Use MAP_SHARED to work around a bug in OSF1 V4.0D
          * (QAR 70220 in the OSF_QAR database) that results in
          * corrupted data in the memory-mapped region.  This
          * bug is fixed in V5.0.
+         *
+         * This is also needed on OS X because its implementation of
+         * POSIX shared memory returns an error for MAP_PRIVATE, even
+         * when the mapping is read-only.
+         *
+         * And this is needed on Android, because mapping ashmem with
+         * MAP_PRIVATE creates a mapping of zeroed memory instead of
+         * the shm contents.
          */
         fmap->md.flags = MAP_SHARED;
 #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/src/prvrsion.c 
new/nspr-4.21/nspr/pr/src/prvrsion.c
--- old/nspr-4.20/nspr/pr/src/prvrsion.c        2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/src/prvrsion.c        2019-03-07 11:04:05.000000000 
+0100
@@ -54,7 +54,7 @@
     /* filename         */  _PRODUCTION,        /* the produced library name */
     /* description      */ "Portable runtime",  /* what we are */
     /* security         */ "N/A",               /* not applicable here */
-    /* copywrite        */  "Copyright (c) 1998 Netscape Communications 
Corporation. All Rights Reserved",
+    /* copywrite        */ "This Source Code Form is subject to the terms of 
the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed 
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.";,
     /* comment          */  "License information: http://www.mozilla.org/MPL/";,
     /* specialString    */ ""
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/tests/abstract.c 
new/nspr-4.21/nspr/pr/tests/abstract.c
--- old/nspr-4.20/nspr/pr/tests/abstract.c      2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/tests/abstract.c      2019-03-07 11:04:05.000000000 
+0100
@@ -151,7 +151,7 @@
 int
 main()
 {
-  prinf("PASS\n");
+  printf("PASS\n");
   return 0;
 }
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nspr-4.20/nspr/pr/tests/vercheck.c 
new/nspr-4.21/nspr/pr/tests/vercheck.c
--- old/nspr-4.20/nspr/pr/tests/vercheck.c      2018-08-28 14:42:28.000000000 
+0200
+++ new/nspr-4.21/nspr/pr/tests/vercheck.c      2019-03-07 11:04:05.000000000 
+0100
@@ -40,7 +40,7 @@
     "4.10", "4.10.1", "4.10.2", "4.10.3", "4.10.4",
     "4.10.5", "4.10.6", "4.10.7", "4.10.8", "4.10.9",
     "4.10.10", "4.11", "4.12", "4.13", "4.14", "4.15",
-    "4.16", "4.17", "4.18", "4.19",
+    "4.16", "4.17", "4.18", "4.19", "4.20",
     PR_VERSION
 };
 
@@ -56,8 +56,8 @@
     "3.0", "3.0.1",
     "3.1", "3.1.1", "3.1.2", "3.1.3",
     "3.5", "3.5.1",
-    "4.20.1",
-    "4.21", "4.21.1",
+    "4.21.1",
+    "4.22", "4.22.1",
     "10.0", "11.1", "12.14.20"
 };
 


Reply via email to