mediawiki/extensions/OATHAuth: REL1_46 (log #2455867)

sourcepatches

This run took 36 seconds.

From 910c4711d195c20e5a94dd7e94f95727418c90c4 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 30 Apr 2026 13:55:52 +0000
Subject: [PATCH] build: Updating postcss to 8.5.12

* https://github.com/advisories/GHSA-qx2v-qp2m-jg93

Change-Id: Ia153ca988e1a130eadae8fa3f3500a6a1fab254a
---
 package-lock.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index a0072c0..e39cb9e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3838,9 +3838,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.12",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz",
+			"integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==",
 			"dev": true,
 			"funding": [
 				{
@@ -8012,9 +8012,9 @@
 			"dev": true
 		},
 		"postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.12",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz",
+			"integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==",
 			"dev": true,
 			"requires": {
 				"nanoid": "^3.3.11",
-- 
2.47.3

$ date
--- stdout ---
Thu Apr 30 13:55:20 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-OATHAuth.git /src/repo --depth=1 -b REL1_46
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/REL1_46
--- stdout ---
b41afca198150807e3d5dc3ef5f5bca3b90c980e refs/heads/REL1_46

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "postcss": {
      "name": "postcss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1117015,
          "name": "postcss",
          "dependency": "postcss",
          "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
          "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<8.5.10"
        }
      ],
      "effects": [],
      "range": "<8.5.10",
      "nodes": [
        "node_modules/postcss"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 1,
      "high": 0,
      "critical": 0,
      "total": 1
    },
    "dependencies": {
      "prod": 1,
      "dev": 430,
      "optional": 0,
      "peer": 1,
      "peerOptional": 0,
      "total": 430
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 55 installs, 0 updates, 0 removals
  - Locking bacon/bacon-qr-code (v3.1.1)
  - Locking brick/math (0.17.1)
  - Locking christian-riesen/base32 (1.6.0)
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.4)
  - Locking composer/spdx-licenses (1.5.10)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking danog/advanced-json-rpc (v3.2.3)
  - Locking dasprid/enum (1.0.7)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
  - Locking endroid/qr-code (6.0.9)
  - Locking jakobo/hotp-php (v2.0.0)
  - Locking mediawiki/mediawiki-codesniffer (v50.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.20.0)
  - Locking mediawiki/minus-x (2.0.1)
  - Locking mediawiki/phan-taint-check-plugin (9.1.0)
  - Locking netresearch/jsonmapper (v5.0.1)
  - Locking okvpn/clock-lts (1.0.0)
  - Locking paragonie/constant_time_encoding (v3.1.3)
  - Locking phan/phan (6.0.2)
  - Locking phan/tolerant-php-parser (v0.2.0)
  - Locking phan/var_representation_polyfill (0.1.4)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpcsstandards/phpcsextra (1.4.0)
  - Locking phpcsstandards/phpcsutils (1.2.2)
  - Locking psr/clock (1.0.0)
  - Locking psr/container (2.0.2)
  - Locking psr/event-dispatcher (1.0.0)
  - Locking psr/http-message (2.0)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (6.1.0)
  - Locking spomky-labs/cbor-php (3.2.3)
  - Locking spomky-labs/pki-framework (1.4.2)
  - Locking squizlabs/php_codesniffer (3.13.5)
  - Locking symfony/clock (v7.4.8)
  - Locking symfony/console (v8.0.8)
  - Locking symfony/deprecation-contracts (v3.6.0)
  - Locking symfony/polyfill-ctype (v1.37.0)
  - Locking symfony/polyfill-intl-grapheme (v1.37.0)
  - Locking symfony/polyfill-intl-normalizer (v1.37.0)
  - Locking symfony/polyfill-mbstring (v1.37.0)
  - Locking symfony/polyfill-php83 (v1.37.0)
  - Locking symfony/polyfill-php84 (v1.37.0)
  - Locking symfony/polyfill-uuid (v1.37.0)
  - Locking symfony/property-access (v7.4.8)
  - Locking symfony/property-info (v7.4.8)
  - Locking symfony/serializer (v7.4.8)
  - Locking symfony/service-contracts (v3.6.1)
  - Locking symfony/string (v8.0.8)
  - Locking symfony/type-info (v8.0.8)
  - Locking symfony/uid (v7.4.8)
  - Locking web-auth/cose-lib (4.5.1)
  - Locking web-auth/webauthn-lib (5.2.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 55 installs, 0 updates, 0 removals
  - Downloading brick/math (0.17.1)
  - Downloading symfony/polyfill-uuid (v1.37.0)
  - Downloading symfony/type-info (v8.0.8)
  - Downloading spomky-labs/pki-framework (1.4.2)
  - Downloading web-auth/cose-lib (4.5.1)
  - Downloading symfony/uid (v7.4.8)
  - Downloading symfony/serializer (v7.4.8)
  - Downloading symfony/property-info (v7.4.8)
  - Downloading symfony/property-access (v7.4.8)
  - Downloading symfony/clock (v7.4.8)
  - Downloading spomky-labs/cbor-php (3.2.3)
  - Downloading web-auth/webauthn-lib (5.2.5)
  0/12 [>---------------------------]   0%
  9/12 [=====================>------]  75%
 10/12 [=======================>----]  83%
 11/12 [=========================>--]  91%
 12/12 [============================] 100%
  - Installing squizlabs/php_codesniffer (3.13.5): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing brick/math (0.17.1): Extracting archive
  - Installing christian-riesen/base32 (1.6.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing dasprid/enum (1.0.7): Extracting archive
  - Installing bacon/bacon-qr-code (v3.1.1): Extracting archive
  - Installing endroid/qr-code (6.0.9): Extracting archive
  - Installing jakobo/hotp-php (v2.0.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.2.2): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.37.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.10): Extracting archive
  - Installing composer/semver (3.4.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v50.0.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.37.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.37.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive
  - Installing symfony/string (v8.0.8): Extracting archive
  - Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.6.1): Extracting archive
  - Installing symfony/console (v8.0.8): Extracting archive
  - Installing sabre/event (6.1.0): Extracting archive
  - Installing phan/var_representation_polyfill (0.1.4): Extracting archive
  - Installing phan/tolerant-php-parser (v0.2.0): Extracting archive
  - Installing netresearch/jsonmapper (v5.0.1): Extracting archive
  - Installing danog/advanced-json-rpc (v3.2.3): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (6.0.2): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (9.1.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.20.0): Extracting archive
  - Installing mediawiki/minus-x (2.0.1): Extracting archive
  - Installing psr/clock (1.0.0): Extracting archive
  - Installing okvpn/clock-lts (1.0.0): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  - Installing psr/http-message (2.0): Extracting archive
  - Installing symfony/polyfill-php83 (v1.37.0): Extracting archive
  - Installing symfony/polyfill-php84 (v1.37.0): Extracting archive
  - Installing symfony/polyfill-uuid (v1.37.0): Extracting archive
  - Installing symfony/type-info (v8.0.8): Extracting archive
  - Installing spomky-labs/pki-framework (1.4.2): Extracting archive
  - Installing web-auth/cose-lib (4.5.1): Extracting archive
  - Installing symfony/uid (v7.4.8): Extracting archive
  - Installing symfony/serializer (v7.4.8): Extracting archive
  - Installing symfony/property-info (v7.4.8): Extracting archive
  - Installing symfony/property-access (v7.4.8): Extracting archive
  - Installing symfony/clock (v7.4.8): Extracting archive
  - Installing spomky-labs/cbor-php (3.2.3): Extracting archive
  - Installing psr/event-dispatcher (1.0.0): Extracting archive
  - Installing paragonie/constant_time_encoding (v3.1.3): Extracting archive
  - Installing web-auth/webauthn-lib (5.2.5): Extracting archive
  0/53 [>---------------------------]   0%
 28/53 [==============>-------------]  52%
 43/53 [======================>-----]  81%
 53/53 [============================] 100%
7 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
31 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "postcss": {
      "name": "postcss",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1117015,
          "name": "postcss",
          "dependency": "postcss",
          "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
          "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<8.5.10"
        }
      ],
      "effects": [],
      "range": "<8.5.10",
      "nodes": [
        "node_modules/postcss"
      ],
      "fixAvailable": true
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 1,
      "high": 0,
      "critical": 0,
      "total": 1
    },
    "dependencies": {
      "prod": 1,
      "dev": 430,
      "optional": 0,
      "peer": 1,
      "peerOptional": 0,
      "total": 430
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
--- stdout ---
{
  "added": 430,
  "removed": 0,
  "changed": 0,
  "audited": 431,
  "funding": 105,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "postcss": {
        "name": "postcss",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1117015,
            "name": "postcss",
            "dependency": "postcss",
            "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
            "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93",
            "severity": "moderate",
            "cwe": [
              "CWE-79"
            ],
            "cvss": {
              "score": 6.1,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
            },
            "range": "<8.5.10"
          }
        ],
        "effects": [],
        "range": "<8.5.10",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 0,
        "moderate": 1,
        "high": 0,
        "critical": 0,
        "total": 1
      },
      "dependencies": {
        "prod": 1,
        "dev": 430,
        "optional": 0,
        "peer": 1,
        "peerOptional": 0,
        "total": 430
      }
    }
  }
}

--- end ---
{"added": 430, "removed": 0, "changed": 0, "audited": 431, "funding": 105, "audit": {"auditReportVersion": 2, "vulnerabilities": {"postcss": {"name": "postcss", "severity": "moderate", "isDirect": false, "via": [{"source": 1117015, "name": "postcss", "dependency": "postcss", "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output", "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93", "severity": "moderate", "cwe": ["CWE-79"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<8.5.10"}], "effects": [], "range": "<8.5.10", "nodes": [""], "fixAvailable": true}}, "metadata": {"vulnerabilities": {"info": 0, "low": 0, "moderate": 1, "high": 0, "critical": 0, "total": 1}, "dependencies": {"prod": 1, "dev": 430, "optional": 0, "peer": 1, "peerOptional": 0, "total": 430}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---

added 430 packages, and audited 431 packages in 5s

105 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---

added 430 packages, and audited 431 packages in 6s

105 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt test

Running "eslint:all" (eslint) task

/src/repo/modules/oathmanage/GroupsWith2FANotice.vue
   5:1  warning  This line has a length of 156. Maximum allowed is 100  max-len
  16:1  warning  This line has a length of 152. Maximum allowed is 100  max-len
  38:1  warning  This line has a length of 123. Maximum allowed is 100  max-len

/src/repo/modules/oathmanage/OATHManage.vue
   69:1   warning  This line has a length of 110. Maximum allowed is 100  max-len
   69:61  warning  'class' should be on a new line                        vue/max-attributes-per-line
   72:1   warning  This line has a length of 104. Maximum allowed is 100  max-len
  118:1   warning  This line has a length of 112. Maximum allowed is 100  max-len

/src/repo/modules/webauthn/ui/LoginForm.js
  3:3  warning  Unused eslint-disable directive (no problems were reported from 'no-jquery/no-global-selector')

/src/repo/modules/webauthn/util/Authenticator.js
  67:9  warning  navigator.credentials() is not supported in Safari 11.1, iOS Safari 11.3-11.4  compat/compat

/src/repo/modules/webauthn/util/Registrator.js
  81:9  warning  navigator.credentials() is not supported in Safari 11.1, iOS Safari 11.3-11.4  compat/compat

✖ 10 problems (0 errors, 10 warnings)
  0 errors and 2 warnings potentially fixable with the `--fix` option.


Running "stylelint:all" (stylelint) task
>> Linted 10 files without errors

Running "banana:OATHAuth" (banana) task
>> 1 message directory checked.

Running "banana:WebAuthn" (banana) task
>> 2 message directories checked.

Done.

--- end ---
{"1117015": {"source": 1117015, "name": "postcss", "dependency": "postcss", "title": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output", "url": "https://github.com/advisories/GHSA-qx2v-qp2m-jg93", "severity": "moderate", "cwe": ["CWE-79"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<8.5.10"}}
Upgrading n:postcss from 8.5.6 -> 8.5.12
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating postcss to 8.5.12

* https://github.com/advisories/GHSA-qx2v-qp2m-jg93

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmp2e0i1be6
--- stdout ---
[REL1_46 910c471] build: Updating postcss to 8.5.12
 1 file changed, 6 insertions(+), 6 deletions(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From 910c4711d195c20e5a94dd7e94f95727418c90c4 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 30 Apr 2026 13:55:52 +0000
Subject: [PATCH] build: Updating postcss to 8.5.12

* https://github.com/advisories/GHSA-qx2v-qp2m-jg93

Change-Id: Ia153ca988e1a130eadae8fa3f3500a6a1fab254a
---
 package-lock.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index a0072c0..e39cb9e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3838,9 +3838,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.12",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz",
+			"integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==",
 			"dev": true,
 			"funding": [
 				{
@@ -8012,9 +8012,9 @@
 			"dev": true
 		},
 		"postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.12",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz",
+			"integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==",
 			"dev": true,
 			"requires": {
 				"nanoid": "^3.3.11",
-- 
2.47.3


--- end ---
Source code is licensed under the AGPL.