diff -pruN 6.16-2/.github/workflows/ci-build-test.yml 6.17-1/.github/workflows/ci-build-test.yml
--- 6.16-2/.github/workflows/ci-build-test.yml	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/.github/workflows/ci-build-test.yml	1970-01-01 00:00:00.000000000 +0000
@@ -1,107 +0,0 @@
-# Backward compatibility build tests on various distros
-#
-# - all compatibility docker image build tests (no local build)
-# - images are not rebuilt when the workflow runs but are pulled from docker hub
-#   and can be slightly out of date
-
-name: CI image tests
-run-name: CI image tests
-on:
-  push:
-    branches:
-      - "ci/**"
-      - devel
-      - release-test
-      - master
-jobs:
-  check-centos8:
-    name: CI Centos 8
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Centos8
-        run: sudo docker run kdave/ci-centos-8-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-zoned --disable-libudev
-  check-rockylinux9:
-    name: CI RockyLinux 9
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI RockyLinux 9
-        run: sudo docker run kdave/ci-rockylinux-9-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation
-  check-leap153:
-    name: CI Leap 15.3
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Leap 15.3
-        run: sudo docker run kdave/ci-opensuse-leap-15.3-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-zoned
-  check-leap156:
-    name: CI Leap 15.6
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Leap 15.6
-        run: sudo docker run kdave/ci-opensuse-leap-15.6-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-zoned
-  check-musl:
-    name: CI Musl
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Musl
-        run: sudo docker run kdave/ci-musl-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev
-      - name: CI Musl (experimental)
-        run: sudo docker run kdave/ci-musl-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev --enable-experimental
-  check-musl-32bit:
-    name: CI Musl (32bit)
-    # Pin the version, on 24.04 it fails:
-    #  make: *** pselect jobs pipe: Function not implemented.  Stop.
-    #  make: *** Waiting for unfinished jobs....
-    runs-on: ubuntu-22.04
-    steps:
-      - name: CI Musl (32bit)
-        run: sudo docker run kdave/ci-musl-i386 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev
-      - name: CI Musl (32bit) (experimental)
-        run: sudo docker run kdave/ci-musl-i386 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev --enable-experimental
-  check-tumbleweed:
-    name: CI Tumbleweed
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Tumbleweed
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation
-      - name: CI Tumbleweed (experimental)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --enable-experimental
-  check-tumbleweed-libgcrypt:
-    name: CI Tumbleweed (libgcrypt)
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Tumbleweed (libgcrypt)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libgcrypt
-      - name: CI Tumbleweed (libgcrypt) (experimental)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libgcrypt --enable-experimental
-  check-tumbleweed-libsodium:
-    name: CI Tumbleweed (libsodium)
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Tumbleweed (libsodium)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libsodium
-      - name: CI Tumbleweed (libsodium) (experimental)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libsodium --enable-experimental
-  check-tumbleweed-libkcapi:
-    name: CI Tumbleweed (libkcapi)
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Tumbleweed (libkcapi)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libkcapi
-      - name: CI Tumbleweed (libkcapi) (experimental)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libkcapi --enable-experimental
-  check-tumbleweed-botan:
-    name: CI Tumbleweed (Botan)
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Tumbleweed (Botan)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=botan
-      - name: CI Tumbleweed (Botan) (experimental)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=botan --enable-experimental
-  check-tumbleweed-openssl:
-    name: CI Tumbleweed (OpenSSL)
-    runs-on: ubuntu-24.04
-    steps:
-      - name: CI Tumbleweed (OpenSSL)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=openssl
-      - name: CI Tumbleweed (OpenSSL) (experimental)
-        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=openssl --enable-experimental
diff -pruN 6.16-2/.github/workflows/codespell.yml 6.17-1/.github/workflows/codespell.yml
--- 6.16-2/.github/workflows/codespell.yml	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/.github/workflows/codespell.yml	2025-09-29 14:59:32.000000000 +0000
@@ -1,4 +1,7 @@
-# Check for typos on devel and pull rquests
+# Check for typos on release and on-demand branches
+#
+# NOTE: this is not run on devel or pull requests
+#
 # - codespell configuration is within .codespellrc
 # - the workflow can be run separately from other workflows that trigger on
 #   ci/* branches, use codespell/* as the prefix
@@ -9,13 +12,8 @@ run-name: Codespell
 on:
   push:
     branches:
-      - devel
-      - 'ci/**'
+      - release-test
       - 'codespell/**'
-  pull_request:
-    branches:
-      - devel
-      - 'ci/**'
 
 permissions:
   contents: read
diff -pruN 6.16-2/.github/workflows/devel.yml 6.17-1/.github/workflows/devel.yml
--- 6.16-2/.github/workflows/devel.yml	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/.github/workflows/devel.yml	2025-09-29 14:59:32.000000000 +0000
@@ -9,7 +9,6 @@ on:
     branches:
       - devel
       - 'ci/**'
-      - 'CI/**'
 jobs:
   build-simple:
     name: Simple build tests, manual page build test
diff -pruN 6.16-2/.github/workflows/image-build-test.yml 6.17-1/.github/workflows/image-build-test.yml
--- 6.16-2/.github/workflows/image-build-test.yml	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/.github/workflows/image-build-test.yml	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,107 @@
+# Backward compatibility build tests on various distros
+#
+# - all compatibility docker image build tests (no local build)
+# - images are not rebuilt when the workflow runs but are pulled from docker hub
+#   and can be slightly out of date
+
+name: CI image tests
+run-name: CI image tests
+on:
+  push:
+    branches:
+      - "ci/**"
+      - devel
+      - release-test
+      - master
+jobs:
+  check-centos8:
+    name: CI Centos 8
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Centos8
+        run: sudo docker run kdave/ci-centos-8-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-zoned --disable-libudev
+  check-rockylinux9:
+    name: CI RockyLinux 9
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI RockyLinux 9
+        run: sudo docker run kdave/ci-rockylinux-9-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation
+  check-leap153:
+    name: CI Leap 15.3
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Leap 15.3
+        run: sudo docker run kdave/ci-opensuse-leap-15.3-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-zoned
+  check-leap156:
+    name: CI Leap 15.6
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Leap 15.6
+        run: sudo docker run kdave/ci-opensuse-leap-15.6-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-zoned
+  check-musl:
+    name: CI Musl
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Musl
+        run: sudo docker run kdave/ci-musl-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev
+      - name: CI Musl (experimental)
+        run: sudo docker run kdave/ci-musl-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev --enable-experimental
+  check-musl-32bit:
+    name: CI Musl (32bit)
+    # Pin the version, on 24.04 it fails:
+    #  make: *** pselect jobs pipe: Function not implemented.  Stop.
+    #  make: *** Waiting for unfinished jobs....
+    runs-on: ubuntu-22.04
+    steps:
+      - name: CI Musl (32bit)
+        run: sudo docker run kdave/ci-musl-i386 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev
+      - name: CI Musl (32bit) (experimental)
+        run: sudo docker run kdave/ci-musl-i386 ./test-build $GITHUB_REF_NAME --disable-documentation --disable-backtrace --disable-libudev --enable-experimental
+  check-tumbleweed:
+    name: CI Tumbleweed
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Tumbleweed
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation
+      - name: CI Tumbleweed (experimental)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --enable-experimental
+  check-tumbleweed-libgcrypt:
+    name: CI Tumbleweed (libgcrypt)
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Tumbleweed (libgcrypt)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libgcrypt
+      - name: CI Tumbleweed (libgcrypt) (experimental)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libgcrypt --enable-experimental
+  check-tumbleweed-libsodium:
+    name: CI Tumbleweed (libsodium)
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Tumbleweed (libsodium)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libsodium
+      - name: CI Tumbleweed (libsodium) (experimental)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libsodium --enable-experimental
+  check-tumbleweed-libkcapi:
+    name: CI Tumbleweed (libkcapi)
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Tumbleweed (libkcapi)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libkcapi
+      - name: CI Tumbleweed (libkcapi) (experimental)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=libkcapi --enable-experimental
+  check-tumbleweed-botan:
+    name: CI Tumbleweed (Botan)
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Tumbleweed (Botan)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=botan
+      - name: CI Tumbleweed (Botan) (experimental)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=botan --enable-experimental
+  check-tumbleweed-openssl:
+    name: CI Tumbleweed (OpenSSL)
+    runs-on: ubuntu-24.04
+    steps:
+      - name: CI Tumbleweed (OpenSSL)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=openssl
+      - name: CI Tumbleweed (OpenSSL) (experimental)
+        run: sudo docker run kdave/ci-opensuse-tumbleweed-x86_64 ./test-build $GITHUB_REF_NAME --disable-documentation --with-crypto=openssl --enable-experimental
diff -pruN 6.16-2/.github/workflows/python.yml 6.17-1/.github/workflows/python.yml
--- 6.16-2/.github/workflows/python.yml	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/.github/workflows/python.yml	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,41 @@
+# Run python tests on various version
+#
+# NOTE: The minimum compatible version is 3.6 but the CI base image does not provide it.
+# NOTE: The recent python versions (3.12 and up) fail to set up due to old python3-setuptools in the image
+# NOTE: The workflow could still pass even if the individual tests fail (FIXME)
+
+name: Python bindings tests
+run-name: Python bindings tests
+on:
+  push:
+    branches:
+      - "ci/**"
+      - devel
+      - release-test
+      - master
+jobs:
+  python-test:
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        # 3.6 not available since 22.04
+        # 3.12 broken on 24.04 (no setuptools found during build despite being installed, FIXME)
+        # 3.13 not available on 24.04
+        python-version: ["3.9", "3.10", "3.11"]
+    steps:
+      - uses: actions/checkout@v4
+      - run: sudo apt-get update -qqq
+      - run: sudo apt-get install -y pkg-config gcc liblzo2-dev libzstd-dev libblkid-dev uuid-dev zlib1g-dev libext2fs-dev e2fsprogs libudev-dev python3-sphinx libaio-dev liburing-dev python3-setuptools
+      - name: Set up python
+        uses: actions/setup-python@v6
+        with:
+          python-version: ${{ matrix.python-version }}
+      - run: python -c "import sys; print(sys.version)"
+      - name: Configure
+        run: ./autogen.sh && ./configure --disable-documentation --disable-programs --disable-static
+      - name: Make
+        # With --disable-programs most of the tools are not built, but the tests still need mkfs
+        run: make V=1 -j 4 all mkfs.btrfs
+      - name: Test python
+        run: sudo make test-libbtrfsutil
diff -pruN 6.16-2/.gitignore 6.17-1/.gitignore
--- 6.16-2/.gitignore	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/.gitignore	2025-09-29 14:59:32.000000000 +0000
@@ -75,6 +75,7 @@
 !.github
 !.readthedocs.yaml
 !.codespellrc
+!.pylintrc
 
 /ci/images/*/devel.tar.gz
 
diff -pruN 6.16-2/CHANGES 6.17-1/CHANGES
--- 6.16-2/CHANGES	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/CHANGES	2025-09-29 14:59:32.000000000 +0000
@@ -1,3 +1,22 @@
+btrfs-progs-6.17 (2025-09-29)
+-----------------------------
+   * inspect list-chunks: more sorting keys, descending order
+   * fi resize: add support for offline (unmounted) growing of single device
+   * device stats: add support for offline (unmounted) reads
+   * quota status: new command, overview what mode is enabled, tunables
+   * fi commit-stats: new command, print various commit stats from sysfs (since
+     kernel 6.1)
+   * balance start: print warning and delay start if there's a missing device
+     in the filesystem
+   * mkfs:
+      * print zoned mode (native, emulated)
+   * check:
+      * verify device bytes in super block item and in chunk tree
+   * other
+      * updated CI, new and updated tests
+      * cleanups, refactoring
+      * documentation updates
+
 btrfs-progs-6.16 (2025-08-13)
 -----------------------------
    * mkfs:
@@ -18,6 +37,22 @@ btrfs-progs-6.16 (2025-08-13)
       * documentation updates
       * CI and test updates
 
+btrfs-progs-6.16.1 (2025-09-10)
+"""""""""""""""""""""""""""""""
+   * mkfs:
+      * add option --reflink, when used with --rootdir clone file extents instead
+        of copying (requires source and target image on the same filesystem)
+      * improved tracking of inodes and subvolumes for option --inode-flags
+      * fix initializing raid-stripe-tree
+      * extend what is trimmed/discarded during initialization (temporary chunks,
+        free space)
+   * check: detect duplicate file names in directory items
+   * inspect tree-stats: accept string names for option -t
+   * receive: allow to dump stream from different user
+   * other:
+      * updated documentation
+      * new and updated tests
+
 btrfs-progs-6.15 (2025-06-23)
 -----------------------------
    * mkfs: new option --inode-flags to specify flags/attributes for
@@ -596,8 +631,11 @@ btrfs-progs-6.0.2 (2022-11-24)
       * receive: fix silent data loss after fall back from encoded write
    * fi mkswapfile: new command to create a formatted swapfile in one go
 
+btrfs-progs-5.x (2022-09-12)
+----------------------------
+
 btrfs-progs-5.19 (2022-08-16)
------------------------------
+"""""""""""""""""""""""""""""
    * send: support protocol version 2
    * fi show: print all missing devices
    * device stats: add tabular output
@@ -617,7 +655,6 @@ btrfs-progs-5.19 (2022-08-16)
       * new tests
 
 btrfs-progs-5.19.1 (2022-09-12)
-"""""""""""""""""""""""""""""""
    * fix memory leaks (extent buffer, path)
    * check: verify block device size vs item
    * rescue fix-device-size: allow to shrink device item
@@ -628,7 +665,7 @@ btrfs-progs-5.19.1 (2022-09-12)
       * new tests
 
 btrfs-progs-5.18 (2022-05-25)
------------------------------
+"""""""""""""""""""""""""""""
    * fixes:
       * dump-tree: don't print trailing zeros in checksums
       * recognize paused balance as exclusive operation state, allow to start
@@ -645,7 +682,6 @@ btrfs-progs-5.18 (2022-05-25)
       * new tests
 
 btrfs-progs-5.18.1 (2022-06-06)
-"""""""""""""""""""""""""""""""
    * fixes:
       * convert: fix self reference of toplevel directory
       * build: make kernel lib headers compatible with C++
@@ -655,7 +691,7 @@ btrfs-progs-5.18.1 (2022-06-06)
    * other: documentation updates
 
 btrfs-progs-5.17 (2022-04-26)
------------------------------
+"""""""""""""""""""""""""""""
    * check:
       * repair wrong num_devices in superblock
       * recognize overly long xattr names
@@ -681,7 +717,7 @@ btrfs-progs-5.17 (2022-04-26)
        * add fsstress
 
 btrfs-progs-5.16 (2022-01-12)
------------------------------
+"""""""""""""""""""""""""""""
    * rescue: new subcommand clear-uuid-tree to fix failed mount due to bad uuid
      subvolume keys, caught by tree-checker
    * fi du: skip inaccessible files
@@ -697,7 +733,6 @@ btrfs-progs-5.16 (2022-01-12)
         https://btrfs.readthedocs.io
 
 btrfs-progs-5.16.1 (2022-02-04)
-"""""""""""""""""""""""""""""""
    * mkfs: support DUP on metadata on zoned devices
    * subvol delete: drop warning for root when search ioctl fails
    * check:
@@ -712,7 +747,6 @@ btrfs-progs-5.16.1 (2022-02-04)
       * CI targets updated
 
 btrfs-progs-5.16.2 (2022-02-16)
-"""""""""""""""""""""""""""""""
    * mkfs: fix detection of profile type for zoned mode when creating DUP
    * build:
       * add missing stub for zoned mode helper when zoned mode not enabled
@@ -724,7 +758,7 @@ btrfs-progs-5.16.2 (2022-02-16)
       * test updates
 
 btrfs-progs-5.15 (2021-11-05)
------------------------------
+"""""""""""""""""""""""""""""
    * mkfs: new defaults!
       * no-holes
       * free-space-tree
@@ -746,7 +780,6 @@ btrfs-progs-5.15 (2021-11-05)
       * new and updated tests
 
 btrfs-progs-5.15.1 (2021-11-22)
-"""""""""""""""""""""""""""""""
    * fixes:
       * fi usage: fix wrongly reported space of used or unallocated space
       * fix detection of block device discard capability
@@ -754,7 +787,7 @@ btrfs-progs-5.15.1 (2021-11-22)
    * build: make sphinx optional backend for documentation
 
 btrfs-progs-5.14 (2021-09-10)
------------------------------
+"""""""""""""""""""""""""""""
    * convert:
       * new option --uuid to copy, generate or set a given uuid
       * improve output
@@ -784,7 +817,6 @@ btrfs-progs-5.14 (2021-09-10)
       * new image dump format, with data
 
 btrfs-progs-5.14.1 (2021-09-20)
-"""""""""""""""""""""""""""""""
    * fixes:
       * defrag: fix parsing of compression (option -c)
       * add workaround for old kernels when reading zone sizes
@@ -793,7 +825,6 @@ btrfs-progs-5.14.1 (2021-09-20)
       * convert: --uuid copy does not fail on duplicate uuids
 
 btrfs-progs-5.14.2 (2021-10-08)
-"""""""""""""""""""""""""""""""
    * fixes
       * zoned mode
           * properly detect non-zoned devices in emulation mode
@@ -822,7 +853,7 @@ btrfs-progs-5.14.2 (2021-10-08)
       * new and updated tests
 
 btrfs-progs-5.13 (2021-07-13)
------------------------------
+"""""""""""""""""""""""""""""
    * restore: remove loop checks for extent count and directory scan
    * inspect dump-tree: new options to print node (--csum-headers) and data
      checksums (--csum-items)
@@ -847,7 +878,6 @@ btrfs-progs-5.13 (2021-07-13)
       * hash speedtest measure time, cycles using perf and print throughput
 
 btrfs-progs-5.13.1 (2021-07-30)
-"""""""""""""""""""""""""""""""
    * build: fix build on musl libc due to missing definition of NAME_MAX
    * check:
       * batch more work into one transaction when clearing v1 free space inodes
@@ -858,7 +888,7 @@ btrfs-progs-5.13.1 (2021-07-30)
       * documentation updates
 
 btrfs-progs-5.12 (2021-05-10)
------------------------------
+"""""""""""""""""""""""""""""
    * libbtrfsutil: relicensed to LGPL v2.1+
    * mkfs: zoned mode support (kernel 5.12+)
    * fi df: show zone_unusable per profile type in zoned mode
@@ -883,14 +913,13 @@ btrfs-progs-5.12 (2021-05-10)
       * update status of mount options since 5.9
 
 btrfs-progs-5.12.1 (2021-05-13)
-"""""""""""""""""""""""""""""""
    * build: fix missing symbols in libbtrfs
    * mkfs: check for minimal number of zones
    * check: fix warning about cache generation when free space tree is enabled
    * fix superblock write in zoned mode on 16K pages
 
 btrfs-progs-5.11 (2021-03-05)
------------------------------
+"""""""""""""""""""""""""""""
    * fix device path canonicalization for device mapper devices
    * receive: remove workaround for setting capabilities, all stable kernels
      have been patched
@@ -910,7 +939,6 @@ btrfs-progs-5.11 (2021-03-05)
          * docker images for various distros
 
 btrfs-progs-5.11.1 (2021-03-24)
-"""""""""""""""""""""""""""""""
    * properly format checksums when a mismatch is reported
    * check: fix false alert on tree block crossing 64K page boundary
    * convert:
@@ -924,7 +952,7 @@ btrfs-progs-5.11.1 (2021-03-24)
       * updated tests
 
 btrfs-progs-5.10 (2021-01-18)
------------------------------
+"""""""""""""""""""""""""""""
    * scrub status:
       * print percentage of progress
       * add size unit options
@@ -948,7 +976,6 @@ btrfs-progs-5.10 (2021-01-18)
       * debugging output enhancements
 
 btrfs-progs-5.10.1 (2021-02-05)
-"""""""""""""""""""""""""""""""
    * static build works again
    * other:
       * add a way to test static binaries with the testsuite
@@ -957,7 +984,7 @@ btrfs-progs-5.10.1 (2021-02-05)
         change in the future
 
 btrfs-progs-5.9 (2020-10-23)
-----------------------------
+""""""""""""""""""""""""""""
    * mkfs:
       * switch default to single profile for multi-device filesystem, up to
         now it was raid0 that may not be simple to convert to some other profile
@@ -995,10 +1022,10 @@ btrfs-progs-5.9 (2020-10-23)
          * print .so versions of libraries in configure summary
 
 btrfs-progs-5.8 (skipped)
--------------------------
+"""""""""""""""""""""""""
 
 btrfs-progs-5.7 (2020-07-02)
-----------------------------
+""""""""""""""""""""""""""""
    * mkfs:
       * new option to enable features otherwise enabled at runtime, now
         implemented for quotas, 'mkfs.btrfs -R quota'
@@ -1022,7 +1049,7 @@ btrfs-progs-5.7 (2020-07-02)
       * new tests
 
 btrfs-progs-5.6 (2020-04-05)
-----------------------------
+""""""""""""""""""""""""""""
    * inspect logical-resolve: support LOGICAL_INO_V2 as new option '-o',
      helps advanced dedupe tools
    * inspect: user larger buffer (64K) for results
@@ -1051,7 +1078,6 @@ btrfs-progs-5.6 (2020-04-05)
       * many typos fixed
 
 btrfs-progs-5.6.1 (2020-05-07)
-""""""""""""""""""""""""""""""
    * print warning when multiple block group profiles exist, update 'fi usage'
      summary, add docs to manual page explaining the situation
    * build: optional support for libgcrypt or libsodium, providing hash
@@ -1062,10 +1088,10 @@ btrfs-progs-5.6.1 (2020-05-07)
       * updated docs
 
 btrfs-progs-5.5 (skipped)
--------------------------
+"""""""""""""""""""""""""
 
 btrfs-progs-5.4 (2019-12-03)
-----------------------------
+""""""""""""""""""""""""""""
    * support new hash algorithms (kernel 5.5):
       * mkfs.btrfs and btrfs-convert with --csum, crc32c, xxhash, sha256, blake2
    * mkfs: support new raid1c3 and raid1c4 block group profiles (kernel 5.5)
@@ -1087,14 +1113,13 @@ btrfs-progs-5.4 (2019-12-03)
       * cleanups and refactoring
 
 btrfs-progs-5.4.1 (2020-01-09)
-""""""""""""""""""""""""""""""
    * build: fix docbook5 build
    * check: do extra verification of extent items, inode items and chunks
    * qgroup: return ENOTCONN if quotas not running (needs updated kernel)
    * other: various test fixups
 
 btrfs-progs-5.3 (2019-10-21)
-----------------------------
+""""""""""""""""""""""""""""
    * mkfs:
       * new option to specify checksum algorithm (only crc32c)
       * fix xattr enumeration
@@ -1109,11 +1134,10 @@ btrfs-progs-5.3 (2019-10-21)
       * lots of printf format fixups
 
 btrfs-progs-5.3.1 (2019-10-25)
-""""""""""""""""""""""""""""""
    * libbtrfs: fix link breakage due to missing symbols
 
 btrfs-progs-5.2 (2019-07-05)
-----------------------------
+""""""""""""""""""""""""""""
    * subvol show: print qgroup information when available
    * scrub:
       * status: show ETA, revamp the whole output
@@ -1141,7 +1165,6 @@ btrfs-progs-5.2 (2019-07-05)
       * sb-mod can modify more superblock items
 
 btrfs-progs-5.2.1 (2019-07-26)
-""""""""""""""""""""""""""""""
    * scrub status: fix ETA calculation after resume
    * check: fix crash when using -Q
    * restore: fix symlink owner restoration
@@ -1152,7 +1175,6 @@ btrfs-progs-5.2.1 (2019-07-26)
       * test updates
 
 btrfs-progs-5.2.2 (2019-09-05)
-""""""""""""""""""""""""""""""
    * check:
       * fix false report of wrong byte count for orphan inodes
       * option -E was not handled correctly
@@ -1165,7 +1187,7 @@ btrfs-progs-5.2.2 (2019-09-05)
       * doc fixups and updates
 
 btrfs-progs-5.1 (2019-05-17)
-----------------------------
+""""""""""""""""""""""""""""
    * (version 5.0 skipped)
    * check:
       * repair: flush/FUA support to avoid breaking metadata COW
@@ -1196,7 +1218,6 @@ btrfs-progs-5.1 (2019-05-17)
       * new tests
 
 btrfs-progs-5.1.1 (2019-06-11)
-""""""""""""""""""""""""""""""
    * convert and mkfs will try to use optimized crc32c
    * fi show: accept a file-backed image
    * fi show: fix possible crash when device is deleted in parallel
diff -pruN 6.16-2/Documentation/Contributors.rst 6.17-1/Documentation/Contributors.rst
--- 6.16-2/Documentation/Contributors.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/Contributors.rst	2025-09-29 14:59:32.000000000 +0000
@@ -61,6 +61,7 @@ Statistics for 6.x series
     "6.14", "20", "114592", "167178", "147", "+3847 -1391"
     "6.15", "25", "114616", "167485", "190", "+2346 -2039"
     "6.16", "16", "114997", "168152", "222", "+4143 -3464"
+    "6.17", "27", "115015", "168409", "255", "+3082 -2823"
 
 
 Legend:
@@ -181,6 +182,22 @@ Statistics for 2.6.x series
    "2.6.38", "23", "46573", "61980",  "90", "+3472 -983"
    "2.6.39", "28", "47206", "62859", "102", "+2115 -1236"
 
+Historical notes
+----------------
+
+The first commit in Btrfs' recorded history is
+`be0e5c097fc206b8 <https://git.kernel.org/linus/be0e5c097fc206b863ce9fe6b3cfd6974b0110f4>`__
+from 2007-01-26, which is about kernel v2.6.20.  The code was tracked in git in
+directory *fs/btrfs* but in a tree independent from *linux.git*, then merged in
+commit `aef8755711a28bb0 <https://git.kernel.org/aef8755711a28bb0ecde7780ae6613fcb62cf6f7>`__
+(2008-09-24, v2.6.27-rc7) to expected place in the *linux.git* file hierarchy.
+After a
+`few <https://git.kernel.org/linus/26ce34a9c47334ff7984769e4661b2f1883594ff>`__
+`more <https://git.kernel.org/linus/ae20a6afec1cf21919d97303f2d8b737eac5acc7>`__
+`merges <https://git.kernel.org/linus/860a7a0c321ce0267fdb6ebdcd03aa63c5fcb31d>`__
+it was finally `merged <https://git.kernel.org/73d59314e6ed268d6f322ae1bdd723b23fa5a4ed>`__
+by Linus to the *linux.git* git tree (2009-01-09, v2.6.29-rc1).
+
 Graphs
 ------
 
diff -pruN 6.16-2/Documentation/Feature-by-version.rst 6.17-1/Documentation/Feature-by-version.rst
--- 6.16-2/Documentation/Feature-by-version.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/Feature-by-version.rst	2025-09-29 14:59:32.000000000 +0000
@@ -35,6 +35,9 @@ features see :doc:`Status<Status>` page.
         is logged. The information is also accessible in
         :file:`/sys/fs/btrfs/FSID/checksum`.
 
+6.1 (stable)
+------------
+
 6.1 - sysfs support to temporarily skip exact qgroup accounting
         Allow user override of qgroup accounting and make it temporarily out
         of date e.g. in case when there are several subvolumes deleted and the
@@ -93,6 +96,9 @@ features see :doc:`Status<Status>` page.
         finalizing the directory, the cache also gains significant speedups (up
         to 10x).
 
+6.6 (stable)
+------------
+
 6.7 - raid-stripe-tree
         New tree for logical mapping, allows some RAID modes for zoned mode.
 
@@ -168,7 +174,10 @@ features see :doc:`Status<Status>` page.
         reads. The direct io is still locked but this should not be mixed with
         buffered writes.
 
-6.12 - cancellable discard/TRIM
+6.12 (stable)
+-------------
+
+-6.12 - cancellable discard/TRIM
         Add more points where the discard can be interrupted by signals before
         it finishes the whole operation.
 
@@ -228,6 +237,9 @@ features see :doc:`Status<Status>` page.
         The defrag ioctl also accepts the negative zstd levels that can be set as
         mount option.
 
+6.17 (latest)
+-------------
+
 6.17 - track current commit duration in commit_stats
         Add entry to :file:`commit_stats` to detect commit stalls, for
         debugging or monitoring purposes.
@@ -276,6 +288,9 @@ features see :doc:`Status<Status>` page.
         Verify metadata blocks before submitting them to the devices. This can
         catch consistency problems or bitflips.
 
+5.4 (stable)
+------------
+
 5.5 - more checksums
         New checksum algorithms: xxhash (64b), SHA256 (256b), BLAKE2b (256b).
 
@@ -312,6 +327,9 @@ features see :doc:`Status<Status>` page.
 5.9 - FS_INFO ioctl
         Export more information: checksum type, checksum size, generation, metadata_uuid
 
+5.10 (stable)
+-------------
+
 5.10 - exclusive ops in sysfs
         Export which filesystem exclusive operation is running (balance,
         resize, device add/delete/replace, ...)
@@ -349,6 +367,9 @@ features see :doc:`Status<Status>` page.
         value *no* sets NOCOMPRESS bit while empty value resets all compression
         settings (either compression or NOCOMPRESS bit).
 
+5.15 (stable)
+-------------
+
 5.15 - fsverity
         The fs-verity is a support layer that filesystems can hook into to
         support transparent integrity and authenticity protection of read-only
diff -pruN 6.16-2/Documentation/Kernel-by-version.rst 6.17-1/Documentation/Kernel-by-version.rst
--- 6.16-2/Documentation/Kernel-by-version.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/Kernel-by-version.rst	2025-09-29 14:59:32.000000000 +0000
@@ -3,11 +3,8 @@ Changes (kernel/version)
 
 Summary of kernel changes for each version.
 
-6.x
----
-
 6.0 (Oct 2022)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.0-rc1 <https://git.kernel.org/linus/353767e4aaeb7bc818273dfacbb01dd36a9db47a>`__,
@@ -101,7 +98,7 @@ Notable fixes:
   repair happen
 
 6.1 (Dec 2022)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.1-rc1 <https://git.kernel.org/linus/76e45035348c247a70ed50eb29a9906657e4444f>`__,
@@ -186,7 +183,7 @@ Core:
   flushing, buffered write
 
 6.2 (Feb 2023)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.2-rc1 <https://git.kernel.org/linus/149c51f876322d9bfbd5e2d6ffae7aff3d794384>`__,
@@ -248,7 +245,7 @@ Fixes:
 - limit number of send clones by maximum memory allocated
 
 6.3 (Apr 2023)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.3-rc1 <https://git.kernel.org/linus/885ce48739189fac6645ff42d736ee0de0b5917d>`__,
@@ -312,7 +309,7 @@ Fixes:
   work queues (since 6.0)
 
 6.4 (Jun 2023)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.4-rc1 <https://git.kernel.org/linus/85d7ab2463822a4ab096c0b7b59feec962552572>`__,
@@ -369,7 +366,7 @@ Core changes:
    truncating items
 
 6.5 (Aug 2023)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.5-rc1 <https://git.kernel.org/linus/cc423f6337d0a5ff1906f3b3d465d28c0d1705f6>`__,
@@ -398,7 +395,7 @@ User visible changes:
    the zones are reset as needed
 
 6.6 (Oct 2023)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.6-rc1 <https://git.kernel.org/linus/547635c6ac47c7556d6954935b189defe90422f7>`__,
@@ -429,7 +426,7 @@ Core:
 - v0 extent handling completely removed, deprecated long time ago
 
 6.7 (Jan 2024)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.7-rc1 <https://git.kernel.org/linus/d5acbc60fafbe0fc94c552ce916dd592cd4c6371>`__,
@@ -504,7 +501,7 @@ Core changes:
   devices), this allows temp_fsid to work
 
 6.8 (Mar 2024)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.8-rc1 <https://git.kernel.org/linus/affc5af36bbb62073b6aaa4f4459b38937ff5331>`__,
@@ -563,7 +560,7 @@ Fixes:
   create chunks that would not be allowed on sequential zones
 
 6.9 (May 2024)
-^^^^^^^^^^^^^^
+--------------
 
 Pull requests:
 `v6.9-rc1 (1) <https://git.kernel.org/linus/43a7548e28a6df12a6170421d9d016c576010baa>`__,
@@ -603,7 +600,7 @@ Other notable changes:
 - additional validation of devices by major:minor numbers
 
 6.10 (Jul 2024)
-^^^^^^^^^^^^^^^
+---------------
 
 Pull requests:
 `v6.10-rc1 (1) <https://git.kernel.org/linus/a3d1f54d7aa4c3be2c6a10768d4ffa1dcb620da9>`__,
@@ -638,7 +635,7 @@ Notable fixes or changes:
 - extent map shrinker, allow memory consumption reduction for direct io loads
 
 6.11 (Sep 2024)
-^^^^^^^^^^^^^^^
+---------------
 
 Pull requests:
 `v6.11-rc1 (1) <https://git.kernel.org/linus/a1b547f0f217cfb06af7eb4ce8488b02d83a0370>`__,
@@ -701,7 +698,7 @@ Other notable changes or fixes:
 - in zoned mode, detect unexpected zone write pointer change
 
 6.12 (Nov 2024)
-^^^^^^^^^^^^^^^
+---------------
 
 Pull requests:
 `v6.12-rc1 <https://git.kernel.org/linus/7a40974fd0efa3698de4c6d1d0ee0436bcc4445d>`__,
@@ -742,7 +739,7 @@ Cleanups and refactoring:
 - introduce auto free for btrfs_path structure, use for the simple cases
 
 6.13 (Jan 2025)
-^^^^^^^^^^^^^^^
+---------------
 
 Pull requests:
 `v6.13-rc1 <https://git.kernel.org/linus/c14a8a4c04c5859322eb5801db662b56b2294f67>`__,
@@ -811,7 +808,7 @@ Core changes:
   - lockdep assertions
 
 6.14 (Mar 2025)
-^^^^^^^^^^^^^^^
+---------------
 
 Pull requests:
 `v6.14-rc1 <https://git.kernel.org/linus/0eb4aaa230d725fa9b1cd758c0f17abca5597af6>`__,
@@ -881,7 +878,7 @@ Core:
   - code moved to new files
 
 6.15 (May 2025)
-^^^^^^^^^^^^^^^
+---------------
 
 Pull requests:
 `v6.15-rc1 <https://git.kernel.org/linus/fd71def6d9abc5ae362fb9995d46049b7b0ed391>`__,
@@ -947,7 +944,7 @@ Core:
 - more preparations for large folio support
 
 6.16 (Jul 2025)
-^^^^^^^^^^^^^^^
+---------------
 
 `v6.16-rc1 <https://git.kernel.org/linus/5e82ed5ca4b510e0ff53af1e12e94e6aa1fe5a93>`__,
 `v6.16-rc1 <https://git.kernel.org/linus/a56baa225308e697163e74bae0cc623a294073d4>`__,
diff -pruN 6.16-2/Documentation/Status.rst 6.17-1/Documentation/Status.rst
--- 6.16-2/Documentation/Status.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/Status.rst	2025-09-29 14:59:32.000000000 +0000
@@ -481,8 +481,8 @@ Until kernel 6.12 the *CONFIG_OPTION_DEB
 still need some work and should not be exposed to users in general. With
 the increasing number of such features or functionality this started to conflict
 with regular debugging features. Currently the following is behind
-the experimental option. Use with caution and if you find problems or have
-feedback please report that to the mailing list.
+the experimental option *CONFIG_BTRFS_EXPERIMENTAL*. Use with caution and if
+you find problems or have feedback please report that to the mailing list.
 
 .. list-table::
    :header-rows: 1
@@ -511,3 +511,6 @@ feedback please report that to the maili
    * - Extent tree v2
      - ...
      - Incomplete implementation.
+   * - Large folio support
+     - ...
+     -
diff -pruN 6.16-2/Documentation/btrfs-device.rst 6.17-1/Documentation/btrfs-device.rst
--- 6.16-2/Documentation/btrfs-device.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/btrfs-device.rst	2025-09-29 14:59:32.000000000 +0000
@@ -124,22 +124,36 @@ scan [options] [<device> [<device>...]]
                 Unregister a given device or all stale devices if no path is given, the device
                 must be unmounted otherwise it's an error.
 
-stats [options] <path>|<device>
+stats [options] <path>|<device>|<file>
         Read and print the device IO error statistics for all devices of the given
-        filesystem identified by *path* or for a single *device*. The filesystem must
-        be mounted.  See section :ref:`DEVICE STATS<man-device-device-stats>`
-        for more information about the reported statistics and the meaning.
+        filesystem identified by *path* or for a single *device* or *file* (the
+        offline mode, unmounted filesystem).
+
+        When the filesystem is mounted the *path* is expected to be a directory
+        and the stats are read using an ioctl and can be reset or checked. Same
+        for a block *device* of a mounted filesystem.
+
+        For an offline mode the path must be a file image or a block device,
+        the option *--offline* is mandatory. As it's read-only access the
+        option *--reset* does not work.
+
+        See section :ref:`DEVICE STATS<man-device-device-stats>` for more
+        information about the reported statistics and the meaning.
 
         ``Options``
 
         -z|--reset
-                Print the stats and reset the values to zero afterwards.
+                Print the stats and reset the values to zero afterwards. Does
+                not work in offline mode.
 
         -c|--check
                 Check if the stats are all zeros and return 0 if it is so. Set bit 6 of the
                 return code if any of the statistics is no-zero. The error values is 65 if
                 reading stats from at least one device failed, otherwise it's 64.
 
+        --offline
+                Read the stats from the file image or directly from block device.
+
         -T
                 Print stats in a tabular form, devices as rows and stats as columns
 
@@ -230,7 +244,7 @@ filesystem lifetime or from a scrub run.
 write_io_errs
         Failed writes to the block devices, means that the layers beneath the
         filesystem were not able to satisfy the write request.
-read_io_errors
+read_io_errs
         Read request analogy to write_io_errs.
 flush_io_errs
         Number of failed writes with the *FLUSH* flag set. The flushing is a method of
diff -pruN 6.16-2/Documentation/btrfs-filesystem.rst 6.17-1/Documentation/btrfs-filesystem.rst
--- 6.16-2/Documentation/btrfs-filesystem.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/btrfs-filesystem.rst	2025-09-29 14:59:32.000000000 +0000
@@ -240,10 +240,8 @@ resize [options] [<devid>:][+/-]<size>[k
         Resize a mounted filesystem identified by *path*. A particular device
         can be resized by specifying a *devid*.
 
-        .. warning::
-                If *path* is a file containing a BTRFS image then resize does not work
-                as expected and does not resize the image. This would resize the underlying
-                filesystem instead.
+        .. note::
+                To resize a file containing a BTRFS image, please use the --offline flag.
 
         The *devid* can be found in the output of :command:`btrfs filesystem show` and
         defaults to 1 if not specified.
@@ -290,6 +288,18 @@ resize [options] [<devid>:][+/-]<size>[k
 
         --enqueue
                 wait if there's another exclusive operation running, otherwise continue
+        --offline
+                resize an unmounted (offline) filesystem
+
+                .. warning:: The offline resize functionality currently
+                        supports **only increasing** the size of **single-device**
+                        filesystems.  IOW, shrinking and multi-device filesystems are
+                        **not supported** with this option.
+
+                For filesystems stored in regular files, the file will be
+                truncated to the new size as part of the resize operation.
+                This flag is cannot be used together with with --enqueue since
+                offline resizing is synchronous.
 
 show [options] [<path>|<uuid>|<device>|<label>]
         Show the btrfs filesystem with some additional info about devices and space
@@ -324,6 +334,26 @@ show [options] [<path>|<uuid>|<device>|<
         --tbytes
                 show sizes in TiB, or TB with --si
 
+commit-stats
+        Print number of commits and time stats since mount. This is also available
+        in :file:`/sys/fs/btrfs/FSID/commit_stats`. The stats are not persistent
+        and are collected since mount of the filesystem, one of them can be reset
+        to zero (*Max commit duration*).
+
+        .. code-block:: none
+
+		UUID: bd18ebe1-7e1d-414f-a3d5-2644388b51cc
+		Commit stats since mount:
+		  Total commits:                  1133
+		  Last commit duration:              0ms
+		  Max commit duration:              10ms
+		  Total time spent in commit:     4543ms
+
+        ``Options``
+
+        -z|--reset
+                print stats and reset 'max_commit_ms' (needs root)
+
 sync <path>
         Force a sync of the filesystem at *path*, similar to the :manref:`sync(1)` command. In
         addition, it starts cleaning of deleted subvolumes. To wait for the subvolume
diff -pruN 6.16-2/Documentation/btrfs-inspect-internal.rst 6.17-1/Documentation/btrfs-inspect-internal.rst
--- 6.16-2/Documentation/btrfs-inspect-internal.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/btrfs-inspect-internal.rst	2025-09-29 14:59:32.000000000 +0000
@@ -209,8 +209,9 @@ list-chunks [options] <path>
         * *Usage* -- chunk usage, percentage of used data/metadata of the chunk length
 
         The chunks in the output can be sorted by one or more sorting criteria, evaluated
-        as specified, in the ascending order.  By default the chunks are sorted
-        by *devid* and *pstart*, this is most convenient for single device filesystems.
+        as specified, in the ascending order (or descending when used like *-devid,-pstart*).
+        By default the chunks are sorted by *devid* and *pstart*, this is most
+        convenient for single device filesystems.
 
         On multi-device filesystems it's up to the user what is preferred as the layout
         of chunks on e.g. striped profiles (RAID0 etc) cannot be easily represented.
@@ -223,7 +224,7 @@ list-chunks [options] <path>
         ``Options``
 
         --sort MODE
-                sort by a column (ascending):
+                sort by a column (ascending, prepend '-' for descending):
 
                 MODE is a comma separated list of:
 
@@ -237,6 +238,10 @@ list-chunks [options] <path>
 
                         *length* - by chunk length
 
+                        *type* - by chunk type (data, metadata, system)
+
+                        *profile* - by chunk profile (single, DUP, RAID0, RAID1, ...)
+
         --raw
                 raw numbers in bytes, without the *B* suffix
         --human-readable
@@ -317,8 +322,17 @@ tree-stats [options] <device>
         -b|--raw
                 raw numbers in bytes, without the *B* suffix
 
-        -t <treeid>
-                Print stats only for the given treeid.
+        -t <tree_id>
+                print only the tree with the specified ID, where the ID can be numerical or
+                common name in a flexible human readable form
+
+                The tree id name recognition rules:
+
+                * case does not matter
+                * the C source definition, e.g. BTRFS_ROOT_TREE_OBJECTID
+                * short forms without BTRFS\_ prefix, without _TREE and _OBJECTID suffix, e.g. ROOT_TREE, ROOT
+                * convenience aliases, e.g. DEVICE for the DEV tree, CHECKSUM for CSUM
+                * unrecognized ID is an error
         --human-readable
                 print human friendly numbers, base 1024, this is the default
 
diff -pruN 6.16-2/Documentation/btrfs-ioctl.rst 6.17-1/Documentation/btrfs-ioctl.rst
--- 6.16-2/Documentation/btrfs-ioctl.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/btrfs-ioctl.rst	2025-09-29 14:59:32.000000000 +0000
@@ -17,6 +17,241 @@ over time and in some cases get promoted
 filesystems adopt the functionality. Backward compatibility is maintained
 and a formerly private ioctl number could become available on the VFS level.
 
+OVERVIEW
+--------
+
+The ioctls are defined by a number and associated with a data structure that
+contains further information. All ioctls use file descriptor (*fd*) as a reference
+point, it could be the filesystem or a directory inside the filesystem.
+
+An ioctl can be used in the following schematic way:
+
+.. code-block:: c
+
+   struct btrfs_ioctl_args args;
+
+   memset(&args, 0, sizeof(args));
+   args.key = value;
+   ret = ioctl(fd, BTRFS_IOC_NUMBER, &args);
+
+The *fd* is the entry point to the filesystem and for most ioctls it does not
+matter which directory is that. A distinction between files and directories sometimes
+matter, when it matters it's explicitly mentioned. The *args* is the
+associated data structure for the request. It's strongly recommended to
+initialize the whole structure to zeros as this is future-proof when the ioctl
+gets further extensions. Not doing that could lead to mismatch of old userspace
+and new kernel versions, or vice versa.  The *BTRFS_IOC_NUMBER* is says which
+operation should be done on the given arguments. Some ioctls take a specific
+data structure, some of them share a common one, no argument structure ioctls
+exist too.  The data passed to an ioctl can be input, output or both.
+
+The library *libbtrfsutil* wraps a few ioctls for convenience. Using raw ioctls
+is not discouraged but may be cumbersome though it does not need additional
+library dependency. Backward compatibility is guaranteed and incompatible
+changes usually lead to a new version of the ioctl. Enhancements of existing
+ioctls can happen and depend on additional flags to be set. Zeroed unused
+space is commonly understood as a mechanism to communicate the compatibility
+between kernel and userspace and thus *zeroing is really important*. In exceptional
+cases this is not enough and further flags need to be passed to distinguish
+between zero as implicit unused initialization and a valid zero value. Such
+cases are documented.
+
+File descriptors of regular files are obtained by ``int fd = open()``, directories
+opened as ``DIR *dir = opendir()`` can be converted to the corresponding
+file descriptor by ``fd = dirfd(dir)``.
+
+LIST OF IOCTLS
+--------------
+
+.. list-table::
+   :header-rows: 1
+
+   * - Name
+     - Description
+     - Data
+   * - :ref:`BTRFS_IOC_SNAP_CREATE<BTRFS_IOC_SNAP_CREATE>`
+     - (obsolete) create a snapshot of a subvolume
+     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
+   * - BTRFS_IOC_DEFRAG
+     -
+     -
+   * - BTRFS_IOC_RESIZE
+     -
+     -
+   * - :ref:`BTRFS_IOC_SCAN_DEV<BTRFS_IOC_SCAN_DEV>`
+     - scan and register a given device path with filesystem module
+     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
+   * - :ref:`BTRFS_IOC_SYNC<BTRFS_IOC_SYNC>`
+     - Sync the filesystem, possibly process queued up work
+     - NULL
+   * - BTRFS_IOC_CLONE
+     -
+     -
+   * - :ref:`BTRFS_IOC_ADD_DEV<BTRFS_IOC_ADD_DEV>`
+     - add a device to the filesystem by path
+     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
+   * - :ref:`BTRFS_IOC_RM_DEV<BTRFS_IOC_RM_DEV>`
+     - delete a device from the filesystem by path
+     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
+   * - BTRFS_IOC_BALANCE
+     -
+     -
+   * - BTRFS_IOC_CLONE_RANGE
+     -
+     -
+   * - :ref:`BTRFS_IOC_SUBVOL_CREATE<BTRFS_IOC_SUBVOL_CREATE>`
+     - (obsolete) create a subvolume
+     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
+   * - :ref:`BTRFS_IOC_SNAP_DESTROY<BTRFS_IOC_SNAP_DESTROY>`
+     - (obsolete) delete a subvolume
+     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
+   * - BTRFS_IOC_DEFRAG_RANGE
+     -
+     -
+   * - BTRFS_IOC_TREE_SEARCH
+     -
+     -
+   * - BTRFS_IOC_TREE_SEARCH_V2
+     -
+     -
+   * - :ref:`BTRFS_IOC_INO_LOOKUP<BTRFS_IOC_INO_LOOKUP>`
+     - resolve inode number to path, or lookup containing subvolume id
+     - :ref:`struct btrfs_ioctl_ino_lookup_args<struct_btrfs_ioctl_ino_lookup_args>`
+   * - :ref:`BTRFS_IOC_DEFAULT_SUBVOL<BTRFS_IOC_DEFAULT_SUBVOL>`
+     - set the default subvolume id
+     - uint64_t
+   * - BTRFS_IOC_SPACE_INFO
+     -
+     -
+   * - BTRFS_IOC_START_SYNC
+     -
+     -
+   * - BTRFS_IOC_WAIT_SYNC
+     -
+     -
+   * - :ref:`BTRFS_IOC_SNAP_CREATE_V2<BTRFS_IOC_SNAP_CREATE_V2>`
+     - create a snapshot of a subvolume
+     - :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
+   * - :ref:`BTRFS_IOC_SUBVOL_CREATE_V2<BTRFS_IOC_SUBVOL_CREATE_V2>`
+     - create a subvolume
+     - :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
+   * - :ref:`BTRFS_IOC_SUBVOL_GETFLAGS<BTRFS_IOC_SUBVOL_GETFLAGS>`
+     - get flags of a subvolume
+     - uint64_t
+   * - :ref:`BTRFS_IOC_SUBVOL_SETFLAGS<BTRFS_IOC_SUBVOL_SETFLAGS>`
+     - set flags of a subvolume
+     - uint64_t
+   * - BTRFS_IOC_SCRUB
+     -
+     -
+   * - BTRFS_IOC_SCRUB_CANCEL
+     -
+     -
+   * - BTRFS_IOC_SCRUB_PROGRESS
+     -
+     -
+   * - :ref:`BTRFS_IOC_DEV_INFO<BTRFS_IOC_DEV_INFO>`
+     - get information about a device (UUIDs, used size, total size)
+     - :ref:`struct btrfs_ioctl_dev_info_args<struct_btrfs_ioctl_dev_info_args>`
+   * - :ref:`BTRFS_IOC_FS_INFO<BTRFS_IOC_FS_INFO>`
+     - get information about filesystem (device count, fsid, ...)
+     - :ref:`struct btrfs_ioctl_fs_info_args<struct_btrfs_ioctl_fs_info_args>`
+   * - BTRFS_IOC_BALANCE_V2
+     -
+     -
+   * - BTRFS_IOC_BALANCE_CTL
+     -
+     -
+   * - BTRFS_IOC_BALANCE_PROGRESS
+     -
+     -
+   * - BTRFS_IOC_INO_PATHS
+     -
+     -
+   * - BTRFS_IOC_LOGICAL_INO
+     -
+     -
+   * - BTRFS_IOC_SET_RECEIVED_SUBVOL
+     -
+     -
+   * - BTRFS_IOC_SEND
+     -
+     -
+   * - BTRFS_IOC_DEVICES_READY
+     -
+     -
+   * - BTRFS_IOC_QUOTA_CTL
+     -
+     -
+   * - BTRFS_IOC_QGROUP_ASSIGN
+     -
+     -
+   * - BTRFS_IOC_QGROUP_CREATE
+     -
+     -
+   * - BTRFS_IOC_QGROUP_LIMIT
+     -
+     -
+   * - BTRFS_IOC_QUOTA_RESCAN
+     -
+     -
+   * - BTRFS_IOC_QUOTA_RESCAN_STATUS
+     -
+     -
+   * - BTRFS_IOC_QUOTA_RESCAN_WAIT
+     -
+     -
+   * - :ref:`BTRFS_IOC_GET_FSLABEL<BTRFS_IOC_GET_FSLABEL>`
+     - read filesystem label
+     - char buffer[:ref:`BTRFS_LABEL_SIZE<constants-table>`]
+   * - :ref:`BTRFS_IOC_SET_FSLABEL<BTRFS_IOC_SET_FSLABEL>`
+     - set the filesystem label
+     - char buffer[:ref:`BTRFS_LABEL_SIZE<constants-table>`]
+   * - BTRFS_IOC_GET_DEV_STATS
+     -
+     -
+   * - BTRFS_IOC_DEV_REPLACE
+     -
+     -
+   * - BTRFS_IOC_FILE_EXTENT_SAME
+     -
+     -
+   * - :ref:`BTRFS_IOC_GET_FEATURES<BTRFS_IOC_GET_FEATURES>`
+     - get features set on the filesystem
+     - :ref:`struct btrfs_ioctl_feature_flags<struct_btrfs_ioctl_feature_flags>`
+   * - :ref:`BTRFS_IOC_SET_FEATURES<BTRFS_IOC_SET_FEATURES>`
+     - set features on the filesystem
+     - :ref:`struct btrfs_ioctl_feature_flags<struct_btrfs_ioctl_feature_flags>`
+   * - :ref:`BTRFS_IOC_GET_SUPPORTED_FEATURES<BTRFS_IOC_GET_SUPPORTED_FEATURES>`
+     - get available filesystem feature sets
+     - :ref:`struct btrfs_ioctl_feature_flags[3]<struct_btrfs_ioctl_feature_flags>`
+   * - BTRFS_IOC_RM_DEV_V2
+     -
+     -
+   * - BTRFS_IOC_LOGICAL_INO_V2
+     -
+     -
+   * - :ref:`BTRFS_IOC_GET_SUBVOL_INFO<BTRFS_IOC_GET_SUBVOL_INFO>`
+     - get information about a subvolume
+     - :ref:`struct btrfs_ioctl_get_subvol_info_args<struct_btrfs_ioctl_get_subvol_info_args>`
+   * - BTRFS_IOC_GET_SUBVOL_ROOTREF
+     -
+     -
+   * - BTRFS_IOC_INO_LOOKUP_USER
+     -
+     -
+   * - :ref:`BTRFS_IOC_SNAP_DESTROY_V2<BTRFS_IOC_SNAP_DESTROY_V2>`
+     - destroy a (snapshot or regular) subvolume
+     - :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
+   * - BTRFS_IOC_ENCODED_READ
+     -
+     -
+   * - BTRFS_IOC_ENCODED_WRITE
+     -
+     -
+   * - :ref:`BTRFS_IOC_SUBVOL_SYNC_WAIT<BTRFS_IOC_SUBVOL_SYNC_WAIT>`
+     - Wait until a deleted subvolume is cleaned or query the state.
+     - :ref:`struct btrfs_ioctl_subvol_wait<struct_btrfs_ioctl_subvol_wait>`
 
 DATA STRUCTURES AND DEFINITIONS
 -------------------------------
@@ -57,6 +292,48 @@ DATA STRUCTURES AND DEFINITIONS
                 };
         };
 
+
+.. _struct_btrfs_ioctl_feature_flags:
+
+.. code-block:: c
+
+	#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE         (1ULL << 0)
+	/*
+	 * Older kernels (< 4.9) on big-endian systems produced broken free space tree
+	 * bitmaps, and btrfs-progs also used to corrupt the free space tree (versions
+	 * < 4.7.3).  If this bit is clear, then the free space tree cannot be trusted.
+	 * btrfs-progs can also intentionally clear this bit to ask the kernel to
+	 * rebuild the free space tree, however this might not work on older kernels
+	 * that do not know about this bit. If not sure, clear the cache manually on
+	 * first mount when booting older kernel versions.
+	 */
+	#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID   (1ULL << 1)
+	#define BTRFS_FEATURE_COMPAT_RO_VERITY                  (1ULL << 2)
+	#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE        (1ULL << 3)
+
+	#define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF            (1ULL << 0)
+	#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL           (1ULL << 1)
+	#define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS             (1ULL << 2)
+	#define BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO             (1ULL << 3)
+	#define BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD            (1ULL << 4)
+	#define BTRFS_FEATURE_INCOMPAT_BIG_METADATA             (1ULL << 5)
+	#define BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF            (1ULL << 6)
+	#define BTRFS_FEATURE_INCOMPAT_RAID56                   (1ULL << 7)
+	#define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA          (1ULL << 8)
+	#define BTRFS_FEATURE_INCOMPAT_NO_HOLES                 (1ULL << 9)
+	#define BTRFS_FEATURE_INCOMPAT_METADATA_UUID            (1ULL << 10)
+	#define BTRFS_FEATURE_INCOMPAT_RAID1C34                 (1ULL << 11)
+	#define BTRFS_FEATURE_INCOMPAT_ZONED                    (1ULL << 12)
+	#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2           (1ULL << 13)
+	#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE         (1ULL << 14)
+	#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA             (1ULL << 16)
+
+        struct btrfs_ioctl_feature_flags {
+                __u64 compat_flags;
+                __u64 compat_ro_flags;
+                __u64 incompat_flags;
+        };
+
 .. _struct_btrfs_ioctl_get_subvol_info_args:
 
 .. code-block:: c
@@ -150,6 +427,29 @@ DATA STRUCTURES AND DEFINITIONS
 		__u64 rsv_excl;
 	};
 
+.. _struct_btrfs_ioctl_dev_info_args:
+
+.. code-block:: c
+
+        struct btrfs_ioctl_dev_info_args {
+             __u64 devid;                            /* in/out */
+             __u8 uuid[BTRFS_UUID_SIZE];             /* in/out */
+             __u64 bytes_used;                       /* out */
+             __u64 total_bytes;                      /* out */
+             /*
+              * Optional, out.
+              *
+              * Showing the fsid of the device, allowing user space to check if this
+              * device is a seeding one.
+              *
+              * Introduced in v6.3, thus user space still needs to check if kernel
+              * changed this value.  Older kernel will not touch the values here.
+              */
+             __u8 fsid[BTRFS_UUID_SIZE];
+             __u64 unused[377];                      /* pad to 4k */
+             __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];  /* out */
+        };
+
 .. _struct_btrfs_ioctl_fs_info_args:
 
 .. code-block:: c
@@ -235,241 +535,6 @@ DATA STRUCTURES AND DEFINITIONS
    * - BTRFS_FIRST_FREE_OBJECTID
      - 256
 
-OVERVIEW
---------
-
-The ioctls are defined by a number and associated with a data structure that
-contains further information. All ioctls use file descriptor (fd) as a reference
-point, it could be the filesystem or a directory inside the filesystem.
-
-An ioctl can be used in the following schematic way:
-
-.. code-block:: c
-
-   struct btrfs_ioctl_args args;
-
-   memset(&args, 0, sizeof(args));
-   args.key = value;
-   ret = ioctl(fd, BTRFS_IOC_NUMBER, &args);
-
-The 'fd' is the entry point to the filesystem and for most ioctls it does not
-matter which file or directory is that. Where it matters it's explicitly
-mentioned. The 'args' is the associated data structure for the request. It's
-strongly recommended to initialize the whole structure to zeros as this is
-future-proof when the ioctl gets further extensions. Not doing that could lead
-to mismatch of old userspace and new kernel versions, or vice versa.
-The 'BTRFS_IOC_NUMBER' is says which operation should be done on the given
-arguments. Some ioctls take a specific data structure, some of them share a
-common one, no argument structure ioctls exist too.
-
-The library *libbtrfsutil* wraps a few ioctls for convenience. Using raw ioctls
-is not discouraged but may be cumbersome though it does not need additional
-library dependency. Backward compatibility is guaranteed and incompatible
-changes usually lead to a new version of the ioctl. Enhancements of existing
-ioctls can happen and depend on additional flags to be set. Zeroed unused
-space is commonly understood as a mechanism to communicate the compatibility
-between kernel and userspace and thus *zeroing is really important*. In exceptional
-cases this is not enough and further flags need to be passed to distinguish
-between zero as implicit unused initialization and a valid zero value. Such
-cases are documented.
-
-File descriptors of regular files are obtained by ``int fd = open()``, directories
-opened as ``DIR *dir = opendir()`` can be converted to the corresponding
-file descriptor by ``fd = dirfd(dir)``.
-
-LIST OF IOCTLS
---------------
-
-.. list-table::
-   :header-rows: 1
-
-   * - Name
-     - Description
-     - Data
-   * - :ref:`BTRFS_IOC_SNAP_CREATE<BTRFS_IOC_SNAP_CREATE>`
-     - (obsolete) create a snapshot of a subvolume
-     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
-   * - BTRFS_IOC_DEFRAG
-     -
-     -
-   * - BTRFS_IOC_RESIZE
-     -
-     -
-   * - :ref:`BTRFS_IOC_SCAN_DEV<BTRFS_IOC_SCAN_DEV>`
-     - scan and register a given device path with filesystem module
-     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
-   * - :ref:`BTRFS_IOC_SYNC<BTRFS_IOC_SYNC>`
-     - Sync the filesystem, possibly process queued up work
-     - NULL
-   * - BTRFS_IOC_CLONE
-     -
-     -
-   * - :ref:`BTRFS_IOC_ADD_DEV<BTRFS_IOC_ADD_DEV>`
-     - add a device to the filesystem by path
-     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
-   * - :ref:`BTRFS_IOC_RM_DEV<BTRFS_IOC_RM_DEV>`
-     - delete a device from the filesystem by path
-     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
-   * - BTRFS_IOC_BALANCE
-     -
-     -
-   * - BTRFS_IOC_CLONE_RANGE
-     -
-     -
-   * - :ref:`BTRFS_IOC_SUBVOL_CREATE<BTRFS_IOC_SUBVOL_CREATE>`
-     - (obsolete) create a subvolume
-     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
-   * - :ref:`BTRFS_IOC_SNAP_DESTROY<BTRFS_IOC_SNAP_DESTROY>`
-     - (obsolete) delete a subvolume
-     - :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
-   * - BTRFS_IOC_DEFRAG_RANGE
-     -
-     -
-   * - BTRFS_IOC_TREE_SEARCH
-     -
-     -
-   * - BTRFS_IOC_TREE_SEARCH_V2
-     -
-     -
-   * - :ref:`BTRFS_IOC_INO_LOOKUP<BTRFS_IOC_INO_LOOKUP>`
-     - resolve inode number to path, or lookup containing subvolume id
-     - :ref:`struct btrfs_ioctl_ino_lookup_args<struct_btrfs_ioctl_ino_lookup_args>`
-   * - :ref:`BTRFS_IOC_DEFAULT_SUBVOL<BTRFS_IOC_DEFAULT_SUBVOL>`
-     - set the default subvolume id
-     - uint64_t
-   * - BTRFS_IOC_SPACE_INFO
-     -
-     -
-   * - BTRFS_IOC_START_SYNC
-     -
-     -
-   * - BTRFS_IOC_WAIT_SYNC
-     -
-     -
-   * - :ref:`BTRFS_IOC_SNAP_CREATE_V2<BTRFS_IOC_SNAP_CREATE_V2>`
-     - create a snapshot of a subvolume
-     - :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
-   * - :ref:`BTRFS_IOC_SUBVOL_CREATE_V2<BTRFS_IOC_SUBVOL_CREATE_V2>`
-     - create a subvolume
-     - :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
-   * - :ref:`BTRFS_IOC_SUBVOL_GETFLAGS<BTRFS_IOC_SUBVOL_GETFLAGS>`
-     - get flags of a subvolume
-     - uint64_t
-   * - :ref:`BTRFS_IOC_SUBVOL_SETFLAGS<BTRFS_IOC_SUBVOL_SETFLAGS>`
-     - set flags of a subvolume
-     - uint64_t
-   * - BTRFS_IOC_SCRUB
-     -
-     -
-   * - BTRFS_IOC_SCRUB_CANCEL
-     -
-     -
-   * - BTRFS_IOC_SCRUB_PROGRESS
-     -
-     -
-   * - BTRFS_IOC_DEV_INFO
-     -
-     -
-   * - :ref:`BTRFS_IOC_FS_INFO<BTRFS_IOC_FS_INFO>`
-     - get information about filesystem (device count, fsid, ...)
-     - :ref:`struct btrfs_ioctl_fs_info_args<struct_btrfs_ioctl_fs_info_args>`
-   * - BTRFS_IOC_BALANCE_V2
-     -
-     -
-   * - BTRFS_IOC_BALANCE_CTL
-     -
-     -
-   * - BTRFS_IOC_BALANCE_PROGRESS
-     -
-     -
-   * - BTRFS_IOC_INO_PATHS
-     -
-     -
-   * - BTRFS_IOC_LOGICAL_INO
-     -
-     -
-   * - BTRFS_IOC_SET_RECEIVED_SUBVOL
-     -
-     -
-   * - BTRFS_IOC_SEND
-     -
-     -
-   * - BTRFS_IOC_DEVICES_READY
-     -
-     -
-   * - BTRFS_IOC_QUOTA_CTL
-     -
-     -
-   * - BTRFS_IOC_QGROUP_ASSIGN
-     -
-     -
-   * - BTRFS_IOC_QGROUP_CREATE
-     -
-     -
-   * - BTRFS_IOC_QGROUP_LIMIT
-     -
-     -
-   * - BTRFS_IOC_QUOTA_RESCAN
-     -
-     -
-   * - BTRFS_IOC_QUOTA_RESCAN_STATUS
-     -
-     -
-   * - BTRFS_IOC_QUOTA_RESCAN_WAIT
-     -
-     -
-   * - :ref:`BTRFS_IOC_GET_FSLABEL<BTRFS_IOC_GET_FSLABEL>`
-     - read filesystem label
-     - char buffer[:ref:`BTRFS_LABEL_SIZE<constants-table>`]
-   * - :ref:`BTRFS_IOC_SET_FSLABEL<BTRFS_IOC_SET_FSLABEL>`
-     - set the filesystem label
-     - char buffer[:ref:`BTRFS_LABEL_SIZE<constants-table>`]
-   * - BTRFS_IOC_GET_DEV_STATS
-     -
-     -
-   * - BTRFS_IOC_DEV_REPLACE
-     -
-     -
-   * - BTRFS_IOC_FILE_EXTENT_SAME
-     -
-     -
-   * - BTRFS_IOC_GET_FEATURES
-     -
-     -
-   * - BTRFS_IOC_SET_FEATURES
-     -
-     -
-   * - BTRFS_IOC_GET_SUPPORTED_FEATURES
-     -
-     -
-   * - BTRFS_IOC_RM_DEV_V2
-     -
-     -
-   * - BTRFS_IOC_LOGICAL_INO_V2
-     -
-     -
-   * - :ref:`BTRFS_IOC_GET_SUBVOL_INFO<BTRFS_IOC_GET_SUBVOL_INFO>`
-     - get information about a subvolume
-     - :ref:`struct btrfs_ioctl_get_subvol_info_args<struct_btrfs_ioctl_get_subvol_info_args>`
-   * - BTRFS_IOC_GET_SUBVOL_ROOTREF
-     -
-     -
-   * - BTRFS_IOC_INO_LOOKUP_USER
-     -
-     -
-   * - :ref:`BTRFS_IOC_SNAP_DESTROY_V2<BTRFS_IOC_SNAP_DESTROY_V2>`
-     - destroy a (snapshot or regular) subvolume
-     - :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
-   * - BTRFS_IOC_ENCODED_READ
-     -
-     -
-   * - BTRFS_IOC_ENCODED_WRITE
-     -
-     -
-   * - :ref:`BTRFS_IOC_SUBVOL_SYNC_WAIT<BTRFS_IOC_SUBVOL_SYNC_WAIT>`
-     - Wait until a deleted subvolume is cleaned or query the state.
-     - :ref:`struct btrfs_ioctl_subvol_wait<struct_btrfs_ioctl_subvol_wait>`
-
 DETAILED DESCRIPTION
 --------------------
 
@@ -850,6 +915,23 @@ Required permissions: CAP_SYS_ADMIN
    * - ioctl args
      - char buffer[:ref:`BTRFS_LABEL_SIZE<constants-table>`]
 
+.. _BTRFS_IOC_DEV_INFO:
+
+BTRFS_IOC_DEV_INFO
+~~~~~~~~~~~~~~~~~~
+
+Read some basic information about a device, requested by the *devid* or *device UUID*.
+
+.. list-table::
+   :header-rows: 1
+
+   * - Field
+     - Description
+   * - ioctl fd
+     - file descriptor of any file/directory in the filesystem
+   * - ioctl args
+     - :ref:`struct btrfs_ioctl_dev_info_args<struct_btrfs_ioctl_dev_info_args>`
+
 .. _BTRFS_IOC_FS_INFO:
 
 BTRFS_IOC_FS_INFO
@@ -870,6 +952,78 @@ depending on the flags set.
    * - ioctl args
      - :ref:`struct btrfs_ioctl_fs_info_args<struct_btrfs_ioctl_fs_info_args>`
 
+.. _BTRFS_IOC_GET_FEATURES:
+
+BTRFS_IOC_GET_FEATURES
+~~~~~~~~~~~~~~~~~~~~~~
+
+Get the actually set feature bits on the filesystem (the bits are stored in the
+super block).  There are three sets related to backward compatibility:
+
+- incompat: not backward compatible, mount on older kernel will fail.
+- compat_ro: backward compatible for read-only mount.
+- compat: backward compatible with read-write support, only marked as as individual feature.
+
+.. list-table::
+   :header-rows: 1
+
+   * - Field
+     - Description
+   * - ioctl fd
+     - file descriptor of the subvolume to examine
+   * - ioctl args
+     - :ref:`struct btrfs_ioctl_feature_flags<struct_btrfs_ioctl_feature_flags>`
+
+If a bit is set then there may be some data structures on the filesystem of the
+related feature, but not necessarily.
+
+Some of the features are turned on automatically when used,
+e.g. compression or when a balance filter converts to yet unused block group
+profile. In some cases the feature can be turned on or off by :doc:`btrfstune`.
+
+.. _BTRFS_IOC_SET_FEATURES:
+
+BTRFS_IOC_SET_FEATURES
+~~~~~~~~~~~~~~~~~~~~~~
+
+Set a feature bit on the filesystem if possible. Some features may require
+extensive changes, new data structures or conversion (like free-space-tree).
+Bits representing possible existence of data structures related to the feature
+can be set without actually creating anything, e.g. ZSTD compressed extents.
+
+.. list-table::
+   :header-rows: 1
+
+   * - Field
+     - Description
+   * - ioctl fd
+     - file descriptor of the subvolume to examine
+   * - ioctl args
+     - :ref:`struct btrfs_ioctl_feature_flags<struct_btrfs_ioctl_feature_flags>`
+
+.. _BTRFS_IOC_GET_SUPPORTED_FEATURES:
+
+BTRFS_IOC_GET_SUPPORTED_FEATURES
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Get feature sets supported by the kernel module, in three groups:
+
+- supported: (index 0) all supported compat/compat_ro/incompat features
+- safe to set: (index 1) features that can be enabled on a mounted filesystem
+- safe to clear: (index 2) features that can be disabled on a mounted filesystem
+
+The features are also listed in :file:`/sys/fs/btrfs/features`.
+
+.. list-table::
+   :header-rows: 1
+
+   * - Field
+     - Description
+   * - ioctl fd
+     - file descriptor of the subvolume to examine
+   * - ioctl args
+     - :ref:`struct btrfs_ioctl_feature_flags[3]<struct_btrfs_ioctl_feature_flags>`
+
 .. _BTRFS_IOC_GET_SUBVOL_INFO:
 
 BTRFS_IOC_GET_SUBVOL_INFO
diff -pruN 6.16-2/Documentation/btrfs-man5.rst 6.17-1/Documentation/btrfs-man5.rst
--- 6.16-2/Documentation/btrfs-man5.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/btrfs-man5.rst	2025-09-29 14:59:32.000000000 +0000
@@ -7,22 +7,23 @@ DESCRIPTION
 This document describes topics related to BTRFS that are not specific to the
 tools.  Currently covers:
 
-#. mount options
-#. filesystem features
-#. checksum algorithms
-#. compression
-#. sysfs interface
-#. filesystem exclusive operations
-#. filesystem limits
-#. bootloader support
-#. file attributes
-#. zoned mode
-#. control device
-#. filesystems with multiple block group profiles
-#. seeding device
-#. RAID56 status and recommended practices
-#. glossary
-#. storage model, hardware considerations
+#. :ref:`mount options <man-btrfs5-mount-options>`
+#. :ref:`filesystem features <man-btrfs5-filesystem-features>`
+#. :ref:`swapfile support <man-btrfs5-swapfile-support>`
+#. :ref:`checksum algorithms <man-btrfs5-checksum-algorithms>`
+#. :ref:`compression <man-btrfs5-compression>`
+#. :ref:`sysfs interface <man-btrfs5-sysfs-interface>`
+#. :ref:`filesystem exclusive operations <man-btrfs5-filesystem-exclusive-operations>`
+#. :ref:`filesystem limits <man-btrfs5-filesystem-limits>`
+#. :ref:`bootloader support <man-btrfs5-bootloader-support>`
+#. :ref:`file attributes <man-btrfs5-file-attributes>`
+#. :ref:`zoned mode <man-btrfs5-zoned-mode>`
+#. :ref:`control device <man-btrfs5-control-device>`
+#. :ref:`filesystems with multiple block group profiles <man-btrfs5-filesystem-with-multiple-profiles>`
+#. :ref:`seeding device <man-btrfs5-seeding-device>`
+#. :ref:`RAID56 status and recommended practices <man-btrfs5-raid56-status>`
+#. :ref:`glossary <man-btrfs5-glossary>`
+#. :ref:`storage model, hardware considerations <man-btrfs5-storage-model>`
 
 .. _man-btrfs5-mount-options:
 
@@ -178,7 +179,7 @@ supported_checksums
 
         list of checksum algorithms supported by the kernel module, the respective
         modules or built-in implementing the algorithms need to be present to mount
-        the filesystem, see section :ref:`CHECKSUM ALGORITHMS<man-mkfs-checksum-algorithms>`.
+        the filesystem, see section :ref:`CHECKSUM ALGORITHMS<man-btrfs5-checksum-algorithms>`.
 
 supported_sectorsizes
         (since: 5.13)
@@ -199,23 +200,29 @@ zoned
         allocation space is partitioned into fixed-size zones that must be updated
         sequentially, see section :ref:`ZONED MODE<man-btrfs5-zoned-mode>`
 
+.. _man-btrfs5-swapfile-support:
+
 SWAPFILE SUPPORT
 ----------------
 
 .. include:: ch-swapfile.rst
 
-.. _man-mkfs-checksum-algorithms:
+.. _man-btrfs5-checksum-algorithms:
 
 CHECKSUM ALGORITHMS
 -------------------
 
 .. include:: ch-checksumming.rst
 
+.. _man-btrfs5-compression:
+
 COMPRESSION
 -----------
 
 .. include:: ch-compression.rst
 
+.. _man-btrfs5-sysfs-interface:
+
 SYSFS INTERFACE
 ---------------
 
@@ -249,16 +256,22 @@ There's an exception when a paused balan
 operation as they don't really collide and this can be used to add more space
 for the balance to finish.
 
+.. _man-btrfs5-filesystem-limits:
+
 FILESYSTEM LIMITS
 -----------------
 
 .. include:: ch-fs-limits.rst
 
+.. _man-btrfs5-bootloader-support:
+
 BOOTLOADER SUPPORT
 ------------------
 
 .. include:: ch-bootloaders.rst
 
+.. _man-btrfs5-file-attributes:
+
 FILE ATTRIBUTES
 ---------------
 
@@ -271,6 +284,7 @@ ZONED MODE
 
 .. include:: ch-zoned-intro.rst
 
+.. _man-btrfs5-control-device:
 
 CONTROL DEVICE
 --------------
@@ -388,6 +402,8 @@ SEEDING DEVICE
 
 .. include:: ch-seeding-device.rst
 
+.. _man-btrfs5-raid56-status:
+
 RAID56 STATUS AND RECOMMENDED PRACTICES
 ---------------------------------------
 
@@ -442,12 +458,14 @@ allocated), so in case a new device is a
 immediately and would require a rebalance. A fixed configured stripe width is
 not implemented.
 
+.. _man-btrfs5-glossary:
 
 GLOSSARY
 --------
 
 .. include:: ch-glossary.rst
 
+.. _man-btrfs5-storage-model:
 
 STORAGE MODEL, HARDWARE CONSIDERATIONS
 --------------------------------------
diff -pruN 6.16-2/Documentation/btrfs-quota.rst 6.17-1/Documentation/btrfs-quota.rst
--- 6.16-2/Documentation/btrfs-quota.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/btrfs-quota.rst	2025-09-29 14:59:32.000000000 +0000
@@ -65,6 +65,29 @@ rescan [options] <path>
         -W|--wait-norescan
                 wait for rescan to finish without starting it
 
+status [options] <path>
+        Print status information about quotas if enabled on *path*. The information
+        is read from :file:`/sys/fs/btrfs/FSID/qgroups` and root privileges are
+        not needed.
+
+        Example output for quotas enabled by :command:`btrfs quota enable /mnt`:
+
+        .. code-block:: none
+
+		Quotas on /mnt:
+		  Enabled:                 yes
+		  Mode:                    qgroup (full accounting)
+		  Inconsistent:            no
+		  Override limits:         no
+		  Drop subtree threshold:  3
+		  Total count:             1
+		  Level 0:                 1
+
+        ``Options``
+
+        --is-enabled
+                only check if quotas are enabled, not not print anything
+
 EXIT STATUS
 -----------
 
diff -pruN 6.16-2/Documentation/ch-compression.rst 6.17-1/Documentation/ch-compression.rst
--- 6.16-2/Documentation/ch-compression.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/ch-compression.rst	2025-09-29 14:59:32.000000000 +0000
@@ -167,10 +167,19 @@ pattern detection, byte frequency, Shann
 Compatibility
 -------------
 
-Compression is done using the COW mechanism so it's incompatible with
-*nodatacow*. Direct IO read works on compressed files but will fall back to
-buffered writes and leads to no compression even if force compression is set.
-Currently *nodatasum* and compression don't work together.
+Compression requires both data checksums and COW, so either *nodatasum* or
+*nodatasum* mount option/inode flag will result in no compression.
+
+Direct IO reads of compressed data will always fallback to buffered reads.
+
+Direct IO write behavior depends on the inode flag.
+For inodes with data checksum, direct IO writes always fallback to buffered
+writes, thus can generate compressed data if the mount option/inode flags
+allows that.
+
+For inodes without data checksums, direct IO writes will not populate page cache,
+and since the inode has no data checksums, no compressed data will be generated
+anyway.
 
 The compression algorithms have been added over time so the version
 compatibility should be also considered, together with other tools that may
diff -pruN 6.16-2/Documentation/ch-seeding-device.rst 6.17-1/Documentation/ch-seeding-device.rst
--- 6.16-2/Documentation/ch-seeding-device.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/ch-seeding-device.rst	2025-09-29 14:59:32.000000000 +0000
@@ -19,6 +19,16 @@ read-only, it can be used to seed multip
 same time. The UUID that is normally attached to a device is automatically
 changed to a random UUID on each mount.
 
+.. note::
+
+        Before v6.17 kernel, a seed device could have been mounted
+        independently along with sprouted filesystems.
+	But since 6.17 kernel, a seed device can only be mounted either through
+	a sprouted filesystem, or the seed device itself, not both at the same time.
+
+	This is to ensure a block device to have only a single filesystem bound
+	to it, so that runtime device missing events can be properly handled.
+
 Once the seeding device is mounted, it needs the writable device. After adding
 it, unmounting and mounting with :command:`umount /path; mount /dev/writable
 /path` or remounting read-write with :command:`remount -o remount,rw` makes the
@@ -26,11 +36,13 @@ filesystem at :file:`/path` ready for us
 
 .. note::
 
-        There is a known bug with using remount to make the mount writeable:
+        There was a known bug with using remount to make the mount writeable:
         remount will leave the filesystem in a state where it is unable to
         clean deleted snapshots, so it will leak space until it is unmounted
         and mounted properly.
 
+	That bug has been fixed in 5.11 and newer kernels.
+
 Furthermore, deleting the seeding device from the filesystem can turn it into
 a normal filesystem, provided that the writable device can also contain all the
 data from the seeding device.
diff -pruN 6.16-2/Documentation/ch-sysfs.rst 6.17-1/Documentation/ch-sysfs.rst
--- 6.16-2/Documentation/ch-sysfs.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/ch-sysfs.rst	2025-09-29 14:59:32.000000000 +0000
@@ -43,7 +43,7 @@ checksum
 
         The checksum used for the mounted filesystem.
         This includes both the checksum type (see section
-        :ref:`CHECKSUM ALGORITHMS<man-mkfs-checksum-algorithms>`)
+        :ref:`CHECKSUM ALGORITHMS<man-btrfs5-checksum-algorithms>`)
         and the implemented driver (mostly shows if it's hardware accelerated).
 
 clone_alignment
diff -pruN 6.16-2/Documentation/conf.py 6.17-1/Documentation/conf.py
--- 6.16-2/Documentation/conf.py	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/conf.py	2025-09-29 14:59:32.000000000 +0000
@@ -17,7 +17,7 @@
 import pathlib
 from docutils import nodes
 from docutils.utils import unescape
-from docutils.parsers.rst import Directive, directives
+from docutils.parsers.rst import Directive
 from sphinx.util.nodes import split_explicit_title, set_source_info
 
 # -- Project information -----------------------------------------------------
diff -pruN 6.16-2/Documentation/dev/Development-notes.rst 6.17-1/Documentation/dev/Development-notes.rst
--- 6.16-2/Documentation/dev/Development-notes.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/dev/Development-notes.rst	2025-09-29 14:59:32.000000000 +0000
@@ -224,6 +224,9 @@ attention to detail. Once written the co
 will be read many times. `Read more
 <https://simpleprogrammer.com/maintaining-code/>`__.
 
+General advice: *Try to keep the same style and formatting of the code that's
+already there.*
+
 Patches
 ^^^^^^^
 
@@ -277,6 +280,8 @@ Headers
 ^^^^^^^
 
 -  leave one newline before #endif in headers
+-  include headers that add usage of a data structure or API, also remove such
+   header with last use of the API
 
 Comments
 ^^^^^^^^
@@ -330,6 +335,9 @@ Misc
 -  fix spelling, grammar and formatting of comments that get moved or changed
 -  fix coding style in code that's only moved
 -  one newline between functions
+-  80 chars per line are recommended but longer lines are OK (up to 90) if the
+   code "looks better" without the line break, e.g. if half of the word is beyond 80 chars
+   but it's clear what it is, or function prototypes do not need to wrap arguments
 
 Locking
 ^^^^^^^
@@ -346,8 +354,20 @@ Code
 -  default function return value is *int ret*, temporary return values should
    be named like *ret2* etc
 -  structure initializers should use *{ 0 }*
--  do not use *short* type if possible, if it fits to char/u8 use it instead,
-   or plain int
+-  do not use *short int* type if possible, if it fits to char/u8 use it instead,
+   or plain int/u32
+-  memory barriers need to be always documented
+-  add *const* to parameters that are not modified
+-  use bool for indicators and bool status variables (not int)
+-  use matching int types (size, signedness), with exceptions
+-  use ENUM_BIT for enumerated bit values (that don't have assigned fixed numbers)
+-  add function annotations __cold, __init, __attribute_const__ if applicable
+-  use automatic variable cleanup for:
+   -  *struct btrfs_path* with BTRFS_PATH_AUTO_FREE
+-  use of ``unlikely()`` annotation is OK and recommended for the following cases:
+
+   -  control flow of the function is changed due to error handling and it
+      leads to *never-happens* errors like EUCLEAN, EIO
 
 Output
 ^^^^^^
@@ -368,7 +388,8 @@ Expressions, operators
    -  *a \* b + c*, *(a << b) + c*, *(a % b) + c*
 
 -  64bit division is not allowed, either avoid it completely, or use bit
-   shifts or use div_u64 helpers
+   shifts or use div_u64 helpers; do not use *do_div* for division as it's a
+   macro and has side effects
 -  do not use chained assignments: no *a = b = c;*
 
 Variable declarations, parameters
@@ -380,6 +401,8 @@ Variable declarations, parameters
 -  use *const* extensively
 -  add temporary variable to store a value if it's used multiple times in the
    function, or if reading the value needs to chase a long pointer chain
+-  do not mix declarations and statements (although kernel uses C standard that
+   allows that)
 
 Kernel config options
 ---------------------
@@ -449,9 +472,9 @@ Please refer to the option documentation
 BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Not a bug. The lockdep structures can get in some cases full and cannot
-properly track locks anymore. There's only a workaround to increase the kernel
-config value of CONFIG_LOCKDEP_CHAINS_BITS, default is
+Not a bug and please don't report it. The lockdep structures can get in some
+cases full and cannot properly track locks anymore. There's only a workaround
+to increase the kernel config value of CONFIG_LOCKDEP_CHAINS_BITS, default is
 16, 18 tends to work, increase if needed.
 
 fstests setup
@@ -520,10 +543,11 @@ Note: This list may be incomplete.
 Storage environment
 ^^^^^^^^^^^^^^^^^^^
 
--  At least 4 identically sized partitions/disks/virtual disks, specified using
-   ``$SCRATCH_DEV_POOL``, some tests may require 8 such partitions
+-  at least 4 identically sized partitions/disks/virtual disks, specified using
+   ``$SCRATCH_DEV_POOL``
+-  some tests may require 8 equally sized``SCRATCH_DEV_POOL`` partitions
 -  some tests need at least 10G of free space, as determined by ``df``, i.e.
-   the size of the device may need to be larger
+   the size of the device may need to be larger, 12G should work
 -  some tests require ``$LOGWRITES_DEV``, yet another separate block device,
    for power fail testing
 -  for testing trim and discard, the devices must be capable of that (physical
diff -pruN 6.16-2/Documentation/mkfs.btrfs.rst 6.17-1/Documentation/mkfs.btrfs.rst
--- 6.16-2/Documentation/mkfs.btrfs.rst	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/mkfs.btrfs.rst	2025-09-29 14:59:32.000000000 +0000
@@ -36,7 +36,7 @@ OPTIONS
 --csum <type>, --checksum <type>
         Specify the checksum algorithm. Default is *crc32c*. Valid values are *crc32c*,
         *xxhash*, *sha256* or *blake2*. To mount such filesystem kernel must support the
-        checksums as well. See section :ref:`CHECKSUM ALGORITHMS<man-mkfs-checksum-algorithms>`
+        checksums as well. See section :ref:`CHECKSUM ALGORITHMS<man-btrfs5-checksum-algorithms>`
         in :doc:`btrfs-man5`.
 
 -d|--data <profile>
@@ -243,10 +243,10 @@ OPTIONS
 	each subvolume is independent and will not inherit from the parent directory.
 	(The same as the kernel behavior.)
 
-        .. note::
-                Both *--inode-flags* and *--subvol* options are memory hungry,
-                will consume at least 8KiB for each option.  Please keep the
-                usage of both options to minimum.
+--reflink
+        When used with *--rootdir* try to clone file extents using FICLONERANGE
+        ioctl instead of copying the bytes. This requires the source files and
+        the final image to exist on the same filesystem.
 
 --shrink
         Shrink the filesystem to its minimal size, only works with *--rootdir* option.
diff -pruN 6.16-2/Documentation/plot-contribs.svg 6.17-1/Documentation/plot-contribs.svg
--- 6.16-2/Documentation/plot-contribs.svg	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/plot-contribs.svg	2025-09-29 14:59:32.000000000 +0000
@@ -163,11 +163,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M111.51,244.00 L111.51,45.01 M111.51,27.01 L111.51,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M110.76,244.00 L110.76,45.01 M110.76,27.01 L110.76,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M111.51,244.00 L111.51,235.00 M111.51,18.01 L111.51,27.01  '/>	<g transform="translate(111.51,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M110.76,244.00 L110.76,235.00 M110.76,18.01 L110.76,27.01  '/>	<g transform="translate(110.76,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >3.0</tspan></text>
 	</g>
 </g>
@@ -176,11 +176,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M242.24,244.00 L242.24,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M240.01,244.00 L240.01,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M242.24,244.00 L242.24,235.00 M242.24,18.01 L242.24,27.01  '/>	<g transform="translate(242.24,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M240.01,244.00 L240.01,235.00 M240.01,18.01 L240.01,27.01  '/>	<g transform="translate(240.01,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >4.0</tspan></text>
 	</g>
 </g>
@@ -189,11 +189,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M379.50,244.00 L379.50,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M375.72,244.00 L375.72,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M379.50,244.00 L379.50,235.00 M379.50,18.01 L379.50,27.01  '/>	<g transform="translate(379.50,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M375.72,244.00 L375.72,235.00 M375.72,18.01 L375.72,27.01  '/>	<g transform="translate(375.72,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >5.0</tspan></text>
 	</g>
 </g>
@@ -202,11 +202,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M510.24,244.00 L510.24,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M504.96,244.00 L504.96,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M510.24,244.00 L510.24,235.00 M510.24,18.01 L510.24,27.01  '/>	<g transform="translate(510.24,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M504.96,244.00 L504.96,235.00 M504.96,18.01 L504.96,27.01  '/>	<g transform="translate(504.96,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >6.0</tspan></text>
 	</g>
 </g>
@@ -220,7 +220,7 @@
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 	<path stroke='black'  d='M614.82,244.00 L614.82,235.00 M614.82,18.01 L614.82,27.01  '/>	<g transform="translate(614.82,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
-		<text><tspan font-family="Arial" >6.16</tspan></text>
+		<text><tspan font-family="Arial" >6.17</tspan></text>
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
@@ -244,143 +244,143 @@
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='rgb(148,   0, 211)'  d='M130.04,36.01 L172.60,36.01 M46.14,101.95 L46.71,103.62 L47.28,105.25 L47.85,106.87 L48.42,108.48 L48.99,110.09
-		L49.56,111.71 L50.12,113.36 L50.69,115.04 L51.26,116.76 L51.83,118.55 L52.40,120.40 L52.68,121.32 L52.97,122.38
-		L53.54,124.76 L54.11,127.46 L54.68,130.37 L55.25,133.37 L55.82,136.35 L56.39,139.18 L56.96,141.76 L57.52,143.96
-		L58.09,145.67 L58.66,146.77 L59.21,147.15 L59.23,147.15 L59.80,146.92 L60.37,146.30 L60.94,145.36 L61.51,144.17
-		L62.08,142.81 L62.65,141.32 L63.22,139.80 L63.79,138.29 L64.36,136.88 L64.93,135.63 L65.49,134.60 L65.75,134.23
-		L66.06,133.82 L66.63,133.04 L67.20,132.26 L67.77,131.49 L68.34,130.75 L68.91,130.05 L69.48,129.42 L70.05,128.87
-		L70.62,128.41 L71.19,128.06 L71.76,127.85 L72.29,127.78 L72.33,127.78 L72.89,128.12 L73.46,129.01 L74.03,130.39
-		L74.60,132.22 L75.17,134.42 L75.74,136.93 L76.31,139.71 L76.88,142.70 L77.45,145.82 L78.02,149.03 L78.59,152.27
-		L78.82,153.60 L79.16,155.79 L79.73,160.75 L80.29,166.94 L80.86,174.01 L81.43,181.59 L82.00,189.31 L82.57,196.81
-		L83.14,203.72 L83.71,209.68 L84.28,214.31 L84.85,217.26 L85.36,218.17 L85.42,218.16 L85.99,216.44 L86.56,212.21
-		L87.13,205.92 L87.70,198.03 L88.26,188.99 L88.83,179.25 L89.40,169.29 L89.97,159.53 L90.54,150.46 L91.11,142.51
-		L91.68,136.14 L91.90,134.23 L92.25,131.44 L92.82,127.22 L93.39,123.31 L93.96,119.67 L94.53,116.25 L95.10,113.02
-		L95.66,109.92 L96.23,106.93 L96.80,103.99 L97.37,101.06 L97.94,98.10 L98.43,95.49 L98.51,95.07 L99.08,91.77
-		L99.65,88.21 L100.22,84.49 L100.79,80.74 L101.36,77.07 L101.93,73.60 L102.50,70.44 L103.06,67.71 L103.63,65.53
-		L104.20,64.01 L104.77,63.26 L104.97,63.21 L105.34,63.36 L105.91,64.13 L106.48,65.44 L107.05,67.18 L107.62,69.23
-		L108.19,71.48 L108.76,73.82 L109.33,76.12 L109.90,78.28 L110.47,80.17 L111.03,81.69 L111.51,82.58 L111.60,82.72
-		L112.17,83.56 L112.74,84.39 L113.31,85.19 L113.88,85.94 L114.45,86.65 L115.02,87.28 L115.59,87.84 L116.16,88.31
-		L116.73,88.67 L117.30,88.91 L117.87,89.03 L118.04,89.04 L118.43,88.63 L119.00,86.77 L119.57,83.65 L120.14,79.61
-		L120.71,74.93 L121.28,69.93 L121.85,64.91 L122.42,60.18 L122.99,56.06 L123.56,52.83 L124.13,50.82 L124.58,50.29
-		L124.70,50.31 L125.27,50.74 L125.83,51.70 L126.40,53.11 L126.97,54.87 L127.54,56.89 L128.11,59.07 L128.68,61.33
-		L129.25,63.58 L129.82,65.71 L130.39,67.64 L130.96,69.28 L131.12,69.66 L131.53,70.61 L132.10,71.80 L132.67,72.90
-		L133.24,73.93 L133.80,74.92 L134.37,75.89 L134.94,76.87 L135.51,77.90 L136.08,78.99 L136.65,80.18 L137.22,81.49
-		L137.65,82.58 L137.79,82.96 L138.36,84.90 L138.93,87.32 L139.50,90.09 L140.07,93.08 L140.64,96.13 L141.20,99.12
-		L141.77,101.92 L142.34,104.38 L142.91,106.37 L143.48,107.75 L144.05,108.38 L144.19,108.41 L144.62,108.20 L145.19,107.34
-		L145.76,105.91 L146.33,103.98 L146.90,101.66 L147.47,99.03 L148.04,96.19 L148.60,93.22 L149.17,90.21 L149.74,87.26
-		L150.31,84.46 L150.72,82.58 L150.88,81.87 L151.45,78.95 L152.02,75.62 L152.59,72.01 L153.16,68.27 L153.73,64.54
-		L154.30,60.96 L154.87,57.68 L155.44,54.83 L156.01,52.56 L156.57,51.01 L157.14,50.32 L157.26,50.29 L157.71,50.74
-		L158.28,52.41 L158.85,55.10 L159.42,58.54 L159.99,62.47 L160.56,66.65 L161.13,70.82 L161.70,74.72 L162.27,78.09
-		L162.84,80.69 L163.41,82.24 L163.80,82.58 L163.97,82.52 L164.54,81.65 L165.11,79.86 L165.68,77.38 L166.25,74.39
-		L166.82,71.12 L167.39,67.75 L167.96,64.50 L168.53,61.58 L169.10,59.17 L169.67,57.50 L170.24,56.77 L170.33,56.75
-		L170.81,57.11 L171.37,58.43 L171.94,60.55 L172.51,63.33 L173.08,66.59 L173.65,70.19 L174.22,73.95 L174.79,77.72
-		L175.36,81.35 L175.93,84.66 L176.50,87.50 L176.87,89.04 L177.07,89.77 L177.64,91.98 L178.21,94.26 L178.78,96.55
-		L179.34,98.80 L179.91,100.94 L180.48,102.92 L181.05,104.68 L181.62,106.17 L182.19,107.32 L182.76,108.09 L183.33,108.40
-		L183.41,108.41 L183.90,107.27 L184.47,103.41 L185.04,97.37 L185.61,89.71 L186.18,80.99 L186.74,71.77 L187.31,62.63
-		L187.88,54.11 L188.45,46.79 L189.02,41.23 L189.59,37.98 L189.94,37.38 L190.16,37.55 L190.73,39.44 L191.30,43.11
-		L191.87,48.17 L192.44,54.19 L193.01,60.77 L193.58,67.49 L194.14,73.96 L194.71,79.76 L195.28,84.47 L195.85,87.70
-		L196.42,89.02 L196.48,89.04 L196.99,88.59 L197.56,87.15 L198.13,84.93 L198.70,82.13 L199.27,78.95 L199.84,75.60
-		L200.41,72.28 L200.98,69.19 L201.55,66.55 L202.11,64.55 L202.68,63.40 L203.02,63.21 L203.25,63.23 L203.82,63.48
-		L204.39,63.94 L204.96,64.58 L205.53,65.34 L206.10,66.16 L206.67,67.00 L207.24,67.81 L207.81,68.53 L208.38,69.11
-		L208.95,69.51 L209.51,69.66 L209.55,69.66 L210.08,69.42 L210.65,68.69 L211.22,67.57 L211.79,66.16 L212.36,64.57
-		L212.93,62.89 L213.50,61.23 L214.07,59.69 L214.64,58.38 L215.21,57.39 L215.78,56.84 L216.09,56.75 L216.35,57.04
-		L216.91,59.57 L217.48,64.31 L218.05,70.72 L218.62,78.31 L219.19,86.57 L219.76,94.97 L220.33,103.01 L220.90,110.18
-		L221.47,115.96 L222.04,119.84 L222.61,121.32 L222.63,121.32 L223.18,120.54 L223.75,118.30 L224.32,114.90 L224.88,110.65
-		L225.45,105.85 L226.02,100.82 L226.59,95.85 L227.16,91.26 L227.73,87.35 L228.30,84.43 L228.87,82.81 L229.16,82.58
-		L229.44,82.81 L230.01,84.64 L230.58,88.00 L231.15,92.53 L231.72,97.87 L232.28,103.65 L232.85,109.53 L233.42,115.14
-		L233.99,120.13 L234.56,124.14 L235.13,126.81 L235.42,127.53 L235.70,127.78 L236.27,127.38 L236.84,126.25 L237.41,124.53
-		L237.98,122.31 L238.55,119.72 L239.12,116.88 L239.68,113.90 L240.25,110.89 L240.82,107.99 L241.39,105.30 L241.96,102.94
-		L242.24,101.95 L242.53,100.93 L243.10,98.82 L243.67,96.61 L244.24,94.35 L244.81,92.11 L245.38,89.96 L245.95,87.96
-		L246.52,86.19 L247.08,84.69 L247.65,83.55 L248.22,82.82 L248.77,82.58 L248.79,82.58 L249.36,83.47 L249.93,85.80
-		L250.50,89.27 L251.07,93.57 L251.64,98.39 L252.21,103.43 L252.78,108.38 L253.35,112.94 L253.92,116.79 L254.49,119.63
-		L255.05,121.15 L255.31,121.32 L255.62,121.20 L256.19,120.38 L256.76,118.91 L257.33,116.90 L257.90,114.46 L258.47,111.72
-		L259.04,108.79 L259.61,105.78 L260.18,102.82 L260.75,100.01 L261.32,97.49 L261.85,95.49 L261.89,95.36 L262.45,93.32
-		L263.02,91.15 L263.59,88.90 L264.16,86.65 L264.73,84.45 L265.30,82.38 L265.87,80.49 L266.44,78.87 L267.01,77.56
-		L267.58,76.64 L268.15,76.17 L268.38,76.12 L268.72,76.12 L269.29,76.12 L269.85,76.12 L270.42,76.12 L270.99,76.12
-		L271.56,76.12 L272.13,76.12 L272.70,76.12 L273.27,76.12 L273.84,76.12 L274.41,76.12 L274.92,76.12 L274.98,76.12
-		L275.55,75.80 L276.12,75.02 L276.69,73.82 L277.26,72.29 L277.82,70.47 L278.39,68.45 L278.96,66.29 L279.53,64.04
-		L280.10,61.78 L280.67,59.58 L281.24,57.50 L281.46,56.75 L281.81,55.46 L282.38,53.05 L282.95,50.32 L283.52,47.39
-		L284.09,44.39 L284.66,41.42 L285.22,38.61 L285.79,36.06 L286.36,33.90 L286.93,32.25 L287.50,31.22 L287.99,30.92
-		L288.07,30.95 L288.64,32.88 L289.21,37.39 L289.78,43.94 L290.35,51.95 L290.92,60.86 L291.49,70.11 L292.06,79.14
-		L292.62,87.38 L293.19,94.27 L293.76,99.25 L294.33,101.76 L294.53,101.95 L294.90,101.77 L295.47,100.86 L296.04,99.32
-		L296.61,97.31 L297.18,94.98 L297.75,92.48 L298.32,89.97 L298.89,87.60 L299.46,85.52 L300.03,83.89 L300.59,82.87
-		L301.07,82.58 L301.16,82.58 L301.73,82.77 L302.30,83.18 L302.87,83.78 L303.44,84.52 L304.01,85.33 L304.58,86.17
-		L305.15,86.99 L305.72,87.73 L306.29,88.36 L306.86,88.80 L307.43,89.02 L307.60,89.04 L307.99,89.04 L308.56,89.04
-		L309.13,89.04 L309.70,89.04 L310.27,89.04 L310.84,89.04 L311.41,89.04 L311.98,89.04 L312.55,89.04 L313.12,89.04
-		L313.69,89.04 L314.14,89.04 L314.26,89.05 L314.83,89.63 L315.39,90.91 L315.96,92.72 L316.53,94.93 L317.10,97.37
-		L317.67,99.90 L318.24,102.35 L318.81,104.58 L319.38,106.42 L319.95,107.74 L320.52,108.37 L320.68,108.41 L321.09,107.82
-		L321.66,105.26 L322.23,101.06 L322.80,95.63 L323.36,89.37 L323.93,82.69 L324.50,76.01 L325.07,69.73 L325.64,64.26
-		L326.21,60.01 L326.78,57.40 L327.21,56.75 L327.35,56.76 L327.92,56.96 L328.49,57.39 L329.06,58.00 L329.63,58.74
-		L330.20,59.56 L330.76,60.40 L331.33,61.22 L331.90,61.95 L332.47,62.57 L333.04,63.00 L333.61,63.20 L333.75,63.21
-		L334.18,63.05 L334.75,62.39 L335.32,61.33 L335.89,59.96 L336.46,58.39 L337.03,56.72 L337.60,55.05 L338.16,53.49
-		L338.73,52.13 L339.30,51.08 L339.87,50.44 L340.28,50.29 L340.44,50.33 L341.01,51.09 L341.58,52.69 L342.15,55.01
-		L342.72,57.89 L343.29,61.20 L343.86,64.80 L344.43,68.53 L345.00,72.27 L345.57,75.86 L346.13,79.17 L346.70,82.05
-		L346.82,82.58 L347.27,84.65 L347.84,87.46 L348.41,90.42 L348.98,93.42 L349.55,96.39 L350.12,99.22 L350.69,101.83
-		L351.26,104.13 L351.83,106.02 L352.40,107.42 L352.97,108.23 L353.36,108.41 L353.53,108.34 L354.10,107.24 L354.67,105.01
-		L355.24,101.90 L355.81,98.17 L356.38,94.08 L356.95,89.87 L357.52,85.81 L358.09,82.15 L358.66,79.15 L359.23,77.06
-		L359.80,76.14 L359.89,76.12 L360.37,76.17 L360.93,76.35 L361.50,76.66 L362.07,77.08 L362.64,77.59 L363.21,78.19
-		L363.78,78.87 L364.35,79.60 L364.92,80.38 L365.49,81.19 L366.06,82.03 L366.43,82.58 L366.63,82.88 L367.20,83.87
-		L367.77,85.02 L368.34,86.34 L368.90,87.80 L369.47,89.41 L370.04,91.15 L370.61,93.02 L371.18,95.01 L371.75,97.11
-		L372.32,99.32 L372.89,101.62 L372.97,101.95 L373.46,104.42 L374.03,108.22 L374.60,112.78 L375.17,117.87 L375.74,123.21
-		L376.30,128.58 L376.87,133.71 L377.44,138.35 L378.01,142.25 L378.58,145.16 L379.15,146.84 L379.50,147.15 L379.72,147.11
-		L380.29,146.66 L380.86,145.75 L381.43,144.45 L382.00,142.84 L382.57,140.96 L383.14,138.89 L383.70,136.70 L384.27,134.44
-		L384.84,132.19 L385.41,130.02 L385.98,127.98 L386.04,127.78 L386.55,125.86 L387.12,123.35 L387.69,120.55 L388.26,117.59
-		L388.83,114.59 L389.40,111.65 L389.97,108.90 L390.54,106.45 L391.11,104.42 L391.67,102.93 L392.24,102.09 L392.58,101.95
-		L392.81,101.98 L393.38,102.32 L393.95,102.97 L394.52,103.89 L395.09,105.03 L395.66,106.34 L396.23,107.76 L396.80,109.24
-		L397.37,110.74 L397.94,112.19 L398.51,113.56 L399.07,114.78 L399.11,114.86 L399.64,115.94 L400.21,117.14 L400.78,118.37
-		L401.35,119.62 L401.92,120.86 L402.49,122.09 L403.06,123.28 L403.63,124.42 L404.20,125.49 L404.77,126.47 L405.34,127.34
-		L405.65,127.78 L405.91,128.12 L406.47,128.89 L407.04,129.67 L407.61,130.44 L408.18,131.18 L408.75,131.89 L409.32,132.53
-		L409.89,133.09 L410.46,133.56 L411.03,133.92 L411.60,134.15 L412.17,134.23 L412.19,134.23 L412.74,134.17 L413.31,133.98
-		L413.88,133.67 L414.44,133.26 L415.01,132.75 L415.58,132.16 L416.15,131.48 L416.72,130.75 L417.29,129.95 L417.86,129.11
-		L418.43,128.24 L418.72,127.78 L419.00,127.24 L419.57,125.58 L420.14,123.30 L420.71,120.57 L421.28,117.54 L421.84,114.39
-		L422.41,111.27 L422.98,108.35 L423.55,105.80 L424.12,103.77 L424.69,102.43 L424.98,102.07 L425.26,101.95 L425.83,102.02
-		L426.40,102.23 L426.97,102.55 L427.54,102.99 L428.11,103.52 L428.68,104.13 L429.24,104.82 L429.81,105.56 L430.38,106.34
-		L430.95,107.16 L431.52,108.00 L431.80,108.41 L432.09,108.92 L432.66,110.30 L433.23,112.08 L433.80,114.17 L434.37,116.44
-		L434.94,118.78 L435.51,121.07 L436.08,123.20 L436.64,125.05 L437.21,126.50 L437.78,127.45 L438.33,127.78 L438.35,127.78
-		L438.92,127.19 L439.49,125.63 L440.06,123.32 L440.63,120.45 L441.20,117.24 L441.77,113.87 L442.34,110.57 L442.91,107.54
-		L443.48,104.97 L444.05,103.08 L444.61,102.06 L444.87,101.95 L445.18,102.25 L445.75,104.20 L446.32,107.65 L446.89,112.25
-		L447.46,117.62 L448.03,123.43 L448.60,129.30 L449.17,134.88 L449.74,139.82 L450.31,143.74 L450.88,146.30 L451.41,147.15
-		L451.45,147.14 L452.01,146.36 L452.58,144.38 L453.15,141.46 L453.72,137.86 L454.29,133.83 L454.86,129.62 L455.43,125.51
-		L456.00,121.73 L456.57,118.54 L457.14,116.21 L457.71,114.99 L457.94,114.86 L458.28,114.91 L458.85,115.20 L459.41,115.70
-		L459.98,116.36 L460.55,117.13 L461.12,117.96 L461.69,118.80 L462.26,119.59 L462.83,120.29 L463.40,120.85 L463.97,121.21
-		L464.48,121.32 L464.54,121.32 L465.11,121.32 L465.68,121.32 L466.25,121.32 L466.82,121.32 L467.38,121.32 L467.95,121.32
-		L468.52,121.32 L469.09,121.32 L469.66,121.32 L470.23,121.32 L470.80,121.32 L471.02,121.32 L471.37,121.43 L471.94,122.02
-		L472.51,123.03 L473.08,124.36 L473.65,125.91 L474.22,127.57 L474.78,129.25 L475.35,130.83 L475.92,132.23 L476.49,133.32
-		L477.06,134.03 L477.55,134.23 L477.63,134.21 L478.20,132.99 L478.77,130.12 L479.34,125.95 L479.91,120.86 L480.48,115.18
-		L481.05,109.30 L481.62,103.55 L482.18,98.31 L482.75,93.92 L483.32,90.75 L483.89,89.16 L484.09,89.04 L484.46,89.46
-		L485.03,91.58 L485.60,95.17 L486.17,99.86 L486.74,105.30 L487.31,111.13 L487.88,116.98 L488.45,122.52 L489.02,127.36
-		L489.59,131.16 L490.15,133.56 L490.63,134.23 L490.72,134.18 L491.29,131.79 L491.86,126.36 L492.43,118.55 L493.00,109.04
-		L493.57,98.48 L494.14,87.55 L494.71,76.90 L495.28,67.20 L495.85,59.12 L496.42,53.32 L496.99,50.47 L497.16,50.29
-		L497.55,50.90 L498.12,53.70 L498.69,58.37 L499.26,64.44 L499.83,71.46 L500.40,78.96 L500.97,86.48 L501.54,93.57
-		L502.11,99.76 L502.68,104.60 L503.25,107.61 L503.70,108.41 L503.82,108.39 L504.39,108.03 L504.95,107.20 L505.52,105.96
-		L506.09,104.39 L506.66,102.56 L507.23,100.52 L507.80,98.34 L508.37,96.09 L508.94,93.84 L509.51,91.64 L510.08,89.58
-		L510.24,89.04 L510.65,87.51 L511.22,85.06 L511.79,82.31 L512.36,79.37 L512.92,76.36 L513.49,73.40 L514.06,70.61
-		L514.63,68.10 L515.20,65.99 L515.77,64.40 L516.34,63.44 L516.77,63.21 L516.91,63.24 L517.48,63.96 L518.05,65.54
-		L518.62,67.83 L519.19,70.70 L519.76,74.00 L520.32,77.58 L520.89,81.32 L521.46,85.05 L522.03,88.65 L522.60,91.97
-		L523.17,94.87 L523.31,95.49 L523.74,97.43 L524.31,100.07 L524.88,102.77 L525.45,105.49 L526.02,108.16 L526.59,110.75
-		L527.16,113.19 L527.72,115.44 L528.29,117.45 L528.86,119.18 L529.43,120.56 L529.84,121.32 L530.00,121.57 L530.57,122.45
-		L531.14,123.30 L531.71,124.10 L532.28,124.85 L532.85,125.54 L533.42,126.16 L533.99,126.69 L534.56,127.13 L535.13,127.46
-		L535.69,127.68 L536.26,127.77 L536.38,127.78 L536.83,127.73 L537.40,127.53 L537.97,127.20 L538.54,126.76 L539.11,126.21
-		L539.68,125.59 L540.25,124.90 L540.82,124.17 L541.39,123.40 L541.96,122.62 L542.53,121.84 L542.92,121.32 L543.09,121.07
-		L543.66,120.08 L544.23,118.86 L544.80,117.46 L545.37,115.97 L545.94,114.44 L546.51,112.95 L547.08,111.56 L547.65,110.34
-		L548.22,109.37 L548.79,108.70 L549.36,108.41 L549.45,108.41 L549.93,108.65 L550.49,109.52 L551.06,110.91 L551.63,112.71
-		L552.20,114.81 L552.77,117.08 L553.34,119.42 L553.91,121.71 L554.48,123.82 L555.05,125.66 L555.62,127.10 L555.99,127.78
-		L556.19,128.07 L556.76,128.91 L557.33,129.73 L557.90,130.52 L558.46,131.27 L559.03,131.96 L559.60,132.58 L560.17,133.13
-		L560.74,133.58 L561.31,133.92 L561.88,134.14 L562.45,134.23 L562.53,134.23 L563.02,134.09 L563.59,133.61 L564.16,132.83
-		L564.73,131.80 L565.30,130.58 L565.86,129.22 L566.43,127.77 L567.00,126.27 L567.57,124.79 L568.14,123.36 L568.71,122.05
-		L569.06,121.32 L569.28,120.88 L569.85,119.60 L570.42,118.20 L570.99,116.73 L571.56,115.23 L572.13,113.76 L572.70,112.37
-		L573.26,111.11 L573.83,110.04 L574.40,109.19 L574.97,108.63 L575.54,108.41 L575.60,108.41 L576.11,108.74 L576.68,109.82
-		L577.25,111.48 L577.82,113.58 L578.39,115.97 L578.96,118.48 L579.53,120.97 L580.10,123.29 L580.67,125.27 L581.23,126.77
-		L581.80,127.63 L582.14,127.78 L582.37,127.75 L582.94,127.48 L583.51,126.95 L584.08,126.18 L584.65,125.20 L585.22,124.04
-		L585.79,122.73 L586.36,121.30 L586.93,119.78 L587.50,118.20 L588.07,116.59 L588.63,114.97 L588.67,114.86 L589.20,113.00
-		L589.77,110.28 L590.34,107.01 L590.91,103.37 L591.48,99.54 L592.05,95.69 L592.62,92.03 L593.19,88.71 L593.76,85.94
-		L594.33,83.90 L594.90,82.75 L595.21,82.58 L595.47,82.72 L596.03,83.99 L596.60,86.36 L597.17,89.56 L597.74,93.36
-		L598.31,97.49 L598.88,101.69 L599.45,105.71 L600.02,109.29 L600.59,112.18 L601.16,114.12 L601.73,114.86 L601.75,114.86
-		L602.30,114.22 L602.87,112.35 L603.44,109.52 L604.00,105.97 L604.57,101.97 L605.14,97.78 L605.71,93.64 L606.28,89.81
-		L606.85,86.55 L607.42,84.12 L607.99,82.77 L608.28,82.58 L608.56,82.78 L609.13,84.39 L609.70,87.42 L610.27,91.65
-		L610.84,96.83 L611.40,102.75 L611.97,109.17 L612.54,115.85 L613.11,122.58 L613.68,129.11 L614.25,135.23 L614.54,138.05
-		L614.82,140.69  '/></g>
+	<path stroke='rgb(148,   0, 211)'  d='M130.04,36.01 L172.60,36.01 M46.14,101.95 L46.71,103.64 L47.28,105.29 L47.85,106.93 L48.42,108.55 L48.99,110.18
+		L49.56,111.82 L50.12,113.49 L50.69,115.19 L51.26,116.95 L51.83,118.76 L52.40,120.64 L52.60,121.32 L52.97,122.69
+		L53.54,125.14 L54.11,127.91 L54.68,130.88 L55.25,133.92 L55.82,136.92 L56.39,139.74 L56.96,142.28 L57.52,144.41
+		L58.09,146.00 L58.66,146.94 L59.06,147.15 L59.23,147.13 L59.80,146.78 L60.37,146.06 L60.94,145.03 L61.51,143.77
+		L62.08,142.34 L62.65,140.82 L63.22,139.27 L63.79,137.78 L64.36,136.40 L64.93,135.21 L65.49,134.28 L65.53,134.23
+		L66.06,133.51 L66.63,132.72 L67.20,131.93 L67.77,131.16 L68.34,130.43 L68.91,129.75 L69.48,129.15 L70.05,128.63
+		L70.62,128.22 L71.19,127.93 L71.76,127.79 L71.99,127.78 L72.33,127.88 L72.89,128.53 L73.46,129.72 L74.03,131.37
+		L74.60,133.44 L75.17,135.86 L75.74,138.57 L76.31,141.51 L76.88,144.62 L77.45,147.85 L78.02,151.12 L78.45,153.60
+		L78.59,154.43 L79.16,158.94 L79.73,164.84 L80.29,171.75 L80.86,179.30 L81.43,187.10 L82.00,194.79 L82.57,201.97
+		L83.14,208.28 L83.71,213.33 L84.28,216.75 L84.85,218.16 L84.91,218.17 L85.42,217.02 L85.99,213.21 L86.56,207.21
+		L87.13,199.48 L87.70,190.50 L88.26,180.74 L88.83,170.66 L89.40,160.74 L89.97,151.45 L90.54,143.26 L91.11,136.65
+		L91.38,134.23 L91.68,131.79 L92.25,127.50 L92.82,123.53 L93.39,119.83 L93.96,116.37 L94.53,113.09 L95.10,109.96
+		L95.66,106.93 L96.23,103.95 L96.80,100.99 L97.37,98.00 L97.84,95.49 L97.94,94.92 L98.51,91.57 L99.08,87.96
+		L99.65,84.19 L100.22,80.40 L100.79,76.70 L101.36,73.22 L101.93,70.07 L102.50,67.38 L103.06,65.26 L103.63,63.83
+		L104.20,63.22 L104.30,63.21 L104.77,63.46 L105.34,64.34 L105.91,65.77 L106.48,67.60 L107.05,69.74 L107.62,72.04
+		L108.19,74.41 L108.76,76.71 L109.33,78.83 L109.90,80.65 L110.47,82.05 L110.76,82.58 L111.03,82.99 L111.60,83.83
+		L112.17,84.66 L112.74,85.45 L113.31,86.20 L113.88,86.89 L114.45,87.51 L115.02,88.04 L115.59,88.47 L116.16,88.79
+		L116.73,88.98 L117.23,89.04 L117.30,89.02 L117.87,87.97 L118.43,85.47 L119.00,81.84 L119.57,77.41 L120.14,72.48
+		L120.71,67.37 L121.28,62.41 L121.85,57.91 L122.42,54.18 L122.99,51.55 L123.56,50.34 L123.69,50.29 L124.13,50.48
+		L124.70,51.24 L125.27,52.50 L125.83,54.15 L126.40,56.10 L126.97,58.26 L127.54,60.53 L128.11,62.81 L128.68,65.02
+		L129.25,67.05 L129.82,68.81 L130.15,69.66 L130.39,70.23 L130.96,71.47 L131.53,72.61 L132.10,73.66 L132.67,74.67
+		L133.24,75.65 L133.80,76.65 L134.37,77.67 L134.94,78.76 L135.51,79.94 L136.08,81.24 L136.61,82.58 L136.65,82.68
+		L137.22,84.55 L137.79,86.94 L138.36,89.70 L138.93,92.69 L139.50,95.78 L140.07,98.82 L140.64,101.67 L141.20,104.20
+		L141.77,106.25 L142.34,107.68 L142.91,108.37 L143.07,108.41 L143.48,108.22 L144.05,107.37 L144.62,105.93 L145.19,103.98
+		L145.76,101.63 L146.33,98.97 L146.90,96.09 L147.47,93.08 L148.04,90.04 L148.60,87.06 L149.17,84.25 L149.54,82.58
+		L149.74,81.62 L150.31,78.62 L150.88,75.22 L151.45,71.54 L152.02,67.76 L152.59,63.99 L153.16,60.41 L153.73,57.15
+		L154.30,54.36 L154.87,52.19 L155.44,50.79 L156.00,50.29 L156.01,50.29 L156.57,51.02 L157.14,52.98 L157.71,55.90
+		L158.28,59.54 L158.85,63.61 L159.42,67.86 L159.99,72.03 L160.56,75.84 L161.13,79.03 L161.70,81.33 L162.27,82.49
+		L162.46,82.58 L162.84,82.33 L163.41,81.08 L163.97,78.99 L164.54,76.26 L165.11,73.10 L165.68,69.72 L166.25,66.34
+		L166.82,63.17 L167.39,60.42 L167.96,58.30 L168.53,57.03 L168.92,56.75 L169.10,56.80 L169.67,57.65 L170.24,59.41
+		L170.81,61.92 L171.37,65.00 L171.94,68.50 L172.51,72.25 L173.08,76.08 L173.65,79.83 L174.22,83.34 L174.79,86.43
+		L175.36,88.94 L175.39,89.04 L175.93,91.13 L176.50,93.42 L177.07,95.74 L177.64,98.03 L178.21,100.24 L178.78,102.30
+		L179.34,104.16 L179.91,105.76 L180.48,107.03 L181.05,107.92 L181.62,108.37 L181.85,108.41 L182.19,107.83 L182.76,104.56
+		L183.33,98.92 L183.90,91.49 L184.47,82.85 L185.04,73.59 L185.61,64.28 L186.18,55.51 L186.74,47.86 L187.31,41.92
+		L187.88,38.27 L188.31,37.38 L188.45,37.45 L189.02,39.12 L189.59,42.66 L190.16,47.66 L190.73,53.68 L191.30,60.30
+		L191.87,67.11 L192.44,73.67 L193.01,79.57 L193.58,84.38 L194.14,87.67 L194.71,89.02 L194.77,89.04 L195.28,88.58
+		L195.85,87.11 L196.42,84.85 L196.99,81.99 L197.56,78.76 L198.13,75.37 L198.70,72.02 L199.27,68.93 L199.84,66.31
+		L200.41,64.37 L200.98,63.33 L201.23,63.21 L201.55,63.25 L202.11,63.53 L202.68,64.04 L203.25,64.70 L203.82,65.48
+		L204.39,66.32 L204.96,67.17 L205.53,67.97 L206.10,68.68 L206.67,69.23 L207.24,69.57 L207.70,69.66 L207.81,69.65
+		L208.38,69.27 L208.95,68.41 L209.51,67.17 L210.08,65.68 L210.65,64.03 L211.22,62.33 L211.79,60.68 L212.36,59.19
+		L212.93,57.97 L213.50,57.13 L214.07,56.76 L214.16,56.75 L214.64,57.76 L215.21,61.29 L215.78,66.86 L216.35,73.92
+		L216.91,81.96 L217.48,90.44 L218.05,98.83 L218.62,106.61 L219.19,113.24 L219.76,118.19 L220.33,120.94 L220.62,121.32
+		L220.90,121.11 L221.47,119.50 L222.04,116.55 L222.61,112.59 L223.18,107.94 L223.75,102.91 L224.32,97.82 L224.88,92.99
+		L225.45,88.73 L226.02,85.37 L226.59,83.22 L227.08,82.58 L227.16,82.60 L227.73,83.85 L228.30,86.78 L228.87,91.02
+		L229.44,96.21 L230.01,101.96 L230.58,107.92 L231.15,113.71 L231.72,118.95 L232.28,123.28 L232.85,126.33 L233.42,127.73
+		L233.55,127.78 L233.99,127.52 L234.56,126.52 L235.13,124.88 L235.70,122.72 L236.27,120.16 L236.84,117.31 L237.41,114.31
+		L237.98,111.27 L238.55,108.32 L239.12,105.56 L239.68,103.14 L240.01,101.95 L240.25,101.09 L240.82,98.97 L241.39,96.74
+		L241.96,94.45 L242.53,92.19 L243.10,90.01 L243.67,87.98 L244.24,86.19 L244.81,84.68 L245.38,83.53 L245.95,82.81
+		L246.47,82.58 L246.52,82.58 L247.08,83.56 L247.65,86.00 L248.22,89.58 L248.79,93.99 L249.36,98.91 L249.93,104.01
+		L250.50,108.99 L251.07,113.52 L251.64,117.28 L252.21,119.97 L252.78,121.25 L252.93,121.32 L253.35,121.10 L253.92,120.14
+		L254.49,118.53 L255.05,116.40 L255.62,113.85 L256.19,111.02 L256.76,108.03 L257.33,104.99 L257.90,102.02 L258.47,99.25
+		L259.04,96.81 L259.40,95.49 L259.61,94.75 L260.18,92.64 L260.75,90.41 L261.32,88.12 L261.89,85.86 L262.45,83.67
+		L263.02,81.64 L263.59,79.82 L264.16,78.30 L264.73,77.13 L265.30,76.38 L265.86,76.12 L265.87,76.12 L266.44,76.12
+		L267.01,76.12 L267.58,76.12 L268.15,76.12 L268.72,76.12 L269.29,76.12 L269.85,76.12 L270.42,76.12 L270.99,76.12
+		L271.56,76.12 L272.13,76.12 L272.32,76.12 L272.70,76.00 L273.27,75.40 L273.84,74.35 L274.41,72.92 L274.98,71.19
+		L275.55,69.22 L276.12,67.07 L276.69,64.82 L277.26,62.53 L277.82,60.28 L278.39,58.13 L278.78,56.75 L278.96,56.11
+		L279.53,53.78 L280.10,51.10 L280.67,48.18 L281.24,45.15 L281.81,42.13 L282.38,39.23 L282.95,36.59 L283.52,34.31
+		L284.09,32.53 L284.66,31.36 L285.22,30.92 L285.24,30.92 L285.79,32.38 L286.36,36.58 L286.93,42.93 L287.50,50.87
+		L288.07,59.81 L288.64,69.15 L289.21,78.33 L289.78,86.76 L290.35,93.85 L290.92,99.03 L291.49,101.71 L291.71,101.95
+		L292.06,101.79 L292.62,100.89 L293.19,99.34 L293.76,97.31 L294.33,94.95 L294.90,92.42 L295.47,89.89 L296.04,87.50
+		L296.61,85.42 L297.18,83.80 L297.75,82.81 L298.17,82.58 L298.32,82.59 L298.89,82.80 L299.46,83.25 L300.03,83.87
+		L300.59,84.62 L301.16,85.45 L301.73,86.30 L302.30,87.12 L302.87,87.86 L303.44,88.46 L304.01,88.87 L304.58,89.03
+		L304.63,89.04 L305.15,89.04 L305.72,89.04 L306.29,89.04 L306.86,89.04 L307.43,89.04 L307.99,89.04 L308.56,89.04
+		L309.13,89.04 L309.70,89.04 L310.27,89.04 L310.84,89.04 L311.09,89.04 L311.41,89.17 L311.98,90.03 L312.55,91.54
+		L313.12,93.55 L313.69,95.89 L314.26,98.42 L314.83,100.96 L315.39,103.36 L315.96,105.46 L316.53,107.11 L317.10,108.13
+		L317.56,108.41 L317.67,108.36 L318.24,106.78 L318.81,103.32 L319.38,98.38 L319.95,92.40 L320.52,85.79 L321.09,78.98
+		L321.66,72.40 L322.23,66.46 L322.80,61.60 L323.36,58.23 L323.93,56.78 L324.02,56.75 L324.50,56.85 L325.07,57.21
+		L325.64,57.77 L326.21,58.48 L326.78,59.28 L327.35,60.13 L327.92,60.97 L328.49,61.75 L329.06,62.41 L329.63,62.90
+		L330.20,63.17 L330.48,63.21 L330.76,63.14 L331.33,62.59 L331.90,61.61 L332.47,60.28 L333.04,58.73 L333.61,57.05
+		L334.18,55.36 L334.75,53.75 L335.32,52.33 L335.89,51.21 L336.46,50.50 L336.94,50.29 L337.03,50.31 L337.60,50.95
+		L338.16,52.49 L338.73,54.77 L339.30,57.64 L339.87,60.96 L340.44,64.59 L341.01,68.36 L341.58,72.14 L342.15,75.78
+		L342.72,79.13 L343.29,82.05 L343.40,82.58 L343.86,84.68 L344.43,87.53 L345.00,90.52 L345.57,93.56 L346.13,96.55
+		L346.70,99.41 L347.27,102.03 L347.84,104.32 L348.41,106.19 L348.98,107.55 L349.55,108.29 L349.87,108.41 L350.12,108.26
+		L350.69,106.97 L351.26,104.56 L351.83,101.30 L352.40,97.44 L352.97,93.26 L353.53,89.01 L354.10,84.97 L354.67,81.40
+		L355.24,78.55 L355.81,76.71 L356.33,76.12 L356.38,76.12 L356.95,76.21 L357.52,76.43 L358.09,76.77 L358.66,77.23
+		L359.23,77.78 L359.80,78.41 L360.37,79.11 L360.93,79.87 L361.50,80.67 L362.07,81.51 L362.64,82.36 L362.79,82.58
+		L363.21,83.26 L363.78,84.33 L364.35,85.56 L364.92,86.96 L365.49,88.51 L366.06,90.19 L366.63,92.02 L367.20,93.97
+		L367.77,96.04 L368.34,98.22 L368.90,100.50 L369.25,101.95 L369.47,102.96 L370.04,106.36 L370.61,110.66 L371.18,115.60
+		L371.75,120.92 L372.32,126.37 L372.89,131.69 L373.46,136.61 L374.03,140.87 L374.60,144.22 L375.17,146.40 L375.72,147.15
+		L375.74,147.15 L376.30,146.86 L376.87,146.09 L377.44,144.89 L378.01,143.35 L378.58,141.52 L379.15,139.48 L379.72,137.29
+		L380.29,135.01 L380.86,132.73 L381.43,130.51 L382.00,128.41 L382.18,127.78 L382.57,126.33 L383.14,123.86 L383.70,121.08
+		L384.27,118.11 L384.84,115.07 L385.41,112.08 L385.98,109.26 L386.55,106.74 L387.12,104.63 L387.69,103.05 L388.26,102.14
+		L388.64,101.95 L388.83,101.97 L389.40,102.28 L389.97,102.93 L390.54,103.85 L391.11,104.99 L391.67,106.31 L392.24,107.74
+		L392.81,109.24 L393.38,110.75 L393.95,112.22 L394.52,113.60 L395.09,114.84 L395.10,114.86 L395.66,116.00 L396.23,117.22
+		L396.80,118.47 L397.37,119.73 L397.94,120.99 L398.51,122.23 L399.07,123.43 L399.64,124.57 L400.21,125.64 L400.78,126.62
+		L401.35,127.48 L401.57,127.78 L401.92,128.26 L402.49,129.04 L403.06,129.83 L403.63,130.60 L404.20,131.35 L404.77,132.05
+		L405.34,132.68 L405.91,133.23 L406.47,133.67 L407.04,134.00 L407.61,134.19 L408.03,134.23 L408.18,134.23 L408.75,134.12
+		L409.32,133.89 L409.89,133.54 L410.46,133.09 L411.03,132.54 L411.60,131.91 L412.17,131.20 L412.74,130.43 L413.31,129.61
+		L413.88,128.75 L414.44,127.85 L414.49,127.78 L415.01,126.59 L415.58,124.60 L416.15,122.06 L416.72,119.13 L417.29,115.99
+		L417.86,112.80 L418.43,109.72 L419.00,106.94 L419.57,104.62 L420.14,102.93 L420.71,102.04 L420.95,101.95 L421.28,101.97
+		L421.84,102.13 L422.41,102.41 L422.98,102.81 L423.55,103.31 L424.12,103.90 L424.69,104.57 L425.26,105.30 L425.83,106.08
+		L426.40,106.90 L426.97,107.74 L427.41,108.41 L427.54,108.60 L428.11,109.85 L428.68,111.56 L429.24,113.60 L429.81,115.86
+		L430.38,118.22 L430.95,120.55 L431.52,122.75 L432.09,124.69 L432.66,126.26 L433.23,127.32 L433.80,127.77 L433.88,127.78
+		L434.37,127.35 L434.94,125.92 L435.51,123.68 L436.08,120.84 L436.64,117.62 L437.21,114.22 L437.78,110.87 L438.35,107.77
+		L438.92,105.13 L439.49,103.17 L440.06,102.09 L440.34,101.95 L440.63,102.22 L441.20,104.14 L441.77,107.61 L442.34,112.25
+		L442.91,117.69 L443.48,123.56 L444.05,129.50 L444.61,135.13 L445.18,140.07 L445.75,143.97 L446.32,146.44 L446.80,147.15
+		L446.89,147.13 L447.46,146.21 L448.03,144.09 L448.60,141.04 L449.17,137.32 L449.74,133.20 L450.31,128.95 L450.88,124.82
+		L451.45,121.09 L452.01,118.01 L452.58,115.86 L453.15,114.89 L453.26,114.86 L453.72,114.96 L454.29,115.30 L454.86,115.85
+		L455.43,116.55 L456.00,117.36 L456.57,118.20 L457.14,119.04 L457.71,119.82 L458.28,120.49 L458.85,120.99 L459.41,121.28
+		L459.73,121.32 L459.98,121.32 L460.55,121.32 L461.12,121.32 L461.69,121.32 L462.26,121.32 L462.83,121.32 L463.40,121.32
+		L463.97,121.32 L464.54,121.32 L465.11,121.32 L465.68,121.32 L466.19,121.32 L466.25,121.32 L466.82,121.66 L467.38,122.48
+		L467.95,123.69 L468.52,125.16 L469.09,126.80 L469.66,128.50 L470.23,130.16 L470.80,131.66 L471.37,132.91 L471.94,133.80
+		L472.51,134.21 L472.65,134.23 L473.08,133.67 L473.65,131.34 L474.22,127.56 L474.78,122.70 L475.35,117.12 L475.92,111.19
+		L476.49,105.30 L477.06,99.80 L477.63,95.07 L478.20,91.48 L478.77,89.40 L479.11,89.04 L479.34,89.20 L479.91,90.92
+		L480.48,94.23 L481.05,98.76 L481.62,104.13 L482.18,109.97 L482.75,115.92 L483.32,121.60 L483.89,126.64 L484.46,130.68
+		L485.03,133.33 L485.57,134.23 L485.60,134.23 L486.17,132.23 L486.74,127.04 L487.31,119.35 L487.88,109.85 L488.45,99.23
+		L489.02,88.17 L489.59,77.37 L490.15,67.51 L490.72,59.28 L491.29,53.38 L491.86,50.47 L492.04,50.29 L492.43,50.92
+		L493.00,53.79 L493.57,58.55 L494.14,64.74 L494.71,71.88 L495.28,79.48 L495.85,87.08 L496.42,94.19 L496.99,100.33
+		L497.55,105.05 L498.12,107.84 L498.50,108.41 L498.69,108.37 L499.26,107.93 L499.83,107.02 L500.40,105.71 L500.97,104.07
+		L501.54,102.17 L502.11,100.08 L502.68,97.85 L503.25,95.57 L503.82,93.30 L504.39,91.11 L504.95,89.06 L504.96,89.04
+		L505.52,86.88 L506.09,84.30 L506.66,81.44 L507.23,78.44 L507.80,75.40 L508.37,72.45 L508.94,69.71 L509.51,67.30
+		L510.08,65.34 L510.65,63.96 L511.22,63.26 L511.42,63.21 L511.79,63.42 L512.36,64.52 L512.92,66.43 L513.49,69.02
+		L514.06,72.13 L514.63,75.62 L515.20,79.33 L515.77,83.13 L516.34,86.86 L516.91,90.38 L517.48,93.53 L517.89,95.49
+		L518.05,96.22 L518.62,98.84 L519.19,101.56 L519.76,104.30 L520.32,107.03 L520.89,109.69 L521.46,112.23 L522.03,114.59
+		L522.60,116.72 L523.17,118.58 L523.74,120.11 L524.31,121.26 L524.35,121.32 L524.88,122.16 L525.45,123.03 L526.02,123.86
+		L526.59,124.64 L527.16,125.35 L527.72,126.00 L528.29,126.56 L528.86,127.03 L529.43,127.39 L530.00,127.64 L530.57,127.76
+		L530.81,127.78 L531.14,127.75 L531.71,127.58 L532.28,127.27 L532.85,126.84 L533.42,126.31 L533.99,125.69 L534.56,125.00
+		L535.13,124.26 L535.69,123.49 L536.26,122.70 L536.83,121.91 L537.27,121.32 L537.40,121.14 L537.97,120.16 L538.54,118.93
+		L539.11,117.53 L539.68,116.02 L540.25,114.47 L540.82,112.96 L541.39,111.56 L541.96,110.33 L542.53,109.35 L543.09,108.69
+		L543.66,108.41 L543.74,108.41 L544.23,108.68 L544.80,109.60 L545.37,111.04 L545.94,112.89 L546.51,115.04 L547.08,117.35
+		L547.65,119.71 L548.22,122.01 L548.79,124.12 L549.36,125.92 L549.93,127.30 L550.20,127.78 L550.49,128.22 L551.06,129.07
+		L551.63,129.89 L552.20,130.69 L552.77,131.43 L553.34,132.12 L553.91,132.73 L554.48,133.26 L555.05,133.68 L555.62,134.00
+		L556.19,134.18 L556.66,134.23 L556.76,134.23 L557.33,133.97 L557.90,133.38 L558.46,132.50 L559.03,131.39 L559.60,130.10
+		L560.17,128.68 L560.74,127.18 L561.31,125.67 L561.88,124.19 L562.45,122.79 L563.02,121.53 L563.12,121.32 L563.59,120.33
+		L564.16,118.97 L564.73,117.52 L565.30,116.01 L565.86,114.50 L566.43,113.05 L567.00,111.70 L567.57,110.52 L568.14,109.55
+		L568.71,108.85 L569.28,108.46 L569.58,108.41 L569.85,108.50 L570.42,109.29 L570.99,110.75 L571.56,112.72 L572.13,115.04
+		L572.70,117.55 L573.26,120.10 L573.83,122.52 L574.40,124.66 L574.97,126.35 L575.54,127.44 L576.05,127.78 L576.11,127.77
+		L576.68,127.59 L577.25,127.12 L577.82,126.40 L578.39,125.46 L578.96,124.33 L579.53,123.04 L580.10,121.62 L580.67,120.10
+		L581.23,118.52 L581.80,116.89 L582.37,115.25 L582.51,114.86 L582.94,113.37 L583.51,110.73 L584.08,107.49 L584.65,103.85
+		L585.22,99.98 L585.79,96.09 L586.36,92.35 L586.93,88.96 L587.50,86.11 L588.07,83.99 L588.63,82.78 L588.97,82.58
+		L589.20,82.70 L589.77,83.95 L590.34,86.32 L590.91,89.56 L591.48,93.41 L592.05,97.58 L592.62,101.83 L593.19,105.88
+		L593.76,109.48 L594.33,112.35 L594.90,114.23 L595.43,114.86 L595.47,114.86 L596.03,114.08 L596.60,112.07 L597.17,109.10
+		L597.74,105.44 L598.31,101.35 L598.88,97.10 L599.45,92.95 L600.02,89.16 L600.59,86.00 L601.16,83.74 L601.73,82.64
+		L601.90,82.58 L602.30,83.22 L602.87,86.12 L603.44,90.90 L604.00,97.10 L604.57,104.25 L605.14,111.85 L605.71,119.44
+		L606.28,126.55 L606.85,132.68 L607.42,137.37 L607.99,140.14 L608.36,140.69 L608.56,140.56 L609.13,138.79 L609.70,135.22
+		L610.27,130.13 L610.84,123.81 L611.40,116.56 L611.97,108.66 L612.54,100.40 L613.11,92.08 L613.68,83.99 L614.25,76.42
+		L614.54,72.92 L614.82,69.66  '/></g>
 	</g>
 <g fill="none" color="white" stroke="rgb(148,   0, 211)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
diff -pruN 6.16-2/Documentation/plot-patches.svg 6.17-1/Documentation/plot-patches.svg
--- 6.16-2/Documentation/plot-patches.svg	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/plot-patches.svg	2025-09-29 14:59:32.000000000 +0000
@@ -150,11 +150,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M118.93,244.00 L118.93,63.01 M118.93,27.01 L118.93,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M118.20,244.00 L118.20,63.01 M118.20,27.01 L118.20,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M118.93,244.00 L118.93,235.00 M118.93,18.01 L118.93,27.01  '/>	<g transform="translate(118.93,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M118.20,244.00 L118.20,235.00 M118.20,18.01 L118.20,27.01  '/>	<g transform="translate(118.20,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >3.0</tspan></text>
 	</g>
 </g>
@@ -163,11 +163,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M247.73,244.00 L247.73,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M245.54,244.00 L245.54,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M247.73,244.00 L247.73,235.00 M247.73,18.01 L247.73,27.01  '/>	<g transform="translate(247.73,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M245.54,244.00 L245.54,235.00 M245.54,18.01 L245.54,27.01  '/>	<g transform="translate(245.54,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >4.0</tspan></text>
 	</g>
 </g>
@@ -176,11 +176,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M382.98,244.00 L382.98,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M379.24,244.00 L379.24,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M382.98,244.00 L382.98,235.00 M382.98,18.01 L382.98,27.01  '/>	<g transform="translate(382.98,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M379.24,244.00 L379.24,235.00 M379.24,18.01 L379.24,27.01  '/>	<g transform="translate(379.24,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >5.0</tspan></text>
 	</g>
 </g>
@@ -189,11 +189,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M511.78,244.00 L511.78,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M506.58,244.00 L506.58,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M511.78,244.00 L511.78,235.00 M511.78,18.01 L511.78,27.01  '/>	<g transform="translate(511.78,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M506.58,244.00 L506.58,235.00 M506.58,18.01 L506.58,27.01  '/>	<g transform="translate(506.58,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >6.0</tspan></text>
 	</g>
 </g>
@@ -207,7 +207,7 @@
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 	<path stroke='black'  d='M614.82,244.00 L614.82,235.00 M614.82,18.01 L614.82,27.01  '/>	<g transform="translate(614.82,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
-		<text><tspan font-family="Arial" >6.16</tspan></text>
+		<text><tspan font-family="Arial" >6.17</tspan></text>
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
@@ -231,143 +231,143 @@
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='rgb(148,   0, 211)'  d='M130.04,36.01 L172.60,36.01 M54.53,191.27 L55.09,191.41 L55.65,191.57 L56.21,191.74 L56.77,191.91 L57.33,192.09
-		L57.90,192.25 L58.46,192.41 L59.02,192.54 L59.58,192.65 L60.14,192.73 L60.70,192.77 L60.97,192.78 L61.26,192.66
-		L61.82,191.80 L62.38,190.27 L62.94,188.22 L63.50,185.81 L64.06,183.20 L64.63,180.56 L65.19,178.04 L65.75,175.81
-		L66.31,174.02 L66.87,172.84 L67.41,172.44 L67.43,172.44 L67.99,173.33 L68.55,175.69 L69.11,179.20 L69.67,183.55
-		L70.23,188.42 L70.79,193.52 L71.36,198.53 L71.92,203.13 L72.48,207.03 L73.04,209.90 L73.60,211.43 L73.85,211.61
-		L74.16,211.55 L74.72,211.20 L75.28,210.56 L75.84,209.72 L76.40,208.73 L76.96,207.67 L77.52,206.59 L78.09,205.57
-		L78.65,204.67 L79.21,203.95 L79.77,203.48 L80.29,203.32 L80.33,203.32 L80.89,203.35 L81.45,203.43 L82.01,203.56
-		L82.57,203.74 L83.13,203.96 L83.69,204.23 L84.26,204.54 L84.82,204.88 L85.38,205.27 L85.94,205.69 L86.50,206.14
-		L86.73,206.33 L87.06,206.84 L87.62,208.62 L88.18,211.37 L88.74,214.83 L89.30,218.77 L89.86,222.94 L90.42,227.12
-		L90.99,231.04 L91.55,234.48 L92.11,237.19 L92.67,238.94 L93.17,239.48 L93.23,239.47 L93.79,238.06 L94.35,234.62
-		L94.91,229.57 L95.47,223.35 L96.03,216.35 L96.59,209.02 L97.15,201.76 L97.72,195.01 L98.28,189.17 L98.84,184.68
-		L99.40,181.96 L99.61,181.48 L99.96,180.98 L100.52,180.30 L101.08,179.73 L101.64,179.26 L102.20,178.86 L102.76,178.50
-		L103.32,178.18 L103.88,177.85 L104.45,177.51 L105.01,177.12 L105.57,176.67 L106.05,176.20 L106.13,176.12 L106.69,175.53
-		L107.25,174.90 L107.81,174.24 L108.37,173.55 L108.93,172.82 L109.49,172.05 L110.05,171.24 L110.62,170.38 L111.18,169.48
-		L111.74,168.53 L112.30,167.52 L112.49,167.16 L112.86,166.38 L113.42,164.87 L113.98,163.06 L114.54,161.05 L115.10,158.93
-		L115.66,156.80 L116.22,154.75 L116.78,152.88 L117.35,151.28 L117.91,150.06 L118.47,149.29 L118.93,149.08 L119.03,149.09
-		L119.59,149.52 L120.15,150.50 L120.71,151.90 L121.27,153.61 L121.83,155.50 L122.39,157.46 L122.95,159.38 L123.51,161.12
-		L124.08,162.57 L124.64,163.61 L125.20,164.12 L125.37,164.15 L125.76,163.54 L126.32,160.71 L126.88,155.99 L127.44,149.85
-		L128.00,142.75 L128.56,135.17 L129.12,127.56 L129.68,120.39 L130.24,114.13 L130.81,109.24 L131.37,106.19 L131.81,105.39
-		L131.93,105.43 L132.49,106.53 L133.05,108.98 L133.61,112.51 L134.17,116.83 L134.73,121.67 L135.29,126.77 L135.85,131.84
-		L136.41,136.62 L136.98,140.83 L137.54,144.19 L138.10,146.44 L138.25,146.82 L138.66,147.65 L139.22,148.68 L139.78,149.57
-		L140.34,150.36 L140.90,151.06 L141.46,151.70 L142.02,152.29 L142.58,152.85 L143.14,153.42 L143.71,153.99 L144.27,154.61
-		L144.69,155.11 L144.83,155.28 L145.39,155.99 L145.95,156.73 L146.51,157.47 L147.07,158.22 L147.63,158.96 L148.19,159.68
-		L148.75,160.37 L149.31,161.01 L149.87,161.59 L150.44,162.11 L151.00,162.55 L151.13,162.64 L151.56,162.93 L152.12,163.31
-		L152.68,163.68 L153.24,164.04 L153.80,164.38 L154.36,164.69 L154.92,164.98 L155.48,165.22 L156.04,165.41 L156.60,165.56
-		L157.17,165.64 L157.57,165.66 L157.73,165.60 L158.29,164.58 L158.85,162.43 L159.41,159.38 L159.97,155.67 L160.53,151.52
-		L161.09,147.17 L161.65,142.85 L162.21,138.80 L162.77,135.23 L163.34,132.39 L163.90,130.50 L164.01,130.25 L164.46,129.41
-		L165.02,128.38 L165.58,127.40 L166.14,126.49 L166.70,125.65 L167.26,124.90 L167.82,124.24 L168.38,123.68 L168.94,123.24
-		L169.50,122.93 L170.07,122.75 L170.45,122.72 L170.63,122.72 L171.19,122.73 L171.75,122.75 L172.31,122.78 L172.87,122.83
-		L173.43,122.89 L173.99,122.95 L174.55,123.03 L175.11,123.12 L175.67,123.22 L176.23,123.33 L176.80,123.45 L176.89,123.47
-		L177.36,123.76 L177.92,124.54 L178.48,125.75 L179.04,127.30 L179.60,129.15 L180.16,131.21 L180.72,133.43 L181.28,135.73
-		L181.84,138.05 L182.40,140.33 L182.96,142.49 L183.33,143.81 L183.53,144.51 L184.09,146.80 L184.65,149.39 L185.21,152.18
-		L185.77,155.07 L186.33,157.93 L186.89,160.67 L187.45,163.17 L188.01,165.33 L188.57,167.04 L189.13,168.18 L189.70,168.66
-		L189.77,168.67 L190.26,167.97 L190.82,165.60 L191.38,161.88 L191.94,157.17 L192.50,151.80 L193.06,146.14 L193.62,140.51
-		L194.18,135.27 L194.74,130.77 L195.30,127.34 L195.86,125.35 L196.21,124.98 L196.43,125.06 L196.99,126.03 L197.55,127.91
-		L198.11,130.49 L198.67,133.56 L199.23,136.92 L199.79,140.35 L200.35,143.65 L200.91,146.61 L201.47,149.01 L202.03,150.66
-		L202.59,151.34 L202.65,151.34 L203.16,150.72 L203.72,148.71 L204.28,145.60 L204.84,141.68 L205.40,137.23 L205.96,132.53
-		L206.52,127.88 L207.08,123.56 L207.64,119.86 L208.20,117.07 L208.76,115.46 L209.09,115.19 L209.32,115.22 L209.89,115.62
-		L210.45,116.38 L211.01,117.44 L211.57,118.76 L212.13,120.25 L212.69,121.85 L213.25,123.52 L213.81,125.17 L214.37,126.74
-		L214.93,128.18 L215.49,129.42 L215.53,129.50 L216.06,130.46 L216.62,131.36 L217.18,132.17 L217.74,132.93 L218.30,133.68
-		L218.86,134.44 L219.42,135.27 L219.98,136.19 L220.54,137.24 L221.10,138.47 L221.66,139.90 L221.97,140.80 L222.22,141.81
-		L222.79,145.73 L223.35,151.56 L223.91,158.82 L224.47,167.02 L225.03,175.70 L225.59,184.36 L226.15,192.55 L226.71,199.76
-		L227.27,205.54 L227.83,209.40 L228.39,210.85 L228.41,210.85 L228.95,209.27 L229.52,204.70 L230.08,197.75 L230.64,189.07
-		L231.20,179.27 L231.76,168.99 L232.32,158.85 L232.88,149.48 L233.44,141.50 L234.00,135.54 L234.56,132.23 L234.85,131.76
-		L235.12,132.02 L235.68,134.07 L236.25,137.82 L236.81,142.87 L237.37,148.83 L237.93,155.29 L238.49,161.85 L239.05,168.12
-		L239.61,173.69 L240.17,178.17 L240.73,181.15 L241.01,181.95 L241.29,182.23 L241.85,182.08 L242.42,181.66 L242.98,181.01
-		L243.54,180.15 L244.10,179.13 L244.66,177.98 L245.22,176.74 L245.78,175.43 L246.34,174.10 L246.90,172.79 L247.46,171.52
-		L247.73,170.93 L248.02,170.27 L248.58,168.74 L249.15,166.97 L249.71,165.03 L250.27,163.02 L250.83,161.00 L251.39,159.07
-		L251.95,157.31 L252.51,155.80 L253.07,154.62 L253.63,153.86 L254.17,153.60 L254.19,153.60 L254.75,153.61 L255.31,153.63
-		L255.88,153.66 L256.44,153.70 L257.00,153.75 L257.56,153.82 L258.12,153.89 L258.68,153.98 L259.24,154.07 L259.80,154.18
-		L260.36,154.30 L260.61,154.36 L260.92,154.65 L261.48,156.20 L262.04,158.83 L262.61,162.30 L263.17,166.33 L263.73,170.66
-		L264.29,175.03 L264.85,179.17 L265.41,182.83 L265.97,185.74 L266.53,187.63 L267.05,188.26 L267.09,188.25 L267.65,187.08
-		L268.21,184.12 L268.78,179.77 L269.34,174.38 L269.90,168.37 L270.46,162.09 L271.02,155.94 L271.58,150.29 L272.14,145.54
-		L272.70,142.06 L273.26,140.23 L273.49,140.04 L273.82,140.08 L274.38,140.28 L274.94,140.65 L275.51,141.17 L276.07,141.83
-		L276.63,142.59 L277.19,143.44 L277.75,144.37 L278.31,145.35 L278.87,146.37 L279.43,147.41 L279.93,148.33 L279.99,148.44
-		L280.55,149.78 L281.11,151.57 L281.67,153.68 L282.24,156.00 L282.80,158.43 L283.36,160.83 L283.92,163.11 L284.48,165.14
-		L285.04,166.81 L285.60,168.01 L286.16,168.62 L286.37,168.67 L286.72,168.28 L287.28,166.18 L287.84,162.58 L288.40,157.85
-		L288.97,152.34 L289.53,146.42 L290.09,140.46 L290.65,134.82 L291.21,129.86 L291.77,125.95 L292.33,123.46 L292.81,122.72
-		L292.89,122.73 L293.45,123.37 L294.01,124.91 L294.57,127.22 L295.14,130.17 L295.70,133.60 L296.26,137.40 L296.82,141.42
-		L297.38,145.52 L297.94,149.58 L298.50,153.45 L299.06,157.00 L299.25,158.12 L299.62,160.33 L300.18,164.10 L300.74,168.22
-		L301.30,172.54 L301.87,176.91 L302.43,181.16 L302.99,185.15 L303.55,188.73 L304.11,191.73 L304.67,194.01 L305.23,195.41
-		L305.69,195.79 L305.79,195.78 L306.35,195.30 L306.91,194.18 L307.47,192.47 L308.03,190.25 L308.60,187.59 L309.16,184.55
-		L309.72,181.20 L310.28,177.61 L310.84,173.85 L311.40,170.00 L311.96,166.11 L312.13,164.90 L312.52,161.72 L313.08,155.52
-		L313.64,147.82 L314.20,139.08 L314.76,129.75 L315.33,120.29 L315.89,111.14 L316.45,102.75 L317.01,95.58 L317.57,90.08
-		L318.13,86.69 L318.57,85.81 L318.69,85.90 L319.25,88.71 L319.81,94.90 L320.37,103.74 L320.93,114.46 L321.50,126.33
-		L322.06,138.60 L322.62,150.52 L323.18,161.35 L323.74,170.34 L324.30,176.74 L324.86,179.81 L325.01,179.97 L325.42,179.54
-		L325.98,177.68 L326.54,174.62 L327.10,170.65 L327.66,166.09 L328.23,161.22 L328.79,156.35 L329.35,151.77 L329.91,147.78
-		L330.47,144.68 L331.03,142.78 L331.45,142.30 L331.59,142.31 L332.15,142.35 L332.71,142.45 L333.27,142.60 L333.83,142.78
-		L334.39,142.99 L334.96,143.23 L335.52,143.49 L336.08,143.75 L336.64,144.01 L337.20,144.27 L337.76,144.51 L337.90,144.56
-		L338.32,144.75 L338.88,145.04 L339.44,145.36 L340.00,145.70 L340.56,146.05 L341.12,146.40 L341.69,146.72 L342.25,147.02
-		L342.81,147.26 L343.37,147.44 L343.93,147.55 L344.34,147.58 L344.49,147.51 L345.05,146.12 L345.61,143.21 L346.17,139.12
-		L346.73,134.16 L347.29,128.66 L347.85,122.95 L348.42,117.34 L348.98,112.18 L349.54,107.78 L350.10,104.46 L350.66,102.57
-		L350.78,102.38 L351.22,101.85 L351.78,101.26 L352.34,100.77 L352.90,100.34 L353.46,99.97 L354.02,99.64 L354.59,99.34
-		L355.15,99.05 L355.71,98.76 L356.27,98.46 L356.83,98.12 L357.22,97.86 L357.39,97.73 L357.95,97.29 L358.51,96.80
-		L359.07,96.29 L359.63,95.77 L360.19,95.25 L360.75,94.76 L361.32,94.32 L361.88,93.93 L362.44,93.63 L363.00,93.43
-		L363.56,93.34 L363.66,93.34 L364.12,93.37 L364.68,93.50 L365.24,93.71 L365.80,94.00 L366.36,94.38 L366.92,94.83
-		L367.48,95.35 L368.05,95.94 L368.61,96.60 L369.17,97.31 L369.73,98.08 L370.10,98.61 L370.29,99.01 L370.85,101.34
-		L371.41,105.14 L371.97,110.05 L372.53,115.73 L373.09,121.83 L373.65,127.99 L374.21,133.88 L374.78,139.12 L375.34,143.39
-		L375.90,146.31 L376.46,147.56 L376.54,147.58 L377.02,147.38 L377.58,146.73 L378.14,145.70 L378.70,144.40 L379.26,142.92
-		L379.82,141.36 L380.38,139.81 L380.95,138.36 L381.51,137.12 L382.07,136.18 L382.63,135.63 L382.98,135.52 L383.19,135.59
-		L383.75,136.36 L384.31,137.87 L384.87,139.93 L385.43,142.39 L385.99,145.07 L386.55,147.82 L387.11,150.46 L387.68,152.83
-		L388.24,154.75 L388.80,156.07 L389.36,156.61 L389.42,156.62 L389.92,154.80 L390.48,148.99 L391.04,139.99 L391.60,128.63
-		L392.16,115.74 L392.72,102.14 L393.28,88.68 L393.84,76.17 L394.41,65.45 L394.97,57.35 L395.53,52.70 L395.86,51.91
-		L396.09,52.28 L396.65,56.03 L397.21,63.16 L397.77,72.89 L398.33,84.44 L398.89,97.03 L399.45,109.88 L400.01,122.20
-		L400.57,133.21 L401.14,142.13 L401.70,148.18 L402.26,150.58 L402.30,150.59 L402.82,150.02 L403.38,148.28 L403.94,145.60
-		L404.50,142.23 L405.06,138.40 L405.62,134.36 L406.18,130.34 L406.74,126.58 L407.31,123.33 L407.87,120.82 L408.43,119.29
-		L408.74,118.95 L408.99,118.84 L409.55,118.61 L410.11,118.40 L410.67,118.20 L411.23,118.03 L411.79,117.88 L412.35,117.75
-		L412.91,117.64 L413.47,117.56 L414.04,117.50 L414.60,117.46 L415.16,117.45 L415.18,117.45 L415.72,118.26 L416.28,120.61
-		L416.84,124.18 L417.40,128.65 L417.96,133.69 L418.52,138.98 L419.08,144.19 L419.64,149.01 L420.20,153.12 L420.77,156.18
-		L421.33,157.88 L421.62,158.12 L421.89,157.71 L422.45,154.44 L423.01,148.45 L423.57,140.38 L424.13,130.86 L424.69,120.54
-		L425.25,110.06 L425.81,100.05 L426.37,91.15 L426.93,84.00 L427.50,79.25 L427.78,77.97 L428.06,77.52 L428.62,78.54
-		L429.18,81.34 L429.74,85.55 L430.30,90.79 L430.86,96.68 L431.42,102.85 L431.98,108.93 L432.54,114.53 L433.10,119.28
-		L433.67,122.81 L434.23,124.73 L434.50,124.98 L434.79,124.85 L435.35,123.90 L435.91,122.20 L436.47,119.92 L437.03,117.24
-		L437.59,114.34 L438.15,111.40 L438.71,108.60 L439.27,106.12 L439.83,104.14 L440.40,102.83 L440.94,102.38 L440.96,102.38
-		L441.52,102.40 L442.08,102.44 L442.64,102.51 L443.20,102.59 L443.76,102.69 L444.32,102.79 L444.88,102.88 L445.44,102.97
-		L446.00,103.04 L446.56,103.10 L447.13,103.13 L447.38,103.13 L447.69,102.92 L448.25,101.56 L448.81,99.14 L449.37,95.92
-		L449.93,92.16 L450.49,88.10 L451.05,83.99 L451.61,80.08 L452.17,76.63 L452.73,73.88 L453.29,72.08 L453.82,71.49
-		L453.86,71.50 L454.42,71.88 L454.98,72.88 L455.54,74.41 L456.10,76.39 L456.66,78.74 L457.22,81.38 L457.78,84.22
-		L458.34,87.19 L458.90,90.19 L459.46,93.15 L460.03,95.99 L460.26,97.11 L460.59,98.73 L461.15,101.79 L461.71,105.14
-		L462.27,108.70 L462.83,112.38 L463.39,116.12 L463.95,119.82 L464.51,123.40 L465.07,126.80 L465.63,129.91 L466.19,132.67
-		L466.70,134.77 L466.76,134.99 L467.32,137.16 L467.88,139.36 L468.44,141.54 L469.00,143.65 L469.56,145.66 L470.12,147.52
-		L470.68,149.17 L471.24,150.57 L471.80,151.68 L472.36,152.44 L472.92,152.82 L473.14,152.85 L473.49,152.81 L474.05,152.60
-		L474.61,152.21 L475.17,151.67 L475.73,150.98 L476.29,150.17 L476.85,149.26 L477.41,148.25 L477.97,147.17 L478.53,146.03
-		L479.09,144.85 L479.58,143.81 L479.65,143.64 L480.22,141.86 L480.78,139.35 L481.34,136.28 L481.90,132.84 L482.46,129.21
-		L483.02,125.58 L483.58,122.12 L484.14,119.02 L484.70,116.47 L485.26,114.65 L485.82,113.75 L486.02,113.68 L486.39,113.78
-		L486.95,114.30 L487.51,115.19 L488.07,116.38 L488.63,117.80 L489.19,119.38 L489.75,121.05 L490.31,122.73 L490.87,124.35
-		L491.43,125.84 L491.99,127.13 L492.46,127.99 L492.55,128.15 L493.12,129.10 L493.68,130.07 L494.24,131.06 L494.80,132.02
-		L495.36,132.95 L495.92,133.81 L496.48,134.58 L497.04,135.23 L497.60,135.75 L498.16,136.10 L498.72,136.27 L498.90,136.28
-		L499.28,135.82 L499.85,133.67 L500.41,130.10 L500.97,125.46 L501.53,120.09 L502.09,114.36 L502.65,108.60 L503.21,103.18
-		L503.77,98.44 L504.33,94.75 L504.89,92.44 L505.34,91.83 L505.45,91.84 L506.01,92.07 L506.58,92.56 L507.14,93.27
-		L507.70,94.13 L508.26,95.08 L508.82,96.06 L509.38,97.01 L509.94,97.88 L510.50,98.60 L511.06,99.11 L511.62,99.35
-		L511.78,99.37 L512.18,99.21 L512.75,98.52 L513.31,97.33 L513.87,95.70 L514.43,93.70 L514.99,91.39 L515.55,88.84
-		L516.11,86.10 L516.67,83.25 L517.23,80.33 L517.79,77.42 L518.22,75.26 L518.35,74.55 L518.91,70.89 L519.48,66.31
-		L520.04,61.06 L520.60,55.41 L521.16,49.61 L521.72,43.93 L522.28,38.62 L522.84,33.95 L523.40,30.17 L523.96,27.55
-		L524.52,26.35 L524.66,26.30 L525.08,27.61 L525.64,32.91 L526.21,41.52 L526.77,52.61 L527.33,65.34 L527.89,78.89
-		L528.45,92.42 L529.01,105.11 L529.57,116.12 L530.13,124.63 L530.69,129.81 L531.10,131.00 L531.25,130.98 L531.81,130.54
-		L532.37,129.58 L532.94,128.18 L533.50,126.40 L534.06,124.30 L534.62,121.96 L535.18,119.44 L535.74,116.81 L536.30,114.13
-		L536.86,111.48 L537.42,108.92 L537.54,108.41 L537.98,106.20 L538.54,102.80 L539.11,98.87 L539.67,94.61 L540.23,90.19
-		L540.79,85.82 L541.35,81.67 L541.91,77.93 L542.47,74.79 L543.03,72.43 L543.59,71.04 L543.98,70.74 L544.15,70.87
-		L544.71,72.83 L545.27,76.84 L545.84,82.42 L546.40,89.12 L546.96,96.48 L547.52,104.04 L548.08,111.34 L548.64,117.91
-		L549.20,123.30 L549.76,127.05 L550.32,128.71 L550.42,128.75 L550.88,128.39 L551.44,127.11 L552.00,125.08 L552.57,122.50
-		L553.13,119.55 L553.69,116.42 L554.25,113.31 L554.81,110.41 L555.37,107.91 L555.93,106.00 L556.49,104.87 L556.86,104.64
-		L557.05,104.74 L557.61,106.10 L558.17,108.79 L558.73,112.52 L559.30,116.98 L559.86,121.86 L560.42,126.87 L560.98,131.69
-		L561.54,136.02 L562.10,139.56 L562.66,142.00 L563.22,143.04 L563.30,143.06 L563.78,142.94 L564.34,142.52 L564.90,141.86
-		L565.47,140.99 L566.03,139.99 L566.59,138.88 L567.15,137.73 L567.71,136.59 L568.27,135.49 L568.83,134.51 L569.39,133.68
-		L569.74,133.26 L569.95,133.05 L570.51,132.53 L571.07,132.08 L571.63,131.69 L572.20,131.34 L572.76,130.99 L573.32,130.64
-		L573.88,130.26 L574.44,129.83 L575.00,129.34 L575.56,128.76 L576.12,128.07 L576.18,127.99 L576.68,126.97 L577.24,125.12
-		L577.80,122.69 L578.36,119.85 L578.93,116.76 L579.49,113.60 L580.05,110.54 L580.61,107.73 L581.17,105.35 L581.73,103.57
-		L582.29,102.55 L582.62,102.38 L582.85,102.49 L583.41,103.64 L583.97,105.81 L584.53,108.79 L585.09,112.31 L585.66,116.16
-		L586.22,120.08 L586.78,123.84 L587.34,127.20 L587.90,129.93 L588.46,131.78 L589.02,132.51 L589.06,132.51 L589.58,132.40
-		L590.14,132.06 L590.70,131.53 L591.26,130.88 L591.83,130.13 L592.39,129.35 L592.95,128.58 L593.51,127.86 L594.07,127.25
-		L594.63,126.79 L595.19,126.53 L595.50,126.49 L595.75,126.52 L596.31,126.78 L596.87,127.28 L597.43,127.95 L597.99,128.75
-		L598.56,129.62 L599.12,130.50 L599.68,131.34 L600.24,132.09 L600.80,132.70 L601.36,133.11 L601.92,133.26 L601.94,133.26
-		L602.48,132.80 L603.04,131.41 L603.60,129.27 L604.16,126.50 L604.72,123.27 L605.29,119.71 L605.85,115.97 L606.41,112.20
-		L606.97,108.55 L607.53,105.17 L608.09,102.20 L608.38,100.87 L608.65,99.72 L609.21,97.41 L609.77,95.19 L610.33,93.04
-		L610.89,90.95 L611.45,88.90 L612.02,86.89 L612.58,84.88 L613.14,82.89 L613.70,80.88 L614.26,78.84 L614.54,77.81
-		L614.82,76.77  '/></g>
+	<path stroke='rgb(148,   0, 211)'  d='M130.04,36.01 L172.60,36.01 M54.53,191.27 L55.09,191.41 L55.65,191.57 L56.21,191.74 L56.77,191.92 L57.33,192.10
+		L57.90,192.26 L58.46,192.42 L59.02,192.55 L59.58,192.66 L60.14,192.74 L60.70,192.77 L60.90,192.78 L61.26,192.58
+		L61.82,191.61 L62.38,189.97 L62.94,187.83 L63.50,185.34 L64.06,182.68 L64.63,180.02 L65.19,177.52 L65.75,175.35
+		L66.31,173.67 L66.87,172.66 L67.26,172.44 L67.43,172.51 L67.99,173.85 L68.55,176.59 L69.11,180.42 L69.67,185.02
+		L70.23,190.05 L70.79,195.22 L71.36,200.18 L71.92,204.62 L72.48,208.22 L73.04,210.65 L73.60,211.61 L73.63,211.61
+		L74.16,211.45 L74.72,210.96 L75.28,210.23 L75.84,209.30 L76.40,208.26 L76.96,207.17 L77.52,206.10 L78.09,205.11
+		L78.65,204.28 L79.21,203.67 L79.77,203.35 L80.00,203.32 L80.33,203.33 L80.89,203.39 L81.45,203.50 L82.01,203.66
+		L82.57,203.86 L83.13,204.11 L83.69,204.41 L84.26,204.74 L84.82,205.12 L85.38,205.53 L85.94,205.97 L86.36,206.33
+		L86.50,206.49 L87.06,207.91 L87.62,210.40 L88.18,213.69 L88.74,217.56 L89.30,221.73 L89.86,225.98 L90.42,230.04
+		L90.99,233.67 L91.55,236.62 L92.11,238.63 L92.67,239.47 L92.73,239.48 L93.23,238.53 L93.79,235.43 L94.35,230.60
+		L94.91,224.49 L95.47,217.51 L96.03,210.12 L96.59,202.74 L97.15,195.82 L97.72,189.78 L98.28,185.07 L98.84,182.13
+		L99.10,181.48 L99.40,181.04 L99.96,180.34 L100.52,179.76 L101.08,179.28 L101.64,178.87 L102.20,178.51 L102.76,178.18
+		L103.32,177.85 L103.88,177.50 L104.45,177.11 L105.01,176.65 L105.47,176.20 L105.57,176.10 L106.13,175.49 L106.69,174.85
+		L107.25,174.19 L107.81,173.48 L108.37,172.74 L108.93,171.96 L109.49,171.13 L110.05,170.26 L110.62,169.34 L111.18,168.37
+		L111.74,167.34 L111.83,167.16 L112.30,166.13 L112.86,164.54 L113.42,162.66 L113.98,160.59 L114.54,158.44 L115.10,156.29
+		L115.66,154.26 L116.22,152.43 L116.78,150.90 L117.35,149.79 L117.91,149.17 L118.20,149.08 L118.47,149.16 L119.03,149.78
+		L119.59,150.92 L120.15,152.46 L120.71,154.27 L121.27,156.22 L121.83,158.20 L122.39,160.08 L122.95,161.74 L123.51,163.05
+		L124.08,163.90 L124.57,164.15 L124.64,164.13 L125.20,162.53 L125.76,158.74 L126.32,153.24 L126.88,146.51 L127.44,139.04
+		L128.00,131.29 L128.56,123.77 L129.12,116.94 L129.68,111.29 L130.24,107.30 L130.81,105.46 L130.93,105.39 L131.37,105.88
+		L131.93,107.82 L132.49,110.98 L133.05,115.06 L133.61,119.79 L134.17,124.88 L134.73,130.05 L135.29,135.02 L135.85,139.50
+		L136.41,143.22 L136.98,145.88 L137.30,146.82 L137.54,147.32 L138.10,148.40 L138.66,149.33 L139.22,150.16 L139.78,150.89
+		L140.34,151.55 L140.90,152.16 L141.46,152.73 L142.02,153.30 L142.58,153.88 L143.14,154.49 L143.67,155.11 L143.71,155.16
+		L144.27,155.87 L144.83,156.61 L145.39,157.37 L145.95,158.13 L146.51,158.88 L147.07,159.61 L147.63,160.30 L148.19,160.96
+		L148.75,161.55 L149.31,162.08 L149.87,162.53 L150.03,162.64 L150.44,162.92 L151.00,163.30 L151.56,163.67 L152.12,164.04
+		L152.68,164.38 L153.24,164.70 L153.80,164.98 L154.36,165.23 L154.92,165.42 L155.48,165.56 L156.04,165.64 L156.40,165.66
+		L156.60,165.56 L157.17,164.40 L157.73,162.12 L158.29,158.94 L158.85,155.11 L159.41,150.88 L159.97,146.47 L160.53,142.13
+		L161.09,138.10 L161.65,134.61 L162.21,131.91 L162.77,130.25 L162.77,130.24 L163.34,129.16 L163.90,128.14 L164.46,127.16
+		L165.02,126.26 L165.58,125.43 L166.14,124.70 L166.70,124.06 L167.26,123.53 L167.82,123.13 L168.38,122.86 L168.94,122.73
+		L169.13,122.72 L169.50,122.72 L170.07,122.74 L170.63,122.76 L171.19,122.80 L171.75,122.85 L172.31,122.91 L172.87,122.99
+		L173.43,123.07 L173.99,123.16 L174.55,123.27 L175.11,123.39 L175.50,123.47 L175.67,123.54 L176.23,124.09 L176.80,125.10
+		L177.36,126.51 L177.92,128.25 L178.48,130.24 L179.04,132.42 L179.60,134.72 L180.16,137.07 L180.72,139.40 L181.28,141.64
+		L181.84,143.72 L181.87,143.81 L182.40,145.89 L182.96,148.41 L183.53,151.17 L184.09,154.07 L184.65,156.98 L185.21,159.81
+		L185.77,162.43 L186.33,164.73 L186.89,166.60 L187.45,167.93 L188.01,168.61 L188.24,168.67 L188.57,168.31 L189.13,166.30
+		L189.70,162.84 L190.26,158.26 L190.82,152.95 L191.38,147.25 L191.94,141.53 L192.50,136.13 L193.06,131.43 L193.62,127.77
+		L194.18,125.53 L194.60,124.98 L194.74,125.02 L195.30,125.87 L195.86,127.68 L196.43,130.22 L196.99,133.30 L197.55,136.68
+		L198.11,140.15 L198.67,143.50 L199.23,146.51 L199.79,148.97 L200.35,150.65 L200.91,151.34 L200.97,151.34 L201.47,150.70
+		L202.03,148.65 L202.59,145.48 L203.16,141.48 L203.72,136.96 L204.28,132.21 L204.84,127.52 L205.40,123.19 L205.96,119.53
+		L206.52,116.81 L207.08,115.35 L207.34,115.19 L207.64,115.25 L208.20,115.71 L208.76,116.53 L209.32,117.65 L209.89,119.02
+		L210.45,120.55 L211.01,122.20 L211.57,123.88 L212.13,125.54 L212.69,127.11 L213.25,128.52 L213.70,129.50 L213.81,129.71
+		L214.37,130.72 L214.93,131.60 L215.49,132.41 L216.06,133.17 L216.62,133.92 L217.18,134.71 L217.74,135.57 L218.30,136.54
+		L218.86,137.67 L219.42,138.98 L219.98,140.53 L220.07,140.80 L220.54,143.13 L221.10,147.94 L221.66,154.50 L222.22,162.31
+		L222.79,170.88 L223.35,179.71 L223.91,188.31 L224.47,196.18 L225.03,202.83 L225.59,207.76 L226.15,210.48 L226.44,210.85
+		L226.71,210.43 L227.27,207.13 L227.83,201.12 L228.39,193.04 L228.95,183.54 L229.52,173.27 L230.08,162.87 L230.64,153.01
+		L231.20,144.32 L231.76,137.45 L232.32,133.06 L232.80,131.76 L232.88,131.78 L233.44,133.17 L234.00,136.45 L234.56,141.19
+		L235.12,146.98 L235.68,153.41 L236.25,160.06 L236.81,166.52 L237.37,172.37 L237.93,177.21 L238.49,180.62 L239.05,182.18
+		L239.17,182.23 L239.61,182.14 L240.17,181.76 L240.73,181.14 L241.29,180.31 L241.85,179.31 L242.42,178.16 L242.98,176.91
+		L243.54,175.60 L244.10,174.26 L244.66,172.92 L245.22,171.63 L245.54,170.93 L245.78,170.38 L246.34,168.86 L246.90,167.08
+		L247.46,165.12 L248.02,163.09 L248.58,161.05 L249.15,159.09 L249.71,157.31 L250.27,155.78 L250.83,154.60 L251.39,153.84
+		L251.90,153.60 L251.95,153.60 L252.51,153.61 L253.07,153.63 L253.63,153.66 L254.19,153.70 L254.75,153.76 L255.31,153.82
+		L255.88,153.90 L256.44,153.99 L257.00,154.09 L257.56,154.20 L258.12,154.32 L258.27,154.36 L258.68,154.84 L259.24,156.63
+		L259.80,159.49 L260.36,163.14 L260.92,167.31 L261.48,171.72 L262.04,176.11 L262.61,180.20 L263.17,183.72 L263.73,186.40
+		L264.29,187.96 L264.64,188.26 L264.85,188.10 L265.41,186.31 L265.97,182.81 L266.53,178.01 L267.09,172.29 L267.65,166.07
+		L268.21,159.72 L268.78,153.65 L269.34,148.25 L269.90,143.92 L270.46,141.05 L271.01,140.04 L271.02,140.04 L271.58,140.15
+		L272.14,140.43 L272.70,140.88 L273.26,141.47 L273.82,142.19 L274.38,143.01 L274.94,143.92 L275.51,144.89 L276.07,145.90
+		L276.63,146.94 L277.19,147.99 L277.37,148.33 L277.75,149.15 L278.31,150.78 L278.87,152.80 L279.43,155.08 L279.99,157.50
+		L280.55,159.96 L281.11,162.32 L281.67,164.48 L282.24,166.30 L282.80,167.68 L283.36,168.50 L283.74,168.67 L283.92,168.56
+		L284.48,166.96 L285.04,163.70 L285.60,159.19 L286.16,153.78 L286.72,147.86 L287.28,141.81 L287.84,136.00 L288.40,130.81
+		L288.97,126.62 L289.53,123.79 L290.09,122.72 L290.11,122.72 L290.65,123.20 L291.21,124.63 L291.77,126.87 L292.33,129.76
+		L292.89,133.19 L293.45,136.99 L294.01,141.04 L294.57,145.19 L295.14,149.30 L295.70,153.23 L296.26,156.84 L296.47,158.12
+		L296.82,160.21 L297.38,164.01 L297.94,168.17 L298.50,172.54 L299.06,176.96 L299.62,181.26 L300.18,185.28 L300.74,188.88
+		L301.30,191.88 L301.87,194.13 L302.43,195.48 L302.84,195.79 L302.99,195.76 L303.55,195.22 L304.11,194.01 L304.67,192.22
+		L305.23,189.91 L305.79,187.16 L306.35,184.03 L306.91,180.59 L307.47,176.93 L308.03,173.11 L308.60,169.19 L309.16,165.26
+		L309.21,164.90 L309.72,160.45 L310.28,153.78 L310.84,145.69 L311.40,136.65 L311.96,127.13 L312.52,117.61 L313.08,108.53
+		L313.64,100.37 L314.20,93.61 L314.76,88.69 L315.33,86.09 L315.57,85.81 L315.89,86.46 L316.45,90.63 L317.01,97.98
+		L317.57,107.75 L318.13,119.14 L318.69,131.40 L319.25,143.76 L319.81,155.43 L320.37,165.65 L320.93,173.65 L321.50,178.65
+		L321.94,179.97 L322.06,179.93 L322.62,178.79 L323.18,176.26 L323.74,172.66 L324.30,168.30 L324.86,163.48 L325.42,158.51
+		L325.98,153.71 L326.54,149.39 L327.10,145.84 L327.66,143.38 L328.23,142.32 L328.31,142.30 L328.79,142.33 L329.35,142.41
+		L329.91,142.54 L330.47,142.71 L331.03,142.92 L331.59,143.15 L332.15,143.41 L332.71,143.67 L333.27,143.94 L333.83,144.20
+		L334.39,144.45 L334.68,144.56 L334.96,144.69 L335.52,144.97 L336.08,145.28 L336.64,145.63 L337.20,145.98 L337.76,146.33
+		L338.32,146.67 L338.88,146.97 L339.44,147.22 L340.00,147.42 L340.56,147.54 L341.04,147.58 L341.12,147.56 L341.69,146.36
+		L342.25,143.57 L342.81,139.54 L343.37,134.58 L343.93,129.05 L344.49,123.27 L345.05,117.59 L345.61,112.35 L346.17,107.87
+		L346.73,104.49 L347.29,102.57 L347.41,102.38 L347.85,101.84 L348.42,101.25 L348.98,100.75 L349.54,100.32 L350.10,99.95
+		L350.66,99.62 L351.22,99.32 L351.78,99.03 L352.34,98.73 L352.90,98.42 L353.46,98.07 L353.78,97.86 L354.02,97.68
+		L354.59,97.22 L355.15,96.72 L355.71,96.20 L356.27,95.67 L356.83,95.15 L357.39,94.66 L357.95,94.23 L358.51,93.86
+		L359.07,93.57 L359.63,93.40 L360.14,93.34 L360.19,93.34 L360.75,93.40 L361.32,93.55 L361.88,93.79 L362.44,94.11
+		L363.00,94.51 L363.56,94.99 L364.12,95.55 L364.68,96.17 L365.24,96.85 L365.80,97.60 L366.36,98.40 L366.51,98.61
+		L366.92,99.75 L367.48,102.75 L368.05,107.11 L368.61,112.46 L369.17,118.43 L369.73,124.68 L370.29,130.82 L370.85,136.51
+		L371.41,141.37 L371.97,145.06 L372.53,147.19 L372.88,147.58 L373.09,147.54 L373.65,147.08 L374.21,146.20 L374.78,145.00
+		L375.34,143.57 L375.90,142.01 L376.46,140.43 L377.02,138.91 L377.58,137.56 L378.14,136.48 L378.70,135.77 L379.24,135.52
+		L379.26,135.53 L379.82,136.02 L380.38,137.31 L380.95,139.24 L381.51,141.62 L382.07,144.29 L382.63,147.07 L383.19,149.78
+		L383.75,152.26 L384.31,154.34 L384.87,155.83 L385.43,156.57 L385.61,156.62 L385.99,155.53 L386.55,150.40 L387.11,141.85
+		L387.68,130.72 L388.24,117.88 L388.80,104.18 L389.36,90.49 L389.92,77.67 L390.48,66.56 L391.04,58.04 L391.60,52.96
+		L391.98,51.91 L392.16,52.15 L392.72,55.65 L393.28,62.67 L393.84,72.40 L394.41,84.02 L394.97,96.74 L395.53,109.73
+		L396.09,122.20 L396.65,133.33 L397.21,142.31 L397.77,148.33 L398.33,150.59 L398.34,150.59 L398.89,149.95 L399.45,148.12
+		L400.01,145.35 L400.57,141.89 L401.14,137.99 L401.70,133.89 L402.26,129.85 L402.82,126.10 L403.38,122.90 L403.94,120.50
+		L404.50,119.14 L404.71,118.95 L405.06,118.80 L405.62,118.57 L406.18,118.35 L406.74,118.16 L407.31,117.99 L407.87,117.85
+		L408.43,117.72 L408.99,117.62 L409.55,117.54 L410.11,117.48 L410.67,117.45 L411.08,117.45 L411.23,117.51 L411.79,118.86
+		L412.35,121.68 L412.91,125.64 L413.47,130.40 L414.04,135.62 L414.60,140.98 L415.16,146.14 L415.72,150.77 L416.28,154.53
+		L416.84,157.09 L417.40,158.12 L417.45,158.12 L417.96,156.62 L418.52,151.98 L419.08,144.87 L419.64,135.92 L420.20,125.82
+		L420.77,115.22 L421.33,104.78 L421.89,95.17 L422.45,87.03 L423.01,81.04 L423.57,77.86 L423.81,77.52 L424.13,77.87
+		L424.69,79.99 L425.25,83.71 L425.81,88.64 L426.37,94.39 L426.93,100.57 L427.50,106.80 L428.06,112.67 L428.62,117.82
+		L429.18,121.83 L429.74,124.33 L430.18,124.98 L430.30,124.95 L430.86,124.26 L431.42,122.73 L431.98,120.57 L432.54,117.94
+		L433.10,115.05 L433.67,112.07 L434.23,109.19 L434.79,106.60 L435.35,104.48 L435.91,103.01 L436.47,102.39 L436.55,102.38
+		L437.03,102.39 L437.59,102.43 L438.15,102.50 L438.71,102.58 L439.27,102.68 L439.83,102.77 L440.40,102.87 L440.96,102.96
+		L441.52,103.04 L442.08,103.10 L442.64,103.13 L442.91,103.13 L443.20,102.95 L443.76,101.60 L444.32,99.17 L444.88,95.92
+		L445.44,92.11 L446.00,88.00 L446.56,83.85 L447.13,79.91 L447.69,76.45 L448.25,73.72 L448.81,71.99 L449.28,71.49
+		L449.37,71.50 L449.93,71.96 L450.49,73.03 L451.05,74.64 L451.61,76.70 L452.17,79.12 L452.73,81.83 L453.29,84.73
+		L453.86,87.74 L454.42,90.77 L454.98,93.75 L455.54,96.58 L455.65,97.11 L456.10,99.41 L456.66,102.58 L457.22,106.02
+		L457.78,109.66 L458.34,113.41 L458.90,117.19 L459.46,120.91 L460.03,124.48 L460.59,127.83 L461.15,130.87 L461.71,133.52
+		L462.01,134.77 L462.27,135.76 L462.83,137.97 L463.39,140.19 L463.95,142.37 L464.51,144.48 L465.07,146.45 L465.63,148.24
+		L466.19,149.81 L466.76,151.10 L467.32,152.07 L467.88,152.67 L468.38,152.85 L468.44,152.85 L469.00,152.73 L469.56,152.42
+		L470.12,151.95 L470.68,151.32 L471.24,150.56 L471.80,149.68 L472.36,148.70 L472.92,147.64 L473.49,146.51 L474.05,145.33
+		L474.61,144.12 L474.75,143.81 L475.17,142.63 L475.73,140.35 L476.29,137.43 L476.85,134.06 L477.41,130.43 L477.97,126.74
+		L478.53,123.16 L479.09,119.90 L479.65,117.14 L480.22,115.07 L480.78,113.89 L481.11,113.68 L481.34,113.72 L481.90,114.14
+		L482.46,114.96 L483.02,116.10 L483.58,117.49 L484.14,119.06 L484.70,120.74 L485.26,122.44 L485.82,124.09 L486.39,125.63
+		L486.95,126.96 L487.48,127.99 L487.51,128.03 L488.07,128.99 L488.63,129.97 L489.19,130.97 L489.75,131.95 L490.31,132.89
+		L490.87,133.76 L491.43,134.54 L491.99,135.21 L492.55,135.74 L493.12,136.10 L493.68,136.27 L493.85,136.28 L494.24,135.80
+		L494.80,133.61 L495.36,129.96 L495.92,125.23 L496.48,119.77 L497.04,113.96 L497.60,108.15 L498.16,102.71 L498.72,98.01
+		L499.28,94.40 L499.85,92.27 L500.22,91.83 L500.41,91.85 L500.97,92.12 L501.53,92.66 L502.09,93.41 L502.65,94.30
+		L503.21,95.27 L503.77,96.26 L504.33,97.21 L504.89,98.06 L505.45,98.74 L506.01,99.20 L506.58,99.37 L507.14,99.07
+		L507.70,98.22 L508.26,96.88 L508.82,95.12 L509.38,92.99 L509.94,90.57 L510.50,87.91 L511.06,85.10 L511.62,82.18
+		L512.18,79.23 L512.75,76.30 L512.95,75.26 L513.31,73.20 L513.87,69.09 L514.43,64.14 L514.99,58.63 L515.55,52.81
+		L516.11,46.97 L516.67,41.37 L517.23,36.27 L517.79,31.96 L518.35,28.69 L518.91,26.74 L519.32,26.30 L519.48,26.49
+		L520.04,30.01 L520.60,37.31 L521.16,47.51 L521.72,59.78 L522.28,73.24 L522.84,87.03 L523.40,100.30 L523.96,112.19
+		L524.52,121.85 L525.08,128.40 L525.64,130.99 L525.68,131.00 L526.21,130.75 L526.77,129.94 L527.33,128.66 L527.89,126.97
+		L528.45,124.93 L529.01,122.63 L529.57,120.12 L530.13,117.48 L530.69,114.78 L531.25,112.08 L531.81,109.47 L532.05,108.41
+		L532.37,106.82 L532.94,103.51 L533.50,99.62 L534.06,95.36 L534.62,90.91 L535.18,86.46 L535.74,82.22 L536.30,78.37
+		L536.86,75.11 L537.42,72.63 L537.98,71.12 L538.42,70.74 L538.54,70.81 L539.11,72.63 L539.67,76.56 L540.23,82.14
+		L540.79,88.88 L541.35,96.31 L541.91,103.95 L542.47,111.34 L543.03,117.98 L543.59,123.41 L544.15,127.15 L544.71,128.72
+		L544.78,128.75 L545.27,128.34 L545.84,126.99 L546.40,124.89 L546.96,122.24 L547.52,119.23 L548.08,116.06 L548.64,112.93
+		L549.20,110.04 L549.76,107.58 L550.32,105.76 L550.88,104.76 L551.15,104.64 L551.44,104.88 L552.00,106.53 L552.57,109.49
+		L553.13,113.44 L553.69,118.07 L554.25,123.07 L554.81,128.11 L555.37,132.89 L555.93,137.09 L556.49,140.39 L557.05,142.47
+		L557.52,143.06 L557.61,143.05 L558.17,142.83 L558.73,142.32 L559.30,141.58 L559.86,140.65 L560.42,139.59 L560.98,138.45
+		L561.54,137.28 L562.10,136.14 L562.66,135.07 L563.22,134.13 L563.78,133.38 L563.88,133.26 L564.34,132.80 L564.90,132.32
+		L565.47,131.89 L566.03,131.52 L566.59,131.16 L567.15,130.81 L567.71,130.45 L568.27,130.04 L568.83,129.58 L569.39,129.03
+		L569.95,128.38 L570.25,127.99 L570.51,127.54 L571.07,125.96 L571.63,123.73 L572.20,121.00 L572.76,117.95 L573.32,114.76
+		L573.88,111.61 L574.44,108.66 L575.00,106.08 L575.56,104.06 L576.12,102.77 L576.62,102.38 L576.68,102.39 L577.24,103.19
+		L577.80,105.12 L578.36,107.94 L578.93,111.38 L579.49,115.21 L580.05,119.18 L580.61,123.05 L581.17,126.55 L581.73,129.46
+		L582.29,131.51 L582.85,132.47 L582.99,132.51 L583.41,132.43 L583.97,132.12 L584.53,131.62 L585.09,130.97 L585.66,130.22
+		L586.22,129.43 L586.78,128.64 L587.34,127.91 L587.90,127.28 L588.46,126.81 L589.02,126.53 L589.35,126.49 L589.58,126.51
+		L590.14,126.77 L590.70,127.27 L591.26,127.95 L591.83,128.76 L592.39,129.64 L592.95,130.53 L593.51,131.38 L594.07,132.13
+		L594.63,132.74 L595.19,133.13 L595.72,133.26 L595.75,133.26 L596.31,132.69 L596.87,131.20 L597.43,128.95 L597.99,126.08
+		L598.56,122.75 L599.12,119.11 L599.68,115.32 L600.24,111.52 L600.80,107.87 L601.36,104.52 L601.92,101.62 L602.09,100.87
+		L602.48,99.19 L603.04,96.88 L603.60,94.66 L604.16,92.51 L604.72,90.42 L605.29,88.37 L605.85,86.34 L606.41,84.32
+		L606.97,82.29 L607.53,80.24 L608.09,78.15 L608.45,76.77 L608.65,76.01 L609.21,73.84 L609.77,71.67 L610.33,69.48
+		L610.89,67.29 L611.45,65.10 L612.02,62.90 L612.58,60.70 L613.14,58.50 L613.70,56.30 L614.26,54.10 L614.54,53.00
+		L614.82,51.91  '/></g>
 	</g>
 	<g id="gnuplot_plot_2" ><title>Avg 2y</title>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
@@ -376,18 +376,18 @@
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='rgb(255,   0,   0)'  d='M130.04,54.01 L172.60,54.01 M54.53,191.27 L60.97,192.02 L67.41,185.49 L73.85,192.02 L80.29,194.28 L86.73,196.29
-		L93.17,202.46 L99.61,199.84 L106.05,197.95 L112.49,194.75 L118.93,191.83 L125.37,185.90 L131.81,173.66 L138.25,166.22
-		L144.69,155.68 L151.13,153.32 L157.57,152.00 L164.01,147.39 L170.45,144.09 L176.89,139.01 L183.33,143.81 L189.77,146.54
-		L196.21,142.78 L202.65,141.36 L209.09,135.05 L215.53,134.96 L221.97,137.22 L228.41,148.14 L234.85,146.64 L241.29,148.33
-		L247.73,154.07 L254.17,154.36 L260.61,159.25 L267.05,166.60 L273.49,166.50 L279.93,158.69 L286.37,163.30 L292.81,155.86
-		L299.25,154.26 L305.69,159.54 L312.13,160.85 L318.57,148.05 L325.01,153.04 L331.45,152.29 L337.90,149.27 L344.34,152.38
-		L350.78,145.41 L357.22,133.17 L363.66,124.23 L370.10,125.83 L376.54,121.78 L382.98,120.93 L389.42,122.44 L395.86,110.48
-		L402.30,116.50 L408.74,119.14 L415.18,122.15 L421.62,129.59 L428.06,120.84 L434.50,119.52 L440.94,112.74 L447.38,119.14
-		L453.82,109.25 L460.26,106.52 L466.70,108.69 L473.14,108.03 L479.58,116.32 L486.02,114.90 L492.46,118.10 L498.90,122.25
-		L505.34,124.79 L511.78,125.07 L518.22,117.63 L524.66,101.81 L531.10,100.21 L537.54,99.55 L543.98,92.40 L550.42,91.46
-		L556.86,93.06 L563.30,98.52 L569.74,105.77 L576.18,118.48 L582.62,114.90 L589.06,117.92 L595.50,124.88 L601.94,125.45
-		L608.38,124.98 L614.82,116.69  '/></g>
+	<path stroke='rgb(255,   0,   0)'  d='M130.04,54.01 L172.60,54.01 M54.53,191.27 L60.90,192.02 L67.26,185.49 L73.63,192.02 L80.00,194.28 L86.36,196.29
+		L92.73,202.46 L99.10,199.84 L105.47,197.95 L111.83,194.75 L118.20,191.83 L124.57,185.90 L130.93,173.66 L137.30,166.22
+		L143.67,155.68 L150.03,153.32 L156.40,152.00 L162.77,147.39 L169.13,144.09 L175.50,139.01 L181.87,143.81 L188.24,146.54
+		L194.60,142.78 L200.97,141.36 L207.34,135.05 L213.70,134.96 L220.07,137.22 L226.44,148.14 L232.80,146.64 L239.17,148.33
+		L245.54,154.07 L251.90,154.36 L258.27,159.25 L264.64,166.60 L271.01,166.50 L277.37,158.69 L283.74,163.30 L290.11,155.86
+		L296.47,154.26 L302.84,159.54 L309.21,160.85 L315.57,148.05 L321.94,153.04 L328.31,152.29 L334.68,149.27 L341.04,152.38
+		L347.41,145.41 L353.78,133.17 L360.14,124.23 L366.51,125.83 L372.88,121.78 L379.24,120.93 L385.61,122.44 L391.98,110.48
+		L398.34,116.50 L404.71,119.14 L411.08,122.15 L417.45,129.59 L423.81,120.84 L430.18,119.52 L436.55,112.74 L442.91,119.14
+		L449.28,109.25 L455.65,106.52 L462.01,108.69 L468.38,108.03 L474.75,116.32 L481.11,114.90 L487.48,118.10 L493.85,122.25
+		L500.22,124.79 L506.58,125.07 L512.95,117.63 L519.32,101.81 L525.68,100.21 L532.05,99.55 L538.42,92.40 L544.78,91.46
+		L551.15,93.06 L557.52,98.52 L563.88,105.77 L570.25,118.48 L576.62,114.90 L582.99,117.92 L589.35,124.88 L595.72,125.45
+		L602.09,124.98 L608.45,116.69 L614.82,106.52  '/></g>
 	</g>
 <g fill="none" color="white" stroke="rgb(255,   0,   0)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
diff -pruN 6.16-2/Documentation/plot-sloc-lines.svg 6.17-1/Documentation/plot-sloc-lines.svg
--- 6.16-2/Documentation/plot-sloc-lines.svg	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Documentation/plot-sloc-lines.svg	2025-09-29 14:59:32.000000000 +0000
@@ -176,11 +176,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M141.21,244.00 L141.21,63.01 M141.21,27.01 L141.21,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M140.51,244.00 L140.51,63.01 M140.51,27.01 L140.51,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M141.21,244.00 L141.21,235.00 M141.21,18.01 L141.21,27.01  '/>	<g transform="translate(141.21,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M140.51,244.00 L140.51,235.00 M140.51,18.01 L140.51,27.01  '/>	<g transform="translate(140.51,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >3.0</tspan></text>
 	</g>
 </g>
@@ -189,11 +189,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M264.22,244.00 L264.22,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M262.13,244.00 L262.13,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M264.22,244.00 L264.22,235.00 M264.22,18.01 L264.22,27.01  '/>	<g transform="translate(264.22,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M262.13,244.00 L262.13,235.00 M262.13,18.01 L262.13,27.01  '/>	<g transform="translate(262.13,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >4.0</tspan></text>
 	</g>
 </g>
@@ -202,11 +202,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M393.39,244.00 L393.39,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M389.83,244.00 L389.83,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M393.39,244.00 L393.39,235.00 M393.39,18.01 L393.39,27.01  '/>	<g transform="translate(393.39,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M389.83,244.00 L389.83,235.00 M389.83,18.01 L389.83,27.01  '/>	<g transform="translate(389.83,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >5.0</tspan></text>
 	</g>
 </g>
@@ -215,11 +215,11 @@
 <g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M516.41,244.00 L516.41,18.01  '/></g>
+	<path stroke='gray' stroke-dasharray='2,4' class="gridline"  d='M511.44,244.00 L511.44,18.01  '/></g>
 <g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='black'  d='M516.41,244.00 L516.41,235.00 M516.41,18.01 L516.41,27.01  '/>	<g transform="translate(516.41,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+	<path stroke='black'  d='M511.44,244.00 L511.44,235.00 M511.44,18.01 L511.44,27.01  '/>	<g transform="translate(511.44,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
 		<text><tspan font-family="Arial" >6.0</tspan></text>
 	</g>
 </g>
@@ -233,7 +233,7 @@
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
 	<path stroke='black'  d='M614.82,244.00 L614.82,235.00 M614.82,18.01 L614.82,27.01  '/>	<g transform="translate(614.82,265.90)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
-		<text><tspan font-family="Arial" >6.15</tspan></text>
+		<text><tspan font-family="Arial" >6.17</tspan></text>
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
@@ -257,143 +257,143 @@
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='rgb(148,   0, 211)'  d='M130.04,36.01 L172.60,36.01 M79.70,224.45 L80.24,223.81 L80.77,223.13 L81.31,222.41 L81.84,221.69 L82.38,220.96
-		L82.91,220.26 L83.45,219.58 L83.99,218.96 L84.52,218.41 L85.06,217.93 L85.59,217.55 L85.85,217.41 L86.13,217.27
-		L86.66,217.02 L87.20,216.78 L87.73,216.55 L88.27,216.34 L88.81,216.15 L89.34,215.98 L89.88,215.83 L90.41,215.70
-		L90.95,215.59 L91.48,215.51 L92.00,215.45 L92.02,215.45 L92.56,215.41 L93.09,215.38 L93.63,215.36 L94.16,215.34
-		L94.70,215.32 L95.23,215.30 L95.77,215.29 L96.31,215.27 L96.84,215.25 L97.38,215.22 L97.91,215.19 L98.15,215.17
-		L98.45,215.15 L98.98,215.11 L99.52,215.05 L100.05,214.98 L100.59,214.91 L101.13,214.83 L101.66,214.74 L102.20,214.64
-		L102.73,214.54 L103.27,214.43 L103.80,214.31 L104.30,214.20 L104.34,214.19 L104.88,214.02 L105.41,213.79 L105.95,213.52
-		L106.48,213.21 L107.02,212.89 L107.55,212.56 L108.09,212.26 L108.63,211.98 L109.16,211.75 L109.70,211.59 L110.23,211.50
-		L110.45,211.49 L110.77,211.49 L111.30,211.49 L111.84,211.49 L112.37,211.49 L112.91,211.49 L113.45,211.49 L113.98,211.49
-		L114.52,211.49 L115.05,211.49 L115.59,211.49 L116.12,211.49 L116.60,211.49 L116.66,211.49 L117.20,211.45 L117.73,211.34
-		L118.27,211.18 L118.80,210.97 L119.34,210.73 L119.87,210.46 L120.41,210.18 L120.95,209.89 L121.48,209.60 L122.02,209.33
-		L122.55,209.08 L122.76,209.00 L123.09,208.86 L123.62,208.62 L124.16,208.37 L124.70,208.12 L125.23,207.87 L125.77,207.61
-		L126.30,207.37 L126.84,207.14 L127.37,206.93 L127.91,206.74 L128.44,206.58 L128.91,206.47 L128.98,206.45 L129.52,206.35
-		L130.05,206.26 L130.59,206.18 L131.12,206.11 L131.66,206.05 L132.19,205.99 L132.73,205.93 L133.27,205.86 L133.80,205.79
-		L134.34,205.70 L134.87,205.61 L135.06,205.57 L135.41,205.49 L135.94,205.33 L136.48,205.12 L137.02,204.90 L137.55,204.65
-		L138.09,204.41 L138.62,204.17 L139.16,203.95 L139.69,203.77 L140.23,203.63 L140.76,203.54 L141.21,203.51 L141.30,203.51
-		L141.84,203.51 L142.37,203.51 L142.91,203.52 L143.44,203.52 L143.98,203.52 L144.51,203.53 L145.05,203.53 L145.59,203.53
-		L146.12,203.54 L146.66,203.54 L147.19,203.54 L147.36,203.54 L147.73,203.51 L148.26,203.39 L148.80,203.18 L149.34,202.89
-		L149.87,202.53 L150.41,202.13 L150.94,201.68 L151.48,201.21 L152.01,200.72 L152.55,200.24 L153.08,199.76 L153.51,199.40
-		L153.62,199.31 L154.16,198.81 L154.69,198.24 L155.23,197.61 L155.76,196.95 L156.30,196.28 L156.83,195.61 L157.37,194.96
-		L157.91,194.35 L158.44,193.80 L158.98,193.32 L159.51,192.93 L159.66,192.85 L160.05,192.64 L160.58,192.38 L161.12,192.15
-		L161.66,191.94 L162.19,191.74 L162.73,191.56 L163.26,191.39 L163.80,191.22 L164.33,191.04 L164.87,190.87 L165.40,190.67
-		L165.81,190.52 L165.94,190.47 L166.48,190.27 L167.01,190.08 L167.55,189.89 L168.08,189.71 L168.62,189.52 L169.15,189.33
-		L169.69,189.12 L170.23,188.89 L170.76,188.63 L171.30,188.35 L171.83,188.03 L171.96,187.95 L172.37,187.63 L172.90,187.03
-		L173.44,186.27 L173.98,185.40 L174.51,184.45 L175.05,183.47 L175.58,182.49 L176.12,181.56 L176.65,180.71 L177.19,180.00
-		L177.72,179.45 L178.11,179.18 L178.26,179.10 L178.80,178.85 L179.33,178.63 L179.87,178.45 L180.40,178.29 L180.94,178.14
-		L181.47,178.01 L182.01,177.87 L182.55,177.73 L183.08,177.57 L183.62,177.39 L184.15,177.17 L184.26,177.12 L184.69,176.92
-		L185.22,176.63 L185.76,176.31 L186.30,175.97 L186.83,175.60 L187.37,175.22 L187.90,174.82 L188.44,174.42 L188.97,174.02
-		L189.51,173.62 L190.05,173.23 L190.41,172.97 L190.58,172.85 L191.12,172.45 L191.65,172.03 L192.19,171.59 L192.72,171.14
-		L193.26,170.69 L193.79,170.26 L194.33,169.84 L194.87,169.46 L195.40,169.12 L195.94,168.83 L196.47,168.59 L196.57,168.56
-		L197.01,168.40 L197.54,168.23 L198.08,168.07 L198.62,167.91 L199.15,167.78 L199.69,167.65 L200.22,167.53 L200.76,167.42
-		L201.29,167.32 L201.83,167.23 L202.37,167.14 L202.72,167.09 L202.90,167.07 L203.44,167.00 L203.97,166.95 L204.51,166.90
-		L205.04,166.86 L205.58,166.82 L206.11,166.78 L206.65,166.74 L207.19,166.69 L207.72,166.64 L208.26,166.58 L208.79,166.50
-		L208.87,166.49 L209.33,166.41 L209.86,166.29 L210.40,166.15 L210.94,165.98 L211.47,165.80 L212.01,165.61 L212.54,165.41
-		L213.08,165.21 L213.61,165.01 L214.15,164.81 L214.69,164.63 L215.02,164.53 L215.22,164.47 L215.76,164.31 L216.29,164.17
-		L216.83,164.02 L217.36,163.88 L217.90,163.74 L218.43,163.60 L218.97,163.45 L219.51,163.30 L220.04,163.13 L220.58,162.95
-		L221.11,162.76 L221.17,162.74 L221.65,162.53 L222.18,162.25 L222.72,161.93 L223.26,161.59 L223.79,161.23 L224.33,160.86
-		L224.86,160.51 L225.40,160.19 L225.93,159.90 L226.47,159.66 L227.01,159.49 L227.32,159.42 L227.54,159.39 L228.08,159.32
-		L228.61,159.26 L229.15,159.21 L229.68,159.17 L230.22,159.13 L230.75,159.09 L231.29,159.06 L231.83,159.01 L232.36,158.96
-		L232.90,158.90 L233.43,158.82 L233.47,158.82 L233.97,158.70 L234.50,158.51 L235.04,158.26 L235.58,157.97 L236.11,157.66
-		L236.65,157.33 L237.18,157.01 L237.72,156.71 L238.25,156.44 L238.79,156.22 L239.33,156.07 L239.62,156.02 L239.86,155.99
-		L240.40,155.93 L240.93,155.88 L241.47,155.84 L242.00,155.81 L242.54,155.78 L243.07,155.75 L243.61,155.73 L244.15,155.69
-		L244.68,155.65 L245.22,155.61 L245.75,155.55 L245.77,155.55 L246.29,155.47 L246.82,155.36 L247.36,155.24 L247.90,155.09
-		L248.43,154.93 L248.97,154.75 L249.50,154.57 L250.04,154.38 L250.57,154.19 L251.11,154.00 L251.65,153.82 L251.92,153.73
-		L252.18,153.65 L252.72,153.46 L253.25,153.25 L253.79,153.03 L254.32,152.81 L254.86,152.59 L255.40,152.38 L255.93,152.18
-		L256.47,151.99 L257.00,151.83 L257.54,151.70 L257.81,151.64 L258.07,151.60 L258.61,151.52 L259.14,151.46 L259.68,151.41
-		L260.22,151.37 L260.75,151.33 L261.29,151.29 L261.82,151.25 L262.36,151.21 L262.89,151.16 L263.43,151.10 L263.97,151.03
-		L264.22,150.99 L264.50,150.94 L265.04,150.79 L265.57,150.59 L266.11,150.35 L266.64,150.08 L267.18,149.80 L267.72,149.52
-		L268.25,149.25 L268.79,149.00 L269.32,148.79 L269.86,148.62 L270.37,148.52 L270.39,148.52 L270.93,148.46 L271.46,148.40
-		L272.00,148.36 L272.54,148.31 L273.07,148.28 L273.61,148.24 L274.14,148.21 L274.68,148.18 L275.21,148.15 L275.75,148.11
-		L276.29,148.07 L276.53,148.05 L276.82,148.02 L277.36,147.97 L277.89,147.93 L278.43,147.88 L278.96,147.83 L279.50,147.78
-		L280.04,147.73 L280.57,147.68 L281.11,147.62 L281.64,147.55 L282.18,147.48 L282.68,147.41 L282.71,147.41 L283.25,147.32
-		L283.78,147.22 L284.32,147.10 L284.86,146.98 L285.39,146.84 L285.93,146.70 L286.46,146.54 L287.00,146.38 L287.53,146.21
-		L288.07,146.03 L288.61,145.85 L288.83,145.77 L289.14,145.66 L289.68,145.41 L290.21,145.13 L290.75,144.82 L291.28,144.49
-		L291.82,144.16 L292.36,143.83 L292.89,143.52 L293.43,143.24 L293.96,143.01 L294.50,142.82 L294.98,142.72 L295.03,142.71
-		L295.57,142.63 L296.10,142.56 L296.64,142.51 L297.18,142.46 L297.71,142.41 L298.25,142.37 L298.78,142.33 L299.32,142.29
-		L299.85,142.25 L300.39,142.20 L300.93,142.14 L301.13,142.12 L301.46,142.07 L302.00,141.99 L302.53,141.91 L303.07,141.82
-		L303.60,141.72 L304.14,141.62 L304.68,141.51 L305.21,141.41 L305.75,141.30 L306.28,141.19 L306.82,141.09 L307.28,141.00
-		L307.35,140.99 L307.89,140.88 L308.42,140.78 L308.96,140.66 L309.50,140.55 L310.03,140.43 L310.57,140.32 L311.10,140.21
-		L311.64,140.11 L312.17,140.01 L312.71,139.92 L313.25,139.83 L313.43,139.81 L313.78,139.76 L314.32,139.68 L314.85,139.61
-		L315.39,139.53 L315.92,139.46 L316.46,139.39 L317.00,139.33 L317.53,139.28 L318.07,139.23 L318.60,139.19 L319.14,139.16
-		L319.58,139.14 L319.67,139.14 L320.21,139.13 L320.75,139.12 L321.28,139.11 L321.82,139.10 L322.35,139.09 L322.89,139.09
-		L323.42,139.08 L323.96,139.07 L324.49,139.07 L325.03,139.06 L325.57,139.05 L325.73,139.05 L326.10,139.05 L326.64,139.04
-		L327.17,139.03 L327.71,139.03 L328.24,139.02 L328.78,139.02 L329.32,139.01 L329.85,139.00 L330.39,139.00 L330.92,138.99
-		L331.46,138.97 L331.88,138.96 L331.99,138.96 L332.53,138.93 L333.07,138.87 L333.60,138.79 L334.14,138.70 L334.67,138.60
-		L335.21,138.50 L335.74,138.40 L336.28,138.31 L336.81,138.24 L337.35,138.19 L337.89,138.17 L338.03,138.16 L338.42,138.18
-		L338.96,138.25 L339.49,138.37 L340.03,138.53 L340.56,138.71 L341.10,138.90 L341.64,139.08 L342.17,139.26 L342.71,139.42
-		L343.24,139.54 L343.78,139.61 L344.18,139.63 L344.31,139.63 L344.85,139.62 L345.39,139.61 L345.92,139.58 L346.46,139.54
-		L346.99,139.50 L347.53,139.44 L348.06,139.38 L348.60,139.32 L349.13,139.24 L349.67,139.17 L350.21,139.08 L350.34,139.06
-		L350.74,138.96 L351.28,138.73 L351.81,138.41 L352.35,138.01 L352.88,137.58 L353.42,137.12 L353.96,136.65 L354.49,136.21
-		L355.03,135.81 L355.56,135.47 L356.10,135.23 L356.49,135.11 L356.63,135.08 L357.17,134.98 L357.71,134.89 L358.24,134.81
-		L358.78,134.74 L359.31,134.68 L359.85,134.62 L360.38,134.56 L360.92,134.51 L361.45,134.46 L361.99,134.41 L362.53,134.35
-		L362.64,134.34 L363.06,134.30 L363.60,134.25 L364.13,134.19 L364.67,134.15 L365.20,134.10 L365.74,134.05 L366.28,134.00
-		L366.81,133.96 L367.35,133.91 L367.88,133.87 L368.42,133.82 L368.79,133.79 L368.95,133.78 L369.49,133.73 L370.03,133.67
-		L370.56,133.61 L371.10,133.55 L371.63,133.50 L372.17,133.44 L372.70,133.39 L373.24,133.35 L373.77,133.32 L374.31,133.29
-		L374.85,133.28 L374.94,133.28 L375.38,133.30 L375.92,133.36 L376.45,133.46 L376.99,133.59 L377.52,133.74 L378.06,133.89
-		L378.60,134.04 L379.13,134.19 L379.67,134.31 L380.20,134.40 L380.74,134.46 L381.09,134.47 L381.27,134.47 L381.81,134.46
-		L382.35,134.44 L382.88,134.42 L383.42,134.39 L383.95,134.35 L384.49,134.31 L385.02,134.26 L385.56,134.22 L386.10,134.17
-		L386.63,134.12 L387.17,134.08 L387.24,134.07 L387.70,134.03 L388.24,133.98 L388.77,133.93 L389.31,133.88 L389.84,133.83
-		L390.38,133.77 L390.92,133.71 L391.45,133.65 L391.99,133.58 L392.52,133.52 L393.06,133.45 L393.39,133.41 L393.59,133.38
-		L394.13,133.31 L394.67,133.23 L395.20,133.16 L395.74,133.07 L396.27,132.99 L396.81,132.90 L397.34,132.81 L397.88,132.72
-		L398.42,132.63 L398.95,132.53 L399.49,132.44 L399.54,132.43 L400.02,132.34 L400.56,132.23 L401.09,132.11 L401.63,131.98
-		L402.16,131.86 L402.70,131.73 L403.24,131.61 L403.77,131.49 L404.31,131.38 L404.84,131.29 L405.38,131.20 L405.69,131.16
-		L405.91,131.14 L406.45,131.08 L406.99,131.03 L407.52,130.98 L408.06,130.94 L408.59,130.89 L409.13,130.85 L409.66,130.82
-		L410.20,130.78 L410.74,130.74 L411.27,130.69 L411.81,130.65 L411.84,130.65 L412.34,130.60 L412.88,130.54 L413.41,130.48
-		L413.95,130.41 L414.48,130.34 L415.02,130.28 L415.56,130.22 L416.09,130.17 L416.63,130.12 L417.16,130.09 L417.70,130.08
-		L417.99,130.07 L418.23,130.07 L418.77,130.07 L419.31,130.08 L419.84,130.08 L420.38,130.08 L420.91,130.09 L421.45,130.09
-		L421.98,130.10 L422.52,130.10 L423.06,130.10 L423.59,130.10 L424.13,130.10 L424.15,130.10 L424.66,130.08 L425.20,130.02
-		L425.73,129.93 L426.27,129.81 L426.80,129.67 L427.34,129.53 L427.88,129.38 L428.41,129.24 L428.95,129.11 L429.48,129.01
-		L430.02,128.94 L430.30,128.91 L430.55,128.89 L431.09,128.86 L431.63,128.83 L432.16,128.79 L432.70,128.77 L433.23,128.74
-		L433.77,128.72 L434.30,128.70 L434.84,128.68 L435.38,128.67 L435.91,128.66 L436.18,128.66 L436.45,128.66 L436.98,128.66
-		L437.52,128.67 L438.05,128.68 L438.59,128.70 L439.12,128.72 L439.66,128.73 L440.20,128.75 L440.73,128.77 L441.27,128.78
-		L441.80,128.79 L442.34,128.80 L442.60,128.80 L442.87,128.80 L443.41,128.78 L443.95,128.75 L444.48,128.71 L445.02,128.65
-		L445.55,128.59 L446.09,128.53 L446.62,128.46 L447.16,128.40 L447.70,128.33 L448.23,128.27 L448.75,128.22 L448.77,128.22
-		L449.30,128.16 L449.84,128.10 L450.37,128.04 L450.91,127.98 L451.45,127.92 L451.98,127.86 L452.52,127.80 L453.05,127.75
-		L453.59,127.71 L454.12,127.67 L454.66,127.65 L454.90,127.65 L455.19,127.64 L455.73,127.63 L456.27,127.63 L456.80,127.63
-		L457.34,127.62 L457.87,127.62 L458.41,127.62 L458.94,127.61 L459.48,127.61 L460.02,127.60 L460.55,127.60 L461.05,127.59
-		L461.09,127.59 L461.62,127.50 L462.16,127.31 L462.69,127.02 L463.23,126.65 L463.77,126.24 L464.30,125.80 L464.84,125.36
-		L465.37,124.93 L465.91,124.55 L466.44,124.22 L466.98,123.98 L467.20,123.91 L467.51,123.82 L468.05,123.69 L468.59,123.56
-		L469.12,123.45 L469.66,123.35 L470.19,123.25 L470.73,123.17 L471.26,123.08 L471.80,123.00 L472.34,122.93 L472.87,122.85
-		L473.35,122.78 L473.41,122.78 L473.94,122.70 L474.48,122.64 L475.01,122.57 L475.55,122.51 L476.09,122.45 L476.62,122.39
-		L477.16,122.34 L477.69,122.28 L478.23,122.22 L478.76,122.16 L479.30,122.10 L479.50,122.07 L479.83,122.03 L480.37,121.97
-		L480.91,121.90 L481.44,121.84 L481.98,121.78 L482.51,121.71 L483.05,121.64 L483.58,121.57 L484.12,121.50 L484.66,121.42
-		L485.19,121.34 L485.65,121.27 L485.73,121.25 L486.26,121.15 L486.80,121.02 L487.33,120.88 L487.87,120.73 L488.41,120.57
-		L488.94,120.42 L489.48,120.28 L490.01,120.15 L490.55,120.04 L491.08,119.96 L491.62,119.92 L491.80,119.91 L492.15,119.90
-		L492.69,119.89 L493.23,119.89 L493.76,119.88 L494.30,119.88 L494.83,119.87 L495.37,119.87 L495.90,119.86 L496.44,119.86
-		L496.98,119.85 L497.51,119.84 L497.95,119.83 L498.05,119.83 L498.58,119.77 L499.12,119.65 L499.65,119.48 L500.19,119.28
-		L500.73,119.06 L501.26,118.83 L501.80,118.61 L502.33,118.41 L502.87,118.25 L503.40,118.13 L503.94,118.07 L504.11,118.07
-		L504.47,118.07 L505.01,118.07 L505.55,118.07 L506.08,118.08 L506.62,118.08 L507.15,118.08 L507.69,118.09 L508.22,118.09
-		L508.76,118.09 L509.30,118.09 L509.83,118.09 L510.26,118.10 L510.37,118.09 L510.90,118.08 L511.44,118.05 L511.97,118.00
-		L512.51,117.94 L513.05,117.86 L513.58,117.78 L514.12,117.69 L514.65,117.59 L515.19,117.49 L515.72,117.39 L516.26,117.29
-		L516.41,117.27 L516.80,117.19 L517.33,117.08 L517.87,116.96 L518.40,116.82 L518.94,116.68 L519.47,116.53 L520.01,116.38
-		L520.54,116.23 L521.08,116.08 L521.62,115.93 L522.15,115.78 L522.56,115.68 L522.69,115.65 L523.22,115.50 L523.76,115.34
-		L524.29,115.17 L524.83,115.00 L525.37,114.83 L525.90,114.67 L526.44,114.52 L526.97,114.40 L527.51,114.30 L528.04,114.23
-		L528.58,114.20 L528.71,114.20 L529.12,114.20 L529.65,114.21 L530.19,114.23 L530.72,114.25 L531.26,114.28 L531.79,114.32
-		L532.33,114.36 L532.86,114.40 L533.40,114.45 L533.94,114.50 L534.47,114.56 L534.86,114.60 L535.01,114.62 L535.54,114.73
-		L536.08,114.89 L536.61,115.08 L537.15,115.31 L537.69,115.55 L538.22,115.79 L538.76,116.02 L539.29,116.23 L539.83,116.39
-		L540.36,116.51 L540.90,116.56 L541.01,116.56 L541.44,116.56 L541.97,116.56 L542.51,116.55 L543.04,116.53 L543.58,116.51
-		L544.11,116.49 L544.65,116.47 L545.18,116.45 L545.72,116.42 L546.26,116.39 L546.79,116.37 L547.16,116.35 L547.33,116.34
-		L547.86,116.30 L548.40,116.25 L548.93,116.19 L549.47,116.12 L550.01,116.05 L550.54,115.98 L551.08,115.92 L551.61,115.86
-		L552.15,115.82 L552.68,115.79 L553.22,115.77 L553.31,115.77 L553.76,115.80 L554.29,115.89 L554.83,116.03 L555.36,116.22
-		L555.90,116.43 L556.43,116.66 L556.97,116.88 L557.50,117.09 L558.04,117.26 L558.58,117.40 L559.11,117.48 L559.46,117.50
-		L559.65,117.50 L560.18,117.49 L560.72,117.46 L561.25,117.43 L561.79,117.38 L562.33,117.33 L562.86,117.27 L563.40,117.21
-		L563.93,117.14 L564.47,117.08 L565.00,117.01 L565.54,116.94 L565.61,116.93 L566.08,116.87 L566.61,116.78 L567.15,116.68
-		L567.68,116.57 L568.22,116.45 L568.75,116.33 L569.29,116.22 L569.82,116.11 L570.36,116.02 L570.90,115.94 L571.43,115.88
-		L571.76,115.85 L571.97,115.84 L572.50,115.82 L573.04,115.80 L573.57,115.78 L574.11,115.77 L574.65,115.75 L575.18,115.74
-		L575.72,115.73 L576.25,115.71 L576.79,115.69 L577.32,115.67 L577.86,115.64 L577.92,115.64 L578.40,115.59 L578.93,115.50
-		L579.47,115.38 L580.00,115.23 L580.54,115.06 L581.07,114.89 L581.61,114.73 L582.15,114.58 L582.68,114.45 L583.22,114.34
-		L583.75,114.28 L584.07,114.27 L584.29,114.27 L584.82,114.26 L585.36,114.26 L585.89,114.25 L586.43,114.25 L586.97,114.25
-		L587.50,114.25 L588.04,114.24 L588.57,114.24 L589.11,114.24 L589.64,114.23 L590.18,114.22 L590.22,114.22 L590.72,114.20
-		L591.25,114.16 L591.79,114.09 L592.32,114.00 L592.86,113.90 L593.39,113.78 L593.93,113.65 L594.47,113.51 L595.00,113.37
-		L595.54,113.22 L596.07,113.07 L596.37,112.99 L596.61,112.92 L597.14,112.71 L597.68,112.47 L598.21,112.18 L598.75,111.88
-		L599.29,111.58 L599.82,111.28 L600.36,111.01 L600.89,110.77 L601.43,110.57 L601.96,110.45 L602.50,110.39 L602.52,110.39
-		L603.04,110.39 L603.57,110.39 L604.11,110.38 L604.64,110.38 L605.18,110.38 L605.71,110.38 L606.25,110.38 L606.79,110.37
-		L607.32,110.37 L607.86,110.37 L608.39,110.36 L608.67,110.36 L608.93,110.36 L609.46,110.34 L610.00,110.31 L610.53,110.27
-		L611.07,110.22 L611.61,110.17 L612.14,110.11 L612.68,110.05 L613.21,109.99 L613.75,109.93 L614.28,109.87 L614.55,109.85
-		L614.82,109.82  '/></g>
+	<path stroke='rgb(148,   0, 211)'  d='M130.04,36.01 L172.60,36.01 M79.70,224.45 L80.24,223.81 L80.77,223.11 L81.31,222.39 L81.84,221.65 L82.38,220.92
+		L82.91,220.21 L83.45,219.53 L83.99,218.91 L84.52,218.35 L85.06,217.88 L85.59,217.51 L85.78,217.41 L86.13,217.24
+		L86.66,216.98 L87.20,216.74 L87.73,216.52 L88.27,216.31 L88.81,216.12 L89.34,215.94 L89.88,215.79 L90.41,215.67
+		L90.95,215.57 L91.48,215.49 L91.86,215.45 L92.02,215.44 L92.56,215.40 L93.09,215.38 L93.63,215.35 L94.16,215.33
+		L94.70,215.31 L95.23,215.30 L95.77,215.28 L96.31,215.26 L96.84,215.24 L97.38,215.21 L97.91,215.18 L97.94,215.17
+		L98.45,215.13 L98.98,215.08 L99.52,215.02 L100.05,214.95 L100.59,214.87 L101.13,214.79 L101.66,214.69 L102.20,214.59
+		L102.73,214.48 L103.27,214.37 L103.80,214.25 L104.02,214.20 L104.34,214.11 L104.88,213.90 L105.41,213.64 L105.95,213.35
+		L106.48,213.02 L107.02,212.69 L107.55,212.38 L108.09,212.08 L108.63,211.83 L109.16,211.64 L109.70,211.52 L110.10,211.49
+		L110.23,211.49 L110.77,211.49 L111.30,211.49 L111.84,211.49 L112.37,211.49 L112.91,211.49 L113.45,211.49 L113.98,211.49
+		L114.52,211.49 L115.05,211.49 L115.59,211.49 L116.12,211.49 L116.19,211.49 L116.66,211.46 L117.20,211.36 L117.73,211.21
+		L118.27,211.01 L118.80,210.77 L119.34,210.50 L119.87,210.22 L120.41,209.92 L120.95,209.63 L121.48,209.36 L122.02,209.11
+		L122.27,209.00 L122.55,208.88 L123.09,208.64 L123.62,208.39 L124.16,208.13 L124.70,207.87 L125.23,207.62 L125.77,207.37
+		L126.30,207.14 L126.84,206.93 L127.37,206.74 L127.91,206.57 L128.35,206.47 L128.44,206.45 L128.98,206.34 L129.52,206.25
+		L130.05,206.17 L130.59,206.11 L131.12,206.04 L131.66,205.98 L132.19,205.92 L132.73,205.85 L133.27,205.78 L133.80,205.69
+		L134.34,205.59 L134.43,205.57 L134.87,205.46 L135.41,205.29 L135.94,205.08 L136.48,204.84 L137.02,204.60 L137.55,204.35
+		L138.09,204.11 L138.62,203.90 L139.16,203.72 L139.69,203.59 L140.23,203.52 L140.51,203.51 L140.76,203.51 L141.30,203.51
+		L141.84,203.52 L142.37,203.52 L142.91,203.52 L143.44,203.52 L143.98,203.53 L144.51,203.53 L145.05,203.53 L145.59,203.54
+		L146.12,203.54 L146.59,203.54 L146.66,203.54 L147.19,203.47 L147.73,203.30 L148.26,203.05 L148.80,202.72 L149.34,202.34
+		L149.87,201.91 L150.41,201.44 L150.94,200.95 L151.48,200.46 L152.01,199.97 L152.55,199.51 L152.67,199.40 L153.08,199.03
+		L153.62,198.48 L154.16,197.87 L154.69,197.21 L155.23,196.54 L155.76,195.86 L156.30,195.19 L156.83,194.55 L157.37,193.97
+		L157.91,193.46 L158.44,193.04 L158.75,192.85 L158.98,192.72 L159.51,192.45 L160.05,192.21 L160.58,191.99 L161.12,191.79
+		L161.66,191.60 L162.19,191.43 L162.73,191.25 L163.26,191.08 L163.80,190.90 L164.33,190.71 L164.83,190.52 L164.87,190.50
+		L165.40,190.30 L165.94,190.10 L166.48,189.92 L167.01,189.73 L167.55,189.54 L168.08,189.35 L168.62,189.14 L169.15,188.91
+		L169.69,188.65 L170.23,188.37 L170.76,188.05 L170.91,187.95 L171.30,187.64 L171.83,187.04 L172.37,186.28 L172.90,185.40
+		L173.44,184.44 L173.98,183.44 L174.51,182.46 L175.05,181.52 L175.58,180.67 L176.12,179.95 L176.65,179.41 L176.99,179.18
+		L177.19,179.07 L177.72,178.82 L178.26,178.61 L178.80,178.43 L179.33,178.27 L179.87,178.12 L180.40,177.98 L180.94,177.85
+		L181.47,177.70 L182.01,177.53 L182.55,177.34 L183.08,177.12 L183.62,176.86 L184.15,176.56 L184.69,176.23 L185.22,175.87
+		L185.76,175.50 L186.30,175.11 L186.83,174.70 L187.37,174.30 L187.90,173.89 L188.44,173.49 L188.97,173.10 L189.16,172.97
+		L189.51,172.71 L190.05,172.30 L190.58,171.86 L191.12,171.41 L191.65,170.96 L192.19,170.51 L192.72,170.08 L193.26,169.67
+		L193.79,169.30 L194.33,168.98 L194.87,168.71 L195.24,168.56 L195.40,168.50 L195.94,168.31 L196.47,168.14 L197.01,167.99
+		L197.54,167.84 L198.08,167.70 L198.62,167.58 L199.15,167.47 L199.69,167.36 L200.22,167.26 L200.76,167.18 L201.29,167.10
+		L201.32,167.09 L201.83,167.03 L202.37,166.97 L202.90,166.92 L203.44,166.87 L203.97,166.83 L204.51,166.79 L205.04,166.75
+		L205.58,166.70 L206.11,166.65 L206.65,166.59 L207.19,166.52 L207.40,166.49 L207.72,166.44 L208.26,166.32 L208.79,166.18
+		L209.33,166.02 L209.86,165.84 L210.40,165.64 L210.94,165.44 L211.47,165.24 L212.01,165.04 L212.54,164.84 L213.08,164.66
+		L213.48,164.53 L213.61,164.49 L214.15,164.33 L214.69,164.18 L215.22,164.04 L215.76,163.89 L216.29,163.75 L216.83,163.61
+		L217.36,163.46 L217.90,163.30 L218.43,163.13 L218.97,162.96 L219.51,162.76 L219.56,162.74 L220.04,162.53 L220.58,162.25
+		L221.11,161.92 L221.65,161.57 L222.18,161.21 L222.72,160.84 L223.26,160.49 L223.79,160.16 L224.33,159.87 L224.86,159.64
+		L225.40,159.47 L225.64,159.42 L225.93,159.38 L226.47,159.31 L227.01,159.25 L227.54,159.20 L228.08,159.16 L228.61,159.12
+		L229.15,159.09 L229.68,159.05 L230.22,159.00 L230.75,158.95 L231.29,158.88 L231.72,158.82 L231.83,158.80 L232.36,158.66
+		L232.90,158.44 L233.43,158.18 L233.97,157.88 L234.50,157.55 L235.04,157.22 L235.58,156.90 L236.11,156.61 L236.65,156.35
+		L237.18,156.16 L237.72,156.03 L237.80,156.02 L238.25,155.96 L238.79,155.91 L239.33,155.86 L239.86,155.83 L240.40,155.80
+		L240.93,155.77 L241.47,155.74 L242.00,155.71 L242.54,155.67 L243.07,155.63 L243.61,155.58 L243.88,155.55 L244.15,155.51
+		L244.68,155.42 L245.22,155.30 L245.75,155.16 L246.29,155.00 L246.82,154.82 L247.36,154.64 L247.90,154.45 L248.43,154.26
+		L248.97,154.07 L249.50,153.88 L249.97,153.73 L250.04,153.71 L250.57,153.52 L251.11,153.32 L251.65,153.10 L252.18,152.88
+		L252.72,152.66 L253.25,152.44 L253.79,152.23 L254.32,152.04 L254.86,151.87 L255.40,151.73 L255.93,151.62 L256.05,151.60
+		L256.47,151.54 L257.00,151.47 L257.54,151.42 L258.07,151.37 L258.61,151.33 L259.14,151.29 L259.68,151.26 L260.22,151.21
+		L260.75,151.17 L261.29,151.11 L261.82,151.04 L262.13,150.99 L262.36,150.95 L262.89,150.80 L263.43,150.60 L263.97,150.36
+		L264.50,150.09 L265.04,149.81 L265.57,149.52 L266.11,149.25 L266.64,149.00 L267.18,148.78 L267.72,148.62 L268.21,148.52
+		L268.25,148.52 L268.79,148.45 L269.32,148.40 L269.86,148.35 L270.39,148.31 L270.93,148.27 L271.46,148.24 L272.00,148.21
+		L272.54,148.17 L273.07,148.14 L273.61,148.10 L274.14,148.06 L274.29,148.05 L274.68,148.01 L275.21,147.96 L275.75,147.92
+		L276.29,147.87 L276.82,147.82 L277.36,147.77 L277.89,147.72 L278.43,147.66 L278.96,147.60 L279.50,147.53 L280.04,147.46
+		L280.37,147.41 L280.57,147.38 L281.11,147.29 L281.64,147.18 L282.18,147.06 L282.71,146.93 L283.25,146.79 L283.78,146.64
+		L284.32,146.48 L284.86,146.31 L285.39,146.14 L285.93,145.96 L286.45,145.77 L286.46,145.77 L287.00,145.55 L287.53,145.29
+		L288.07,144.99 L288.61,144.66 L289.14,144.33 L289.68,143.99 L290.21,143.67 L290.75,143.37 L291.28,143.11 L291.82,142.90
+		L292.36,142.75 L292.53,142.72 L292.89,142.66 L293.43,142.59 L293.96,142.53 L294.50,142.48 L295.03,142.43 L295.57,142.39
+		L296.10,142.35 L296.64,142.31 L297.18,142.26 L297.71,142.22 L298.25,142.16 L298.61,142.12 L298.78,142.09 L299.32,142.02
+		L299.85,141.93 L300.39,141.84 L300.93,141.74 L301.46,141.64 L302.00,141.54 L302.53,141.43 L303.07,141.32 L303.60,141.22
+		L304.14,141.11 L304.68,141.01 L304.69,141.00 L305.21,140.90 L305.75,140.79 L306.28,140.68 L306.82,140.56 L307.35,140.45
+		L307.89,140.33 L308.42,140.22 L308.96,140.11 L309.50,140.01 L310.03,139.92 L310.57,139.84 L310.77,139.81 L311.10,139.76
+		L311.64,139.68 L312.17,139.61 L312.71,139.53 L313.25,139.46 L313.78,139.39 L314.32,139.33 L314.85,139.27 L315.39,139.23
+		L315.92,139.19 L316.46,139.16 L316.86,139.14 L317.00,139.14 L317.53,139.13 L318.07,139.12 L318.60,139.11 L319.14,139.10
+		L319.67,139.09 L320.21,139.09 L320.75,139.08 L321.28,139.07 L321.82,139.07 L322.35,139.06 L322.89,139.05 L322.94,139.05
+		L323.42,139.04 L323.96,139.04 L324.49,139.03 L325.03,139.03 L325.57,139.02 L326.10,139.01 L326.64,139.01 L327.17,139.00
+		L327.71,138.99 L328.24,138.98 L328.78,138.97 L329.02,138.96 L329.32,138.95 L329.85,138.91 L330.39,138.84 L330.92,138.75
+		L331.46,138.66 L331.99,138.56 L332.53,138.46 L333.07,138.36 L333.60,138.28 L334.14,138.21 L334.67,138.18 L335.10,138.16
+		L335.21,138.17 L335.74,138.21 L336.28,138.31 L336.81,138.45 L337.35,138.62 L337.89,138.81 L338.42,139.00 L338.96,139.19
+		L339.49,139.36 L340.03,139.49 L340.56,139.59 L341.10,139.63 L341.18,139.63 L341.64,139.63 L342.17,139.61 L342.71,139.59
+		L343.24,139.56 L343.78,139.51 L344.31,139.46 L344.85,139.40 L345.39,139.34 L345.92,139.27 L346.46,139.19 L346.99,139.10
+		L347.26,139.06 L347.53,139.00 L348.06,138.79 L348.60,138.49 L349.13,138.10 L349.67,137.67 L350.21,137.21 L350.74,136.74
+		L351.28,136.28 L351.81,135.87 L352.35,135.52 L352.88,135.25 L353.34,135.11 L353.42,135.10 L353.96,134.99 L354.49,134.90
+		L355.03,134.82 L355.56,134.74 L356.10,134.68 L356.63,134.62 L357.17,134.56 L357.71,134.51 L358.24,134.46 L358.78,134.41
+		L359.31,134.35 L359.42,134.34 L359.85,134.30 L360.38,134.24 L360.92,134.19 L361.45,134.14 L361.99,134.09 L362.53,134.05
+		L363.06,134.00 L363.60,133.95 L364.13,133.91 L364.67,133.86 L365.20,133.82 L365.50,133.79 L365.74,133.77 L366.28,133.72
+		L366.81,133.66 L367.35,133.60 L367.88,133.54 L368.42,133.48 L368.95,133.43 L369.49,133.38 L370.03,133.34 L370.56,133.31
+		L371.10,133.29 L371.58,133.28 L371.63,133.28 L372.17,133.31 L372.70,133.39 L373.24,133.50 L373.77,133.63 L374.31,133.79
+		L374.85,133.94 L375.38,134.09 L375.92,134.23 L376.45,134.35 L376.99,134.43 L377.52,134.47 L377.66,134.47 L378.06,134.47
+		L378.60,134.45 L379.13,134.43 L379.67,134.40 L380.20,134.37 L380.74,134.33 L381.27,134.29 L381.81,134.24 L382.35,134.19
+		L382.88,134.14 L383.42,134.10 L383.75,134.07 L383.95,134.05 L384.49,134.01 L385.02,133.96 L385.56,133.90 L386.10,133.85
+		L386.63,133.79 L387.17,133.73 L387.70,133.67 L388.24,133.61 L388.77,133.54 L389.31,133.48 L389.83,133.41 L389.84,133.41
+		L390.38,133.33 L390.92,133.26 L391.45,133.18 L391.99,133.10 L392.52,133.01 L393.06,132.93 L393.59,132.84 L394.13,132.75
+		L394.67,132.65 L395.20,132.56 L395.74,132.46 L395.91,132.43 L396.27,132.36 L396.81,132.25 L397.34,132.13 L397.88,132.00
+		L398.42,131.88 L398.95,131.75 L399.49,131.62 L400.02,131.51 L400.56,131.39 L401.09,131.30 L401.63,131.21 L401.99,131.16
+		L402.16,131.14 L402.70,131.08 L403.24,131.03 L403.77,130.98 L404.31,130.94 L404.84,130.89 L405.38,130.85 L405.91,130.82
+		L406.45,130.78 L406.99,130.74 L407.52,130.69 L408.06,130.65 L408.07,130.65 L408.59,130.60 L409.13,130.54 L409.66,130.47
+		L410.20,130.40 L410.74,130.34 L411.27,130.27 L411.81,130.21 L412.34,130.16 L412.88,130.12 L413.41,130.09 L413.95,130.07
+		L414.15,130.07 L414.48,130.07 L415.02,130.07 L415.56,130.08 L416.09,130.08 L416.63,130.08 L417.16,130.09 L417.70,130.09
+		L418.23,130.10 L418.77,130.10 L419.31,130.10 L419.84,130.10 L420.23,130.10 L420.38,130.10 L420.91,130.07 L421.45,129.99
+		L421.98,129.89 L422.52,129.76 L423.06,129.62 L423.59,129.47 L424.13,129.32 L424.66,129.19 L425.20,129.07 L425.73,128.97
+		L426.27,128.91 L426.31,128.91 L426.80,128.88 L427.34,128.84 L427.88,128.81 L428.41,128.78 L428.95,128.75 L429.48,128.73
+		L430.02,128.71 L430.55,128.69 L431.09,128.67 L431.63,128.66 L432.16,128.66 L432.39,128.66 L432.70,128.66 L433.23,128.67
+		L433.77,128.68 L434.30,128.69 L434.84,128.71 L435.38,128.73 L435.91,128.75 L436.45,128.76 L436.98,128.78 L437.52,128.79
+		L438.05,128.80 L438.47,128.80 L438.59,128.80 L439.12,128.79 L439.66,128.76 L440.20,128.72 L440.73,128.67 L441.27,128.61
+		L441.80,128.55 L442.34,128.48 L442.87,128.41 L443.41,128.34 L443.95,128.28 L444.48,128.23 L444.55,128.22 L445.02,128.17
+		L445.55,128.11 L446.09,128.05 L446.62,127.99 L447.16,127.92 L447.70,127.86 L448.23,127.80 L448.77,127.75 L449.30,127.71
+		L449.84,127.67 L450.37,127.65 L450.64,127.65 L450.91,127.64 L451.45,127.63 L451.98,127.63 L452.52,127.63 L453.05,127.62
+		L453.59,127.62 L454.12,127.62 L454.66,127.61 L455.19,127.61 L455.73,127.60 L456.27,127.60 L456.72,127.59 L456.80,127.59
+		L457.34,127.49 L457.87,127.28 L458.41,126.97 L458.94,126.60 L459.48,126.18 L460.02,125.73 L460.55,125.29 L461.09,124.86
+		L461.62,124.48 L462.16,124.16 L462.69,123.94 L462.80,123.91 L463.23,123.79 L463.77,123.65 L464.30,123.53 L464.84,123.42
+		L465.37,123.32 L465.91,123.23 L466.44,123.14 L466.98,123.06 L467.51,122.98 L468.05,122.90 L468.59,122.83 L468.88,122.78
+		L469.12,122.75 L469.66,122.68 L470.19,122.61 L470.73,122.55 L471.26,122.49 L471.80,122.43 L472.34,122.37 L472.87,122.31
+		L473.41,122.25 L473.94,122.19 L474.48,122.13 L474.96,122.07 L475.01,122.07 L475.55,122.00 L476.09,121.94 L476.62,121.87
+		L477.16,121.81 L477.69,121.74 L478.23,121.67 L478.76,121.60 L479.30,121.53 L479.83,121.45 L480.37,121.37 L480.91,121.29
+		L481.04,121.27 L481.44,121.19 L481.98,121.07 L482.51,120.93 L483.05,120.78 L483.58,120.63 L484.12,120.47 L484.66,120.32
+		L485.19,120.19 L485.73,120.07 L486.26,119.98 L486.80,119.93 L487.12,119.91 L487.33,119.91 L487.87,119.90 L488.41,119.89
+		L488.94,119.88 L489.48,119.88 L490.01,119.87 L490.55,119.87 L491.08,119.87 L491.62,119.86 L492.15,119.85 L492.69,119.84
+		L493.20,119.83 L493.23,119.83 L493.76,119.78 L494.30,119.66 L494.83,119.50 L495.37,119.30 L495.90,119.08 L496.44,118.85
+		L496.98,118.62 L497.51,118.42 L498.05,118.25 L498.58,118.13 L499.12,118.07 L499.28,118.07 L499.65,118.07 L500.19,118.07
+		L500.73,118.07 L501.26,118.08 L501.80,118.08 L502.33,118.08 L502.87,118.09 L503.40,118.09 L503.94,118.09 L504.47,118.09
+		L505.01,118.10 L505.36,118.10 L505.55,118.09 L506.08,118.08 L506.62,118.04 L507.15,117.99 L507.69,117.92 L508.22,117.85
+		L508.76,117.76 L509.30,117.67 L509.83,117.57 L510.37,117.47 L510.90,117.37 L511.44,117.27 L511.97,117.17 L512.51,117.05
+		L513.05,116.92 L513.58,116.78 L514.12,116.63 L514.65,116.48 L515.19,116.33 L515.72,116.17 L516.26,116.02 L516.80,115.87
+		L517.33,115.73 L517.53,115.68 L517.87,115.59 L518.40,115.43 L518.94,115.27 L519.47,115.10 L520.01,114.92 L520.54,114.75
+		L521.08,114.60 L521.62,114.46 L522.15,114.35 L522.69,114.26 L523.22,114.21 L523.61,114.20 L523.76,114.20 L524.29,114.21
+		L524.83,114.22 L525.37,114.24 L525.90,114.27 L526.44,114.30 L526.97,114.34 L527.51,114.38 L528.04,114.43 L528.58,114.48
+		L529.12,114.54 L529.65,114.60 L529.69,114.60 L530.19,114.68 L530.72,114.83 L531.26,115.02 L531.79,115.24 L532.33,115.48
+		L532.86,115.73 L533.40,115.96 L533.94,116.18 L534.47,116.36 L535.01,116.49 L535.54,116.56 L535.77,116.56 L536.08,116.56
+		L536.61,116.56 L537.15,116.55 L537.69,116.53 L538.22,116.52 L538.76,116.50 L539.29,116.48 L539.83,116.45 L540.36,116.42
+		L540.90,116.40 L541.44,116.37 L541.85,116.35 L541.97,116.34 L542.51,116.30 L543.04,116.25 L543.58,116.19 L544.11,116.12
+		L544.65,116.05 L545.18,115.98 L545.72,115.92 L546.26,115.86 L546.79,115.82 L547.33,115.78 L547.86,115.77 L547.93,115.77
+		L548.40,115.80 L548.93,115.90 L549.47,116.05 L550.01,116.24 L550.54,116.45 L551.08,116.68 L551.61,116.91 L552.15,117.11
+		L552.68,117.29 L553.22,117.42 L553.76,117.49 L554.01,117.50 L554.29,117.50 L554.83,117.48 L555.36,117.46 L555.90,117.42
+		L556.43,117.37 L556.97,117.32 L557.50,117.26 L558.04,117.19 L558.58,117.13 L559.11,117.06 L559.65,116.99 L560.09,116.93
+		L560.18,116.92 L560.72,116.84 L561.25,116.75 L561.79,116.64 L562.33,116.52 L562.86,116.41 L563.40,116.29 L563.93,116.17
+		L564.47,116.07 L565.00,115.98 L565.54,115.91 L566.08,115.86 L566.17,115.85 L566.61,115.83 L567.15,115.81 L567.68,115.79
+		L568.22,115.77 L568.75,115.76 L569.29,115.75 L569.82,115.73 L570.36,115.72 L570.90,115.70 L571.43,115.68 L571.97,115.66
+		L572.25,115.64 L572.50,115.62 L573.04,115.54 L573.57,115.43 L574.11,115.29 L574.65,115.13 L575.18,114.96 L575.72,114.79
+		L576.25,114.63 L576.79,114.49 L577.32,114.37 L577.86,114.30 L578.33,114.27 L578.40,114.27 L578.93,114.26 L579.47,114.26
+		L580.00,114.25 L580.54,114.25 L581.07,114.25 L581.61,114.25 L582.15,114.24 L582.68,114.24 L583.22,114.24 L583.75,114.23
+		L584.29,114.23 L584.42,114.22 L584.82,114.21 L585.36,114.17 L585.89,114.10 L586.43,114.02 L586.97,113.91 L587.50,113.79
+		L588.04,113.66 L588.57,113.52 L589.11,113.38 L589.64,113.23 L590.18,113.08 L590.50,112.99 L590.72,112.92 L591.25,112.72
+		L591.79,112.47 L592.32,112.18 L592.86,111.88 L593.39,111.57 L593.93,111.27 L594.47,110.99 L595.00,110.75 L595.54,110.56
+		L596.07,110.44 L596.58,110.39 L596.61,110.39 L597.14,110.39 L597.68,110.39 L598.21,110.38 L598.75,110.38 L599.29,110.38
+		L599.82,110.38 L600.36,110.38 L600.89,110.37 L601.43,110.37 L601.96,110.37 L602.50,110.36 L602.66,110.36 L603.04,110.35
+		L603.57,110.32 L604.11,110.28 L604.64,110.22 L605.18,110.16 L605.71,110.09 L606.25,110.02 L606.79,109.96 L607.32,109.90
+		L607.86,109.86 L608.39,109.83 L608.74,109.82 L608.93,109.82 L609.46,109.82 L610.00,109.81 L610.53,109.81 L611.07,109.81
+		L611.61,109.81 L612.14,109.81 L612.68,109.80 L613.21,109.80 L613.75,109.80 L614.28,109.80 L614.55,109.80 L614.82,109.80
+		 '/></g>
 	</g>
 	<g id="gnuplot_plot_2" ><title>RawL</title>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
@@ -402,143 +402,143 @@
 	</g>
 </g>
 <g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
-	<path stroke='rgb(  0, 158, 115)'  d='M130.04,54.01 L172.60,54.01 M79.70,208.16 L80.24,207.35 L80.77,206.48 L81.31,205.58 L81.84,204.66 L82.38,203.74
-		L82.91,202.85 L83.45,202.00 L83.99,201.22 L84.52,200.51 L85.06,199.91 L85.59,199.42 L85.85,199.24 L86.13,199.06
-		L86.66,198.73 L87.20,198.41 L87.73,198.12 L88.27,197.84 L88.81,197.59 L89.34,197.36 L89.88,197.16 L90.41,196.99
-		L90.95,196.85 L91.48,196.74 L92.00,196.66 L92.02,196.66 L92.56,196.60 L93.09,196.56 L93.63,196.52 L94.16,196.49
-		L94.70,196.46 L95.23,196.44 L95.77,196.41 L96.31,196.39 L96.84,196.36 L97.38,196.32 L97.91,196.27 L98.15,196.25
-		L98.45,196.22 L98.98,196.15 L99.52,196.08 L100.05,195.99 L100.59,195.89 L101.13,195.78 L101.66,195.67 L102.20,195.54
-		L102.73,195.41 L103.27,195.27 L103.80,195.11 L104.30,194.97 L104.34,194.96 L104.88,194.74 L105.41,194.46 L105.95,194.11
-		L106.48,193.73 L107.02,193.33 L107.55,192.94 L108.09,192.56 L108.63,192.22 L109.16,191.94 L109.70,191.74 L110.23,191.63
-		L110.45,191.62 L110.77,191.62 L111.30,191.62 L111.84,191.62 L112.37,191.62 L112.91,191.62 L113.45,191.62 L113.98,191.62
-		L114.52,191.62 L115.05,191.62 L115.59,191.62 L116.12,191.62 L116.60,191.62 L116.66,191.61 L117.20,191.56 L117.73,191.41
-		L118.27,191.19 L118.80,190.91 L119.34,190.58 L119.87,190.21 L120.41,189.83 L120.95,189.44 L121.48,189.05 L122.02,188.68
-		L122.55,188.34 L122.76,188.22 L123.09,188.03 L123.62,187.70 L124.16,187.36 L124.70,187.01 L125.23,186.65 L125.77,186.30
-		L126.30,185.96 L126.84,185.64 L127.37,185.35 L127.91,185.09 L128.44,184.86 L128.91,184.71 L128.98,184.68 L129.52,184.54
-		L130.05,184.42 L130.59,184.31 L131.12,184.22 L131.66,184.13 L132.19,184.05 L132.73,183.96 L133.27,183.87 L133.80,183.77
-		L134.34,183.65 L134.87,183.52 L135.06,183.46 L135.41,183.34 L135.94,183.09 L136.48,182.78 L137.02,182.42 L137.55,182.04
-		L138.09,181.64 L138.62,181.26 L139.16,180.91 L139.69,180.61 L140.23,180.37 L140.76,180.22 L141.21,180.17 L141.30,180.17
-		L141.84,180.16 L142.37,180.15 L142.91,180.14 L143.44,180.14 L143.98,180.13 L144.51,180.13 L145.05,180.12 L145.59,180.12
-		L146.12,180.11 L146.66,180.11 L147.19,180.09 L147.36,180.09 L147.73,180.04 L148.26,179.85 L148.80,179.52 L149.34,179.08
-		L149.87,178.55 L150.41,177.94 L150.94,177.29 L151.48,176.60 L152.01,175.89 L152.55,175.19 L153.08,174.51 L153.51,174.01
-		L153.62,173.88 L154.16,173.20 L154.69,172.45 L155.23,171.65 L155.76,170.81 L156.30,169.96 L156.83,169.11 L157.37,168.30
-		L157.91,167.54 L158.44,166.84 L158.98,166.24 L159.51,165.74 L159.66,165.63 L160.05,165.36 L160.58,165.01 L161.12,164.71
-		L161.66,164.42 L162.19,164.17 L162.73,163.92 L163.26,163.69 L163.80,163.46 L164.33,163.23 L164.87,163.00 L165.40,162.75
-		L165.81,162.54 L165.94,162.48 L166.48,162.22 L167.01,161.97 L167.55,161.74 L168.08,161.51 L168.62,161.27 L169.15,161.02
-		L169.69,160.76 L170.23,160.47 L170.76,160.15 L171.30,159.79 L171.83,159.38 L171.96,159.28 L172.37,158.86 L172.90,158.08
-		L173.44,157.10 L173.98,155.97 L174.51,154.73 L175.05,153.45 L175.58,152.17 L176.12,150.95 L176.65,149.83 L177.19,148.88
-		L177.72,148.15 L178.11,147.78 L178.26,147.67 L178.80,147.32 L179.33,147.01 L179.87,146.75 L180.40,146.52 L180.94,146.32
-		L181.47,146.12 L182.01,145.93 L182.55,145.72 L183.08,145.50 L183.62,145.25 L184.15,144.95 L184.26,144.89 L184.69,144.62
-		L185.22,144.25 L185.76,143.84 L186.30,143.41 L186.83,142.96 L187.37,142.49 L187.90,142.00 L188.44,141.49 L188.97,140.98
-		L189.51,140.47 L190.05,139.95 L190.41,139.60 L190.58,139.44 L191.12,138.87 L191.65,138.24 L192.19,137.58 L192.72,136.90
-		L193.26,136.22 L193.79,135.55 L194.33,134.91 L194.87,134.33 L195.40,133.80 L195.94,133.37 L196.47,133.03 L196.57,132.98
-		L197.01,132.77 L197.54,132.54 L198.08,132.32 L198.62,132.12 L199.15,131.94 L199.69,131.78 L200.22,131.62 L200.76,131.48
-		L201.29,131.35 L201.83,131.22 L202.37,131.11 L202.72,131.03 L202.90,131.00 L203.44,130.90 L203.97,130.81 L204.51,130.73
-		L205.04,130.66 L205.58,130.60 L206.11,130.53 L206.65,130.46 L207.19,130.38 L207.72,130.30 L208.26,130.20 L208.79,130.09
-		L208.87,130.08 L209.33,129.96 L209.86,129.79 L210.40,129.59 L210.94,129.37 L211.47,129.13 L212.01,128.88 L212.54,128.62
-		L213.08,128.35 L213.61,128.10 L214.15,127.85 L214.69,127.61 L215.02,127.48 L215.22,127.40 L215.76,127.20 L216.29,127.01
-		L216.83,126.83 L217.36,126.65 L217.90,126.47 L218.43,126.29 L218.97,126.10 L219.51,125.91 L220.04,125.70 L220.58,125.47
-		L221.11,125.23 L221.17,125.20 L221.65,124.94 L222.18,124.59 L222.72,124.18 L223.26,123.74 L223.79,123.28 L224.33,122.82
-		L224.86,122.37 L225.40,121.96 L225.93,121.60 L226.47,121.31 L227.01,121.10 L227.32,121.02 L227.54,120.98 L228.08,120.90
-		L228.61,120.83 L229.15,120.78 L229.68,120.74 L230.22,120.70 L230.75,120.66 L231.29,120.62 L231.83,120.57 L232.36,120.52
-		L232.90,120.44 L233.43,120.36 L233.47,120.35 L233.97,120.20 L234.50,119.95 L235.04,119.61 L235.58,119.21 L236.11,118.76
-		L236.65,118.30 L237.18,117.85 L237.72,117.41 L238.25,117.03 L238.79,116.71 L239.33,116.49 L239.62,116.41 L239.86,116.37
-		L240.40,116.28 L240.93,116.21 L241.47,116.15 L242.00,116.10 L242.54,116.06 L243.07,116.02 L243.61,115.97 L244.15,115.92
-		L244.68,115.86 L245.22,115.79 L245.75,115.70 L245.77,115.69 L246.29,115.57 L246.82,115.40 L247.36,115.19 L247.90,114.95
-		L248.43,114.68 L248.97,114.39 L249.50,114.09 L250.04,113.79 L250.57,113.49 L251.11,113.19 L251.65,112.91 L251.92,112.78
-		L252.18,112.65 L252.72,112.37 L253.25,112.08 L253.79,111.77 L254.32,111.47 L254.86,111.17 L255.40,110.87 L255.93,110.60
-		L256.47,110.34 L257.00,110.12 L257.54,109.92 L257.81,109.84 L258.07,109.77 L258.61,109.66 L259.14,109.56 L259.68,109.48
-		L260.22,109.41 L260.75,109.34 L261.29,109.28 L261.82,109.22 L262.36,109.15 L262.89,109.07 L263.43,108.98 L263.97,108.87
-		L264.22,108.81 L264.50,108.73 L265.04,108.50 L265.57,108.21 L266.11,107.86 L266.64,107.48 L267.18,107.07 L267.72,106.67
-		L268.25,106.28 L268.79,105.92 L269.32,105.61 L269.86,105.37 L270.37,105.22 L270.39,105.22 L270.93,105.12 L271.46,105.03
-		L272.00,104.96 L272.54,104.90 L273.07,104.84 L273.61,104.79 L274.14,104.73 L274.68,104.68 L275.21,104.63 L275.75,104.57
-		L276.29,104.50 L276.53,104.47 L276.82,104.42 L277.36,104.34 L277.89,104.26 L278.43,104.18 L278.96,104.10 L279.50,104.01
-		L280.04,103.92 L280.57,103.82 L281.11,103.71 L281.64,103.60 L282.18,103.48 L282.68,103.36 L282.71,103.35 L283.25,103.20
-		L283.78,103.02 L284.32,102.83 L284.86,102.62 L285.39,102.40 L285.93,102.15 L286.46,101.90 L287.00,101.64 L287.53,101.37
-		L288.07,101.10 L288.61,100.82 L288.83,100.70 L289.14,100.52 L289.68,100.18 L290.21,99.79 L290.75,99.38 L291.28,98.94
-		L291.82,98.51 L292.36,98.08 L292.89,97.68 L293.43,97.31 L293.96,97.00 L294.50,96.75 L294.98,96.59 L295.03,96.58
-		L295.57,96.46 L296.10,96.35 L296.64,96.26 L297.18,96.18 L297.71,96.11 L298.25,96.05 L298.78,95.98 L299.32,95.92
-		L299.85,95.85 L300.39,95.76 L300.93,95.67 L301.13,95.63 L301.46,95.56 L302.00,95.44 L302.53,95.30 L303.07,95.15
-		L303.60,95.00 L304.14,94.84 L304.68,94.68 L305.21,94.51 L305.75,94.35 L306.28,94.19 L306.82,94.04 L307.28,93.91
-		L307.35,93.89 L307.89,93.74 L308.42,93.59 L308.96,93.44 L309.50,93.29 L310.03,93.14 L310.57,92.99 L311.10,92.85
-		L311.64,92.71 L312.17,92.58 L312.71,92.46 L313.25,92.35 L313.43,92.32 L313.78,92.25 L314.32,92.15 L314.85,92.04
-		L315.39,91.94 L315.92,91.85 L316.46,91.75 L317.00,91.67 L317.53,91.59 L318.07,91.53 L318.60,91.47 L319.14,91.43
-		L319.58,91.40 L319.67,91.40 L320.21,91.37 L320.75,91.36 L321.28,91.34 L321.82,91.33 L322.35,91.32 L322.89,91.30
-		L323.42,91.29 L323.96,91.28 L324.49,91.27 L325.03,91.26 L325.57,91.24 L325.73,91.24 L326.10,91.22 L326.64,91.21
-		L327.17,91.19 L327.71,91.17 L328.24,91.16 L328.78,91.14 L329.32,91.12 L329.85,91.09 L330.39,91.07 L330.92,91.04
-		L331.46,91.00 L331.88,90.98 L331.99,90.97 L332.53,90.90 L333.07,90.80 L333.60,90.67 L334.14,90.53 L334.67,90.38
-		L335.21,90.22 L335.74,90.08 L336.28,89.94 L336.81,89.83 L337.35,89.76 L337.89,89.72 L338.03,89.72 L338.42,89.73
-		L338.96,89.78 L339.49,89.86 L340.03,89.97 L340.56,90.11 L341.10,90.28 L341.64,90.46 L342.17,90.66 L342.71,90.87
-		L343.24,91.10 L343.78,91.32 L344.18,91.50 L344.31,91.56 L344.85,91.89 L345.39,92.34 L345.92,92.88 L346.46,93.47
-		L346.99,94.08 L347.53,94.69 L348.06,95.27 L348.60,95.78 L349.13,96.19 L349.67,96.48 L350.21,96.61 L350.34,96.62
-		L350.74,96.49 L351.28,95.97 L351.81,95.12 L352.35,94.02 L352.88,92.74 L353.42,91.37 L353.96,89.98 L354.49,88.64
-		L355.03,87.45 L355.56,86.46 L356.10,85.77 L356.49,85.49 L356.63,85.43 L357.17,85.21 L357.71,85.00 L358.24,84.80
-		L358.78,84.62 L359.31,84.46 L359.85,84.32 L360.38,84.20 L360.92,84.10 L361.45,84.03 L361.99,83.98 L362.53,83.96
-		L362.64,83.96 L363.06,83.97 L363.60,83.99 L364.13,84.03 L364.67,84.07 L365.20,84.12 L365.74,84.18 L366.28,84.23
-		L366.81,84.29 L367.35,84.33 L367.88,84.37 L368.42,84.39 L368.79,84.39 L368.95,84.39 L369.49,84.36 L370.03,84.29
-		L370.56,84.20 L371.10,84.09 L371.63,83.97 L372.17,83.85 L372.70,83.73 L373.24,83.63 L373.77,83.54 L374.31,83.48
-		L374.85,83.45 L374.94,83.45 L375.38,83.47 L375.92,83.55 L376.45,83.67 L376.99,83.82 L377.52,84.00 L378.06,84.18
-		L378.60,84.37 L379.13,84.54 L379.67,84.69 L380.20,84.80 L380.74,84.87 L381.09,84.88 L381.27,84.88 L381.81,84.86
-		L382.35,84.82 L382.88,84.76 L383.42,84.69 L383.95,84.60 L384.49,84.51 L385.02,84.41 L385.56,84.31 L386.10,84.20
-		L386.63,84.10 L387.17,84.01 L387.24,83.99 L387.70,83.92 L388.24,83.82 L388.77,83.72 L389.31,83.62 L389.84,83.52
-		L390.38,83.41 L390.92,83.30 L391.45,83.19 L391.99,83.07 L392.52,82.95 L393.06,82.83 L393.39,82.76 L393.59,82.71
-		L394.13,82.58 L394.67,82.45 L395.20,82.31 L395.74,82.17 L396.27,82.03 L396.81,81.89 L397.34,81.74 L397.88,81.59
-		L398.42,81.44 L398.95,81.30 L399.49,81.15 L399.54,81.13 L400.02,81.00 L400.56,80.85 L401.09,80.69 L401.63,80.53
-		L402.16,80.36 L402.70,80.20 L403.24,80.04 L403.77,79.89 L404.31,79.75 L404.84,79.61 L405.38,79.49 L405.69,79.42
-		L405.91,79.38 L406.45,79.27 L406.99,79.18 L407.52,79.09 L408.06,79.00 L408.59,78.92 L409.13,78.83 L409.66,78.75
-		L410.20,78.68 L410.74,78.60 L411.27,78.52 L411.81,78.43 L411.84,78.43 L412.34,78.35 L412.88,78.26 L413.41,78.17
-		L413.95,78.08 L414.48,77.99 L415.02,77.90 L415.56,77.81 L416.09,77.73 L416.63,77.65 L417.16,77.58 L417.70,77.52
-		L417.99,77.49 L418.23,77.47 L418.77,77.42 L419.31,77.38 L419.84,77.35 L420.38,77.32 L420.91,77.29 L421.45,77.26
-		L421.98,77.22 L422.52,77.19 L423.06,77.15 L423.59,77.10 L424.13,77.04 L424.15,77.03 L424.66,76.95 L425.20,76.82
-		L425.73,76.65 L426.27,76.46 L426.80,76.24 L427.34,76.01 L427.88,75.78 L428.41,75.55 L428.95,75.33 L429.48,75.13
-		L430.02,74.95 L430.30,74.87 L430.55,74.80 L431.09,74.66 L431.63,74.51 L432.16,74.37 L432.70,74.23 L433.23,74.09
-		L433.77,73.97 L434.30,73.85 L434.84,73.75 L435.38,73.66 L435.91,73.58 L436.18,73.55 L436.45,73.53 L436.98,73.48
-		L437.52,73.45 L438.05,73.42 L438.59,73.40 L439.12,73.37 L439.66,73.35 L440.20,73.33 L440.73,73.31 L441.27,73.28
-		L441.80,73.25 L442.34,73.21 L442.60,73.19 L442.87,73.17 L443.41,73.11 L443.95,73.03 L444.48,72.94 L445.02,72.84
-		L445.55,72.74 L446.09,72.62 L446.62,72.51 L447.16,72.39 L447.70,72.27 L448.23,72.15 L448.75,72.04 L448.77,72.03
-		L449.30,71.92 L449.84,71.79 L450.37,71.65 L450.91,71.50 L451.45,71.36 L451.98,71.22 L452.52,71.08 L453.05,70.95
-		L453.59,70.83 L454.12,70.73 L454.66,70.64 L454.90,70.61 L455.19,70.57 L455.73,70.52 L456.27,70.48 L456.80,70.44
-		L457.34,70.41 L457.87,70.38 L458.41,70.35 L458.94,70.32 L459.48,70.28 L460.02,70.23 L460.55,70.16 L461.05,70.10
-		L461.09,70.09 L461.62,69.91 L462.16,69.58 L462.69,69.12 L463.23,68.58 L463.77,67.97 L464.30,67.32 L464.84,66.67
-		L465.37,66.05 L465.91,65.47 L466.44,64.98 L466.98,64.60 L467.20,64.48 L467.51,64.34 L468.05,64.10 L468.59,63.89
-		L469.12,63.70 L469.66,63.52 L470.19,63.36 L470.73,63.20 L471.26,63.06 L471.80,62.91 L472.34,62.77 L472.87,62.63
-		L473.35,62.50 L473.41,62.48 L473.94,62.34 L474.48,62.21 L475.01,62.08 L475.55,61.96 L476.09,61.84 L476.62,61.72
-		L477.16,61.60 L477.69,61.48 L478.23,61.35 L478.76,61.22 L479.30,61.07 L479.50,61.02 L479.83,60.92 L480.37,60.77
-		L480.91,60.60 L481.44,60.43 L481.98,60.26 L482.51,60.08 L483.05,59.89 L483.58,59.71 L484.12,59.52 L484.66,59.32
-		L485.19,59.13 L485.65,58.96 L485.73,58.93 L486.26,58.73 L486.80,58.50 L487.33,58.26 L487.87,58.01 L488.41,57.76
-		L488.94,57.51 L489.48,57.28 L490.01,57.05 L490.55,56.85 L491.08,56.67 L491.62,56.53 L491.80,56.48 L492.15,56.41
-		L492.69,56.32 L493.23,56.23 L493.76,56.16 L494.30,56.10 L494.83,56.04 L495.37,55.98 L495.90,55.91 L496.44,55.84
-		L496.98,55.76 L497.51,55.66 L497.95,55.57 L498.05,55.55 L498.58,55.39 L499.12,55.17 L499.65,54.91 L500.19,54.63
-		L500.73,54.32 L501.26,54.01 L501.80,53.71 L502.33,53.43 L502.87,53.18 L503.40,52.98 L503.94,52.83 L504.11,52.80
-		L504.47,52.73 L505.01,52.66 L505.55,52.59 L506.08,52.54 L506.62,52.49 L507.15,52.44 L507.69,52.40 L508.22,52.36
-		L508.76,52.31 L509.30,52.25 L509.83,52.18 L510.26,52.12 L510.37,52.11 L510.90,52.01 L511.44,51.91 L511.97,51.80
-		L512.51,51.68 L513.05,51.54 L513.58,51.40 L514.12,51.25 L514.65,51.09 L515.19,50.92 L515.72,50.75 L516.26,50.56
-		L516.41,50.51 L516.80,50.37 L517.33,50.14 L517.87,49.88 L518.40,49.60 L518.94,49.30 L519.47,49.00 L520.01,48.68
-		L520.54,48.37 L521.08,48.06 L521.62,47.76 L522.15,47.47 L522.56,47.27 L522.69,47.21 L523.22,46.93 L523.76,46.63
-		L524.29,46.32 L524.83,46.00 L525.37,45.70 L525.90,45.41 L526.44,45.15 L526.97,44.92 L527.51,44.75 L528.04,44.63
-		L528.58,44.57 L528.71,44.57 L529.12,44.57 L529.65,44.58 L530.19,44.60 L530.72,44.62 L531.26,44.65 L531.79,44.68
-		L532.33,44.72 L532.86,44.77 L533.40,44.82 L533.94,44.87 L534.47,44.93 L534.86,44.97 L535.01,44.99 L535.54,45.12
-		L536.08,45.31 L536.61,45.56 L537.15,45.85 L537.69,46.16 L538.22,46.47 L538.76,46.76 L539.29,47.02 L539.83,47.24
-		L540.36,47.39 L540.90,47.46 L541.01,47.46 L541.44,47.46 L541.97,47.45 L542.51,47.43 L543.04,47.40 L543.58,47.37
-		L544.11,47.34 L544.65,47.30 L545.18,47.26 L545.72,47.21 L546.26,47.17 L546.79,47.12 L547.16,47.09 L547.33,47.07
-		L547.86,47.00 L548.40,46.90 L548.93,46.79 L549.47,46.67 L550.01,46.55 L550.54,46.43 L551.08,46.31 L551.61,46.21
-		L552.15,46.13 L552.68,46.07 L553.22,46.04 L553.31,46.04 L553.76,46.07 L554.29,46.15 L554.83,46.28 L555.36,46.44
-		L555.90,46.63 L556.43,46.82 L556.97,47.02 L557.50,47.20 L558.04,47.36 L558.58,47.48 L559.11,47.55 L559.46,47.57
-		L559.65,47.56 L560.18,47.53 L560.72,47.46 L561.25,47.37 L561.79,47.25 L562.33,47.11 L562.86,46.95 L563.40,46.79
-		L563.93,46.63 L564.47,46.46 L565.00,46.31 L565.54,46.17 L565.61,46.15 L566.08,46.03 L566.61,45.88 L567.15,45.73
-		L567.68,45.57 L568.22,45.41 L568.75,45.25 L569.29,45.10 L569.82,44.95 L570.36,44.81 L570.90,44.69 L571.43,44.58
-		L571.76,44.52 L571.97,44.49 L572.50,44.41 L573.04,44.35 L573.57,44.29 L574.11,44.23 L574.65,44.19 L575.18,44.14
-		L575.72,44.08 L576.25,44.03 L576.79,43.96 L577.32,43.88 L577.86,43.80 L577.92,43.79 L578.40,43.67 L578.93,43.48
-		L579.47,43.25 L580.00,42.98 L580.54,42.69 L581.07,42.40 L581.61,42.11 L582.15,41.85 L582.68,41.63 L583.22,41.46
-		L583.75,41.36 L584.07,41.34 L584.29,41.33 L584.82,41.32 L585.36,41.31 L585.89,41.30 L586.43,41.30 L586.97,41.29
-		L587.50,41.29 L588.04,41.28 L588.57,41.28 L589.11,41.27 L589.64,41.26 L590.18,41.25 L590.22,41.25 L590.72,41.22
-		L591.25,41.16 L591.79,41.06 L592.32,40.95 L592.86,40.80 L593.39,40.65 L593.93,40.47 L594.47,40.29 L595.00,40.09
-		L595.54,39.90 L596.07,39.70 L596.37,39.59 L596.61,39.49 L597.14,39.23 L597.68,38.91 L598.21,38.56 L598.75,38.18
-		L599.29,37.78 L599.82,37.40 L600.36,37.04 L600.89,36.71 L601.43,36.44 L601.96,36.24 L602.50,36.12 L602.52,36.12
-		L603.04,36.06 L603.57,36.01 L604.11,35.97 L604.64,35.93 L605.18,35.90 L605.71,35.88 L606.25,35.85 L606.79,35.82
-		L607.32,35.79 L607.86,35.75 L608.39,35.71 L608.67,35.69 L608.93,35.66 L609.46,35.60 L610.00,35.53 L610.53,35.45
-		L611.07,35.37 L611.61,35.28 L612.14,35.19 L612.68,35.10 L613.21,35.01 L613.75,34.92 L614.28,34.83 L614.55,34.79
-		L614.82,34.74  '/></g>
+	<path stroke='rgb(  0, 158, 115)'  d='M130.04,54.01 L172.60,54.01 M79.70,208.16 L80.24,207.34 L80.77,206.46 L81.31,205.55 L81.84,204.62 L82.38,203.69
+		L82.91,202.79 L83.45,201.94 L83.99,201.15 L84.52,200.44 L85.06,199.84 L85.59,199.37 L85.78,199.24 L86.13,199.01
+		L86.66,198.68 L87.20,198.36 L87.73,198.07 L88.27,197.79 L88.81,197.54 L89.34,197.32 L89.88,197.12 L90.41,196.96
+		L90.95,196.82 L91.48,196.71 L91.86,196.66 L92.02,196.64 L92.56,196.59 L93.09,196.55 L93.63,196.51 L94.16,196.48
+		L94.70,196.46 L95.23,196.43 L95.77,196.40 L96.31,196.38 L96.84,196.34 L97.38,196.30 L97.91,196.25 L97.94,196.25
+		L98.45,196.19 L98.98,196.12 L99.52,196.04 L100.05,195.95 L100.59,195.85 L101.13,195.73 L101.66,195.61 L102.20,195.48
+		L102.73,195.34 L103.27,195.19 L103.80,195.03 L104.02,194.97 L104.34,194.85 L104.88,194.60 L105.41,194.27 L105.95,193.90
+		L106.48,193.50 L107.02,193.10 L107.55,192.71 L108.09,192.35 L108.63,192.04 L109.16,191.80 L109.70,191.66 L110.10,191.62
+		L110.23,191.62 L110.77,191.62 L111.30,191.62 L111.84,191.62 L112.37,191.62 L112.91,191.62 L113.45,191.62 L113.98,191.62
+		L114.52,191.62 L115.05,191.62 L115.59,191.62 L116.12,191.62 L116.19,191.62 L116.66,191.57 L117.20,191.44 L117.73,191.23
+		L118.27,190.96 L118.80,190.63 L119.34,190.27 L119.87,189.88 L120.41,189.49 L120.95,189.09 L121.48,188.71 L122.02,188.37
+		L122.27,188.22 L122.55,188.06 L123.09,187.73 L123.62,187.38 L124.16,187.02 L124.70,186.67 L125.23,186.31 L125.77,185.97
+		L126.30,185.64 L126.84,185.35 L127.37,185.08 L127.91,184.86 L128.35,184.71 L128.44,184.68 L128.98,184.53 L129.52,184.41
+		L130.05,184.30 L130.59,184.21 L131.12,184.12 L131.66,184.04 L132.19,183.95 L132.73,183.86 L133.27,183.75 L133.80,183.63
+		L134.34,183.49 L134.43,183.46 L134.87,183.30 L135.41,183.03 L135.94,182.71 L136.48,182.34 L137.02,181.95 L137.55,181.55
+		L138.09,181.17 L138.62,180.83 L139.16,180.54 L139.69,180.32 L140.23,180.19 L140.51,180.17 L140.76,180.16 L141.30,180.15
+		L141.84,180.14 L142.37,180.14 L142.91,180.13 L143.44,180.13 L143.98,180.13 L144.51,180.12 L145.05,180.12 L145.59,180.11
+		L146.12,180.10 L146.59,180.09 L146.66,180.09 L147.19,179.97 L147.73,179.71 L148.26,179.33 L148.80,178.83 L149.34,178.26
+		L149.87,177.62 L150.41,176.93 L150.94,176.22 L151.48,175.51 L152.01,174.81 L152.55,174.15 L152.67,174.01 L153.08,173.50
+		L153.62,172.77 L154.16,171.98 L154.69,171.14 L155.23,170.28 L155.76,169.42 L156.30,168.59 L156.83,167.79 L157.37,167.06
+		L157.91,166.42 L158.44,165.88 L158.75,165.63 L158.98,165.47 L159.51,165.11 L160.05,164.79 L160.58,164.50 L161.12,164.23
+		L161.66,163.98 L162.19,163.74 L162.73,163.51 L163.26,163.28 L163.80,163.04 L164.33,162.79 L164.83,162.54 L164.87,162.52
+		L165.40,162.26 L165.94,162.01 L166.48,161.77 L167.01,161.54 L167.55,161.30 L168.08,161.05 L168.62,160.78 L169.15,160.49
+		L169.69,160.17 L170.23,159.81 L170.76,159.40 L170.91,159.28 L171.30,158.88 L171.83,158.10 L172.37,157.12 L172.90,155.97
+		L173.44,154.72 L173.98,153.42 L174.51,152.13 L175.05,150.89 L175.58,149.77 L176.12,148.83 L176.65,148.10 L176.99,147.78
+		L177.19,147.64 L177.72,147.28 L178.26,146.98 L178.80,146.72 L179.33,146.49 L179.87,146.29 L180.40,146.09 L180.94,145.89
+		L181.47,145.68 L182.01,145.45 L182.55,145.19 L183.08,144.89 L183.08,144.88 L183.62,144.54 L184.15,144.15 L184.69,143.74
+		L185.22,143.30 L185.76,142.83 L186.30,142.35 L186.83,141.85 L187.37,141.34 L187.90,140.82 L188.44,140.30 L188.97,139.78
+		L189.16,139.60 L189.51,139.24 L190.05,138.64 L190.58,138.00 L191.12,137.32 L191.65,136.63 L192.19,135.94 L192.72,135.28
+		L193.26,134.65 L193.79,134.08 L194.33,133.59 L194.87,133.19 L195.24,132.98 L195.40,132.90 L195.94,132.65 L196.47,132.43
+		L197.01,132.22 L197.54,132.03 L198.08,131.85 L198.62,131.69 L199.15,131.54 L199.69,131.40 L200.22,131.28 L200.76,131.15
+		L201.29,131.04 L201.32,131.03 L201.83,130.93 L202.37,130.84 L202.90,130.76 L203.44,130.69 L203.97,130.62 L204.51,130.55
+		L205.04,130.48 L205.58,130.41 L206.11,130.33 L206.65,130.23 L207.19,130.12 L207.40,130.08 L207.72,130.00 L208.26,129.83
+		L208.79,129.64 L209.33,129.42 L209.86,129.18 L210.40,128.93 L210.94,128.66 L211.47,128.40 L212.01,128.14 L212.54,127.88
+		L213.08,127.64 L213.48,127.48 L213.61,127.43 L214.15,127.22 L214.69,127.03 L215.22,126.84 L215.76,126.66 L216.29,126.48
+		L216.83,126.30 L217.36,126.11 L217.90,125.91 L218.43,125.70 L218.97,125.48 L219.51,125.23 L219.56,125.20 L220.04,124.94
+		L220.58,124.58 L221.11,124.16 L221.65,123.72 L222.18,123.25 L222.72,122.79 L223.26,122.34 L223.79,121.93 L224.33,121.57
+		L224.86,121.28 L225.40,121.08 L225.64,121.02 L225.93,120.97 L226.47,120.89 L227.01,120.82 L227.54,120.77 L228.08,120.73
+		L228.61,120.69 L229.15,120.65 L229.68,120.61 L230.22,120.56 L230.75,120.50 L231.29,120.42 L231.72,120.35 L231.83,120.33
+		L232.36,120.14 L232.90,119.86 L233.43,119.49 L233.97,119.07 L234.50,118.62 L235.04,118.15 L235.58,117.69 L236.11,117.27
+		L236.65,116.90 L237.18,116.62 L237.72,116.43 L237.80,116.41 L238.25,116.33 L238.79,116.25 L239.33,116.18 L239.86,116.13
+		L240.40,116.08 L240.93,116.04 L241.47,115.99 L242.00,115.95 L242.54,115.89 L243.07,115.82 L243.61,115.74 L243.88,115.69
+		L244.15,115.64 L244.68,115.49 L245.22,115.29 L245.75,115.06 L246.29,114.80 L246.82,114.51 L247.36,114.22 L247.90,113.91
+		L248.43,113.60 L248.97,113.30 L249.50,113.01 L249.97,112.78 L250.04,112.74 L250.57,112.47 L251.11,112.17 L251.65,111.87
+		L252.18,111.56 L252.72,111.25 L253.25,110.95 L253.79,110.67 L254.32,110.40 L254.86,110.17 L255.40,109.97 L255.93,109.80
+		L256.05,109.77 L256.47,109.68 L257.00,109.58 L257.54,109.49 L258.07,109.42 L258.61,109.35 L259.14,109.29 L259.68,109.23
+		L260.22,109.16 L260.75,109.08 L261.29,108.99 L261.82,108.88 L262.13,108.81 L262.36,108.74 L262.89,108.52 L263.43,108.23
+		L263.97,107.88 L264.50,107.49 L265.04,107.08 L265.57,106.67 L266.11,106.28 L266.64,105.92 L267.18,105.61 L267.72,105.37
+		L268.21,105.22 L268.25,105.22 L268.79,105.11 L269.32,105.03 L269.86,104.95 L270.39,104.89 L270.93,104.83 L271.46,104.78
+		L272.00,104.73 L272.54,104.68 L273.07,104.62 L273.61,104.56 L274.14,104.49 L274.29,104.47 L274.68,104.41 L275.21,104.33
+		L275.75,104.25 L276.29,104.16 L276.82,104.08 L277.36,103.99 L277.89,103.89 L278.43,103.79 L278.96,103.68 L279.50,103.57
+		L280.04,103.44 L280.37,103.36 L280.57,103.30 L281.11,103.14 L281.64,102.96 L282.18,102.76 L282.71,102.54 L283.25,102.31
+		L283.78,102.06 L284.32,101.80 L284.86,101.53 L285.39,101.26 L285.93,100.98 L286.45,100.70 L286.46,100.69 L287.00,100.38
+		L287.53,100.01 L288.07,99.60 L288.61,99.17 L289.14,98.73 L289.68,98.29 L290.21,97.87 L290.75,97.48 L291.28,97.14
+		L291.82,96.85 L292.36,96.64 L292.53,96.59 L292.89,96.51 L293.43,96.39 L293.96,96.30 L294.50,96.21 L295.03,96.14
+		L295.57,96.07 L296.10,96.01 L296.64,95.94 L297.18,95.87 L297.71,95.79 L298.25,95.70 L298.61,95.63 L298.78,95.60
+		L299.32,95.47 L299.85,95.34 L300.39,95.19 L300.93,95.04 L301.46,94.88 L302.00,94.72 L302.53,94.55 L303.07,94.38
+		L303.60,94.22 L304.14,94.06 L304.68,93.91 L304.69,93.91 L305.21,93.77 L305.75,93.61 L306.28,93.46 L306.82,93.31
+		L307.35,93.16 L307.89,93.01 L308.42,92.86 L308.96,92.72 L309.50,92.59 L310.03,92.47 L310.57,92.36 L310.77,92.32
+		L311.10,92.25 L311.64,92.15 L312.17,92.05 L312.71,91.94 L313.25,91.85 L313.78,91.75 L314.32,91.67 L314.85,91.59
+		L315.39,91.52 L315.92,91.47 L316.46,91.42 L316.86,91.40 L317.00,91.39 L317.53,91.37 L318.07,91.35 L318.60,91.34
+		L319.14,91.33 L319.67,91.31 L320.21,91.30 L320.75,91.29 L321.28,91.28 L321.82,91.27 L322.35,91.25 L322.89,91.24
+		L322.94,91.24 L323.42,91.22 L323.96,91.20 L324.49,91.19 L325.03,91.17 L325.57,91.15 L326.10,91.13 L326.64,91.11
+		L327.17,91.08 L327.71,91.06 L328.24,91.03 L328.78,90.99 L329.02,90.98 L329.32,90.95 L329.85,90.87 L330.39,90.76
+		L330.92,90.62 L331.46,90.47 L331.99,90.31 L332.53,90.16 L333.07,90.01 L333.60,89.89 L334.14,89.79 L334.67,89.74
+		L335.10,89.72 L335.21,89.72 L335.74,89.75 L336.28,89.81 L336.81,89.91 L337.35,90.04 L337.89,90.20 L338.42,90.38
+		L338.96,90.57 L339.49,90.78 L340.03,91.00 L340.56,91.23 L341.10,91.46 L341.18,91.50 L341.64,91.75 L342.17,92.17
+		L342.71,92.68 L343.24,93.26 L343.78,93.88 L344.31,94.50 L344.85,95.09 L345.39,95.63 L345.92,96.08 L346.46,96.41
+		L346.99,96.59 L347.26,96.62 L347.53,96.56 L348.06,96.13 L348.60,95.34 L349.13,94.27 L349.67,93.02 L350.21,91.64
+		L350.74,90.23 L351.28,88.87 L351.81,87.63 L352.35,86.59 L352.88,85.85 L353.34,85.49 L353.42,85.46 L353.96,85.23
+		L354.49,85.02 L355.03,84.82 L355.56,84.63 L356.10,84.47 L356.63,84.33 L357.17,84.21 L357.71,84.11 L358.24,84.03
+		L358.78,83.98 L359.31,83.96 L359.42,83.96 L359.85,83.97 L360.38,83.99 L360.92,84.03 L361.45,84.07 L361.99,84.13
+		L362.53,84.18 L363.06,84.24 L363.60,84.29 L364.13,84.34 L364.67,84.37 L365.20,84.39 L365.50,84.39 L365.74,84.39
+		L366.28,84.35 L366.81,84.28 L367.35,84.18 L367.88,84.07 L368.42,83.95 L368.95,83.83 L369.49,83.71 L370.03,83.61
+		L370.56,83.52 L371.10,83.47 L371.58,83.45 L371.63,83.45 L372.17,83.49 L372.70,83.58 L373.24,83.71 L373.77,83.88
+		L374.31,84.06 L374.85,84.25 L375.38,84.43 L375.92,84.60 L376.45,84.73 L376.99,84.83 L377.52,84.88 L377.66,84.88
+		L378.06,84.88 L378.60,84.85 L379.13,84.80 L379.67,84.73 L380.20,84.65 L380.74,84.56 L381.27,84.46 L381.81,84.36
+		L382.35,84.26 L382.88,84.15 L383.42,84.05 L383.75,83.99 L383.95,83.96 L384.49,83.87 L385.02,83.77 L385.56,83.67
+		L386.10,83.56 L386.63,83.45 L387.17,83.34 L387.70,83.23 L388.24,83.11 L388.77,83.00 L389.31,82.88 L389.83,82.76
+		L389.84,82.75 L390.38,82.63 L390.92,82.49 L391.45,82.36 L391.99,82.22 L392.52,82.07 L393.06,81.93 L393.59,81.78
+		L394.13,81.63 L394.67,81.48 L395.20,81.33 L395.74,81.18 L395.91,81.13 L396.27,81.03 L396.81,80.88 L397.34,80.72
+		L397.88,80.55 L398.42,80.39 L398.95,80.23 L399.49,80.07 L400.02,79.91 L400.56,79.76 L401.09,79.63 L401.63,79.50
+		L401.99,79.42 L402.16,79.39 L402.70,79.28 L403.24,79.18 L403.77,79.09 L404.31,79.00 L404.84,78.92 L405.38,78.84
+		L405.91,78.75 L406.45,78.68 L406.99,78.60 L407.52,78.51 L408.06,78.43 L408.07,78.43 L408.59,78.34 L409.13,78.25
+		L409.66,78.16 L410.20,78.07 L410.74,77.98 L411.27,77.89 L411.81,77.80 L412.34,77.72 L412.88,77.64 L413.41,77.57
+		L413.95,77.51 L414.15,77.49 L414.48,77.46 L415.02,77.41 L415.56,77.37 L416.09,77.34 L416.63,77.31 L417.16,77.28
+		L417.70,77.25 L418.23,77.22 L418.77,77.18 L419.31,77.13 L419.84,77.08 L420.23,77.03 L420.38,77.01 L420.91,76.91
+		L421.45,76.76 L421.98,76.59 L422.52,76.38 L423.06,76.16 L423.59,75.93 L424.13,75.69 L424.66,75.46 L425.20,75.24
+		L425.73,75.05 L426.27,74.88 L426.31,74.87 L426.80,74.74 L427.34,74.59 L427.88,74.44 L428.41,74.30 L428.95,74.16
+		L429.48,74.03 L430.02,73.91 L430.55,73.79 L431.09,73.70 L431.63,73.61 L432.16,73.55 L432.39,73.53 L432.70,73.50
+		L433.23,73.46 L433.77,73.43 L434.30,73.41 L434.84,73.38 L435.38,73.36 L435.91,73.34 L436.45,73.32 L436.98,73.29
+		L437.52,73.26 L438.05,73.23 L438.47,73.19 L438.59,73.18 L439.12,73.13 L439.66,73.05 L440.20,72.97 L440.73,72.87
+		L441.27,72.76 L441.80,72.65 L442.34,72.53 L442.87,72.41 L443.41,72.29 L443.95,72.17 L444.48,72.05 L444.55,72.04
+		L445.02,71.94 L445.55,71.81 L446.09,71.67 L446.62,71.52 L447.16,71.38 L447.70,71.23 L448.23,71.09 L448.77,70.96
+		L449.30,70.84 L449.84,70.73 L450.37,70.64 L450.64,70.61 L450.91,70.58 L451.45,70.52 L451.98,70.48 L452.52,70.44
+		L453.05,70.41 L453.59,70.38 L454.12,70.35 L454.66,70.31 L455.19,70.27 L455.73,70.22 L456.27,70.16 L456.72,70.10
+		L456.80,70.08 L457.34,69.88 L457.87,69.53 L458.41,69.06 L458.94,68.50 L459.48,67.87 L460.02,67.22 L460.55,66.56
+		L461.09,65.94 L461.62,65.37 L462.16,64.89 L462.69,64.53 L462.80,64.48 L463.23,64.28 L463.77,64.05 L464.30,63.84
+		L464.84,63.65 L465.37,63.48 L465.91,63.31 L466.44,63.16 L466.98,63.01 L467.51,62.87 L468.05,62.72 L468.59,62.58
+		L468.88,62.50 L469.12,62.43 L469.66,62.29 L470.19,62.16 L470.73,62.03 L471.26,61.91 L471.80,61.79 L472.34,61.67
+		L472.87,61.55 L473.41,61.42 L473.94,61.29 L474.48,61.15 L474.96,61.02 L475.01,61.00 L475.55,60.85 L476.09,60.68
+		L476.62,60.52 L477.16,60.34 L477.69,60.16 L478.23,59.98 L478.76,59.79 L479.30,59.60 L479.83,59.40 L480.37,59.21
+		L480.91,59.01 L481.04,58.96 L481.44,58.81 L481.98,58.58 L482.51,58.34 L483.05,58.09 L483.58,57.84 L484.12,57.59
+		L484.66,57.35 L485.19,57.12 L485.73,56.91 L486.26,56.72 L486.80,56.56 L487.12,56.48 L487.33,56.44 L487.87,56.34
+		L488.41,56.25 L488.94,56.18 L489.48,56.11 L490.01,56.05 L490.55,55.99 L491.08,55.92 L491.62,55.85 L492.15,55.77
+		L492.69,55.68 L493.20,55.57 L493.23,55.57 L493.76,55.41 L494.30,55.20 L494.83,54.94 L495.37,54.65 L495.90,54.34
+		L496.44,54.03 L496.98,53.73 L497.51,53.44 L498.05,53.19 L498.58,52.98 L499.12,52.83 L499.28,52.80 L499.65,52.73
+		L500.19,52.66 L500.73,52.59 L501.26,52.54 L501.80,52.49 L502.33,52.44 L502.87,52.40 L503.40,52.35 L503.94,52.30
+		L504.47,52.24 L505.01,52.18 L505.36,52.12 L505.55,52.09 L506.08,52.00 L506.62,51.90 L507.15,51.78 L507.69,51.65
+		L508.22,51.52 L508.76,51.37 L509.30,51.22 L509.83,51.05 L510.37,50.88 L510.90,50.70 L511.44,50.52 L511.44,50.51
+		L511.97,50.31 L512.51,50.07 L513.05,49.80 L513.58,49.51 L514.12,49.21 L514.65,48.89 L515.19,48.57 L515.72,48.26
+		L516.26,47.94 L516.80,47.65 L517.33,47.37 L517.53,47.27 L517.87,47.10 L518.40,46.81 L518.94,46.50 L519.47,46.18
+		L520.01,45.86 L520.54,45.56 L521.08,45.28 L521.62,45.03 L522.15,44.83 L522.69,44.68 L523.22,44.59 L523.61,44.57
+		L523.76,44.57 L524.29,44.57 L524.83,44.59 L525.37,44.61 L525.90,44.64 L526.44,44.67 L526.97,44.71 L527.51,44.75
+		L528.04,44.80 L528.58,44.85 L529.12,44.91 L529.65,44.97 L529.69,44.97 L530.19,45.07 L530.72,45.24 L531.26,45.48
+		L531.79,45.76 L532.33,46.07 L532.86,46.38 L533.40,46.69 L533.94,46.96 L534.47,47.19 L535.01,47.36 L535.54,47.45
+		L535.77,47.46 L536.08,47.46 L536.61,47.45 L537.15,47.43 L537.69,47.41 L538.22,47.38 L538.76,47.34 L539.29,47.31
+		L539.83,47.26 L540.36,47.22 L540.90,47.17 L541.44,47.12 L541.85,47.09 L541.97,47.07 L542.51,47.00 L543.04,46.91
+		L543.58,46.80 L544.11,46.68 L544.65,46.55 L545.18,46.43 L545.72,46.31 L546.26,46.21 L546.79,46.12 L547.33,46.07
+		L547.86,46.04 L547.93,46.04 L548.40,46.07 L548.93,46.15 L549.47,46.29 L550.01,46.46 L550.54,46.65 L551.08,46.85
+		L551.61,47.04 L552.15,47.23 L552.68,47.38 L553.22,47.50 L553.76,47.56 L554.01,47.57 L554.29,47.56 L554.83,47.52
+		L555.36,47.45 L555.90,47.34 L556.43,47.22 L556.97,47.07 L557.50,46.91 L558.04,46.75 L558.58,46.58 L559.11,46.42
+		L559.65,46.27 L560.09,46.15 L560.18,46.13 L560.72,45.98 L561.25,45.83 L561.79,45.68 L562.33,45.51 L562.86,45.35
+		L563.40,45.19 L563.93,45.04 L564.47,44.89 L565.00,44.76 L565.54,44.64 L566.08,44.54 L566.17,44.52 L566.61,44.45
+		L567.15,44.38 L567.68,44.32 L568.22,44.26 L568.75,44.21 L569.29,44.16 L569.82,44.11 L570.36,44.05 L570.90,43.99
+		L571.43,43.92 L571.97,43.84 L572.25,43.79 L572.50,43.73 L573.04,43.57 L573.57,43.35 L574.11,43.09 L574.65,42.80
+		L575.18,42.50 L575.72,42.21 L576.25,41.94 L576.79,41.70 L577.32,41.51 L577.86,41.39 L578.33,41.34 L578.40,41.34
+		L578.93,41.32 L579.47,41.31 L580.00,41.31 L580.54,41.30 L581.07,41.29 L581.61,41.29 L582.15,41.29 L582.68,41.28
+		L583.22,41.27 L583.75,41.26 L584.29,41.25 L584.42,41.25 L584.82,41.23 L585.36,41.17 L585.89,41.08 L586.43,40.96
+		L586.97,40.82 L587.50,40.66 L588.04,40.49 L588.57,40.30 L589.11,40.11 L589.64,39.91 L590.18,39.71 L590.50,39.59
+		L590.72,39.50 L591.25,39.24 L591.79,38.92 L592.32,38.56 L592.86,38.17 L593.39,37.78 L593.93,37.39 L594.47,37.02
+		L595.00,36.70 L595.54,36.43 L596.07,36.23 L596.58,36.12 L596.61,36.12 L597.14,36.06 L597.68,36.01 L598.21,35.96
+		L598.75,35.93 L599.29,35.90 L599.82,35.87 L600.36,35.84 L600.89,35.82 L601.43,35.78 L601.96,35.75 L602.50,35.70
+		L602.66,35.69 L603.04,35.65 L603.57,35.57 L604.11,35.49 L604.64,35.40 L605.18,35.30 L605.71,35.20 L606.25,35.11
+		L606.79,35.01 L607.32,34.92 L607.86,34.84 L608.39,34.78 L608.74,34.74 L608.93,34.73 L609.46,34.69 L610.00,34.65
+		L610.53,34.61 L611.07,34.58 L611.61,34.55 L612.14,34.52 L612.68,34.50 L613.21,34.47 L613.75,34.44 L614.28,34.41
+		L614.55,34.40 L614.82,34.38  '/></g>
 	</g>
 <g fill="none" color="white" stroke="rgb(  0, 158, 115)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
 </g>
diff -pruN 6.16-2/Makefile 6.17-1/Makefile
--- 6.16-2/Makefile	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/Makefile	2025-09-29 14:59:32.000000000 +0000
@@ -556,7 +556,7 @@ test-mkfs: btrfs mkfs.btrfs
 	@echo "  TEST     mkfs-tests.sh"
 	$(Q)bash tests/mkfs-tests.sh
 
-test-fuzz: btrfs btrfs-image
+test-fuzz: btrfs btrfs-image btrfs-sb-mod
 	@echo "  TEST     fuzz-tests.sh"
 	$(Q)bash tests/fuzz-tests.sh
 
diff -pruN 6.16-2/VERSION 6.17-1/VERSION
--- 6.16-2/VERSION	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/VERSION	2025-09-29 14:59:32.000000000 +0000
@@ -1 +1 @@
-v6.16
+v6.17
diff -pruN 6.16-2/btrfs-completion 6.17-1/btrfs-completion
--- 6.16-2/btrfs-completion	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/btrfs-completion	2025-09-29 14:59:32.000000000 +0000
@@ -24,14 +24,14 @@ _btrfs()
 
 	commands='subvolume filesystem balance device scrub check rescue restore inspect-internal property send receive quota qgroup replace help version'
 	commands_subvolume='create delete list snapshot find-new get-default set-default show sync'
-	commands_filesystem='defragment sync resize show df du label usage mkswapfile'
+	commands_filesystem='defragment sync resize show df du label usage mkswapfile commit-stats'
 	commands_balance='start pause cancel resume status'
 	commands_device='scan add delete remove ready stats usage'
 	commands_scrub='start cancel resume status'
 	commands_rescue='chunk-recover super-recover zero-log fix-device-size create-control-device clear-uuid-tree clear-ino-cache clear-space-cache'
 	commands_inspect_internal='inode-resolve logical-resolve subvolid-resolve rootid min-dev-size dump-tree dump-super tree-stats map-swapfile'
 	commands_property='get set list'
-	commands_quota='enable disable rescan'
+	commands_quota='enable disable rescan status'
 	commands_qgroup='assign remove create destroy show limit clear-stale'
 	commands_replace='start status cancel'
 
diff -pruN 6.16-2/btrfs-corrupt-block.c 6.17-1/btrfs-corrupt-block.c
--- 6.16-2/btrfs-corrupt-block.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/btrfs-corrupt-block.c	2025-09-29 14:59:32.000000000 +0000
@@ -54,8 +54,7 @@ static int debug_corrupt_sector(struct b
 
 	buf = malloc(root->fs_info->sectorsize);
 	if (!buf) {
-		error_msg(ERROR_MSG_MEMORY, "allocating memory for bytenr %llu",
-			  logical);
+		error_mem("allocating memory for bytenr %llu", logical);
 		return -ENOMEM;
 	}
 
@@ -374,43 +373,43 @@ enum btrfs_block_group_field {
 
 static enum btrfs_block_group_field convert_block_group_field(char *field)
 {
-	if (!strncmp(field, "used", FIELD_BUF_LEN))
+	if (strncmp(field, "used", FIELD_BUF_LEN) == 0)
 		return BTRFS_BLOCK_GROUP_ITEM_USED;
-	if (!strncmp(field, "flags", FIELD_BUF_LEN))
+	if (strncmp(field, "flags", FIELD_BUF_LEN) == 0)
 		return BTRFS_BLOCK_GROUP_ITEM_FLAGS;
-	if (!strncmp(field, "chunk_objectid", FIELD_BUF_LEN))
+	if (strncmp(field, "chunk_objectid", FIELD_BUF_LEN) == 0)
 		return BTRFS_BLOCK_GROUP_ITEM_CHUNK_OBJECTID;
 	return BTRFS_BLOCK_GROUP_ITEM_BAD;
 }
 
 static enum btrfs_inode_field convert_inode_field(char *field)
 {
-	if (!strncmp(field, "isize", FIELD_BUF_LEN))
+	if (strncmp(field, "isize", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_ISIZE;
-	if (!strncmp(field, "nbytes", FIELD_BUF_LEN))
+	if (strncmp(field, "nbytes", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_NBYTES;
-	if (!strncmp(field, "nlink", FIELD_BUF_LEN))
+	if (strncmp(field, "nlink", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_NLINK;
-	if (!strncmp(field, "generation", FIELD_BUF_LEN))
+	if (strncmp(field, "generation", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_GENERATION;
-	if (!strncmp(field, "transid", FIELD_BUF_LEN))
+	if (strncmp(field, "transid", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_TRANSID;
-	if (!strncmp(field, "block_group", FIELD_BUF_LEN))
+	if (strncmp(field, "block_group", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_BLOCK_GROUP;
-	if (!strncmp(field, "mode", FIELD_BUF_LEN))
+	if (strncmp(field, "mode", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_MODE;
-	if (!strncmp(field, "uid", FIELD_BUF_LEN))
+	if (strncmp(field, "uid", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_UID;
-	if (!strncmp(field, "gid", FIELD_BUF_LEN))
+	if (strncmp(field, "gid", FIELD_BUF_LEN) == 0)
 		return BTRFS_INODE_FIELD_GID;
 	return BTRFS_INODE_FIELD_BAD;
 }
 
 static enum btrfs_file_extent_field convert_file_extent_field(char *field)
 {
-	if (!strncmp(field, "disk_bytenr", FIELD_BUF_LEN))
+	if (strncmp(field, "disk_bytenr", FIELD_BUF_LEN) == 0)
 		return BTRFS_FILE_EXTENT_DISK_BYTENR;
-	if (!strncmp(field, "type", FIELD_BUF_LEN))
+	if (strncmp(field, "type", FIELD_BUF_LEN) == 0)
 		return BTRFS_FILE_EXTENT_TYPE;
 	return BTRFS_FILE_EXTENT_BAD;
 }
@@ -418,36 +417,36 @@ static enum btrfs_file_extent_field conv
 static enum btrfs_metadata_block_field
 convert_metadata_block_field(char *field)
 {
-	if (!strncmp(field, "generation", FIELD_BUF_LEN))
+	if (strncmp(field, "generation", FIELD_BUF_LEN) == 0)
 		return BTRFS_METADATA_BLOCK_GENERATION;
-	if (!strncmp(field, "shift_items", FIELD_BUF_LEN))
+	if (strncmp(field, "shift_items", FIELD_BUF_LEN) == 0)
 		return BTRFS_METADATA_BLOCK_SHIFT_ITEMS;
 	return BTRFS_METADATA_BLOCK_BAD;
 }
 
 static enum btrfs_key_field convert_key_field(char *field)
 {
-	if (!strncmp(field, "objectid", FIELD_BUF_LEN))
+	if (strncmp(field, "objectid", FIELD_BUF_LEN) == 0)
 		return BTRFS_KEY_OBJECTID;
-	if (!strncmp(field, "type", FIELD_BUF_LEN))
+	if (strncmp(field, "type", FIELD_BUF_LEN) == 0)
 		return BTRFS_KEY_TYPE;
-	if (!strncmp(field, "offset", FIELD_BUF_LEN))
+	if (strncmp(field, "offset", FIELD_BUF_LEN) == 0)
 		return BTRFS_KEY_OFFSET;
 	return BTRFS_KEY_BAD;
 }
 
 static enum btrfs_item_field convert_item_field(char *field)
 {
-	if (!strncmp(field, "offset", FIELD_BUF_LEN))
+	if (strncmp(field, "offset", FIELD_BUF_LEN) == 0)
 		return BTRFS_ITEM_OFFSET;
 	return BTRFS_ITEM_BAD;
 }
 
 static enum btrfs_dir_item_field convert_dir_item_field(char *field)
 {
-	if (!strncmp(field, "name", FIELD_BUF_LEN))
+	if (strncmp(field, "name", FIELD_BUF_LEN) == 0)
 		return BTRFS_DIR_ITEM_NAME;
-	if (!strncmp(field, "location_objectid", FIELD_BUF_LEN))
+	if (strncmp(field, "location_objectid", FIELD_BUF_LEN) == 0)
 		return BTRFS_DIR_ITEM_LOCATION_OBJECTID;
 	return BTRFS_DIR_ITEM_BAD;
 }
@@ -1491,7 +1490,7 @@ int main(int argc, char **argv)
 		del = rand_range(3);
 		path = btrfs_alloc_path();
 		if (!path) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			goto out_close;
 		}
 
@@ -1617,9 +1616,7 @@ int main(int argc, char **argv)
 			eb = btrfs_find_create_tree_block(root->fs_info,
 					logical);
 			if (!eb) {
-				error_msg(ERROR_MSG_MEMORY,
-					"allocating extent buffer for bytenr %llu",
-					logical);
+				error_mem("allocating extent buffer for bytenr %llu", logical);
 				ret = 1;
 				goto out_close;
 			}
diff -pruN 6.16-2/btrfs-sb-mod.c 6.17-1/btrfs-sb-mod.c
--- 6.16-2/btrfs-sb-mod.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/btrfs-sb-mod.c	2025-09-29 14:59:32.000000000 +0000
@@ -36,10 +36,10 @@ static int check_csum_superblock(void *s
 	u8 result[BTRFS_CSUM_SIZE];
 	u16 csum_type = btrfs_super_csum_type(sb);
 
-	btrfs_csum_data(NULL, csum_type, (unsigned char *)sb + BTRFS_CSUM_SIZE,
+	btrfs_csum_data(csum_type, (unsigned char *)sb + BTRFS_CSUM_SIZE,
 			result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
 
-	return !memcmp(sb, result, csum_size);
+	return (memcmp(sb, result, csum_size) == 0);
 }
 
 static void update_block_csum(void *block)
@@ -48,7 +48,7 @@ static void update_block_csum(void *bloc
 	struct btrfs_header *hdr;
 	u16 csum_type = btrfs_super_csum_type(block);
 
-	btrfs_csum_data(NULL, csum_type, (unsigned char *)block + BTRFS_CSUM_SIZE,
+	btrfs_csum_data(csum_type, (unsigned char *)block + BTRFS_CSUM_SIZE,
 			result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
 
 	memset(block, 0, BTRFS_CSUM_SIZE);
@@ -95,7 +95,7 @@ enum field_op {
 };
 
 struct fspec {
-	const char *name;
+	char *name;
 	enum field_op fop;
 	u64 value;
 };
@@ -427,6 +427,7 @@ int main(int argc, char **argv)
 		sb_edit(sb, &spec[i]);
 		if (op_is_write(spec[i].fop))
 			changed = 1;
+		free(spec[i].name);
 	}
 
 	if (changed) {
diff -pruN 6.16-2/btrfs.c 6.17-1/btrfs.c
--- 6.16-2/btrfs.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/btrfs.c	2025-09-29 14:59:32.000000000 +0000
@@ -150,7 +150,7 @@ static void handle_help_options_next_lev
 	if (argc < 2)
 		return;
 
-	if (!strcmp(argv[1], "--help")) {
+	if (strcmp(argv[1], "--help") == 0) {
 		if (cmd->next) {
 			argc--;
 			argv++;
@@ -430,18 +430,18 @@ int main(int argc, char **argv)
 	else
 		bname = argv[0];
 
-	if (!strcmp(bname, "btrfsck")) {
+	if (strcmp(bname, "btrfsck") == 0) {
 		argv[0] = "check";
 #ifdef ENABLE_BOX
-	} else if (!strcmp(bname, "mkfs.btrfs")) {
+	} else if (strcmp(bname, "mkfs.btrfs") == 0) {
 		return mkfs_main(argc, argv);
-	} else if (!strcmp(bname, "btrfs-image")) {
+	} else if (strcmp(bname, "btrfs-image") == 0) {
 		return image_main(argc, argv);
-	} else if (!strcmp(bname, "btrfs-convert")) {
+	} else if (strcmp(bname, "btrfs-convert") == 0) {
 		return convert_main(argc, argv);
-	} else if (!strcmp(bname, "btrfstune")) {
+	} else if (strcmp(bname, "btrfstune") == 0) {
 		return btrfstune_main(argc, argv);
-	} else if (!strcmp(bname, "btrfs-find-root")) {
+	} else if (strcmp(bname, "btrfs-find-root") == 0) {
 		return find_root_main(argc, argv);
 #endif
 	} else {
diff -pruN 6.16-2/check/main.c 6.17-1/check/main.c
--- 6.16-2/check/main.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/check/main.c	2025-09-29 14:59:32.000000000 +0000
@@ -653,6 +653,8 @@ static void print_inode_error(struct btr
 			rec->nlink);
 	if (errors & I_ERR_INVALID_XATTR)
 		fprintf(stderr, ", invalid xattr");
+	if (errors & I_ERR_DUP_FILENAME)
+		fprintf(stderr, ", dup filename");
 	fprintf(stderr, "\n");
 
 	/* Print the holes if needed */
@@ -1167,7 +1169,7 @@ again:
 		} else {
 			ins = malloc(sizeof(*ins));
 			if (!ins) {
-				error_msg(ERROR_MSG_MEMORY, NULL);
+				error_mem(NULL);
 				return -ENOMEM;
 			}
 			ins->cache.start = node->cache.start;
@@ -1423,7 +1425,7 @@ static int add_mismatch_dir_hash(struct
 
 	hash_record = malloc(sizeof(*hash_record) + namelen);
 	if (!hash_record) {
-		error_msg(ERROR_MSG_MEMORY, "mismatch dir hash record");
+		error_mem("mismatch dir hash record");
 		return -ENOMEM;
 	}
 	memcpy(&hash_record->key, key, sizeof(*key));
@@ -1434,6 +1436,40 @@ static int add_mismatch_dir_hash(struct
 	return 0;
 }
 
+static void check_for_dupe_filenames(struct extent_buffer *eb, int slot,
+				     int nritems, struct inode_record *rec)
+{
+	struct btrfs_dir_item *di, *di2;
+	char namebuf[BTRFS_NAME_LEN], namebuf2[BTRFS_NAME_LEN];
+	u32 len, len2;
+
+	di = btrfs_item_ptr(eb, slot, struct btrfs_dir_item);
+
+	for (int i = 0; i < nritems - 1; i++) {
+		len = btrfs_dir_name_len(eb, di) + btrfs_dir_data_len(eb, di);
+
+		read_extent_buffer(eb, namebuf, (unsigned long)(di + 1), len);
+
+		di2 = di;
+		len2 = len;
+
+		for (int j = i + 1; j < nritems; j++) {
+			di2 = (struct btrfs_dir_item *)((char *)di2 + sizeof(*di2) + len2);
+			len2 = btrfs_dir_name_len(eb, di2) + btrfs_dir_data_len(eb, di2);
+
+			if (len != len2)
+				continue;
+
+			read_extent_buffer(eb, namebuf2, (unsigned long)(di2 + 1), len2);
+
+			if (memcmp(namebuf, namebuf2, len) == 0)
+				rec->errors |= I_ERR_DUP_FILENAME;
+		}
+
+		di = (struct btrfs_dir_item *)((char *)di + sizeof(*di) + len);
+	}
+}
+
 static int process_dir_item(struct extent_buffer *eb,
 			    int slot, struct btrfs_key *key,
 			    struct shared_node *active_node)
@@ -1525,6 +1561,9 @@ next:
 	if (key->type == BTRFS_DIR_INDEX_KEY && nritems > 1)
 		rec->errors |= I_ERR_DUP_DIR_INDEX;
 
+	if (key->type == BTRFS_DIR_ITEM_KEY && nritems > 1)
+		check_for_dupe_filenames(eb, slot, nritems, rec);
+
 	return 0;
 }
 
@@ -5330,7 +5369,7 @@ struct chunk_record *btrfs_new_chunk_rec
 
 	rec = calloc(1, btrfs_chunk_record_size(num_stripes));
 	if (!rec) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(-1);
 	}
 
@@ -5419,7 +5458,7 @@ static int process_device_item(struct rb
 
 	rec = malloc(sizeof(*rec));
 	if (!rec) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
@@ -5480,7 +5519,7 @@ btrfs_new_block_group_record(struct exte
 
 	rec = calloc(1, sizeof(*rec));
 	if (!rec) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(-1);
 	}
 
@@ -5545,7 +5584,7 @@ btrfs_new_device_extent_record(struct ex
 
 	rec = calloc(1, sizeof(*rec));
 	if (!rec) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(-1);
 	}
 
@@ -8606,6 +8645,7 @@ static int check_device_used(struct devi
 		if (opt_check_repair) {
 			ret = repair_dev_item_bytes_used(gfs_info,
 					dev_rec->devid, total_byte);
+			dev_rec->byte_used = total_byte;
 		}
 		return ret;
 	} else {
@@ -8663,6 +8703,28 @@ static bool is_super_size_valid(void)
 	return true;
 }
 
+static int check_super_dev_item(struct device_record *dev_rec)
+{
+	struct btrfs_dev_item *super_di = &gfs_info->super_copy->dev_item;
+	int ret = 0;
+
+	if (btrfs_stack_device_total_bytes(super_di) != dev_rec->total_byte) {
+		warning("device %llu's total_bytes was %llu in tree but %llu in superblock",
+			dev_rec->devid, dev_rec->total_byte,
+			btrfs_stack_device_total_bytes(super_di));
+		ret = 1;
+	}
+
+	if (btrfs_stack_device_bytes_used(super_di) != dev_rec->byte_used) {
+		warning("device %llu's bytes_used was %llu in tree but %llu in superblock",
+			dev_rec->devid, dev_rec->byte_used,
+			btrfs_stack_device_bytes_used(super_di));
+		ret = 1;
+	}
+
+	return ret;
+}
+
 /* check btrfs_dev_item -> btrfs_dev_extent */
 static int check_devices(struct rb_root *dev_cache,
 			 struct device_extent_tree *dev_extent_cache)
@@ -8684,6 +8746,18 @@ static int check_devices(struct rb_root
 					 gfs_info->sectorsize);
 		if (dev_rec->bad_block_dev_size && !ret)
 			ret = 1;
+
+		if (dev_rec->devid == gfs_info->super_copy->dev_item.devid) {
+			/*
+			 * This dev item mismatch between super and chunk tree
+			 * is not a criticl problem, and CI kernels do not receive
+			 * needed backport so they will cause mismatch during RW mounts.
+			 *
+			 * SO here we didn't record the mismatch as an error.
+			 */
+			check_super_dev_item(dev_rec);
+		}
+
 		dev_node = rb_next(dev_node);
 	}
 	list_for_each_entry(dext_rec, &dev_extent_cache->no_device_orphans,
@@ -9086,7 +9160,7 @@ static int check_chunks_and_extents(void
 	bits_nr = 1024;
 	bits = malloc(bits_nr * sizeof(struct block_info));
 	if (!bits) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(1);
 	}
 
diff -pruN 6.16-2/check/mode-lowmem.c 6.17-1/check/mode-lowmem.c
--- 6.16-2/check/mode-lowmem.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/check/mode-lowmem.c	2025-09-29 14:59:32.000000000 +0000
@@ -1661,6 +1661,47 @@ static void print_dir_item_err(struct bt
 
 }
 
+static bool check_for_dupe_filenames_lowmem(struct extent_buffer *eb, int slot,
+					    int nritems, struct btrfs_root *root,
+					    struct btrfs_key *di_key)
+{
+	struct btrfs_dir_item *di, *di2;
+	char namebuf[BTRFS_NAME_LEN], namebuf2[BTRFS_NAME_LEN];
+	u32 len, len2;
+
+	di = btrfs_item_ptr(eb, slot, struct btrfs_dir_item);
+
+	for (int i = 0; i < nritems - 1; i++) {
+		len = btrfs_dir_name_len(eb, di) + btrfs_dir_data_len(eb, di);
+
+		read_extent_buffer(eb, namebuf, (unsigned long)(di + 1), len);
+
+		di2 = di;
+		len2 = len;
+
+		for (int j = i + 1; j < nritems; j++) {
+			di2 = (struct btrfs_dir_item *)((char *)di2 + sizeof(*di2) + len2);
+			len2 = btrfs_dir_name_len(eb, di2) + btrfs_dir_data_len(eb, di2);
+
+			if (len != len2)
+				continue;
+
+			read_extent_buffer(eb, namebuf2, (unsigned long)(di2 + 1), len2);
+
+			if (memcmp(namebuf, namebuf2, len) == 0) {
+				error("root %llu inode %llu dup filename %.*s",
+				      root->objectid, di_key->objectid,
+				      len, namebuf);
+				return true;
+			}
+		}
+
+		di = (struct btrfs_dir_item *)((char *)di + sizeof(*di) + len);
+	}
+
+	return false;
+}
+
 /*
  * Traverse the given DIR_ITEM/DIR_INDEX and check related INODE_ITEM and
  * call find_inode_ref() to check related INODE_REF/INODE_EXTREF.
@@ -1695,6 +1736,7 @@ static int check_dir_item(struct btrfs_r
 	int err;
 	int tmp_err;
 	int need_research = 0;
+	int nritems = 1;
 
 begin:
 	err = 0;
@@ -1835,7 +1877,16 @@ next:
 			      di_key->offset);
 			break;
 		}
+
+		if (cur < total)
+			nritems++;
 	}
+
+	if (nritems > 1) {
+		if (check_for_dupe_filenames_lowmem(node, slot, nritems, root, di_key))
+			err |= DUP_FILENAME_ERROR;
+	}
+
 out:
 	/* research path */
 	btrfs_release_path(path);
diff -pruN 6.16-2/check/mode-lowmem.h 6.17-1/check/mode-lowmem.h
--- 6.16-2/check/mode-lowmem.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/check/mode-lowmem.h	2025-09-29 14:59:32.000000000 +0000
@@ -47,6 +47,7 @@
 #define INODE_MODE_ERROR	(1U << 25)	/* Bad inode mode */
 #define INVALID_GENERATION	(1U << 26)	/* Generation is too new */
 #define SUPER_BYTES_USED_ERROR	(1U << 27)	/* Super bytes_used is invalid */
+#define DUP_FILENAME_ERROR	(1U << 28)	/* DIR_ITEM contains duplicate names */
 
 /*
  * Error bit for low memory mode check.
diff -pruN 6.16-2/check/mode-original.h 6.17-1/check/mode-original.h
--- 6.16-2/check/mode-original.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/check/mode-original.h	2025-09-29 14:59:32.000000000 +0000
@@ -195,6 +195,7 @@ struct unaligned_extent_rec_t {
 #define I_ERR_INVALID_NLINK		(1U << 21)
 #define I_ERR_INVALID_XATTR		(1U << 22)
 #define I_ERR_DEPRECATED_FREE_INO	(1U << 23)
+#define I_ERR_DUP_FILENAME		(1U << 24)
 
 struct inode_record {
 	struct list_head backrefs;
diff -pruN 6.16-2/check/qgroup-verify.c 6.17-1/check/qgroup-verify.c
--- 6.16-2/check/qgroup-verify.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/check/qgroup-verify.c	2025-09-29 14:59:32.000000000 +0000
@@ -581,7 +581,7 @@ static int account_all_refs(int do_qgrou
 	ulist_free(roots);
 	return 0;
 enomem:
-	error_msg(ERROR_MSG_MEMORY, "accounting for refs for qgroups");
+	error_mem("accounting for refs for qgroups");
 	return -ENOMEM;
 }
 
@@ -1011,7 +1011,7 @@ loop:
 			count = alloc_count(&disk_key, leaf, item);
 			if (!count) {
 				ret = ENOMEM;
-				error_msg(ERROR_MSG_MEMORY, NULL);
+				error_mem(NULL);
 				goto out;
 			}
 
@@ -1592,7 +1592,7 @@ int print_extent_state(struct btrfs_fs_i
 
 	tree_blocks = ulist_alloc(0);
 	if (!tree_blocks) {
-		error_msg(ERROR_MSG_MEMORY, "allocate ulist");
+		error_mem("allocate ulist");
 		return ENOMEM;
 	}
 
diff -pruN 6.16-2/ci/actions/keep-last-codeql-tests 6.17-1/ci/actions/keep-last-codeql-tests
--- 6.16-2/ci/actions/keep-last-codeql-tests	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/ci/actions/keep-last-codeql-tests	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,16 @@
+#!/bin/sh -xe
+#
+# Keep last runs of master for CodeQL workflow
+
+workflow='CodeQL (Advanced)'
+repo="kdave/btrfs-progs"
+
+type -p gh > /dev/null || { echo "ERROR: gh tool not found"; exit 1; }
+type -p jq > /dev/null || { echo "ERROR: jq tool not found"; exit 1; }
+
+for branch in master; do
+	for id in $(gh run -R "$repo" list --limit 100 --workflow "$workflow" --branch "$branch" --json databaseId | jq '.[1:] | .[].databaseId'); do
+		echo "Delete run $id"
+		gh run -R "$repo" delete "$id"
+	done
+done
diff -pruN 6.16-2/ci/actions/keep-last-sanitizer-tests 6.17-1/ci/actions/keep-last-sanitizer-tests
--- 6.16-2/ci/actions/keep-last-sanitizer-tests	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/ci/actions/keep-last-sanitizer-tests	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,16 @@
+#!/bin/sh -xe
+#
+# Keep last runs of master and sanitize-test
+
+workflow='Sanitizer checks'
+repo="kdave/btrfs-progs"
+
+type -p gh > /dev/null || { echo "ERROR: gh tool not found"; exit 1; }
+type -p jq > /dev/null || { echo "ERROR: jq tool not found"; exit 1; }
+
+for branch in master sanitize-test; do
+	for id in $(gh run -R "$repo" list --limit 100 --workflow "$workflow" --branch "$branch" --json databaseId | jq '.[1:] | .[].databaseId'); do
+		echo "Delete run $id"
+		gh run -R "$repo" delete "$id"
+	done
+done
diff -pruN 6.16-2/ci/actions/keep-last-week 6.17-1/ci/actions/keep-last-week
--- 6.16-2/ci/actions/keep-last-week	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/ci/actions/keep-last-week	2025-09-29 14:59:32.000000000 +0000
@@ -43,3 +43,4 @@ clean_workflow "Pull request build and t
 clean_workflow "Codespell"
 clean_workflow "CI image tests"
 clean_workflow "Sanitizer checks"
+clean_workflow "CodeQL (Advanced)"
diff -pruN 6.16-2/cmds/balance.c 6.17-1/cmds/balance.c
--- 6.16-2/cmds/balance.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/balance.c	2025-09-29 14:59:32.000000000 +0000
@@ -104,7 +104,7 @@ static int parse_filters(char *filters,
 	     this_char = strtok_r(NULL, ",", &save_ptr)) {
 		if ((value = strchr(this_char, '=')) != NULL)
 			*value++ = 0;
-		if (!strcmp(this_char, "profiles")) {
+		if (strcmp(this_char, "profiles") == 0) {
 			if (!value || !*value) {
 				error("the profiles filter requires an argument");
 				return 1;
@@ -114,7 +114,7 @@ static int parse_filters(char *filters,
 				return 1;
 			}
 			args->flags |= BTRFS_BALANCE_ARGS_PROFILES;
-		} else if (!strcmp(this_char, "usage")) {
+		} else if (strcmp(this_char, "usage") == 0) {
 			if (!value || !*value) {
 				error("the usage filter requires an argument");
 				return 1;
@@ -142,7 +142,7 @@ static int parse_filters(char *filters,
 				args->flags |= BTRFS_BALANCE_ARGS_USAGE;
 			}
 			args->flags |= BTRFS_BALANCE_ARGS_USAGE;
-		} else if (!strcmp(this_char, "devid")) {
+		} else if (strcmp(this_char, "devid") == 0) {
 			if (!value || !*value) {
 				error("the devid filter requires an argument");
 				return 1;
@@ -152,7 +152,7 @@ static int parse_filters(char *filters,
 				return 1;
 			}
 			args->flags |= BTRFS_BALANCE_ARGS_DEVID;
-		} else if (!strcmp(this_char, "drange")) {
+		} else if (strcmp(this_char, "drange") == 0) {
 			if (!value || !*value) {
 				error("the drange filter requires an argument");
 				return 1;
@@ -162,7 +162,7 @@ static int parse_filters(char *filters,
 				return 1;
 			}
 			args->flags |= BTRFS_BALANCE_ARGS_DRANGE;
-		} else if (!strcmp(this_char, "vrange")) {
+		} else if (strcmp(this_char, "vrange") == 0) {
 			if (!value || !*value) {
 				error("the vrange filter requires an argument");
 				return 1;
@@ -172,7 +172,7 @@ static int parse_filters(char *filters,
 				return 1;
 			}
 			args->flags |= BTRFS_BALANCE_ARGS_VRANGE;
-		} else if (!strcmp(this_char, "convert")) {
+		} else if (strcmp(this_char, "convert") == 0) {
 			if (!value || !*value) {
 				error("the convert option requires an argument");
 				return 1;
@@ -182,9 +182,9 @@ static int parse_filters(char *filters,
 				return 1;
 			}
 			args->flags |= BTRFS_BALANCE_ARGS_CONVERT;
-		} else if (!strcmp(this_char, "soft")) {
+		} else if (strcmp(this_char, "soft") == 0) {
 			args->flags |= BTRFS_BALANCE_ARGS_SOFT;
-		} else if (!strcmp(this_char, "limit")) {
+		} else if (strcmp(this_char, "limit") == 0) {
 			if (!value || !*value) {
 				error("the limit filter requires an argument");
 				return 1;
@@ -202,7 +202,7 @@ static int parse_filters(char *filters,
 				args->flags &= ~BTRFS_BALANCE_ARGS_LIMIT_RANGE;
 				args->flags |= BTRFS_BALANCE_ARGS_LIMIT;
 			}
-		} else if (!strcmp(this_char, "stripes")) {
+		} else if (strcmp(this_char, "stripes") == 0) {
 			if (!value || !*value) {
 				error("the stripes filter requires an argument");
 				return 1;
@@ -376,6 +376,45 @@ static const char * const cmd_balance_st
 	NULL
 };
 
+/*
+ * Return 0 if no missing device found for the fs at @mnt.
+ * Return >0 if there is any missing device for the fs at @mnt.
+ * Return <0 if we hit other errors during the check.
+ */
+static int check_missing_devices(const char *mnt)
+{
+	struct btrfs_ioctl_fs_info_args fs_info_arg = { 0 };
+	struct btrfs_ioctl_dev_info_args *dev_info_args = NULL;
+	bool found_missing = false;
+	int ret;
+
+	ret = get_fs_info(mnt, &fs_info_arg, &dev_info_args);
+	if (ret < 0)
+		return ret;
+
+	for (int i = 0; i < fs_info_arg.num_devices; i++) {
+		struct btrfs_ioctl_dev_info_args *cur_dev_info;
+		int fd;
+
+		cur_dev_info = (struct btrfs_ioctl_dev_info_args *)&dev_info_args[i];
+
+		/*
+		 * Kernel will report the device path even if we can no
+		 * longer access it anymore. So we have to manually check it.
+		 */
+		fd = open((char *)cur_dev_info->path, O_RDONLY);
+		if (fd < 0) {
+			found_missing = true;
+			break;
+		}
+		close(fd);
+	}
+	free(dev_info_args);
+	if (found_missing)
+		return 1;
+	return 0;
+}
+
 static int cmd_balance_start(const struct cmd_struct *cmd,
 			     int argc, char **argv)
 {
@@ -387,6 +426,7 @@ static int cmd_balance_start(const struc
 	bool enqueue = false;
 	unsigned start_flags = 0;
 	bool raid56_warned = false;
+	bool convert_warned  = false;
 	int i;
 
 	memset(&args, 0, sizeof(args));
@@ -481,6 +521,53 @@ static int cmd_balance_start(const struc
 		args.flags |= BTRFS_BALANCE_TYPE_MASK;
 	}
 
+	/*
+	 * If we are using convert, and there is a missing/failed device at
+	 * runtime (e.g. mounted then remove a device using sysfs interface),
+	 * btrfs has no way to avoid using that failing/removed device.
+	 *
+	 * In that case converting the profile is very dangerous, e.g.
+	 * converting RAID1 to SINGLE/DUP, and new SINGLE/DUP chunks can
+	 * be allocated to that failing/removed device, and cause the
+	 * fs to flip RO due to failed metadata writes.
+	 *
+	 * Meanwhile the fs may work completely fine due to the extra
+	 * duplication (e.g. all RAID1 profiles).
+	 *
+	 * So here warn if one is trying to convert with missing devices.
+	 */
+	for (i = 0; ptrs[i]; i++) {
+		int delay = 10;
+		int ret;
+
+		if (!(ptrs[i]->flags & BTRFS_BALANCE_ARGS_CONVERT) || convert_warned)
+			continue;
+
+		ret = check_missing_devices(argv[optind]);
+		if (ret < 0) {
+			errno = -ret;
+			warning("skipping missing devices check due to failure: %m");
+			break;
+		}
+		if (ret == 0)
+			continue;
+		convert_warned = true;
+		printf("WARNING:\n\n");
+		printf("\tConversion with missing device(s) can be dangerous.\n");
+		printf("\tPlease use 'btrfs replace' or 'btrfs device remove' instead.\n");
+		if (force) {
+			printf("\tSafety timeout skipped due to --force\n\n");
+			continue;
+		}
+		printf("\tThe operation will continue in %d seconds.\n", delay);
+		printf("\tUse Ctrl-C to stop.\n");
+		while (delay) {
+			printf("%2d", delay--);
+			fflush(stdout);
+			sleep(1);
+		}
+	}
+
 	/* drange makes sense only when devid is set */
 	for (i = 0; ptrs[i]; i++) {
 		if ((ptrs[i]->flags & BTRFS_BALANCE_ARGS_DRANGE) &&
diff -pruN 6.16-2/cmds/device.c 6.17-1/cmds/device.c
--- 6.16-2/cmds/device.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/device.c	2025-09-29 14:59:32.000000000 +0000
@@ -25,6 +25,7 @@
 #include <getopt.h>
 #include <dirent.h>
 #include <stdbool.h>
+#include "kernel-lib/list_sort.h"
 #include "kernel-shared/zoned.h"
 #include "common/string-table.h"
 #include "common/utils.h"
@@ -231,8 +232,7 @@ static int _cmd_device_remove(const stru
 	/* Scan device arguments for 'cancel', that must be the only "device" */
 	for (i = optind; i < argc - 1; i++) {
 		if (cancel) {
-			error("cancel requested but another device specified: %s\n",
-				argv[i]);
+			error("cancel requested but another device specified: %s", argv[i]);
 			close(fdmnt);
 			return 1;
 		}
@@ -586,10 +586,13 @@ static const char * const cmd_device_sta
 	"btrfs device stats [options] <path>|<device>",
 	"Show device IO error statistics",
 	"Show device IO error statistics for all devices of the given filesystem",
-	"identified by PATH or DEVICE. The filesystem must be mounted.",
+	"identified by PATH or DEVICE. On a mounted filesystem the stats are read",
+	"using ioctls, for direct read from file images or block devices use the",
+	"option --offline.",
 	"",
 	OPTLINE("-c|--check", "return non-zero if any stat counter is not zero"),
 	OPTLINE("-z|--reset", "show current stats and reset values to zero"),
+	OPTLINE("--offline", "read stats from file or device directly (not from mounted filesystem)"),
 	OPTLINE("-T", "show current stats in tabular format"),
 	HELPINFO_INSERT_GLOBALS,
 	HELPINFO_INSERT_FORMAT,
@@ -624,7 +627,7 @@ static int print_device_stat_string(stru
 		canonical_path = malloc(32);
 
 		if (!canonical_path) {
-			error_msg(ERROR_MSG_MEMORY, "device path buffer");
+			error_mem("device path buffer");
 			return -ENOMEM;
 		}
 
@@ -678,7 +681,7 @@ static int print_device_stat_tabular(str
 		canonical_path = malloc(32);
 
 		if (!canonical_path) {
-			error_msg(ERROR_MSG_MEMORY, "device path buffer");
+			error_mem("device path buffer");
 			return -ENOMEM;
 		}
 
@@ -702,28 +705,132 @@ static int print_device_stat_tabular(str
 	return err;
 }
 
+/*
+ * Offline version of GET_DEV_STATS ioctl.
+ */
+static int get_device_stats_offline(struct btrfs_fs_info *fs_info, u64 devid,
+				    struct btrfs_ioctl_get_dev_stats *stats_args)
+{
+	int ret = 0;
+	struct btrfs_path path = { 0 };
+	struct btrfs_key key;
+	struct btrfs_dev_stats_item *stats_item;
+
+	key.objectid = BTRFS_DEV_STATS_OBJECTID;
+	key.type = BTRFS_PERSISTENT_ITEM_KEY;
+	key.offset = devid;
+	ret = btrfs_search_slot(NULL, fs_info->dev_root, &key, &path, 0, 0);
+	if (ret < 0)
+		goto out;
+	if (ret > 0) {
+		pr_verbose(LOG_DEBUG, "no device stats found for devid %llu\n", devid);
+		ret = 0;
+		goto out;
+	}
+
+	memset(stats_args->values, 0, stats_args->nr_items * sizeof(u64));
+	stats_item = btrfs_item_ptr(path.nodes[0], path.slots[0], struct btrfs_dev_stats_item);
+
+	stats_args->values[BTRFS_DEV_STAT_WRITE_ERRS] =
+		btrfs_dev_stats_value(path.nodes[0], stats_item, BTRFS_DEV_STAT_WRITE_ERRS);
+	stats_args->values[BTRFS_DEV_STAT_READ_ERRS] =
+		btrfs_dev_stats_value(path.nodes[0], stats_item, BTRFS_DEV_STAT_READ_ERRS);
+	stats_args->values[BTRFS_DEV_STAT_FLUSH_ERRS] =
+		btrfs_dev_stats_value(path.nodes[0], stats_item, BTRFS_DEV_STAT_FLUSH_ERRS);
+	stats_args->values[BTRFS_DEV_STAT_CORRUPTION_ERRS] =
+		btrfs_dev_stats_value(path.nodes[0], stats_item, BTRFS_DEV_STAT_CORRUPTION_ERRS);
+	stats_args->values[BTRFS_DEV_STAT_GENERATION_ERRS] =
+		btrfs_dev_stats_value(path.nodes[0], stats_item, BTRFS_DEV_STAT_GENERATION_ERRS);
+
+out:
+	btrfs_release_path(&path);
+	return ret;
+}
+
+/*
+ * Offline version of get_fs_info() with limitations:
+ *
+ * - no seeding device support
+ * - fi_args filled only partially (num_devices)
+ */
+static int get_fs_info_offline(struct btrfs_fs_info *fs_info,
+			       struct btrfs_ioctl_fs_info_args *fi_args,
+			       struct btrfs_ioctl_dev_info_args **di_ret)
+{
+	int i;
+	struct btrfs_ioctl_dev_info_args *di_args;
+	struct btrfs_fs_devices *cur_fs;
+	struct btrfs_device *device;
+	struct list_head *fs_uuids;
+
+	fs_uuids = btrfs_scanned_uuids();
+	/* Count devices from fs_devices in case some of them are missing */
+	fi_args->num_devices = 0;
+	list_for_each_entry(cur_fs, fs_uuids, fs_list) {
+		if (memcmp(fs_info->fs_devices->fsid, cur_fs->fsid, BTRFS_FSID_SIZE) != 0)
+			continue;
+		list_for_each_entry(device, &cur_fs->devices, dev_list) {
+			fi_args->num_devices++;
+		}
+	}
+
+	di_args = malloc(fi_args->num_devices * sizeof(*di_args));
+	if (!di_args)
+		return -ENOMEM;
+
+	i = 0;
+	list_sort(NULL, &fs_info->fs_devices->devices, cmp_device_id);
+	list_for_each_entry(cur_fs, fs_uuids, fs_list) {
+		if (memcmp(fs_info->fs_devices->fsid, cur_fs->fsid, BTRFS_FSID_SIZE) != 0)
+			continue;
+
+		list_for_each_entry(device, &cur_fs->devices, dev_list) {
+			di_args[i].devid = device->devid;
+			memcpy(di_args[i].uuid, device->uuid, BTRFS_FSID_SIZE);
+			di_args[i].bytes_used = device->bytes_used;
+			di_args[i].total_bytes = device->total_bytes;
+			memcpy(di_args[i].fsid, cur_fs->fsid, BTRFS_FSID_SIZE);
+			/*
+			 * File devices without loop device or a missing device
+			 * don't have a path.
+			 */
+			if (device->name)
+				strncpy_null((char *)di_args[i].path, device->name,
+					     BTRFS_DEVICE_PATH_NAME_MAX + 1);
+			i++;
+		}
+	}
+
+	*di_ret = di_args;
+	return 0;
+}
+
 static int cmd_device_stats(const struct cmd_struct *cmd, int argc, char **argv)
 {
 	char *dev_path;
 	struct btrfs_ioctl_fs_info_args fi_args;
 	struct btrfs_ioctl_dev_info_args *di_args = NULL;
+	struct btrfs_fs_info *fs_info = NULL;
 	struct string_table *table = NULL;
 	int ret;
-	int fdmnt;
+	int fdmnt = -1;
 	int i;
 	int err = 0;
 	bool check = false;
 	bool free_table = false;
 	bool tabular = false;
+	bool opt_offline = false;
 	__u64 flags = 0;
 	struct format_ctx fctx;
 
 	optind = 0;
 	while (1) {
 		int c;
+		enum { GETOPT_VAL_OFFLINE = GETOPT_VAL_FIRST };
 		static const struct option long_options[] = {
 			{"check", no_argument, NULL, 'c'},
 			{"reset", no_argument, NULL, 'z'},
+			{"offline", no_argument, NULL, GETOPT_VAL_OFFLINE},
 			{NULL, 0, NULL, 0}
 		};
 
@@ -741,6 +848,9 @@ static int cmd_device_stats(const struct
 		case 'T':
 			tabular = true;
 			break;
+		case GETOPT_VAL_OFFLINE:
+			opt_offline = true;
+			break;
 		default:
 			usage_unknown_option(cmd, argv);
 		}
@@ -749,19 +859,48 @@ static int cmd_device_stats(const struct
 	if (check_argc_exact(argc - optind, 1))
 		return 1;
 
+	if (opt_offline && (flags & BTRFS_DEV_STATS_RESET)) {
+		error("--offline and --reset cannot be used together");
+		return 1;
+	}
+
 	dev_path = argv[optind];
 
-	fdmnt = btrfs_open_mnt(dev_path);
-	if (fdmnt < 0)
-		return 1;
+	if (!opt_offline) {
+		fdmnt = btrfs_open_mnt(dev_path);
+		if (fdmnt < 0) {
+			if (fdmnt == -ENOTDIR && !opt_offline)
+				error("to read device stats from a file image use --offline option");
+			return 1;
+		}
 
-	ret = get_fs_info(dev_path, &fi_args, &di_args);
-	if (ret) {
-		errno = -ret;
-		error("getting device info for %s failed: %m", dev_path);
-		err = 1;
-		goto out;
+		ret = get_fs_info(dev_path, &fi_args, &di_args);
+		if (ret) {
+			errno = -ret;
+			error("getting device info for %s failed: %m", dev_path);
+			err = 1;
+			goto out;
+		}
+	} else {
+		struct open_ctree_args oca = { 0 };
+
+		oca.filename = dev_path;
+		fs_info = open_ctree_fs_info(&oca);
+		if (!fs_info) {
+			error("cannot open filesystem on %s", dev_path);
+			err = 1;
+			goto out;
+		}
+
+		ret = get_fs_info_offline(fs_info, &fi_args, &di_args);
+		if (ret < 0) {
+			errno = -ret;
+			error("getting device info for %s failed: %m", dev_path);
+			err = 1;
+			goto out;
+		}
 	}
+
 	if (!fi_args.num_devices) {
 		error("no devices found");
 		err = 1;
@@ -775,7 +914,7 @@ static int cmd_device_stats(const struct
 		 */
 		table = table_create(7, fi_args.num_devices + 2);
 		if (!table) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			goto out;
 		}
 		free_table = true;
@@ -803,13 +942,28 @@ static int cmd_device_stats(const struct
 
 		args.devid = di_args[i].devid;
 		args.nr_items = BTRFS_DEV_STAT_VALUES_MAX;
-		args.flags = flags;
+		if (!opt_offline) {
+			args.flags = flags;
 
-		if (ioctl(fdmnt, BTRFS_IOC_GET_DEV_STATS, &args) < 0) {
-			error("device stats ioctl failed on %s: %m",
-			      path);
-			err |= 1;
-			goto out;
+			if (ioctl(fdmnt, BTRFS_IOC_GET_DEV_STATS, &args) < 0) {
+				error("device stats ioctl failed on %s: %m",
+				      path);
+				err |= 1;
+				goto out;
+			}
+		} else {
+			if (args.flags != 0) {
+				error("no flags supported");
+				err = -EINVAL;
+				goto out;
+			}
+			ret = get_device_stats_offline(fs_info, di_args[i].devid, &args);
+			if (ret < 0) {
+				error("cannot read offline stats for devid %llu",
+				      di_args[i].devid);
+				err = ret;
+				goto out;
+			}
 		}
 
 		if (tabular)
@@ -837,6 +991,8 @@ static int cmd_device_stats(const struct
 out:
 	free(di_args);
 	close(fdmnt);
+	if (fs_info)
+		close_ctree_fs_info(fs_info);
 	if (free_table)
 		table_free(table);
 
diff -pruN 6.16-2/cmds/filesystem-usage.c 6.17-1/cmds/filesystem-usage.c
--- 6.16-2/cmds/filesystem-usage.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/filesystem-usage.c	2025-09-29 14:59:32.000000000 +0000
@@ -84,7 +84,7 @@ static int add_info_to_list(struct array
 
 			p = calloc(1, sizeof(struct chunk_info));
 			if (!p) {
-				error_msg(ERROR_MSG_MEMORY, NULL);
+				error_mem(NULL);
 				return -ENOMEM;
 			}
 			p->devid = devid;
@@ -94,7 +94,7 @@ static int add_info_to_list(struct array
 
 			ret = array_append(chunkinfos, p);
 			if (ret < 0) {
-				error_msg(ERROR_MSG_MEMORY, NULL);
+				error_mem(NULL);
 				return -ENOMEM;
 			}
 		}
@@ -243,7 +243,7 @@ static struct btrfs_ioctl_space_args *lo
 
 	sargs_orig = sargs = calloc(1, sizeof(struct btrfs_ioctl_space_args));
 	if (!sargs) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return NULL;
 	}
 
@@ -268,7 +268,7 @@ static struct btrfs_ioctl_space_args *lo
 			(count * sizeof(struct btrfs_ioctl_space_info)));
 	if (!sargs) {
 		free(sargs_orig);
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return NULL;
 	}
 
@@ -417,6 +417,8 @@ static u64 get_first_device_zone_size(in
 	}
 	while (1) {
 		de = readdir(dir);
+		if (!de)
+			break;
 		if (strcmp(".", de->d_name) == 0 || strcmp("..", de->d_name) == 0)
 			continue;
 		strcpy(name, de->d_name);
@@ -673,8 +675,7 @@ static int print_filesystem_usage_overal
 
 exit:
 
-	if (sargs)
-		free(sargs);
+	free(sargs);
 
 	return ret;
 }
@@ -806,7 +807,7 @@ static int load_device_info(int fd, stru
 
 		info = calloc(1, sizeof(struct device_info));
 		if (!info) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			return 1;
 		}
 		ret = array_append(devinfos, info);
@@ -928,7 +929,7 @@ static void _cmd_filesystem_usage_tabula
 
 	matrix = table_create(ncols, nrows);
 	if (!matrix) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return;
 	}
 
diff -pruN 6.16-2/cmds/filesystem.c 6.17-1/cmds/filesystem.c
--- 6.16-2/cmds/filesystem.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/filesystem.c	2025-09-29 14:59:32.000000000 +0000
@@ -42,6 +42,7 @@
 #include "kernel-shared/compression.h"
 #include "kernel-shared/volumes.h"
 #include "kernel-shared/disk-io.h"
+#include "kernel-shared/transaction.h"
 #include "common/defs.h"
 #include "common/internal.h"
 #include "common/messages.h"
@@ -227,7 +228,7 @@ static int match_search_item_kernel(u8 *
 
 	search_len = min(search_len, BTRFS_UUID_UNPARSED_SIZE);
 	uuid_unparse(fsid, uuidbuf);
-	if (!strncmp(uuidbuf, search, search_len))
+	if (strncmp(uuidbuf, search, search_len) == 0)
 		return 1;
 
 	if (*label && strcmp(label, search) == 0)
@@ -248,7 +249,7 @@ static int uuid_search(struct btrfs_fs_d
 
 	search_len = min(search_len, BTRFS_UUID_UNPARSED_SIZE);
 	uuid_unparse(fs_devices->fsid, uuidbuf);
-	if (!strncmp(uuidbuf, search, search_len))
+	if (strncmp(uuidbuf, search, search_len) == 0)
 		return 1;
 
 	list_for_each_entry(device, &fs_devices->devices, dev_list) {
@@ -580,7 +581,7 @@ static int find_and_copy_seed(struct btr
 	struct btrfs_fs_devices *cur_fs;
 
 	list_for_each_entry(cur_fs, fs_uuids, fs_list)
-		if (!memcmp(seed->fsid, cur_fs->fsid, BTRFS_FSID_SIZE))
+		if (memcmp(seed->fsid, cur_fs->fsid, BTRFS_FSID_SIZE) == 0)
 			return copy_fs_devices(copy, cur_fs);
 
 	return 1;
@@ -1287,22 +1288,236 @@ static const char * const cmd_filesystem
 	"[kK] means KiB, which denotes 1KiB = 1024B, 1MiB = 1024KiB, etc.",
 	"",
 	OPTLINE("--enqueue", "wait if there's another exclusive operation running, otherwise continue"),
+	OPTLINE("--offline", "resize an offline/unmounted filesystem (limitations: shrinking and multi-device not supported)"),
 	NULL
 };
 
+struct resize_args {
+	bool is_cancel;
+	bool specified_dev_id;
+	bool is_max;
+	u64 devid;
+	int mod;
+	u64 size;
+};
+
+static bool parse_resize_args(const char *amount, struct resize_args *ret)
+{
+	char amount_dup[BTRFS_VOL_NAME_MAX];
+	char *devstr;
+	char *sizestr;
+
+	ret->is_cancel = false;
+	if (strcmp("cancel", amount) == 0) {
+		ret->is_cancel = true;
+		return true;
+	}
+
+	if (strlen(amount) >= BTRFS_VOL_NAME_MAX) {
+		error("newsize argument is too long %zu >= %d", strlen(amount),
+		      BTRFS_VOL_NAME_MAX);
+		return false;
+	}
+	strncpy(amount_dup, amount, BTRFS_VOL_NAME_MAX);
+
+	sizestr = amount_dup;
+	devstr = strchr(sizestr, ':');
+	ret->specified_dev_id = false;
+	if (devstr) {
+		sizestr = devstr + 1;
+		*devstr = 0;
+		devstr = amount_dup;
+
+		errno = 0;
+		ret->specified_dev_id = true;
+		ret->devid = strtoull(devstr, NULL, 10);
+
+		if (errno) {
+			error("failed to parse devid %s: %m", devstr);
+			return false;
+		}
+	}
+
+	if (strcmp(sizestr, "max") == 0) {
+		ret->is_max = true;
+	} else {
+		ret->is_max = false;
+
+		ret->mod = 0;
+		if (sizestr[0] == '-') {
+			ret->mod = -1;
+			sizestr++;
+		} else if (sizestr[0] == '+') {
+			ret->mod = 1;
+			sizestr++;
+		}
+		if (parse_u64_with_suffix(sizestr, &ret->size) < 0) {
+			error("failed to parse size %s", sizestr);
+			return false;
+		}
+	}
+
+	return true;
+}
+
+static bool check_offline_resize_args(const char *path, const char *amount,
+				      const struct btrfs_fs_info *fs_info,
+				      struct btrfs_device **device_ret,
+				      u64 *new_size_ret)
+{
+	struct btrfs_device *device = NULL;
+	struct resize_args args;
+	struct stat stat_buf;
+	u64 new_size = 0, old_size = 0, device_size = 0;
+
+	if (check_mounted(path)) {
+		error("%s must not be mounted to use --offline", path);
+		return false;
+	}
+
+	if (fs_info->fs_devices->num_devices > 1) {
+		error("multi-device not supported with --offline");
+		return false;
+	}
+	device = list_first_entry_or_null(&fs_info->fs_devices->devices,
+					  struct btrfs_device, dev_list);
+	if (!device) {
+		error("no device found");
+		return false;
+	}
+	*device_ret = device;
+	old_size = device->total_bytes;
+
+	fstat(device->fd, &stat_buf);
+	if (device_get_partition_size_fd_stat(device->fd, &stat_buf, &device_size))
+		device_size = 0;
+	if (!device_size) {
+		error("unable to get size at path %s", device->name);
+		return false;
+	}
+
+	if (!parse_resize_args(amount, &args))
+		return false;
+
+	if (args.is_cancel) {
+		error("can not cancel --offline resize");
+		return false;
+	}
+	if (args.specified_dev_id && args.devid != device->devid) {
+		error("invalid device id %llu", args.devid);
+		return false;
+	}
+	if (args.is_max) {
+		new_size = device_size;
+	} else {
+		if (args.mod == 0) {
+			new_size = args.size;
+		} else if (args.mod < 0) {
+			error("offline resize does not support shrinking");
+			return false;
+		} else {
+			if (args.size > ULLONG_MAX - old_size) {
+				error("increasing (%llu) %s is out of range",
+				      args.size, pretty_size_mode(args.size, UNITS_DEFAULT));
+				return false;
+			}
+			new_size = old_size + args.size;
+		}
+	}
+	new_size = round_down(new_size, fs_info->sectorsize);
+	if (new_size < old_size) {
+		error("offline resize does not support shrinking");
+		return false;
+	}
+	*new_size_ret = new_size;
+
+	if (path_is_block_device(device->name) && new_size > device_size) {
+		error("unable to resize '%s': not enough free space", device->name);
+		return false;
+	}
+
+	if (new_size < 256 * SZ_1M)
+		warning("the new size %lld (%s) is < 256MiB, this may be rejected by kernel",
+			new_size, pretty_size_mode(new_size, UNITS_DEFAULT));
+
+	pr_verbose(LOG_DEFAULT, "Resize from %s to %s\n",
+		   pretty_size_mode(old_size, UNITS_DEFAULT),
+		   pretty_size_mode(new_size, UNITS_DEFAULT));
+	return true;
+}
+
+static bool offline_resize(const char *path, const char *amount)
+{
+	int ret = false;
+	struct btrfs_root *root;
+	struct btrfs_fs_info *fs_info;
+	struct btrfs_device *device;
+	struct btrfs_super_block *super;
+	struct btrfs_trans_handle *trans;
+	u64 new_size;
+	u64 old_total;
+	u64 diff;
+
+	root = open_ctree(path, 0, OPEN_CTREE_WRITES | OPEN_CTREE_CHUNK_ROOT_ONLY);
+	if (!root)
+		return false;
+	fs_info = root->fs_info;
+	super = fs_info->super_copy;
+
+	if (!check_offline_resize_args(path, amount, fs_info, &device, &new_size)) {
+		ret = false;
+		goto close;
+	}
+
+	trans = btrfs_start_transaction(root, 1);
+	if (IS_ERR(trans)) {
+		errno = -PTR_ERR(trans);
+		error_msg(ERROR_MSG_START_TRANS, "%m");
+		ret = false;
+		goto close;
+	}
+
+	old_total = btrfs_super_total_bytes(super);
+	diff = round_down(new_size - device->total_bytes, fs_info->sectorsize);
+	btrfs_set_super_total_bytes(super, round_down(old_total + diff, fs_info->sectorsize));
+	device->total_bytes = new_size;
+	ret = btrfs_update_device(trans, device);
+	if (ret) {
+		btrfs_abort_transaction(trans, ret);
+		ret = false;
+		goto close;
+	}
+
+	if (path_is_reg_file(device->name)) {
+		if (truncate(device->name, new_size)) {
+			error("unable to truncate %s to new size %llu", device->name, new_size);
+			btrfs_abort_transaction(trans, ret);
+			ret = false;
+			goto close;
+		}
+	}
+
+	if (btrfs_commit_transaction(trans, root)) {
+		ret = false;
+		goto close;
+	}
+
+	ret = true;
+close:
+	close_ctree(root);
+	return ret;
+}
+
 static int check_resize_args(const char *amount, const char *path, u64 *devid_ret)
 {
 	struct btrfs_ioctl_fs_info_args fi_args;
 	struct btrfs_ioctl_dev_info_args *di_args = NULL;
+	struct resize_args args;
 	int ret, i, dev_idx = -1;
-	u64 devid = 1;
 	u64 mindev = (u64)-1;
 	int mindev_idx = 0;
 	const char *res_str = NULL;
-	char *devstr = NULL, *sizestr = NULL;
-	u64 new_size = 0, old_size = 0, diff = 0;
-	int mod = 0;
-	char amount_dup[BTRFS_VOL_NAME_MAX];
+	u64 new_size = 0, old_size = 0;
 
 	*devid_ret = (u64)-1;
 	ret = get_fs_info(path, &fi_args, &di_args);
@@ -1317,37 +1532,20 @@ static int check_resize_args(const char
 		goto out;
 	}
 
-	ret = snprintf(amount_dup, BTRFS_VOL_NAME_MAX, "%s", amount);
-	if (strlen(amount) != ret) {
-		error("newsize argument is too long");
+	if (!parse_resize_args(amount, &args)) {
 		ret = 1;
 		goto out;
 	}
-	ret = 0;
 
 	/* Cancel does not need to determine the device number. */
-	if (strcmp(amount, "cancel") == 0) {
+	if (args.is_cancel) {
 		/* Different format, print and exit */
 		pr_verbose(LOG_DEFAULT, "Request to cancel resize\n");
 		goto out;
 	}
 
-	sizestr = amount_dup;
-	devstr = strchr(sizestr, ':');
-	if (devstr) {
-		sizestr = devstr + 1;
-		*devstr = 0;
-		devstr = amount_dup;
-
-		errno = 0;
-		devid = strtoull(devstr, NULL, 10);
-
-		if (errno) {
-			error("failed to parse devid %s: %m", devstr);
-			ret = 1;
-			goto out;
-		}
-	}
+	if (!args.specified_dev_id)
+		args.devid = 1;
 
 	dev_idx = -1;
 	for(i = 0; i < fi_args.num_devices; i++) {
@@ -1355,18 +1553,18 @@ static int check_resize_args(const char
 			mindev = di_args[i].devid;
 			mindev_idx = i;
 		}
-		if (di_args[i].devid == devid) {
+		if (di_args[i].devid == args.devid) {
 			dev_idx = i;
 			break;
 		}
 	}
 
-	if (devstr && dev_idx < 0) {
+	if (args.specified_dev_id && dev_idx < 0) {
 		/* Devid specified but not found. */
-		error("cannot find devid: %lld", devid);
+		error("cannot find devid: %llu", args.devid);
 		ret = 1;
 		goto out;
-	} else if (!devstr && devid == 1 && dev_idx < 0) {
+	} else if (!args.specified_dev_id && dev_idx < 0) {
 		/*
 		 * No device specified, assuming implicit 1 but it does not
 		 * exist. Use minimum device as fallback.
@@ -1374,7 +1572,7 @@ static int check_resize_args(const char
 		warning("no devid specified means devid 1 which does not exist, using\n"
 			"\t lowest devid %llu as a fallback", mindev);
 		*devid_ret = mindev;
-		devid = mindev;
+		args.devid = mindev;
 		dev_idx = mindev_idx;
 	} else {
 		/*
@@ -1383,44 +1581,31 @@ static int check_resize_args(const char
 		 */
 	}
 
-	if (strcmp(sizestr, "max") == 0) {
+	if (args.is_max) {
 		res_str = "max";
 	} else {
-		if (sizestr[0] == '-') {
-			mod = -1;
-			sizestr++;
-		} else if (sizestr[0] == '+') {
-			mod = 1;
-			sizestr++;
-		}
-		ret = parse_u64_with_suffix(sizestr, &diff);
-		if (ret < 0) {
-			error("failed to parse size %s", sizestr);
-			ret = 1;
-			goto out;
-		}
 		old_size = di_args[dev_idx].total_bytes;
 
 		/* For target sizes without +/- sign prefix (e.g. 1:150g) */
-		if (mod == 0) {
-			new_size = diff;
-		} else if (mod < 0) {
-			if (diff > old_size) {
+		if (args.mod == 0) {
+			new_size = args.size;
+		} else if (args.mod < 0) {
+			if (args.size > old_size) {
 				error("current size is %s which is smaller than %s",
 				      pretty_size_mode(old_size, UNITS_DEFAULT),
-				      pretty_size_mode(diff, UNITS_DEFAULT));
+				      pretty_size_mode(args.size, UNITS_DEFAULT));
 				ret = 1;
 				goto out;
 			}
-			new_size = old_size - diff;
-		} else if (mod > 0) {
-			if (diff > ULLONG_MAX - old_size) {
+			new_size = old_size - args.size;
+		} else if (args.mod > 0) {
+			if (args.size > ULLONG_MAX - old_size) {
 				error("increasing %s is out of range",
-				      pretty_size_mode(diff, UNITS_DEFAULT));
+				      pretty_size_mode(args.size, UNITS_DEFAULT));
 				ret = 1;
 				goto out;
 			}
-			new_size = old_size + diff;
+			new_size = old_size + args.size;
 		}
 		new_size = round_down(new_size, fi_args.sectorsize);
 		res_str = pretty_size_mode(new_size, UNITS_DEFAULT);
@@ -1430,7 +1615,7 @@ static int check_resize_args(const char
 			new_size, pretty_size_mode(new_size, UNITS_DEFAULT));
 	}
 
-	pr_verbose(LOG_DEFAULT, "Resize device id %lld (%s) from %s to %s\n", devid,
+	pr_verbose(LOG_DEFAULT, "Resize device id %llu (%s) from %s to %s\n", args.devid,
 		di_args[dev_idx].path,
 		pretty_size_mode(di_args[dev_idx].total_bytes, UNITS_DEFAULT),
 		res_str);
@@ -1449,6 +1634,7 @@ static int cmd_filesystem_resize(const s
 	u64 devid;
 	int ret;
 	bool enqueue = false;
+	bool offline = false;
 	bool cancel = false;
 
 	/*
@@ -1458,6 +1644,8 @@ static int cmd_filesystem_resize(const s
 	for (optind = 1; optind < argc; optind++) {
 		if (strcmp(argv[optind], "--enqueue") == 0) {
 			enqueue = true;
+		} else if (strcmp(argv[optind], "--offline") == 0) {
+			offline = true;
 		} else if (strcmp(argv[optind], "--") == 0) {
 			/* Separator: options -- non-options */
 		} else if (strncmp(argv[optind], "--", 2) == 0) {
@@ -1472,6 +1660,11 @@ static int cmd_filesystem_resize(const s
 	if (check_argc_exact(argc - optind, 2))
 		return 1;
 
+	if (offline && enqueue) {
+		error("--enqueue is not compatible with --offline");
+		return 1;
+	}
+
 	amount = argv[optind];
 	path = argv[optind + 1];
 
@@ -1481,17 +1674,16 @@ static int cmd_filesystem_resize(const s
 		return 1;
 	}
 
+	if (offline)
+		return !offline_resize(path, amount);
+
 	cancel = (strcmp("cancel", amount) == 0);
 
 	fd = btrfs_open_dir(path);
 	if (fd < 0) {
-		/* The path is a directory */
-		if (fd == -ENOTDIR) {
-			error(
-		"resize works on mounted filesystems and accepts only\n"
-		"directories as argument. Passing file containing a btrfs image\n"
-		"would resize the underlying filesystem instead of the image.\n");
-		}
+		/* The path is not a directory. */
+		if (fd == -ENOTDIR)
+			error("to resize a file containing a BTRFS image use the --offline flag");
 		return 1;
 	}
 
@@ -1778,6 +1970,125 @@ out:
 }
 static DEFINE_SIMPLE_COMMAND(filesystem_mkswapfile, "mkswapfile");
 
+static const char * const cmd_filesystem_commit_stats_usage[] = {
+	"btrfs filesystem commit-stats <file>",
+	"Print number of commits and time stats since mount",
+	"",
+	OPTLINE("-z|--reset", "print stats and reset 'max_commit_ms' (needs root)"),
+	NULL
+};
+
+static int cmd_filesystem_commit_stats(const struct cmd_struct *cmd, int argc, char **argv)
+{
+	int ret;
+	int fd = -1;
+	int sysfs_fd = -1;
+	char buf[64 * 1024];
+	char *tmp, *ptr, *savepos = NULL;
+	uuid_t fsid;
+	bool opt_reset = false;
+	static const struct {
+		const char *key;
+		const char *desc;
+		const char *units;
+	} str2str[] = {
+		{ "commits", "Total commits:", NULL },
+		{ "last_commit_ms", "Last commit duration:", "ms" },
+		{ "max_commit_ms", "Max commit duration:", "ms" },
+		{ "total_commit_ms", "Total time spent in commit:", "ms" },
+	};
+
+	optind = 0;
+	while (1) {
+		int c;
+		static const struct option long_options[] = {
+			{ "reset", no_argument, NULL, 'z' },
+			{ NULL, 0, NULL, 0 }
+		};
+
+		c = getopt_long(argc, argv, "c", long_options, NULL);
+		if (c < 0)
+			break;
+		switch (c) {
+		case 'z':
+			opt_reset = true;
+			break;
+		default:
+			usage_unknown_option(cmd, argv);
+		}
+	}
+
+	if (check_argc_min(argc - optind, 1))
+		return 1;
+
+	fd = btrfs_open_dir(argv[optind]);
+	if (fd < 0)
+		return 1;
+
+	sysfs_fd = sysfs_open_fsid_file(fd, "commit_stats");
+	if (sysfs_fd < 0) {
+		error("no commit_stats file in sysfs");
+		goto out;
+	}
+
+	ret = sysfs_read_file(sysfs_fd, buf, sizeof(buf));
+	if (ret < 0) {
+		error("cannot read commit_stats: %m");
+		goto out;
+	}
+
+	ret = get_fsid_fd(fd, fsid);
+	/* Don't fail, sysfs_open_fsid_file() calls that as well. */
+	if (ret == 0) {
+		char fsid_str[BTRFS_UUID_UNPARSED_SIZE];
+
+		uuid_unparse(fsid, fsid_str);
+		pr_verbose(LOG_DEFAULT, "UUID: %s\n", fsid_str);
+	}
+	ptr = buf;
+	pr_verbose(LOG_DEFAULT, "Commit stats since mount:\n");
+	while (1) {
+		const char *units = NULL;
+
+		tmp = strtok_r(ptr, " \n", &savepos);
+		ptr = NULL;
+		if (!tmp)
+			break;
+
+		for (int i = 0; i < ARRAY_SIZE(str2str); i++) {
+			if (strcmp(tmp, str2str[i].key) == 0) {
+				tmp = (char *)str2str[i].desc;
+				units = str2str[i].units;
+				break;
+			}
+		}
+		/* Print unknown as-is */
+		pr_verbose(LOG_DEFAULT, "  %-28s", tmp);
+
+		tmp = strtok_r(ptr, " \n", &savepos);
+		if (!tmp)
+			break;
+		pr_verbose(LOG_DEFAULT, "%8s%s", tmp, (units ?: ""));
+		putchar('\n');
+	}
+
+	if (opt_reset) {
+		close(sysfs_fd);
+		ret = sysfs_write_fsid_file_u64(fd, "commit_stats", 0);
+		if (ret < 0)
+			warning("cannot reset stats: %m");
+		else
+			pr_verbose(LOG_DEFAULT, "NOTE: Max commit duration has been reset\n");
+	}
+
+out:
+	close(sysfs_fd);
+	close(fd);
+
+	return 0;
+}
+static DEFINE_SIMPLE_COMMAND(filesystem_commit_stats, "commit-stats");
+
 static const char filesystem_cmd_group_info[] =
 "overall filesystem tasks and information";
 
@@ -1786,6 +2097,7 @@ static const struct cmd_group filesystem
 		&cmd_struct_filesystem_df,
 		&cmd_struct_filesystem_du,
 		&cmd_struct_filesystem_show,
+		&cmd_struct_filesystem_commit_stats,
 		&cmd_struct_filesystem_sync,
 		&cmd_struct_filesystem_defrag,
 		&cmd_struct_filesystem_balance,
diff -pruN 6.16-2/cmds/inspect-dump-tree.c 6.17-1/cmds/inspect-dump-tree.c
--- 6.16-2/cmds/inspect-dump-tree.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/inspect-dump-tree.c	2025-09-29 14:59:32.000000000 +0000
@@ -39,6 +39,7 @@
 #include "common/help.h"
 #include "common/device-scan.h"
 #include "common/string-utils.h"
+#include "common/parse-utils.h"
 #include "cmds/commands.h"
 
 static void print_extents(struct extent_buffer *eb)
@@ -137,81 +138,6 @@ static void print_old_roots(struct btrfs
 	}
 }
 
-/*
- * Convert a tree name from various forms to the numerical id if possible
- * Accepted forms:
- * - case does not matter
- * - same as the key name, BTRFS_ROOT_TREE_OBJECTID
- * - dtto shortened, BTRFS_ROOT_TREE
- * - dtto without prefix, ROOT_TREE
- * - common name, ROOT, CHUNK, EXTENT, ...
- * - dtto alias, DEVICE for DEV, CHECKSUM for CSUM
- *
- * Returns 0 if the tree id was not recognized.
- */
-static u64 treeid_from_string(const char *str, const char **end)
-{
-	int match = 0;
-	int i;
-	u64 id;
-	static struct treename {
-		const char *name;
-		u64 id;
-	} tn[] = {
-		{ "ROOT", BTRFS_ROOT_TREE_OBJECTID },
-		{ "EXTENT", BTRFS_EXTENT_TREE_OBJECTID },
-		{ "CHUNK", BTRFS_CHUNK_TREE_OBJECTID },
-		{ "DEVICE", BTRFS_DEV_TREE_OBJECTID },
-		{ "DEV", BTRFS_DEV_TREE_OBJECTID },
-		{ "FS", BTRFS_FS_TREE_OBJECTID },
-		{ "CSUM", BTRFS_CSUM_TREE_OBJECTID },
-		{ "CHECKSUM", BTRFS_CSUM_TREE_OBJECTID },
-		{ "QUOTA", BTRFS_QUOTA_TREE_OBJECTID },
-		{ "UUID", BTRFS_UUID_TREE_OBJECTID },
-		{ "FREE_SPACE", BTRFS_FREE_SPACE_TREE_OBJECTID },
-		{ "FREE-SPACE", BTRFS_FREE_SPACE_TREE_OBJECTID },
-		{ "TREE_LOG_FIXUP", BTRFS_TREE_LOG_FIXUP_OBJECTID },
-		{ "TREE-LOG-FIXUP", BTRFS_TREE_LOG_FIXUP_OBJECTID },
-		{ "TREE_LOG", BTRFS_TREE_LOG_OBJECTID },
-		{ "TREE-LOG", BTRFS_TREE_LOG_OBJECTID },
-		{ "TREE_RELOC", BTRFS_TREE_RELOC_OBJECTID },
-		{ "TREE-RELOC", BTRFS_TREE_RELOC_OBJECTID },
-		{ "DATA_RELOC", BTRFS_DATA_RELOC_TREE_OBJECTID },
-		{ "DATA-RELOC", BTRFS_DATA_RELOC_TREE_OBJECTID },
-		{ "BLOCK_GROUP", BTRFS_BLOCK_GROUP_TREE_OBJECTID },
-		{ "BLOCK-GROUP", BTRFS_BLOCK_GROUP_TREE_OBJECTID },
-		{ "RAID_STRIPE", BTRFS_RAID_STRIPE_TREE_OBJECTID },
-		{ "RAID-STRIPE", BTRFS_RAID_STRIPE_TREE_OBJECTID },
-	};
-
-	if (strncasecmp("BTRFS_", str, strlen("BTRFS_")) == 0)
-		str += strlen("BTRFS_");
-
-	for (i = 0; i < ARRAY_SIZE(tn); i++) {
-		int len = strlen(tn[i].name);
-
-		if (strncasecmp(tn[i].name, str, len) == 0) {
-			id = tn[i].id;
-			match = 1;
-			str += len;
-			break;
-		}
-	}
-
-	if (!match)
-		return 0;
-
-	if (strncasecmp("_TREE", str, strlen("_TREE")) == 0)
-		str += strlen("_TREE");
-
-	if (strncasecmp("_OBJECTID", str, strlen("_OBJECTID")) == 0)
-		str += strlen("_OBJECTID");
-
-	*end = str;
-
-	return id;
-}
-
 static const char * const cmd_inspect_dump_tree_usage[] = {
 	"btrfs inspect-internal dump-tree [options] <device> [<device> ..]",
 	"Dump tree structures from a given device",
@@ -417,27 +343,13 @@ static int cmd_inspect_dump_tree(const s
 			if (ret < 0)
 				goto out;
 			break;
-		case 't': {
-			const char *end = NULL;
-
-			if (string_is_numerical(optarg))
-				tree_id = arg_strtou64(optarg);
-			else
-				tree_id = treeid_from_string(optarg, &end);
-
-			if (!tree_id) {
-				error("unrecognized tree id: %s",
-						optarg);
-				exit(1);
-			}
-
-			if (end && *end) {
-				error("unexpected tree id suffix of '%s': %s",
-						optarg, end);
-				exit(1);
+		case 't':
+			ret = parse_tree_id(optarg, &tree_id);
+			if (ret < 0) {
+				error("cannot parse tree id: %s", optarg);
+				return 1;
 			}
 			break;
-			}
 		case GETOPT_VAL_FOLLOW:
 			follow = BTRFS_PRINT_TREE_FOLLOW;
 			break;
diff -pruN 6.16-2/cmds/inspect-tree-stats.c 6.17-1/cmds/inspect-tree-stats.c
--- 6.16-2/cmds/inspect-tree-stats.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/inspect-tree-stats.c	2025-09-29 14:59:32.000000000 +0000
@@ -36,6 +36,7 @@
 #include "common/messages.h"
 #include "common/open-utils.h"
 #include "common/string-utils.h"
+#include "common/parse-utils.h"
 #include "common/units.h"
 #include "cmds/commands.h"
 
@@ -441,7 +442,7 @@ static const char * const cmd_inspect_tr
 	"",
 	OPTLINE("-b", "raw numbers in bytes"),
 	HELPINFO_UNITS_LONG,
-	OPTLINE("-t <rootid>", "print only tree with the given rootid"),
+	OPTLINE("-t <tree_id>", "print only tree with the given id (string or number)"),
 	NULL
 };
 
@@ -467,10 +468,10 @@ static int cmd_inspect_tree_stats(const
 			unit_mode = UNITS_RAW;
 			break;
 		case 't':
-			tree_id = arg_strtou64(optarg);
-			if (!tree_id) {
-				error("unrecognized tree id: %s", optarg);
-				exit(1);
+			ret = parse_tree_id(optarg, &tree_id);
+			if (ret < 0) {
+				error("cannot parse tree id: %s", optarg);
+				return 1;
 			}
 			break;
 		default:
diff -pruN 6.16-2/cmds/inspect.c 6.17-1/cmds/inspect.c
--- 6.16-2/cmds/inspect.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/inspect.c	2025-09-29 14:59:32.000000000 +0000
@@ -696,13 +696,15 @@ static const char * const cmd_inspect_li
 	"profiles the correspondence is 1:1 or 1:N.",
 	"",
 	HELPINFO_UNITS_LONG,
-	OPTLINE("--sort MODE", "sort by a column (ascending):\n"
+	OPTLINE("--sort MODE", "sort by a column (ascending, prepend '-' for descending):\n"
 			"MODE is a coma separated list of:\n"
 			"devid - by device id (default, with pstart)\n"
 			"pstart - physical start\n"
 			"lstart - logical offset\n"
 			"usage  - by chunk usage\n"
-			"length - by chunk length"
+			"length - by chunk length\n"
+			"type   - chunk type (data, metadata, system)\n"
+			"profile - chunk profile (single, RAID, ...)"
 	       ),
 	NULL
 };
@@ -805,6 +807,50 @@ static int cmp_cse_length(const void *va
 	return 0;
 }
 
+static int cmp_cse_ch_type(const void *va, const void *vb)
+{
+	const struct list_chunks_entry *a = va;
+	const struct list_chunks_entry *b = vb;
+	const u64 atype = (a->flags & BTRFS_BLOCK_GROUP_TYPE_MASK);
+	const u64 btype = (b->flags & BTRFS_BLOCK_GROUP_TYPE_MASK);
+	static int order[] = {
+		[BTRFS_BLOCK_GROUP_DATA]     = 0,
+		[BTRFS_BLOCK_GROUP_METADATA] = 1,
+		[BTRFS_BLOCK_GROUP_SYSTEM]   = 2
+	};
+
+	if (order[atype] < order[btype])
+		return -1;
+	if (order[atype] > order[btype])
+		return 1;
+	return 0;
+}
+
+static int cmp_cse_ch_profile(const void *va, const void *vb)
+{
+	const struct list_chunks_entry *a = va;
+	const struct list_chunks_entry *b = vb;
+	const u64 aprofile = (a->flags & BTRFS_BLOCK_GROUP_PROFILE_MASK);
+	const u64 bprofile = (b->flags & BTRFS_BLOCK_GROUP_PROFILE_MASK);
+	static int order[] = {
+		[0 /* single */]            = 0,
+		[BTRFS_BLOCK_GROUP_DUP]     = 1,
+		[BTRFS_BLOCK_GROUP_RAID0]   = 2,
+		[BTRFS_BLOCK_GROUP_RAID1]   = 3,
+		[BTRFS_BLOCK_GROUP_RAID1C3] = 4,
+		[BTRFS_BLOCK_GROUP_RAID1C4] = 5,
+		[BTRFS_BLOCK_GROUP_RAID10]  = 6,
+		[BTRFS_BLOCK_GROUP_RAID5]   = 7,
+		[BTRFS_BLOCK_GROUP_RAID6]   = 8,
+	};
+
+	if (order[aprofile] < order[bprofile])
+		return -1;
+	if (order[aprofile] > order[bprofile])
+		return 1;
+	return 0;
+}
+
 static int print_list_chunks(struct list_chunks_ctx *ctx, const char *sortmode,
 			     unsigned unit_mode)
 {
@@ -820,6 +866,8 @@ static int print_list_chunks(struct list
 		CHUNK_SORT_LSTART,
 		CHUNK_SORT_USAGE,
 		CHUNK_SORT_LENGTH,
+		CHUNK_SORT_CH_TYPE,
+		CHUNK_SORT_CH_PROFILE,
 		CHUNK_SORT_DEFAULT = CHUNK_SORT_PSTART
 	};
 	static const struct sortdef sortit[] = {
@@ -843,6 +891,14 @@ static int print_list_chunks(struct list
 		  .desc = "sort by length",
 		  .id = CHUNK_SORT_LENGTH
 		},
+		{ .name = "type", .comp = (sort_cmp_t)cmp_cse_ch_type,
+		  .desc = "sort by chunk type",
+		  .id = CHUNK_SORT_CH_TYPE
+		},
+		{ .name = "profile", .comp = (sort_cmp_t)cmp_cse_ch_profile,
+		  .desc = "sort by chunk profile",
+		  .id = CHUNK_SORT_CH_PROFILE
+		},
 		SORTDEF_END
 	};
 	const char *tmp;
@@ -853,12 +909,14 @@ static int print_list_chunks(struct list
 
 	tmp = sortmode;
 	do {
-		id = compare_parse_key_to_id(&comp, &tmp);
+		bool descending;
+
+		id = compare_parse_key_to_id(&comp, &tmp, &descending);
 		if (id == -1) {
 			error("unknown sort key: %s", tmp);
 			return 1;
 		}
-		compare_add_sort_id(&comp, id);
+		compare_add_sort_id(&comp, id, descending);
 	} while (id >= 0);
 
 	/*
@@ -886,7 +944,7 @@ static int print_list_chunks(struct list
 	/* Two rows for header and separator. */
 	table = table_create(col_count, 2 + ctx->length);
 	if (!table) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return 1;
 	}
 	/* Print header */
@@ -1019,7 +1077,7 @@ static int cmd_inspect_list_chunks(const
 	ctx.stats = calloc(ctx.size, sizeof(ctx.stats[0]));
 	if (!ctx.stats) {
 		ret = 1;
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		goto out;
 	}
 
@@ -1043,7 +1101,7 @@ static int cmd_inspect_list_chunks(const
 	lnumber = calloc(lnumber_size, sizeof(u64));
 	if (!lnumber) {
 		ret = 1;
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		goto out;
 	}
 
@@ -1091,7 +1149,7 @@ static int cmd_inspect_list_chunks(const
 					tmp = calloc(lnumber_size, sizeof(u64));
 					if (!tmp) {
 						ret = 1;
-						error_msg(ERROR_MSG_MEMORY, NULL);
+						error_mem(NULL);
 						goto out;
 					}
 					memcpy(tmp, lnumber, sizeof(u64) * old_size);
@@ -1110,7 +1168,7 @@ static int cmd_inspect_list_chunks(const
 						* sizeof(ctx.stats[0]));
 					if (!ctx.stats) {
 						ret = 1;
-						error_msg(ERROR_MSG_MEMORY, NULL);
+						error_mem(NULL);
 						goto out;
 					}
 				}
diff -pruN 6.16-2/cmds/property.c 6.17-1/cmds/property.c
--- 6.16-2/cmds/property.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/property.c	2025-09-29 14:59:32.000000000 +0000
@@ -82,9 +82,9 @@ static int prop_read_only(enum prop_obje
 		bool is_ro = false;
 		bool do_clear_received_uuid = false;
 
-		if (!strcmp(value, "true")) {
+		if (strcmp(value, "true") == 0) {
 			read_only = true;
-		} else if (!strcmp(value, "false")) {
+		} else if (strcmp(value, "false") == 0) {
 			read_only = false;
 		} else {
 			error("invalid value for property: %s", value);
@@ -273,7 +273,7 @@ static int parse_prop(const char *arg, c
 	const struct prop_handler *prop = props;
 
 	for (; prop->name; prop++) {
-		if (!strcmp(prop->name, arg)) {
+		if (strcmp(prop->name, arg) == 0) {
 			*prop_ret = prop;
 			return 0;
 		}
@@ -321,7 +321,7 @@ static int check_is_root(const char *obj
 		ret = -errno;
 		goto out;
 	}
-	if (!strcmp(rp, "/")) {
+	if (strcmp(rp, "/") == 0) {
 		ret = 0;
 		goto out;
 	}
@@ -541,16 +541,16 @@ static int parse_args(const struct cmd_s
 
 	*types = 0;
 	if (type_str) {
-		if (!strcmp(type_str, "s") || !strcmp(type_str, "subvol")) {
+		if (strcmp(type_str, "s") == 0 || strcmp(type_str, "subvol") == 0) {
 			*types = prop_object_subvol;
-		} else if (!strcmp(type_str, "f") ||
-			   !strcmp(type_str, "filesystem")) {
+		} else if (strcmp(type_str, "f") == 0 ||
+			   strcmp(type_str, "filesystem") == 0) {
 			*types = prop_object_root;
-		} else if (!strcmp(type_str, "i") ||
-			   !strcmp(type_str, "inode")) {
+		} else if (strcmp(type_str, "i") == 0 ||
+			   strcmp(type_str, "inode") == 0) {
 			*types = prop_object_inode;
-		} else if (!strcmp(type_str, "d") ||
-			   !strcmp(type_str, "device")) {
+		} else if (strcmp(type_str, "d") == 0 ||
+			   strcmp(type_str, "device") == 0) {
 			*types = prop_object_dev;
 		} else {
 			error("invalid object type: %s", type_str);
diff -pruN 6.16-2/cmds/qgroup.c 6.17-1/cmds/qgroup.c
--- 6.16-2/cmds/qgroup.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/qgroup.c	2025-09-29 14:59:32.000000000 +0000
@@ -456,8 +456,8 @@ static void print_table_head(void)
 		max_len = btrfs_qgroup_columns[i].max_len;
 		if (!btrfs_qgroup_columns[i].need_print)
 			continue;
-		if ((i == BTRFS_QGROUP_QGROUPID) | (i == BTRFS_QGROUP_PARENT) |
-			(i == BTRFS_QGROUP_CHILD))
+		if ((i == BTRFS_QGROUP_QGROUPID) || (i == BTRFS_QGROUP_PARENT) ||
+		    (i == BTRFS_QGROUP_CHILD))
 			printf("%-*s", max_len, btrfs_qgroup_columns[i].column_name);
 		else
 			printf("%*s", max_len, btrfs_qgroup_columns[i].column_name);
@@ -468,8 +468,8 @@ static void print_table_head(void)
 		max_len = btrfs_qgroup_columns[i].max_len;
 		if (!btrfs_qgroup_columns[i].need_print)
 			continue;
-		if ((i == BTRFS_QGROUP_QGROUPID) | (i == BTRFS_QGROUP_PARENT) |
-			(i == BTRFS_QGROUP_CHILD)) {
+		if ((i == BTRFS_QGROUP_QGROUPID) || (i == BTRFS_QGROUP_PARENT) ||
+		    (i == BTRFS_QGROUP_CHILD)) {
 			len = strlen(btrfs_qgroup_columns[i].column_name);
 			while (len--)
 				printf("-");
@@ -662,7 +662,7 @@ static struct btrfs_qgroup_comparer_set
 	       sizeof(struct btrfs_qgroup_comparer);
 	set = calloc(1, size);
 	if (!set) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(1);
 	}
 
@@ -822,7 +822,7 @@ static struct btrfs_qgroup *get_or_add_q
 
 	bq = calloc(1, sizeof(*bq));
 	if (!bq) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return ERR_PTR(-ENOMEM);
 	}
 
@@ -939,7 +939,7 @@ static int update_qgroup_relation(struct
 
 	list = malloc(sizeof(*list));
 	if (!list) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
@@ -970,8 +970,7 @@ static void __free_btrfs_qgroup(struct b
 		list_del(&list->next_member);
 		free(list);
 	}
-	if (bq->path)
-		free((void *)bq->path);
+	free((void *)bq->path);
 	free(bq);
 }
 
@@ -1075,7 +1074,7 @@ static struct btrfs_qgroup_filter_set *q
 	       sizeof(struct btrfs_qgroup_filter);
 	set = calloc(1, size);
 	if (!set) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(1);
 	}
 	set->total = BTRFS_QGROUP_NFILTERS_INCREASE;
@@ -1102,7 +1101,7 @@ static int qgroup_setup_filter(struct bt
 		tmp = set;
 		set = realloc(set, size);
 		if (!set) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			free(tmp);
 			exit(1);
 		}
diff -pruN 6.16-2/cmds/quota.c 6.17-1/cmds/quota.c
--- 6.16-2/cmds/quota.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/quota.c	2025-09-29 14:59:32.000000000 +0000
@@ -20,15 +20,20 @@
 #include <sys/ioctl.h>
 #include <dirent.h>
 #include <errno.h>
+#include <ctype.h>
 #include <getopt.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdbool.h>
 #include <unistd.h>
 #include "kernel-shared/uapi/btrfs.h"
+#include "kernel-shared/uapi/btrfs_tree.h"
 #include "common/help.h"
 #include "common/open-utils.h"
 #include "common/messages.h"
+#include "common/sysfs-utils.h"
+#include "common/parse-utils.h"
+#include "common/string-utils.h"
 #include "cmds/commands.h"
 
 static const char * const quota_cmd_group_usage[] = {
@@ -238,6 +243,173 @@ static int cmd_quota_rescan(const struct
 }
 static DEFINE_SIMPLE_COMMAND(quota_rescan, "rescan");
 
+static const char * const cmd_quota_status_usage[] = {
+	"btrfs quota status <path>",
+	"Show status information about quota if enabled on the <path>.",
+	"",
+	OPTLINE("--is-enabled", "only check if quotas are enabled, not not print anything"),
+	NULL
+};
+
+static bool quota_is_enabled(const char *path)
+{
+	int fsfd = -1;
+	int dirfd = -1;
+	bool ret = true;
+
+	fsfd = btrfs_open_dir(path);
+	if (fsfd < 0)
+		return false;
+
+	dirfd = sysfs_open_fsid_dir(fsfd, "qgroups");
+	if (dirfd < 0) {
+		ret = false;
+		goto out;
+	}
+
+out:
+	close(fsfd);
+	close(dirfd);
+	return ret;
+}
+
+static const char *describe_mode(const char *mode)
+{
+	if (strcmp("qgroup", mode) == 0)
+		return "full accounting";
+	if (strcmp("squota", mode) == 0)
+		return "simplified accounting";
+	return "unknown mode";
+}
+
+static int cmd_quota_status(const struct cmd_struct *cmd, int argc, char **argv)
+{
+	int ret;
+	int fsfd = -1;
+	int dirfd = -1;
+	int fd = -1;
+	char buf[4096] = { 0 };
+	u64 num, num2;
+	DIR *dir = NULL;
+
+	optind = 0;
+	while (1) {
+		int c;
+		enum { GETOPT_VAL_IS_ENABLED = GETOPT_VAL_FIRST };
+		static const struct option long_options[] = {
+			{ "is-enabled", no_argument, NULL, GETOPT_VAL_IS_ENABLED },
+			{ NULL, 0, NULL, 0}
+		};
+
+		c = getopt_long(argc, argv, "", long_options, NULL);
+		if (c < 0)
+			break;
+		switch (c) {
+		case GETOPT_VAL_IS_ENABLED:
+			return quota_is_enabled(argv[optind]) ? 0 : 1;
+		default:
+			usage_unknown_option(cmd, argv);
+		}
+	}
+
+	if (check_argc_exact(argc - optind, 1))
+		return 1;
+
+	fsfd = btrfs_open_dir(argv[1]);
+	if (fsfd < 0)
+		return 1;
+
+	dirfd = sysfs_open_fsid_dir(fsfd, "qgroups");
+	pr_verbose(LOG_DEFAULT, "Quotas on %s:\n", argv[1]);
+	if (dirfd < 0) {
+		pr_verbose(LOG_DEFAULT, "  Enabled: no\n");
+		goto out;
+	}
+	pr_verbose(LOG_DEFAULT, "  Enabled:                 %s\n", "yes");
+
+	fd = sysfs_open_fsid_file(fsfd, "qgroups/mode");
+	if (fd < 0) {
+		error("cannot open file qgroups/mode: %m");
+		goto out;
+	}
+	ret = sysfs_read_file(fd, buf, sizeof(buf));
+	if (fd < 0) {
+		error("cannot read file qgroups/mode: %m");
+		goto out;
+	}
+	while (isspace(buf[strlen(buf) - 1]))
+		buf[strlen(buf) - 1] = 0;
+	pr_verbose(LOG_DEFAULT, "  Mode:                    %s (%s)\n", buf, describe_mode(buf));
+	close(fd);
+
+	ret = sysfs_read_fsid_file_u64(fsfd, "qgroups/inconsistent", &num);
+	if (ret < 0) {
+		error("cannot read file qgroups/inconsistent: %m");
+		goto out;
+	}
+	pr_verbose(LOG_DEFAULT, "  Inconsistent:            %s%s\n",
+		   (num ? "yes" : "no"), (num ? " (rescan needed)" : ""));
+
+	ret = sysfs_read_fsid_file_u64(fsfd, "quota_override", &num);
+	if (ret < 0) {
+		error("cannot read file qgroups/quota_override: %m");
+		goto out;
+	}
+	pr_verbose(LOG_DEFAULT, "  Override limits:         %s\n", (num ? "yes" : "no"));
+
+	ret = sysfs_read_fsid_file_u64(fsfd, "qgroups/drop_subtree_threshold", &num);
+	if (ret < 0) {
+		error("cannot read file qgroups/drop_subtree_threshold");
+		goto out;
+	}
+	pr_verbose(LOG_DEFAULT, "  Drop subtree threshold:  %llu\n", num);
+
+	/* Count */
+	dir = fdopendir(dirfd);
+	if (!dir) {
+		error("cannot open qgroups/ directory: %m");
+		goto out;
+	}
+	num = 0;
+	num2 = 0;
+	while (1) {
+		struct dirent *de;
+		u64 qgroupid;
+		char *str;
+
+		de = readdir(dir);
+		if (!de)
+			break;
+
+		str = de->d_name;
+		while (*str) {
+			if (*str == '_') {
+				*str = '/';
+				break;
+			}
+			str++;
+		}
+
+		ret = parse_qgroupid(de->d_name, &qgroupid);
+		if (ret < 0)
+			continue;
+
+		num++;
+		if (btrfs_qgroup_level(qgroupid) == 0)
+			num2++;
+	}
+	pr_verbose(LOG_DEFAULT, "  Total count:             %llu\n", num);
+	pr_verbose(LOG_DEFAULT, "  Level 0:                 %llu\n", num2);
+
+out:
+	if (dir)
+		closedir(dir);
+	close(dirfd);
+	close(fsfd);
+	return 0;
+}
+static DEFINE_SIMPLE_COMMAND(quota_status, "status");
+
 static const char quota_cmd_group_info[] =
 "manage filesystem quota settings";
 
@@ -246,6 +418,7 @@ static const struct cmd_group quota_cmd_
 		&cmd_struct_quota_enable,
 		&cmd_struct_quota_disable,
 		&cmd_struct_quota_rescan,
+		&cmd_struct_quota_status,
 		NULL
 	}
 };
diff -pruN 6.16-2/cmds/receive-dump.c 6.17-1/cmds/receive-dump.c
--- 6.16-2/cmds/receive-dump.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/receive-dump.c	2025-09-29 14:59:32.000000000 +0000
@@ -35,7 +35,7 @@
 ({									\
 	ret = path_cat_out(outpath, path1, path2);			\
 	if (ret < 0) {							\
-		error("%s: path invalid: %s\n", function_name, path2);	\
+		error("%s: path invalid: %s", function_name, path2);	\
 		return ret;						\
 	}								\
 })
diff -pruN 6.16-2/cmds/receive.c 6.17-1/cmds/receive.c
--- 6.16-2/cmds/receive.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/receive.c	2025-09-29 14:59:32.000000000 +0000
@@ -1023,7 +1023,7 @@ static int decompress_zlib(struct btrfs_
 		init = true;
 		rctx->zlib_stream = malloc(sizeof(z_stream));
 		if (!rctx->zlib_stream) {
-			error_msg(ERROR_MSG_MEMORY, "zlib stream: %m");
+			error_mem("zlib stream: %m");
 			return -ENOMEM;
 		}
 	}
@@ -1185,7 +1185,7 @@ static int decompress_and_write(struct b
 
 	unencoded_data = calloc(unencoded_len, 1);
 	if (!unencoded_data) {
-		error_msg(ERROR_MSG_MEMORY, "unencoded data: %m");
+		error_mem("unencoded data: %m");
 		return -errno;
 	}
 
@@ -1344,6 +1344,7 @@ static int process_fallocate(const char
 
 static int process_fileattr(const char *path, u64 attr, void *user)
 {
+#if 0
 	/*
 	 * Not yet supported, ignored for now, just like in send stream v1.
 	 * The content of 'attr' matches the flags in the btrfs inode item,
@@ -1353,24 +1354,25 @@ static int process_fileattr(const char *
 	 * The commented code below therefore does not work.
 	 */
 
-	/* int ret; */
-	/* struct btrfs_receive *rctx = user; */
-	/* char full_path[PATH_MAX]; */
-
-	/* ret = path_cat_out(full_path, rctx->full_subvol_path, path); */
-	/* if (ret < 0) { */
-	/* 	error("fileattr: path invalid: %s", path); */
-	/* 	return ret; */
-	/* } */
-	/* ret = open_inode_for_write(rctx, full_path); */
-	/* if (ret < 0) */
-	/* 	return ret; */
-	/* ret = ioctl(rctx->write_fd, FS_IOC_SETFLAGS, &attr); */
-	/* if (ret < 0) { */
-	/* 	ret = -errno; */
-	/* 	error("fileattr: set file attributes on %s failed: %m", path); */
-	/* 	return ret; */
-	/* } */
+	int ret;
+	struct btrfs_receive *rctx = user;
+	char full_path[PATH_MAX];
+
+	ret = path_cat_out(full_path, rctx->full_subvol_path, path);
+	if (ret < 0) {
+		error("fileattr: path invalid: %s", path);
+		return ret;
+	}
+	ret = open_inode_for_write(rctx, full_path);
+	if (ret < 0)
+		return ret;
+	ret = ioctl(rctx->write_fd, FS_IOC_SETFLAGS, &attr);
+	if (ret < 0) {
+		ret = -errno;
+		error("fileattr: set file attributes on %s failed: %m", path);
+		return ret;
+	}
+#endif
 	return 0;
 }
 
@@ -1783,7 +1785,12 @@ static int cmd_receive(const struct cmd_
 	tomnt = argv[optind];
 
 	if (fromfile[0]) {
-		receive_fd = open(fromfile, O_RDONLY | O_NOATIME);
+		int flags = O_RDONLY;
+
+		if (!dump)
+			flags |= O_NOATIME;
+
+		receive_fd = open(fromfile, flags);
 		if (receive_fd < 0) {
 			error("cannot open %s: %m", fromfile);
 			goto out;
diff -pruN 6.16-2/cmds/replace.c 6.17-1/cmds/replace.c
--- 6.16-2/cmds/replace.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/replace.c	2025-09-29 14:59:32.000000000 +0000
@@ -359,8 +359,7 @@ static int cmd_replace_start(const struc
 	return 0;
 
 leave_with_error:
-	if (dstdev)
-		free(dstdev);
+	free(dstdev);
 	if (fdmnt != -1)
 		close(fdmnt);
 	if (fddstdev != -1)
diff -pruN 6.16-2/cmds/rescue-chunk-recover.c 6.17-1/cmds/rescue-chunk-recover.c
--- 6.16-2/cmds/rescue-chunk-recover.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/rescue-chunk-recover.c	2025-09-29 14:59:32.000000000 +0000
@@ -98,7 +98,7 @@ static struct extent_record *btrfs_new_e
 
 	rec = calloc(1, sizeof(*rec));
 	if (!rec) {
-		error_msg(ERROR_MSG_MEMORY, "extent record");
+		error_mem("extent record");
 		exit(1);
 	}
 
@@ -1476,7 +1476,7 @@ open_ctree_with_broken_chunk(struct reco
 
 	fs_info = btrfs_new_fs_info(1, BTRFS_SUPER_INFO_OFFSET);
 	if (!fs_info) {
-		error_msg(ERROR_MSG_MEMORY, "fs_info");
+		error_mem("fs_info");
 		return ERR_PTR(-ENOMEM);
 	}
 	fs_info->is_chunk_recover = 1;
@@ -1495,7 +1495,7 @@ open_ctree_with_broken_chunk(struct reco
 		goto out_devices;
 	}
 
-	UASSERT(!memcmp(disk_super->fsid, rc->fs_devices->fsid, BTRFS_FSID_SIZE));
+	UASSERT(memcmp(disk_super->fsid, rc->fs_devices->fsid, BTRFS_FSID_SIZE) == 0);
 	fs_info->sectorsize = btrfs_super_sectorsize(disk_super);
 	fs_info->nodesize = btrfs_super_nodesize(disk_super);
 	fs_info->stripesize = btrfs_super_stripesize(disk_super);
@@ -1507,9 +1507,9 @@ open_ctree_with_broken_chunk(struct reco
 	features = btrfs_super_incompat_flags(disk_super);
 
 	if (features & BTRFS_FEATURE_INCOMPAT_METADATA_UUID)
-		UASSERT(!memcmp(disk_super->metadata_uuid,
+		UASSERT(memcmp(disk_super->metadata_uuid,
 			       fs_info->fs_devices->metadata_uuid,
-			       BTRFS_FSID_SIZE));
+			       BTRFS_FSID_SIZE) == 0);
 
 	btrfs_setup_root(fs_info->chunk_root, fs_info,
 			 BTRFS_CHUNK_TREE_OBJECTID);
diff -pruN 6.16-2/cmds/restore.c 6.17-1/cmds/restore.c
--- 6.16-2/cmds/restore.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/restore.c	2025-09-29 14:59:32.000000000 +0000
@@ -198,7 +198,7 @@ static int decompress_zstd(const char *i
 
 	zret = ZSTD_decompressStream(strm, &out, &in);
 	if (ZSTD_isError(zret)) {
-		error("zstd decompress failed %s\n", ZSTD_getErrorName(zret));
+		error("zstd decompress failed %s", ZSTD_getErrorName(zret));
 		ret = -1;
 		goto out;
 	}
@@ -325,7 +325,7 @@ static int copy_one_inline(struct btrfs_
 	ram_size = btrfs_file_extent_ram_bytes(leaf, fi);
 	outbuf = calloc(1, ram_size);
 	if (!outbuf) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
@@ -393,14 +393,14 @@ static int copy_one_extent(struct btrfs_
 
 	inbuf = malloc(size_left);
 	if (!inbuf) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
 	if (compress != BTRFS_COMPRESS_NONE) {
 		outbuf = calloc(1, ram_size);
 		if (!outbuf) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			free(inbuf);
 			return -ENOMEM;
 		}
@@ -1026,7 +1026,7 @@ static int search_dir(struct btrfs_root
 			char *dir = strdup(fs_name);
 
 			if (!dir) {
-				error_msg(ERROR_MSG_MEMORY, NULL);
+				error_mem(NULL);
 				ret = -ENOMEM;
 				goto out;
 			}
diff -pruN 6.16-2/cmds/scrub.c 6.17-1/cmds/scrub.c
--- 6.16-2/cmds/scrub.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/scrub.c	2025-09-29 14:59:32.000000000 +0000
@@ -663,7 +663,7 @@ again:
 			++state;
 			fallthrough;
 		case 2: /* start of line, skip space */
-			while (isspace(l[i]) && i < avail) {
+			while (i < avail && isspace(l[i])) {
 				if (l[i] == '\n')
 					++lineno;
 				++i;
@@ -2168,7 +2168,7 @@ static int cmd_scrub_limit(const struct
 	cols = 3;
 	table = table_create(cols, 2 + fi_args.num_devices);
 	if (!table) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		ret = 1;
 		goto out;
 	}
diff -pruN 6.16-2/cmds/subvolume-list.c 6.17-1/cmds/subvolume-list.c
--- 6.16-2/cmds/subvolume-list.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/subvolume-list.c	2025-09-29 14:59:32.000000000 +0000
@@ -394,7 +394,7 @@ static int btrfs_list_setup_comparer(str
 		tmp = set;
 		set = realloc(set, size);
 		if (!set) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			free(tmp);
 			exit(1);
 		}
@@ -544,7 +544,7 @@ static int update_root(struct rb_root *r
 
 		ri->name = malloc(name_len + 1);
 		if (!ri->name) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			exit(1);
 		}
 		strncpy_null(ri->name, name, name_len + 1);
@@ -607,7 +607,7 @@ static int add_root(struct rb_root *root
 
 	ri = calloc(1, sizeof(*ri));
 	if (!ri) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(1);
 	}
 	ri->root_id = root_id;
@@ -615,7 +615,7 @@ static int add_root(struct rb_root *root
 	if (name && name_len > 0) {
 		ri->name = malloc(name_len + 1);
 		if (!ri->name) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			exit(1);
 		}
 		strncpy_null(ri->name, name, name_len + 1);
@@ -716,7 +716,7 @@ static int resolve_root(struct rb_root *
 			/* room for / and for null */
 			tmp = malloc(add_len + 2 + len);
 			if (!tmp) {
-				error_msg(ERROR_MSG_MEMORY, NULL);
+				error_mem(NULL);
 				exit(1);
 			}
 			memcpy(tmp + add_len + 1, full_path, len);
@@ -797,7 +797,7 @@ static int lookup_ino_path(int fd, struc
 		 */
 		ri->path = malloc(strlen(ri->name) + strlen(args.name) + 1);
 		if (!ri->path) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			exit(1);
 		}
 		strcpy(ri->path, args.name);
@@ -993,7 +993,7 @@ static int filter_full_path(struct root_
 
 		tmp = malloc(len + add_len + 2);
 		if (!tmp) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			exit(1);
 		}
 		memcpy(tmp + add_len + 1, ri->full_path, len);
@@ -1054,7 +1054,7 @@ static void btrfs_list_setup_filter(stru
 		tmp = set;
 		set = realloc(set, size);
 		if (!set) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			free(tmp);
 			exit(1);
 		}
@@ -1550,7 +1550,7 @@ static struct btrfs_list_filter_set *btr
 	       BTRFS_LIST_NFILTERS_INCREASE * sizeof(struct btrfs_list_filter);
 	set = calloc(1, size);
 	if (!set) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(1);
 	}
 
@@ -1568,7 +1568,7 @@ static struct btrfs_list_comparer_set *b
 	       BTRFS_LIST_NCOMPS_INCREASE * sizeof(struct btrfs_list_comparer);
 	set = calloc(1, size);
 	if (!set) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		exit(1);
 	}
 
@@ -1579,8 +1579,8 @@ static struct btrfs_list_comparer_set *b
 
 static int cmd_subvolume_list(const struct cmd_struct *cmd, int argc, char **argv)
 {
-	struct btrfs_list_filter_set *filter_set;
-	struct btrfs_list_comparer_set *comparer_set;
+	struct btrfs_list_filter_set *filter_set = NULL;
+	struct btrfs_list_comparer_set *comparer_set = NULL;
 	u64 flags = 0;
 	int fd = -1;
 	u64 top_id;
@@ -1591,7 +1591,15 @@ static int cmd_subvolume_list(const stru
 	enum btrfs_list_layout layout = BTRFS_LIST_LAYOUT_DEFAULT;
 
 	filter_set = btrfs_list_alloc_filter_set();
+	if (!filter_set) {
+		error_mem("allocating filter set");
+		return 1;
+	}
 	comparer_set = btrfs_list_alloc_comparer_set();
+	if (!comparer_set) {
+		error_mem("allocating comparator set");
+		return 1;
+	}
 
 	optind = 0;
 	while(1) {
@@ -1730,10 +1738,8 @@ static int cmd_subvolume_list(const stru
 
 out:
 	close(fd);
-	if (filter_set)
-		free(filter_set);
-	if (comparer_set)
-		free(comparer_set);
+	free(filter_set);
+	free(comparer_set);
 	if (uerr)
 		usage(cmd, 1);
 	return !!ret;
diff -pruN 6.16-2/cmds/subvolume.c 6.17-1/cmds/subvolume.c
--- 6.16-2/cmds/subvolume.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/cmds/subvolume.c	2025-09-29 14:59:32.000000000 +0000
@@ -145,26 +145,15 @@ static int create_one_subvolume(const ch
 				bool create_parents)
 {
 	int ret;
-	char	*dupname = NULL;
-	char	*dupdir = NULL;
+	char dupname[PATH_MAX];
+	char dupdir[PATH_MAX];
 	const char *newname;
-	char	*dstdir;
+	char *dstdir;
 	enum btrfs_util_error err;
 
-	dupname = strdup(dst);
-	if (!dupname) {
-		error_msg(ERROR_MSG_MEMORY, "duplicating %s", dst);
-		ret = -ENOMEM;
-		goto out;
-	}
+	strncpy_null(dupname, dst, PATH_MAX);
 	newname = path_basename(dupname);
-
-	dupdir = strdup(dst);
-	if (!dupdir) {
-		error_msg(ERROR_MSG_MEMORY, "duplicating %s", dst);
-		ret = -ENOMEM;
-		goto out;
-	}
+	strncpy_null(dupdir, dst, PATH_MAX);
 	dstdir = path_dirname(dupdir);
 
 	if (create_parents) {
@@ -210,8 +199,6 @@ static int create_one_subvolume(const ch
 	ret = 0;
 
 out:
-	free(dupname);
-	free(dupdir);
 
 	return ret;
 }
@@ -726,7 +713,7 @@ static int cmd_subvolume_snapshot(const
 
 		dstdir = malloc(strlen(dst) + 1 + strlen(newname) + 1);
 		if (!dstdir) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			free(dupname);
 			goto out;
 		}
@@ -1023,7 +1010,7 @@ static char *__ino_resolve(int fd, u64 d
 		 */
 		full = strdup(args.name);
 		if (!full) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			return ERR_PTR(-ENOMEM);
 		}
 	} else {
@@ -1108,7 +1095,7 @@ static char *ino_resolve(int fd, u64 ino
 		name = (char *)(ref + 1);
 		name = strndup(name, namelen);
 		if (!name) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			return NULL;
 		}
 
@@ -1787,7 +1774,7 @@ static int cmd_subvolume_sync(const stru
 	} else {
 		ids = malloc(id_count * sizeof(uint64_t));
 		if (!ids) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			ret = 1;
 			goto out;
 		}
diff -pruN 6.16-2/common/clear-cache.c 6.17-1/common/clear-cache.c
--- 6.16-2/common/clear-cache.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/clear-cache.c	2025-09-29 14:59:32.000000000 +0000
@@ -164,7 +164,7 @@ static int check_free_space_tree(struct
 			goto out;
 		}
 
-		bg = btrfs_lookup_first_block_group(fs_info, key.objectid);
+		bg = btrfs_lookup_block_group(fs_info, key.objectid);
 		if (!bg) {
 			fprintf(stderr,
 		"We have a space info key for a block group that doesn't exist\n");
diff -pruN 6.16-2/common/device-scan.c 6.17-1/common/device-scan.c
--- 6.16-2/common/device-scan.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/device-scan.c	2025-09-29 14:59:32.000000000 +0000
@@ -294,8 +294,7 @@ int btrfs_device_already_in_root(struct
 			btrfs_super_magic(&disk_super) != BTRFS_MAGIC_TEMPORARY)
 		goto out;
 
-	if (!memcmp(disk_super.fsid, root->fs_info->super_copy->fsid,
-		    BTRFS_FSID_SIZE))
+	if (memcmp(disk_super.fsid, root->fs_info->super_copy->fsid, BTRFS_FSID_SIZE) == 0)
 		ret = 1;
 out:
 	return ret;
diff -pruN 6.16-2/common/device-utils.c 6.17-1/common/device-utils.c
--- 6.16-2/common/device-utils.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/device-utils.c	2025-09-29 14:59:32.000000000 +0000
@@ -277,8 +277,6 @@ int btrfs_prepare_device(int fd, const c
 				goto err;
 			}
 		}
-	} else if (opflags & PREP_DEVICE_DISCARD) {
-		prepare_discard_device(file, fd, byte_count, opflags);
 	}
 
 	ret = zero_dev_clamped(fd, zinfo, 0, ZERO_DEV_BYTES, byte_count);
@@ -295,6 +293,9 @@ int btrfs_prepare_device(int fd, const c
 		goto err;
 	}
 
+	if (!(opflags & PREP_DEVICE_ZONED) && (opflags & PREP_DEVICE_DISCARD))
+		prepare_discard_device(file, fd, byte_count, opflags);
+
 	ret = btrfs_wipe_existing_sb(fd, zinfo);
 	if (ret < 0) {
 		error("cannot wipe superblocks on %s", file);
@@ -559,7 +560,7 @@ ssize_t btrfs_direct_pread(int fd, void
 
 	ret = posix_memalign(&bounce_buf, alignment, iosize);
 	if (ret) {
-		error_msg(ERROR_MSG_MEMORY, "bounce buffer");
+		error_mem("bounce buffer");
 		errno = ret;
 		return -ret;
 	}
@@ -610,7 +611,7 @@ ssize_t btrfs_direct_pwrite(int fd, cons
 
 	ret = posix_memalign(&bounce_buf, alignment, iosize);
 	if (ret) {
-		error_msg(ERROR_MSG_MEMORY, "bounce buffer");
+		error_mem("bounce buffer");
 		errno = ret;
 		return -ret;
 	}
diff -pruN 6.16-2/common/filesystem-utils.c 6.17-1/common/filesystem-utils.c
--- 6.16-2/common/filesystem-utils.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/filesystem-utils.c	2025-09-29 14:59:32.000000000 +0000
@@ -172,7 +172,7 @@ int get_label_mounted(const char *mount_
 	int fd;
 	int ret;
 
-	fd = open(mount_path, O_RDONLY | O_NOATIME);
+	fd = open(mount_path, O_RDONLY);
 	if (fd < 0) {
 		error("unable to access %s: %m", mount_path);
 		return -1;
diff -pruN 6.16-2/common/fsfeatures.c 6.17-1/common/fsfeatures.c
--- 6.16-2/common/fsfeatures.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/fsfeatures.c	2025-09-29 14:59:32.000000000 +0000
@@ -361,12 +361,12 @@ static int parse_one_fs_feature(const ch
 	for (i = 0; i < array_size; i++) {
 		const struct btrfs_feature *feat = get_feature(i, source);
 
-		if (name[0] == '^' && !strcmp(feat->name, name + 1)) {
+		if (name[0] == '^' && strcmp(feat->name, name + 1) == 0) {
 			features->compat_ro_flags &= ~feat->compat_ro_flag;
 			features->incompat_flags &= ~feat->incompat_flag;
 			features->runtime_flags &= ~feat->runtime_flag;
 			found = 1;
-		} else if (!strcmp(feat->name, name)) {
+		} else if (strcmp(feat->name, name) == 0) {
 			features->compat_ro_flags |= feat->compat_ro_flag;
 			features->incompat_flags |= feat->incompat_flag;
 			features->runtime_flags |= feat->runtime_flag;
@@ -613,7 +613,7 @@ static bool check_supported_sectorsize(u
 		 * Also check the terminal '\0' to handle cases like
 		 * "4096" and "40960".
 		 */
-		if (!strncmp(this_char, sectorsize_buf, strlen(sectorsize_buf) + 1))
+		if (strncmp(this_char, sectorsize_buf, strlen(sectorsize_buf) + 1) == 0)
 			return true;
 	}
 	return false;
diff -pruN 6.16-2/common/help.c 6.17-1/common/help.c
--- 6.16-2/common/help.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/help.c	2025-09-29 14:59:32.000000000 +0000
@@ -532,7 +532,7 @@ void help_command_group(const struct cmd
 	bool full = false;
 
 	if (argc > 1) {
-		if (!strcmp(argv[1], "--full"))
+		if (strcmp(argv[1], "--full") == 0)
 			full = 1;
 		/* The option --box is handled in the caller */
 	}
diff -pruN 6.16-2/common/messages.h 6.17-1/common/messages.h
--- 6.16-2/common/messages.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/messages.h	2025-09-29 14:59:32.000000000 +0000
@@ -200,4 +200,7 @@ enum common_error {
 __attribute__ ((format (printf, 2, 3)))
 void error_msg(enum common_error error, const char *msg, ...);
 
+/* Shortcuts for most common errors. */
+#define error_mem(...)	error_msg(ERROR_MSG_MEMORY, ##__VA_ARGS__)
+
 #endif
diff -pruN 6.16-2/common/parse-utils.c 6.17-1/common/parse-utils.c
--- 6.16-2/common/parse-utils.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/parse-utils.c	2025-09-29 14:59:32.000000000 +0000
@@ -28,6 +28,7 @@
 #include "kernel-shared/ctree.h"
 #include "kernel-shared/compression.h"
 #include "common/parse-utils.h"
+#include "common/string-utils.h"
 #include "common/messages.h"
 #include "common/utils.h"
 
@@ -381,3 +382,96 @@ err:
 	exit(-1);
 }
 
+/*
+ * Convert a tree name from various forms to the numerical id if possible
+ * Accepted forms:
+ * - case does not matter
+ * - same as the key name, BTRFS_ROOT_TREE_OBJECTID
+ * - dtto shortened, BTRFS_ROOT_TREE
+ * - dtto without prefix, ROOT_TREE
+ * - common name, ROOT, CHUNK, EXTENT, ...
+ * - dtto alias, DEVICE for DEV, CHECKSUM for CSUM
+ *
+ * Returns 0 if the tree id was not recognized.
+ */
+static u64 tree_id_from_string(const char *str, const char **end)
+{
+	int match = 0;
+	int i;
+	u64 id;
+	static struct treename {
+		const char *name;
+		u64 id;
+	} tn[] = {
+		{ "ROOT", BTRFS_ROOT_TREE_OBJECTID },
+		{ "EXTENT", BTRFS_EXTENT_TREE_OBJECTID },
+		{ "CHUNK", BTRFS_CHUNK_TREE_OBJECTID },
+		{ "DEVICE", BTRFS_DEV_TREE_OBJECTID },
+		{ "DEV", BTRFS_DEV_TREE_OBJECTID },
+		{ "FS", BTRFS_FS_TREE_OBJECTID },
+		{ "CSUM", BTRFS_CSUM_TREE_OBJECTID },
+		{ "CHECKSUM", BTRFS_CSUM_TREE_OBJECTID },
+		{ "QUOTA", BTRFS_QUOTA_TREE_OBJECTID },
+		{ "UUID", BTRFS_UUID_TREE_OBJECTID },
+		{ "FREE_SPACE", BTRFS_FREE_SPACE_TREE_OBJECTID },
+		{ "FREE-SPACE", BTRFS_FREE_SPACE_TREE_OBJECTID },
+		{ "TREE_LOG_FIXUP", BTRFS_TREE_LOG_FIXUP_OBJECTID },
+		{ "TREE-LOG-FIXUP", BTRFS_TREE_LOG_FIXUP_OBJECTID },
+		{ "TREE_LOG", BTRFS_TREE_LOG_OBJECTID },
+		{ "TREE-LOG", BTRFS_TREE_LOG_OBJECTID },
+		{ "TREE_RELOC", BTRFS_TREE_RELOC_OBJECTID },
+		{ "TREE-RELOC", BTRFS_TREE_RELOC_OBJECTID },
+		{ "DATA_RELOC", BTRFS_DATA_RELOC_TREE_OBJECTID },
+		{ "DATA-RELOC", BTRFS_DATA_RELOC_TREE_OBJECTID },
+		{ "BLOCK_GROUP", BTRFS_BLOCK_GROUP_TREE_OBJECTID },
+		{ "BLOCK-GROUP", BTRFS_BLOCK_GROUP_TREE_OBJECTID },
+		{ "RAID_STRIPE", BTRFS_RAID_STRIPE_TREE_OBJECTID },
+		{ "RAID-STRIPE", BTRFS_RAID_STRIPE_TREE_OBJECTID },
+	};
+
+	if (strncasecmp("BTRFS_", str, strlen("BTRFS_")) == 0)
+		str += strlen("BTRFS_");
+
+	for (i = 0; i < ARRAY_SIZE(tn); i++) {
+		int len = strlen(tn[i].name);
+
+		if (strncasecmp(tn[i].name, str, len) == 0) {
+			id = tn[i].id;
+			match = 1;
+			str += len;
+			break;
+		}
+	}
+
+	if (!match)
+		return 0;
+
+	if (strncasecmp("_TREE", str, strlen("_TREE")) == 0)
+		str += strlen("_TREE");
+
+	if (strncasecmp("_OBJECTID", str, strlen("_OBJECTID")) == 0)
+		str += strlen("_OBJECTID");
+
+	*end = str;
+
+	return id;
+}
+
+int parse_tree_id(const char* str, u64 *tree_id) {
+	const char *end = NULL;
+
+	if (string_is_numerical(str))
+		*tree_id = arg_strtou64(str);
+	else
+		*tree_id = tree_id_from_string(str, &end);
+
+	if (*tree_id == 0)
+		return -EINVAL;
+
+	if (end && *end) {
+		error("unexpected tree id suffix of '%s': %s", str, end);
+		return -EINVAL;
+	}
+
+	return 0;
+}
diff -pruN 6.16-2/common/parse-utils.h 6.17-1/common/parse-utils.h
--- 6.16-2/common/parse-utils.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/parse-utils.h	2025-09-29 14:59:32.000000000 +0000
@@ -30,6 +30,7 @@ int parse_bg_profile(const char *profile
 int parse_compress_type(const char *type);
 int parse_qgroupid(const char *str, u64 *qgroupid);
 u64 parse_qgroupid_or_path(const char *p);
+int parse_tree_id(const char* str, u64 *tree_id);
 int fls64(u64 x);
 
 #endif
diff -pruN 6.16-2/common/send-stream.c 6.17-1/common/send-stream.c
--- 6.16-2/common/send-stream.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/send-stream.c	2025-09-29 14:59:32.000000000 +0000
@@ -142,7 +142,7 @@ static int read_cmd(struct btrfs_send_st
 		if (!new_read_buf) {
 			ret = -ENOMEM;
 			errno = -ret;
-			error_msg(ERROR_MSG_MEMORY, "read buffer for command");
+			error_mem("read buffer for command");
 			goto out;
 		}
 		sctx->read_buf = new_read_buf;
@@ -633,7 +633,7 @@ int btrfs_read_and_process_send_stream(i
 	sctx.read_buf = malloc(BTRFS_SEND_BUF_SIZE_V1);
 	if (!sctx.read_buf) {
 		ret = -ENOMEM;
-		error_msg(ERROR_MSG_MEMORY, "send stream read buffer");
+		error_mem("send stream read buffer");
 		goto out;
 	}
 	sctx.read_buf_size = BTRFS_SEND_BUF_SIZE_V1;
diff -pruN 6.16-2/common/sort-utils.c 6.17-1/common/sort-utils.c
--- 6.16-2/common/sort-utils.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/sort-utils.c	2025-09-29 14:59:32.000000000 +0000
@@ -39,7 +39,7 @@ int compare_cmp_multi(const void *a, con
 	return 0;
 }
 
-int compare_add_sort_key(struct compare *comp, const char *key)
+int compare_add_sort_key(struct compare *comp, const char *key, bool descending)
 {
 	int i;
 
@@ -51,6 +51,8 @@ int compare_add_sort_key(struct compare
 			return -1;
 		if (strcasecmp(key, comp->sortdef[i].name) == 0) {
 			comp->comp[comp->count] = comp->sortdef[i].comp;
+			if (descending)
+				comp->invert_map |= (1U << comp->count);
 			comp->count++;
 			break;
 		}
@@ -64,7 +66,7 @@ int compare_add_sort_key(struct compare
  * Return: 0  if id is valid
  *         -1 if id not in sortdef
  */
-int compare_add_sort_id(struct compare *comp, int id)
+int compare_add_sort_id(struct compare *comp, int id, bool descending)
 {
 	int i;
 
@@ -79,6 +81,8 @@ int compare_add_sort_id(struct compare *
 			return -1;
 		if (comp->sortdef[i].id == id) {
 			comp->comp[comp->count] = comp->sortdef[i].comp;
+			if (descending)
+				comp->invert_map |= (1U << comp->count);
 			comp->count++;
 			break;
 		}
@@ -97,7 +101,7 @@ int compare_add_sort_id(struct compare *
  *         -1 on error
  *         -2 end of buffer
  */
-int compare_parse_key_to_id(const struct compare *comp, const char **next)
+int compare_parse_key_to_id(const struct compare *comp, const char **next, bool *descending)
 {
 	const char *tmp = *next, *start = *next;
 
@@ -108,14 +112,23 @@ int compare_parse_key_to_id(const struct
 	if (!*next || !**next)
 		return -2;
 
+	*descending = false;
 	do {
 		/* End of word. */
 		if (*tmp == ',' || *tmp == 0) {
+			int desc = 0;
+
+			/* Descending order. */
+			if (start[0] == '-') {
+				desc = 1;
+				*descending = true;
+			}
+
 			/* Look up in sortdef. */
 			for (int i = 0; comp->sortdef[i].name; i++) {
 				int len = strlen(comp->sortdef[i].name);
 
-				if (strncasecmp(start, comp->sortdef[i].name, len) == 0) {
+				if (strncasecmp(start + desc, comp->sortdef[i].name, len) == 0) {
 					/* Point to last NUL. */
 					*next = tmp;
 					/* Or the next valid char. */
@@ -129,7 +142,7 @@ int compare_parse_key_to_id(const struct
 			return -1;
 		}
 		/* Invalid char found. */
-		if (!isalnum(*tmp)) {
+		if (start[0] != '-' && !isalnum(*tmp)) {
 			*next = tmp;
 			return -1;
 		}
@@ -201,12 +214,14 @@ int compare_setup_sort(struct compare *c
 
 	tmp = def;
 	do {
-		id = compare_parse_key_to_id(comp, &tmp);
+		bool descending;
+
+		id = compare_parse_key_to_id(comp, &tmp, &descending);
 		if (id == -1) {
 			error("unknown sort key: %s", tmp);
 			return -1;
 		}
-		compare_add_sort_id(comp, id);
+		compare_add_sort_id(comp, id, descending);
 	} while (id >= 0);
 
 	return 0;
diff -pruN 6.16-2/common/sort-utils.h 6.17-1/common/sort-utils.h
--- 6.16-2/common/sort-utils.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/sort-utils.h	2025-09-29 14:59:32.000000000 +0000
@@ -58,7 +58,9 @@ void test() {
 
 	compare_init(&comp, sortit);
 	for (i = 0; i < sizeof(sortby) / sizeof(sortby[0]); i++) {
-		ret = compare_add_sort_key(&comp, sortby[i]);
+		bool descending = true;
+
+		ret = compare_add_sort_key(&comp, sortby[i], descending);
 		if (ret < 0) {
 			printf("ERROR adding sort key %s\n", sortby[i]);
 			break;
@@ -94,9 +96,9 @@ struct compare {
 
 int compare_init(struct compare *comp, const struct sortdef *sortdef);
 int compare_cmp_multi(const void *a, const void *b, const struct compare *comp);
-int compare_add_sort_key(struct compare *comp, const char *key);
-int compare_parse_key_to_id(const struct compare *comp, const char **next);
-int compare_add_sort_id(struct compare *comp, int id);
+int compare_add_sort_key(struct compare *comp, const char *key, bool descending);
+int compare_parse_key_to_id(const struct compare *comp, const char **next, bool *descending);
+int compare_add_sort_id(struct compare *comp, int id, bool descending);
 int compare_key_id(const struct compare *comp, const char *key);
 const char *compare_id_name(const struct compare *comp, int id);
 bool compare_has_id(const struct compare *comp, int id);
diff -pruN 6.16-2/common/units.c 6.17-1/common/units.c
--- 6.16-2/common/units.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/units.c	2025-09-29 14:59:32.000000000 +0000
@@ -169,47 +169,47 @@ unsigned int get_unit_mode_from_arg(int
 	int arg_end;
 
 	for (arg_i = 0; arg_i < *argc; arg_i++) {
-		if (!strcmp(argv[arg_i], "--"))
+		if (strcmp(argv[arg_i], "--") == 0)
 			break;
 
-		if (!strcmp(argv[arg_i], "--raw")) {
+		if (strcmp(argv[arg_i], "--raw") == 0) {
 			unit_mode = UNITS_RAW;
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "--human-readable")) {
+		if (strcmp(argv[arg_i], "--human-readable") == 0) {
 			unit_mode = UNITS_HUMAN_BINARY;
 			argv[arg_i] = NULL;
 			continue;
 		}
 
-		if (!strcmp(argv[arg_i], "--iec")) {
+		if (strcmp(argv[arg_i], "--iec") == 0) {
 			units_set_mode(&unit_mode, UNITS_BINARY);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "--si")) {
+		if (strcmp(argv[arg_i], "--si") == 0) {
 			units_set_mode(&unit_mode, UNITS_DECIMAL);
 			argv[arg_i] = NULL;
 			continue;
 		}
 
-		if (!strcmp(argv[arg_i], "--kbytes")) {
+		if (strcmp(argv[arg_i], "--kbytes") == 0) {
 			units_set_base(&unit_mode, UNITS_KBYTES);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "--mbytes")) {
+		if (strcmp(argv[arg_i], "--mbytes") == 0) {
 			units_set_base(&unit_mode, UNITS_MBYTES);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "--gbytes")) {
+		if (strcmp(argv[arg_i], "--gbytes") == 0) {
 			units_set_base(&unit_mode, UNITS_GBYTES);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "--tbytes")) {
+		if (strcmp(argv[arg_i], "--tbytes") == 0) {
 			units_set_base(&unit_mode, UNITS_TBYTES);
 			argv[arg_i] = NULL;
 			continue;
@@ -218,37 +218,37 @@ unsigned int get_unit_mode_from_arg(int
 		if (!df_mode)
 			continue;
 
-		if (!strcmp(argv[arg_i], "-b")) {
+		if (strcmp(argv[arg_i], "-b") == 0) {
 			unit_mode = UNITS_RAW;
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "-h")) {
+		if (strcmp(argv[arg_i], "-h") == 0) {
 			unit_mode = UNITS_HUMAN_BINARY;
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "-H")) {
+		if (strcmp(argv[arg_i], "-H") == 0) {
 			unit_mode = UNITS_HUMAN_DECIMAL;
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "-k")) {
+		if (strcmp(argv[arg_i], "-k") == 0) {
 			units_set_base(&unit_mode, UNITS_KBYTES);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "-m")) {
+		if (strcmp(argv[arg_i], "-m") == 0) {
 			units_set_base(&unit_mode, UNITS_MBYTES);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "-g")) {
+		if (strcmp(argv[arg_i], "-g") == 0) {
 			units_set_base(&unit_mode, UNITS_GBYTES);
 			argv[arg_i] = NULL;
 			continue;
 		}
-		if (!strcmp(argv[arg_i], "-t")) {
+		if (strcmp(argv[arg_i], "-t") == 0) {
 			units_set_base(&unit_mode, UNITS_TBYTES);
 			argv[arg_i] = NULL;
 			continue;
diff -pruN 6.16-2/common/utils.c 6.17-1/common/utils.c
--- 6.16-2/common/utils.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/common/utils.c	2025-09-29 14:59:32.000000000 +0000
@@ -120,75 +120,6 @@ int get_df(int fd, struct btrfs_ioctl_sp
 	return 0;
 }
 
-
-static u64 find_max_device_id(struct btrfs_tree_search_args *args, int nr_items)
-{
-	struct btrfs_dev_item *dev_item;
-	char *buf = btrfs_tree_search_data(args, 0);
-
-	buf += (nr_items - 1) * (sizeof(struct btrfs_ioctl_search_header)
-				       + sizeof(struct btrfs_dev_item));
-	buf += sizeof(struct btrfs_ioctl_search_header);
-
-	dev_item = (struct btrfs_dev_item *)buf;
-
-	return btrfs_stack_device_id(dev_item);
-}
-
-static int search_chunk_tree_for_fs_info(int fd,
-				struct btrfs_ioctl_fs_info_args *fi_args)
-{
-	int ret;
-	int max_items;
-	u64 start_devid = 1;
-	struct btrfs_tree_search_args args;
-	struct btrfs_ioctl_search_key *sk;
-
-	fi_args->num_devices = 0;
-
-	max_items = BTRFS_SEARCH_ARGS_BUFSIZE
-	       / (sizeof(struct btrfs_ioctl_search_header)
-			       + sizeof(struct btrfs_dev_item));
-
-	memset(&args, 0, sizeof(args));
-	sk = btrfs_tree_search_sk(&args);
-	sk->tree_id = BTRFS_CHUNK_TREE_OBJECTID;
-	sk->min_objectid = BTRFS_DEV_ITEMS_OBJECTID;
-	sk->min_type = BTRFS_DEV_ITEM_KEY;
-	sk->max_objectid = BTRFS_DEV_ITEMS_OBJECTID;
-	sk->max_type = BTRFS_DEV_ITEM_KEY;
-	sk->min_transid = 0;
-	sk->max_transid = (u64)-1;
-	sk->nr_items = max_items;
-	sk->max_offset = (u64)-1;
-
-again:
-	sk->min_offset = start_devid;
-
-	ret = btrfs_tree_search_ioctl(fd, &args);
-	if (ret < 0)
-		return -errno;
-
-	fi_args->num_devices += (u64)sk->nr_items;
-
-	if (sk->nr_items == max_items) {
-		start_devid = find_max_device_id(&args, sk->nr_items) + 1;
-		goto again;
-	}
-
-	/* Get the latest max_id to stay consistent with the num_devices */
-	if (sk->nr_items == 0)
-		/*
-		 * last tree_search returns an empty buf, use the devid of
-		 * the last dev_item of the previous tree_search
-		 */
-		fi_args->max_id = start_devid - 1;
-	else
-		fi_args->max_id = find_max_device_id(&args, sk->nr_items);
-
-	return 0;
-}
-
 /*
  * For a given path, fill in the ioctl fs_ and info_ args.
  * If the path is a btrfs mountpoint, fill info for all devices.
@@ -258,6 +189,8 @@ int get_fs_info(const char *path, struct
 
 	/* fill in fi_args if not just a single device */
 	if (fi_args->num_devices != 1) {
+		u64 count = 0;
+
 		ret = ioctl(fd, BTRFS_IOC_FS_INFO, fi_args);
 		if (ret < 0) {
 			ret = -errno;
@@ -265,16 +198,22 @@ int get_fs_info(const char *path, struct
 		}
 
 		/*
-		 * The fs_args->num_devices does not include seed devices
+		 * The fs_args->num_devices does not include seed devices,
+		 * so we count them manually.
 		 */
-		ret = search_chunk_tree_for_fs_info(fd, fi_args);
-		if (ret)
-			goto out;
+		for (u64 devid = 1; devid <= fi_args->max_id; devid++) {
+			struct btrfs_ioctl_dev_info_args args = { .devid = devid };
 
-		/*
-		 * search_chunk_tree_for_fs_info() will lacks the devid 0
-		 * so manual probe for it here.
-		 */
+			ret = ioctl(fd, BTRFS_IOC_DEV_INFO, &args);
+			if (ret == 0)
+				count++;
+		}
+		if (count > fi_args->num_devices) {
+			printf("found more devices than fs_info\n");
+			fi_args->num_devices = count;
+		}
+
+		/* We did not count devid 0, do another probe. */
 		ret = device_get_info(fd, 0, &tmp);
 		if (!ret) {
 			fi_args->num_devices++;
diff -pruN 6.16-2/convert/main.c 6.17-1/convert/main.c
--- 6.16-2/convert/main.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/convert/main.c	2025-09-29 14:59:32.000000000 +0000
@@ -1224,8 +1224,8 @@ static int do_convert(const char *devnam
 		goto fail;
 	}
 	btrfs_parse_fs_features_to_string(features_buf, features);
-	if (!memcmp(features, &btrfs_mkfs_default_features,
-		   sizeof(struct btrfs_mkfs_features)))
+	if (memcmp(features, &btrfs_mkfs_default_features,
+		   sizeof(struct btrfs_mkfs_features)) == 0)
 		strcat(features_buf, " (default)");
 
 	if (convert_flags & CONVERT_FLAG_COPY_FSID) {
diff -pruN 6.16-2/convert/source-ext2.c 6.17-1/convert/source-ext2.c
--- 6.16-2/convert/source-ext2.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/convert/source-ext2.c	2025-09-29 14:59:32.000000000 +0000
@@ -224,7 +224,7 @@ static int ext2_dir_iterate_proc(ext2_in
 	name_len = dirent->name_len & 0xFF;
 
 	objectid = dirent->inode + INO_OFFSET;
-	if (!strncmp(dirent->name, dotdot, name_len)) {
+	if (strncmp(dirent->name, dotdot, name_len) == 0) {
 		if (name_len == 2) {
 			if (idata->parent != 0) {
 				error("dotdot entry parent not zero: %llu",
diff -pruN 6.16-2/convert/source-reiserfs.c 6.17-1/convert/source-reiserfs.c
--- 6.16-2/convert/source-reiserfs.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/convert/source-reiserfs.c	2025-09-29 14:59:32.000000000 +0000
@@ -833,8 +833,8 @@ static int reiserfs_copy_one_xattr(reise
 	body = xa_data->body + sizeof(struct reiserfs_xattr_header);
 	len = xa_data->len - sizeof(struct reiserfs_xattr_header);
 
-	if (!strncmp("system.posix_acl_default", name, namelen) ||
-	    !strncmp("system.posix_acl_access", name, namelen)) {
+	if (strncmp("system.posix_acl_default", name, namelen) == 0 ||
+	    strncmp("system.posix_acl_access", name, namelen) == 0) {
 		size_t bufsize = acl_ea_size(ext2_acl_count(len));
 		char *databuf = malloc(bufsize);
 
diff -pruN 6.16-2/debian/changelog 6.17-1/debian/changelog
--- 6.16-2/debian/changelog	2025-09-07 20:03:07.000000000 +0000
+++ 6.17-1/debian/changelog	2025-10-09 17:38:07.000000000 +0000
@@ -1,3 +1,10 @@
+btrfs-progs (6.17-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Create gbp.conf to manually set compression type and level to xz:9.
+
+ -- Nicholas D Steeves <sten@debian.org>  Thu, 09 Oct 2025 13:38:07 -0400
+
 btrfs-progs (6.16-2) unstable; urgency=medium
 
   * Drop support for converting from reiserfs, because reiserfs was dropped from
diff -pruN 6.16-2/debian/gbp.conf 6.17-1/debian/gbp.conf
--- 6.16-2/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/debian/gbp.conf	2025-10-09 17:38:07.000000000 +0000
@@ -0,0 +1,3 @@
+[DEFAULT]
+compression = xz
+compression-level = 9
diff -pruN 6.16-2/image/image-create.c 6.17-1/image/image-create.c
--- 6.16-2/image/image-create.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/image/image-create.c	2025-09-29 14:59:32.000000000 +0000
@@ -68,7 +68,7 @@ static void *dump_worker(void *data)
 			async->bufsize = compressBound(async->size);
 			async->buffer = malloc(async->bufsize);
 			if (!async->buffer) {
-				error_msg(ERROR_MSG_MEMORY, "async buffer");
+				error_mem("async buffer");
 				pthread_mutex_lock(&md->mutex);
 				if (!md->error)
 					md->error = -ENOMEM;
diff -pruN 6.16-2/image/image-restore.c 6.17-1/image/image-restore.c
--- 6.16-2/image/image-restore.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/image/image-restore.c	2025-09-29 14:59:32.000000000 +0000
@@ -564,7 +564,7 @@ static void *restore_worker(void *data)
 
 	buffer = malloc(buffer_size);
 	if (!buffer) {
-		error_msg(ERROR_MSG_MEMORY, "restore worker buffer");
+		error_mem("restore worker buffer");
 		pthread_mutex_lock(&mdres->mutex);
 		if (!mdres->error)
 			mdres->error = -ENOMEM;
@@ -795,7 +795,7 @@ static int read_chunk_tree_block(struct
 
 		fs_chunk = malloc(sizeof(struct fs_chunk));
 		if (!fs_chunk) {
-			error_msg(ERROR_MSG_MEMORY, "allocate chunk");
+			error_mem("allocate chunk");
 			return -ENOMEM;
 		}
 		memset(fs_chunk, 0, sizeof(*fs_chunk));
@@ -957,13 +957,13 @@ static int search_for_chunk_blocks(struc
 
 	cluster = malloc(IMAGE_BLOCK_SIZE);
 	if (!cluster) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
 	buffer = malloc(max_size);
 	if (!buffer) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		free(cluster);
 		return -ENOMEM;
 	}
@@ -971,7 +971,7 @@ static int search_for_chunk_blocks(struc
 	if (mdres->compress_method == COMPRESS_ZLIB) {
 		tmp = malloc(max_size);
 		if (!tmp) {
-			error_msg(ERROR_MSG_MEMORY, NULL);
+			error_mem(NULL);
 			free(cluster);
 			free(buffer);
 			return -ENOMEM;
@@ -1143,7 +1143,7 @@ static int build_chunk_tree(struct mdres
 
 	buffer = malloc(get_unaligned_le32(&item->size));
 	if (!buffer) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
@@ -1306,14 +1306,14 @@ static int add_cluster(struct meta_clust
 		item = &cluster->items[i];
 		async = calloc(1, sizeof(*async));
 		if (!async) {
-			error_msg(ERROR_MSG_MEMORY, "async data");
+			error_mem("async data");
 			return -ENOMEM;
 		}
 		async->start = get_unaligned_le64(&item->bytenr);
 		async->bufsize = get_unaligned_le32(&item->size);
 		async->buffer = malloc(async->bufsize);
 		if (!async->buffer) {
-			error_msg(ERROR_MSG_MEMORY, "async buffer");
+			error_mem("async buffer");
 			free(async);
 			return -ENOMEM;
 		}
@@ -1774,7 +1774,7 @@ int restore_metadump(const char *input,
 	FILE *in = NULL;
 	int ret = 0;
 
-	if (!strcmp(input, "-")) {
+	if (strcmp(input, "-") == 0) {
 		in = stdin;
 	} else {
 		in = fopen(input, "r");
@@ -1802,7 +1802,7 @@ int restore_metadump(const char *input,
 
 	cluster = malloc(IMAGE_BLOCK_SIZE);
 	if (!cluster) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		ret = -ENOMEM;
 		goto failed_info;
 	}
diff -pruN 6.16-2/image/sanitize.c 6.17-1/image/sanitize.c
--- 6.16-2/image/sanitize.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/image/sanitize.c	2025-09-29 14:59:32.000000000 +0000
@@ -263,7 +263,7 @@ static char *find_collision(struct rb_ro
 
 	val = malloc(sizeof(struct name));
 	if (!val) {
-		error_msg(ERROR_MSG_MEMORY, "sanitize name");
+		error_mem("sanitize name");
 		free(name);
 		return NULL;
 	}
@@ -274,7 +274,7 @@ static char *find_collision(struct rb_ro
 	val->len = name_len;
 	val->sub = malloc(name_len);
 	if (!val->sub) {
-		error_msg(ERROR_MSG_MEMORY, "sanitize name");
+		error_mem("sanitize name");
 		free(val);
 		free(name);
 		return NULL;
@@ -343,7 +343,7 @@ static void sanitize_dir_item(enum sanit
 		if (sanitize == SANITIZE_COLLISIONS) {
 			buf = malloc(name_len);
 			if (!buf) {
-				error_msg(ERROR_MSG_MEMORY, "sanitize name");
+				error_mem("sanitize name");
 				return;
 			}
 			read_extent_buffer(eb, buf, name_ptr, name_len);
@@ -352,7 +352,7 @@ static void sanitize_dir_item(enum sanit
 			garbage = generate_garbage(name_len);
 		}
 		if (!garbage) {
-			error_msg(ERROR_MSG_MEMORY, "sanitize name");
+			error_mem("sanitize name");
 			return;
 		}
 		write_extent_buffer(eb, garbage, name_ptr, name_len);
@@ -398,7 +398,7 @@ static void sanitize_inode_ref(enum sani
 		if (sanitize == SANITIZE_COLLISIONS) {
 			buf = malloc(len);
 			if (!buf) {
-				error_msg(ERROR_MSG_MEMORY, "sanitize name");
+				error_mem("sanitize name");
 				return;
 			}
 			read_extent_buffer(eb, buf, name_ptr, len);
@@ -408,7 +408,7 @@ static void sanitize_inode_ref(enum sani
 		}
 
 		if (!garbage) {
-			error_msg(ERROR_MSG_MEMORY, "sanitize name");
+			error_mem("sanitize name");
 			return;
 		}
 		write_extent_buffer(eb, garbage, name_ptr, len);
@@ -454,7 +454,7 @@ void sanitize_name(enum sanitize_mode sa
 
 	eb = alloc_dummy_eb(src->start, src->len);
 	if (!eb) {
-		error_msg(ERROR_MSG_MEMORY, "sanitize name");
+		error_mem("sanitize name");
 		return;
 	}
 
diff -pruN 6.16-2/kernel-shared/ctree.c 6.17-1/kernel-shared/ctree.c
--- 6.16-2/kernel-shared/ctree.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/ctree.c	2025-09-29 14:59:32.000000000 +0000
@@ -670,13 +670,7 @@ int btrfs_cow_block(struct btrfs_trans_h
 {
 	u64 search_start;
 	int ret;
-	/*
-	if (trans->transaction != root->fs_info->running_transaction) {
-		printk(KERN_CRIT "trans %llu running %llu\n", trans->transid,
-		       root->fs_info->running_transaction->transid);
-		WARN_ON(1);
-	}
-	*/
+
 	if (trans->transid != root->fs_info->generation) {
 		printk(KERN_CRIT "trans %llu running %llu\n",
 			(unsigned long long)trans->transid,
diff -pruN 6.16-2/kernel-shared/disk-io.c 6.17-1/kernel-shared/disk-io.c
--- 6.16-2/kernel-shared/disk-io.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/disk-io.c	2025-09-29 14:59:32.000000000 +0000
@@ -194,7 +194,7 @@ static int __csum_tree_block_size(struct
 
 	if (verify) {
 		if (buf->fs_info && buf->fs_info->skip_csum_check) {
-			/* printf("skip csum check for block %llu\n", buf->start); */
+			/* Skip csum check for block buf->start. */
 		} else if (memcmp_extent_buffer(buf, result, 0, csum_size)) {
 			if (!silent) {
 				char found[BTRFS_CSUM_STRING_LEN];
@@ -1439,6 +1439,7 @@ int btrfs_setup_chunk_tree_and_device_ma
 {
 	struct btrfs_super_block *sb = fs_info->super_copy;
 	u64 generation;
+	u8 level;
 	int ret;
 
 	btrfs_setup_root(fs_info->chunk_root, fs_info,
@@ -1448,8 +1449,6 @@ int btrfs_setup_chunk_tree_and_device_ma
 	if (ret)
 		return ret;
 
-	generation = btrfs_super_chunk_root_generation(sb);
-
 	if (chunk_root_bytenr && !IS_ALIGNED(chunk_root_bytenr,
 					    fs_info->sectorsize)) {
 		warning("chunk_root_bytenr %llu is unaligned to %u, ignore it",
@@ -1457,13 +1456,28 @@ int btrfs_setup_chunk_tree_and_device_ma
 		chunk_root_bytenr = 0;
 	}
 
-	if (!chunk_root_bytenr)
-		chunk_root_bytenr = btrfs_super_chunk_root(sb);
-	else
+	if (chunk_root_bytenr) {
+		struct extent_buffer *eb;
+		struct btrfs_tree_parent_check check = { 0 };
+
 		generation = 0;
+		eb = read_tree_block(fs_info, chunk_root_bytenr, &check);
+		if (IS_ERR(eb)) {
+			ret = PTR_ERR(eb);
+			errno = -ret;
+			error("unable to read tree block at %llu: %m", chunk_root_bytenr);
+			return ret;
+		}
+		level = btrfs_header_level(eb);
+		free_extent_buffer(eb);
+	} else {
+		chunk_root_bytenr = btrfs_super_chunk_root(sb);
+		generation = btrfs_super_chunk_root_generation(sb);
+		level = btrfs_super_chunk_root_level(sb);
+	}
 
 	ret = read_root_node(fs_info, fs_info->chunk_root, chunk_root_bytenr,
-			     generation, btrfs_super_chunk_root_level(sb));
+			     generation, level);
 	if (ret) {
 		if (fs_info->ignore_chunk_tree_error) {
 			warning("cannot read chunk root, continue anyway");
@@ -1506,7 +1520,7 @@ static struct btrfs_fs_info *__open_ctre
 
 	fs_info = btrfs_new_fs_info(flags & OPEN_CTREE_WRITES, sb_bytenr);
 	if (!fs_info) {
-		error_msg(ERROR_MSG_MEMORY, "fs_info");
+		error_mem("fs_info");
 		return NULL;
 	}
 	if (flags & OPEN_CTREE_RESTORE)
@@ -1580,10 +1594,10 @@ static struct btrfs_fs_info *__open_ctre
 
 	/* CHECK: ignore_csum_mismatch */
 
-	ASSERT(!memcmp(disk_super->fsid, fs_devices->fsid, BTRFS_FSID_SIZE));
+	ASSERT(memcmp(disk_super->fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0);
 	if (btrfs_fs_incompat(fs_info, METADATA_UUID))
-		ASSERT(!memcmp(disk_super->metadata_uuid,
-			       fs_devices->metadata_uuid, BTRFS_FSID_SIZE));
+		ASSERT(memcmp(disk_super->metadata_uuid, fs_devices->metadata_uuid,
+			      BTRFS_FSID_SIZE) == 0);
 
 	fs_info->sectorsize = btrfs_super_sectorsize(disk_super);
 	fs_info->nodesize = btrfs_super_nodesize(disk_super);
diff -pruN 6.16-2/kernel-shared/extent-tree.c 6.17-1/kernel-shared/extent-tree.c
--- 6.16-2/kernel-shared/extent-tree.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/extent-tree.c	2025-09-29 14:59:32.000000000 +0000
@@ -3506,6 +3506,16 @@ int btrfs_remove_block_group(struct btrf
 		return ret;
 	}
 
+	/* Delete free space items associated with this block group. */
+	ret = remove_block_group_free_space(trans, block_group);
+	if (ret < 0) {
+		fprintf(stderr,
+			"failed to remove free space associated with block group for [%llu,%llu)\n",
+			bytenr, bytenr + len);
+		btrfs_unpin_extent(fs_info, bytenr, len);
+		return ret;
+	}
+
 	/* Now release the block_group_cache */
 	ret = free_block_group_cache(trans, fs_info, bytenr, len);
 	btrfs_unpin_extent(fs_info, bytenr, len);
diff -pruN 6.16-2/kernel-shared/extent_io.c 6.17-1/kernel-shared/extent_io.c
--- 6.16-2/kernel-shared/extent_io.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/extent_io.c	2025-09-29 14:59:32.000000000 +0000
@@ -513,7 +513,7 @@ int write_data_to_disk(struct btrfs_fs_i
 
 			eb = kmalloc(sizeof(struct extent_buffer) + this_len, GFP_KERNEL);
 			if (!eb) {
-				error_msg(ERROR_MSG_MEMORY, "extent buffer");
+				error_mem("extent buffer");
 				ret = -ENOMEM;
 				goto out;
 			}
diff -pruN 6.16-2/kernel-shared/file-item.c 6.17-1/kernel-shared/file-item.c
--- 6.16-2/kernel-shared/file-item.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/file-item.c	2025-09-29 14:59:32.000000000 +0000
@@ -203,7 +203,6 @@ int btrfs_csum_file_block(struct btrfs_t
 	if (ret == -EFBIG) {
 		u32 item_size;
 
-		/* printf("item not big enough for bytenr %llu\n", bytenr); */
 		/* we found one, but it isn't big enough yet */
 		leaf = path->nodes[0];
 		item_size = btrfs_item_size(leaf, path->slots[0]);
diff -pruN 6.16-2/kernel-shared/free-space-tree.c 6.17-1/kernel-shared/free-space-tree.c
--- 6.16-2/kernel-shared/free-space-tree.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/free-space-tree.c	2025-09-29 14:59:32.000000000 +0000
@@ -1171,6 +1171,9 @@ int remove_block_group_free_space(struct
 	int done = 0, nr;
 	int ret;
 
+	if (!btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE))
+		return 0;
+
 	path = btrfs_alloc_path();
 	if (!path) {
 		ret = -ENOMEM;
diff -pruN 6.16-2/kernel-shared/print-tree.c 6.17-1/kernel-shared/print-tree.c
--- 6.16-2/kernel-shared/print-tree.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/print-tree.c	2025-09-29 14:59:32.000000000 +0000
@@ -1906,7 +1906,7 @@ static int check_csum_sblock(void *sb, i
 	btrfs_csum_data(csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
 			result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
 
-	return !memcmp(sb, result, csum_size);
+	return (memcmp(sb, result, csum_size) == 0);
 }
 
 #define DEF_COMPAT_RO_FLAG_ENTRY(bit_name)		\
@@ -2030,7 +2030,7 @@ static void print_sys_chunk_array(struct
 
 	buf = alloc_dummy_extent_buffer(NULL, 0, BTRFS_SUPER_INFO_SIZE);
 	if (!buf) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return;
 	}
 	write_extent_buffer(buf, sb, 0, sizeof(*sb));
@@ -2290,10 +2290,10 @@ void btrfs_print_superblock(struct btrfs
 
 	uuid_unparse(sb->dev_item.fsid, buf);
 	if (metadata_uuid_present) {
-		cmp_res = !memcmp(sb->dev_item.fsid, sb->metadata_uuid,
-				 BTRFS_FSID_SIZE);
+		cmp_res = (memcmp(sb->dev_item.fsid, sb->metadata_uuid,
+				 BTRFS_FSID_SIZE) == 0);
 	} else {
-		cmp_res = !memcmp(sb->dev_item.fsid, sb->fsid, BTRFS_FSID_SIZE);
+		cmp_res = (memcmp(sb->dev_item.fsid, sb->fsid, BTRFS_FSID_SIZE) == 0);
 	}
 	printf("dev_item.fsid\t\t%s %s\n", buf,
 	       cmp_res ? "[match]" : "[DON'T MATCH]");
diff -pruN 6.16-2/kernel-shared/volumes.c 6.17-1/kernel-shared/volumes.c
--- 6.16-2/kernel-shared/volumes.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/volumes.c	2025-09-29 14:59:32.000000000 +0000
@@ -314,7 +314,7 @@ static struct btrfs_device *find_device(
 
 	list_for_each_entry(dev, head, dev_list) {
 		if (dev->devid == devid &&
-		    (!uuid || !memcmp(dev->uuid, uuid, BTRFS_UUID_SIZE))) {
+		    (!uuid || memcmp(dev->uuid, uuid, BTRFS_UUID_SIZE) == 0)) {
 			return dev;
 		}
 	}
@@ -2321,7 +2321,7 @@ struct btrfs_device *btrfs_find_device(s
 	cur_devices = fs_info->fs_devices;
 	while (cur_devices) {
 		if (!fsid ||
-		    (!memcmp(cur_devices->metadata_uuid, fsid, BTRFS_FSID_SIZE) ||
+		    (memcmp(cur_devices->metadata_uuid, fsid, BTRFS_FSID_SIZE) == 0 ||
 		     fs_info->ignore_fsid_mismatch)) {
 			device = find_device(cur_devices, devid, uuid);
 			if (device)
@@ -2502,7 +2502,7 @@ static int open_seed_devices(struct btrf
 
 	fs_devices = fs_info->fs_devices->seed;
 	while (fs_devices) {
-		if (!memcmp(fs_devices->fsid, fsid, BTRFS_UUID_SIZE)) {
+		if (memcmp(fs_devices->fsid, fsid, BTRFS_UUID_SIZE) == 0) {
 			ret = 0;
 			goto out;
 		}
diff -pruN 6.16-2/kernel-shared/zoned.c 6.17-1/kernel-shared/zoned.c
--- 6.16-2/kernel-shared/zoned.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/kernel-shared/zoned.c	2025-09-29 14:59:32.000000000 +0000
@@ -364,13 +364,13 @@ static int report_zones(int fd, const ch
 
 	zinfo->zones = calloc(zinfo->nr_zones, sizeof(struct blk_zone));
 	if (!zinfo->zones) {
-		error_msg(ERROR_MSG_MEMORY, "zone information");
+		error_mem("zone information");
 		exit(1);
 	}
 
 	zinfo->active_zones = bitmap_zalloc(zinfo->nr_zones);
 	if (!zinfo->active_zones) {
-		error_msg(ERROR_MSG_MEMORY, "active zone bitmap");
+		error_mem("active zone bitmap");
 		exit(1);
 	}
 
@@ -387,7 +387,7 @@ static int report_zones(int fd, const ch
 		   sizeof(struct blk_zone) * BTRFS_REPORT_NR_ZONES;
 	rep = kmalloc(rep_size, GFP_KERNEL);
 	if (!rep) {
-		error_msg(ERROR_MSG_MEMORY, "zone report");
+		error_mem("zone report");
 		exit(1);
 	}
 
@@ -651,7 +651,7 @@ size_t btrfs_sb_io(int fd, void *buf, of
 	rep_size = sizeof(struct blk_zone_report) + sizeof(struct blk_zone) * 2;
 	rep = calloc(1, rep_size);
 	if (!rep) {
-		error_msg(ERROR_MSG_MEMORY, "zone report");
+		error_mem("zone report");
 		exit(1);
 	}
 
@@ -1211,14 +1211,14 @@ int btrfs_load_block_group_zone_info(str
 
 	zone_info = calloc(map->num_stripes, sizeof(*zone_info));
 	if (!zone_info) {
-		error_msg(ERROR_MSG_MEMORY, "zone info");
+		error_mem("zone info");
 		return -ENOMEM;
 	}
 
 	active = bitmap_zalloc(map->num_stripes);
 	if (!active) {
 		free(zone_info);
-		error_msg(ERROR_MSG_MEMORY, "active bitmap");
+		error_mem("active bitmap");
 		return -ENOMEM;
 	}
 
@@ -1446,7 +1446,7 @@ int btrfs_get_zone_info(int fd, const ch
 #ifdef BTRFS_ZONED
 	zinfo = calloc(1, sizeof(*zinfo));
 	if (!zinfo) {
-		error_msg(ERROR_MSG_MEMORY, "zone information");
+		error_mem("zone information");
 		exit(1);
 	}
 
diff -pruN 6.16-2/libbtrfsutil/python/setup.cfg 6.17-1/libbtrfsutil/python/setup.cfg
--- 6.16-2/libbtrfsutil/python/setup.cfg	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/libbtrfsutil/python/setup.cfg	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,2 @@
+[pycodestyle]
+max-line-length = 120
diff -pruN 6.16-2/libbtrfsutil/python/setup.py 6.17-1/libbtrfsutil/python/setup.py
--- 6.16-2/libbtrfsutil/python/setup.py	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/libbtrfsutil/python/setup.py	2025-09-29 14:59:32.000000000 +0000
@@ -23,7 +23,6 @@ import os.path
 import sys
 from setuptools import setup, Extension
 from setuptools.command.build_ext import build_ext
-import subprocess
 
 
 def get_version():
diff -pruN 6.16-2/libbtrfsutil/python/tests/.pylintrc 6.17-1/libbtrfsutil/python/tests/.pylintrc
--- 6.16-2/libbtrfsutil/python/tests/.pylintrc	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/libbtrfsutil/python/tests/.pylintrc	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,5 @@
+[MASTER]
+extension-pkg-allow-list=btrfsutil
+
+[FORMAT]
+max-line-length=120
diff -pruN 6.16-2/libbtrfsutil/python/tests/__init__.py 6.17-1/libbtrfsutil/python/tests/__init__.py
--- 6.16-2/libbtrfsutil/python/tests/__init__.py	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/libbtrfsutil/python/tests/__init__.py	2025-09-29 14:59:32.000000000 +0000
@@ -65,7 +65,8 @@ class BtrfsTestCase(unittest.TestCase):
         mountpoint = tempfile.mkdtemp()
         try:
             with tempfile.NamedTemporaryFile(delete=False) as f:
-                os.truncate(f.fileno(), 1024 * 1024 * 1024)
+                os.truncate(f.fileno(), 0)
+                os.truncate(f.fileno(), 4 * 1024 * 1024 * 1024)
                 image = f.name
         except Exception as e:
             os.rmdir(mountpoint)
@@ -76,7 +77,8 @@ class BtrfsTestCase(unittest.TestCase):
         else:
             mkfs = 'mkfs.btrfs'
         try:
-            subprocess.check_call([mkfs, '-q', image])
+            verbosity = '-q'
+            subprocess.check_call([mkfs, verbosity, image])
             subprocess.check_call(
                 [
                     'mount',
diff -pruN 6.16-2/libbtrfsutil/python/tests/test_filesystem.py 6.17-1/libbtrfsutil/python/tests/test_filesystem.py
--- 6.16-2/libbtrfsutil/python/tests/test_filesystem.py	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/libbtrfsutil/python/tests/test_filesystem.py	2025-09-29 14:59:32.000000000 +0000
@@ -19,7 +19,7 @@ import os
 import time
 
 import btrfsutil
-from tests import BtrfsTestCase, HAVE_PATH_LIKE
+from tests import BtrfsTestCase
 
 
 def touch(path):
diff -pruN 6.16-2/libbtrfsutil/python/tests/test_subvolume.py 6.17-1/libbtrfsutil/python/tests/test_subvolume.py
--- 6.16-2/libbtrfsutil/python/tests/test_subvolume.py	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/libbtrfsutil/python/tests/test_subvolume.py	2025-09-29 14:59:32.000000000 +0000
@@ -15,7 +15,6 @@
 # You should have received a copy of the GNU Lesser General Public License
 # along with libbtrfsutil.  If not, see <http://www.gnu.org/licenses/>.
 
-import fcntl
 import errno
 import multiprocessing
 import os
diff -pruN 6.16-2/libbtrfsutil/stubs.h 6.17-1/libbtrfsutil/stubs.h
--- 6.16-2/libbtrfsutil/stubs.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/libbtrfsutil/stubs.h	2025-09-29 14:59:32.000000000 +0000
@@ -16,6 +16,7 @@
  */
 
 #ifndef _LIBBTRFSUTIL_STUBS_H_
+#define _LIBBTRFSUTIL_STUBS_H_
 
 #include <stddef.h>
 
diff -pruN 6.16-2/mkfs/main.c 6.17-1/mkfs/main.c
--- 6.16-2/mkfs/main.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/mkfs/main.c	2025-09-29 14:59:32.000000000 +0000
@@ -337,6 +337,11 @@ static int recow_roots(struct btrfs_tran
 		if (ret)
 			return ret;
         }
+	if (btrfs_fs_incompat(info, RAID_STRIPE_TREE)) {
+		ret = __recow_root(trans, info->stripe_root);
+		if (ret)
+			return ret;
+	}
 	ret = recow_global_roots(trans);
 	if (ret)
 		return ret;
@@ -467,6 +472,7 @@ static const char * const mkfs_usage[] =
 	OPTLINE("", "FLAGS is one of:"),
 	OPTLINE("", "- nodatacow - disable data CoW, implies nodatasum for regular files"),
 	OPTLINE("", "- nodatasum - disable data checksum only"),
+	OPTLINE("--reflink", "(with --rootdir) write file data by cloning ranges"),
 	OPTLINE("--shrink", "(with --rootdir) shrink the filled filesystem to minimal size"),
 	OPTLINE("-K|--nodiscard", "do not perform whole device TRIM"),
 	OPTLINE("-f|--force", "force overwrite of existing filesystem"),
@@ -628,6 +634,64 @@ out:
 	return ret;
 }
 
+static int discard_logical_range_mirror(struct btrfs_fs_info *fs_info, int mirror,
+					u64 start, u64 len)
+{
+	struct btrfs_multi_bio *multi = NULL;
+	int ret;
+	u64 cur_offset = 0;
+	u64 cur_len;
+
+	while (cur_offset < len) {
+		struct btrfs_device *device;
+
+		cur_len = len - cur_offset;
+		ret = btrfs_map_block(fs_info, READ, start + cur_offset, &cur_len,
+				      &multi, mirror, NULL);
+		if (ret)
+			return ret;
+
+		cur_len = min(cur_len, len - cur_offset);
+
+		for (int i = 0; i < multi->num_stripes; i++) {
+			device = multi->stripes[i].dev;
+
+			ret = device_discard_blocks(device->fd,
+						    multi->stripes[i].physical,
+						    cur_len);
+
+			if (ret < 0) {
+				free(multi);
+
+				if (ret == -EOPNOTSUPP)
+					ret = 0;
+
+				return ret;
+			}
+		}
+		free(multi);
+		multi = NULL;
+		cur_offset += cur_len;
+	}
+
+	return 0;
+}
+
+static int discard_logical_range(struct btrfs_fs_info *fs_info, u64 start, u64 len)
+{
+	int ret, num_copies;
+
+	num_copies = btrfs_num_copies(fs_info, start, len);
+
+	for (int i = 0; i < num_copies; i++) {
+		ret = discard_logical_range_mirror(fs_info, i + 1, start, len);
+		if (ret < 0)
+			return ret;
+	}
+
+	return 0;
+}
+
 /* This function will cleanup  */
 static int cleanup_temp_chunks(struct btrfs_fs_info *fs_info,
 			       struct mkfs_allocation *alloc,
@@ -689,6 +753,14 @@ static int cleanup_temp_chunks(struct bt
 					sys_profile)) {
 			u64 flags = btrfs_block_group_flags(path.nodes[0], bgi);
 
+			if (opt_discard) {
+				ret = discard_logical_range(fs_info,
+							    found_key.objectid,
+							    found_key.offset);
+				if (ret < 0)
+					goto out;
+			}
+
 			ret = btrfs_remove_block_group(trans,
 					found_key.objectid, found_key.offset);
 			if (ret < 0)
@@ -1117,7 +1189,7 @@ static int parse_subvolume(const char *p
 
 	subvol = calloc(1, sizeof(struct rootdir_subvol));
 	if (!subvol) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return 1;
 	}
 
@@ -1172,13 +1244,13 @@ static int parse_inode_flags(const char
 	option_dup = strdup(option);
 	if (!option_dup) {
 		ret = -ENOMEM;
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		goto cleanup;
 	}
 	entry = calloc(1, sizeof(*entry));
 	if (!entry) {
 		ret = -ENOMEM;
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		goto cleanup;
 	}
 	colon = strstr(option_dup, ":");
@@ -1219,6 +1291,106 @@ cleanup:
 	return ret;
 }
 
+static int discard_free_space(struct btrfs_fs_info *fs_info, u64 metadata_profile)
+{
+	struct btrfs_root *free_space_root;
+	struct btrfs_path path = { 0 };
+	struct extent_buffer *leaf;
+	int ret;
+	struct btrfs_key key = {
+		.objectid = BTRFS_FREE_SPACE_TREE_OBJECTID,
+		.type = BTRFS_ROOT_ITEM_KEY,
+		.offset = 0,
+	};
+
+	if (!btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE))
+		return 0;
+
+	/*
+	 * Follow the kernel in not doing discard for RAID5 or 6.  We don't
+	 * have to worry about data here, as --rootdir only works with
+	 * single-device filesystems, and the data block groups are empty
+	 * otherwise.
+	 */
+
+	if (metadata_profile & BTRFS_BLOCK_GROUP_RAID56_MASK)
+		return 0;
+
+	free_space_root = btrfs_global_root(fs_info, &key);
+
+	key.objectid = 0;
+	key.type = 0;
+	key.offset = 0;
+
+	ret = btrfs_search_slot(NULL, free_space_root, &key, &path, 0, 0);
+	if (ret < 0)
+		return ret;
+
+	while (true) {
+		leaf = path.nodes[0];
+
+		if (path.slots[0] >= btrfs_header_nritems(leaf)) {
+			ret = btrfs_next_leaf(free_space_root, &path);
+			if (ret)
+				break;
+
+			leaf = path.nodes[0];
+		}
+
+		btrfs_item_key_to_cpu(leaf, &key, path.slots[0]);
+
+		if (key.type == BTRFS_FREE_SPACE_EXTENT_KEY) {
+			ret = discard_logical_range(fs_info, key.objectid, key.offset);
+			if (ret < 0)
+				goto out;
+		} else if (key.type == BTRFS_FREE_SPACE_BITMAP_KEY) {
+			int size, nrbits;
+			void *bitmap;
+			unsigned long start_bit, end_bit;
+
+			size = btrfs_item_size(leaf, path.slots[0]);
+			bitmap = malloc(size);
+			if (!bitmap) {
+				ret = -ENOMEM;
+				goto out;
+			}
+
+			read_extent_buffer(leaf, bitmap,
+					   btrfs_item_ptr_offset(leaf, path.slots[0]),
+					   size);
+
+			nrbits = div_u64(key.offset, fs_info->sectorsize);
+			start_bit = find_next_bit_le(bitmap, nrbits, 0);
+
+			while (start_bit < nrbits) {
+				u64 addr, length;
+
+				end_bit = find_next_zero_bit_le(bitmap, nrbits, start_bit);
+				addr = key.objectid + (start_bit * fs_info->sectorsize);
+				length = (end_bit - start_bit) * fs_info->sectorsize;
+
+				ret = discard_logical_range(fs_info, addr, length);
+				if (ret < 0) {
+					free(bitmap);
+					goto out;
+				}
+
+				start_bit = find_next_bit_le(bitmap, nrbits, end_bit);
+			}
+
+			free(bitmap);
+		}
+
+		path.slots[0]++;
+	}
+
+	ret = 0;
+
+out:
+	btrfs_release_path(&path);
+	return ret;
+}
+
 int BOX_MAIN(mkfs)(int argc, char **argv)
 {
 	char *file;
@@ -1230,7 +1402,7 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 	int close_ret;
 	int i;
 	bool ssd = false;
-	bool shrink_rootdir = false;
+	bool shrink_rootdir = false, do_reflink = false;
 	u64 source_dir_size = 0;
 	u64 min_dev_size;
 	u64 shrink_size;
@@ -1282,6 +1454,7 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 			GETOPT_VAL_DEVICE_UUID,
 			GETOPT_VAL_INODE_FLAGS,
 			GETOPT_VAL_COMPRESS,
+			GETOPT_VAL_REFLINK,
 		};
 		static const struct option long_options[] = {
 			{ "byte-count", required_argument, NULL, 'b' },
@@ -1311,6 +1484,7 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 			{ "shrink", no_argument, NULL, GETOPT_VAL_SHRINK },
 			{ "compress", required_argument, NULL,
 				GETOPT_VAL_COMPRESS },
+			{ "reflink", no_argument, NULL, GETOPT_VAL_REFLINK },
 #if EXPERIMENTAL
 			{ "param", required_argument, NULL, GETOPT_VAL_PARAM },
 			{ "num-global-roots", required_argument, NULL, GETOPT_VAL_GLOBAL_ROOTS },
@@ -1460,6 +1634,9 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 			case GETOPT_VAL_PARAM:
 				bconf_save_param(optarg);
 				break;
+			case GETOPT_VAL_REFLINK:
+				do_reflink = true;
+				break;
 			case GETOPT_VAL_HELP:
 			default:
 				usage(&mkfs_cmd, c != GETOPT_VAL_HELP);
@@ -1497,6 +1674,11 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 		ret = 1;
 		goto error;
 	}
+	if (do_reflink && source_dir == NULL) {
+		error("the option --reflink must be used with --rootdir");
+		ret = 1;
+		goto error;
+	}
 	if (!list_empty(&subvols) && source_dir == NULL) {
 		error("option --subvol must be used with --rootdir");
 		ret = 1;
@@ -1527,85 +1709,13 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 		}
 	}
 
-	list_for_each_entry(rds, &subvols, list) {
-		char path[PATH_MAX];
-		struct rootdir_subvol *rds2;
-
-		if (path_cat_out(path, source_dir, rds->dir)) {
-			error("path invalid: %s", path);
-			ret = 1;
-			goto error;
-		}
-
-		if (!realpath(path, rds->full_path)) {
-			error("could not get canonical path: %s", rds->dir);
-			ret = 1;
-			goto error;
-		}
-
-		if (!path_exists(rds->full_path)) {
-			error("subvolume path does not exist: %s", rds->dir);
-			ret = 1;
-			goto error;
-		}
-
-		if (!path_is_dir(rds->full_path)) {
-			error("subvolume is not a directory: %s", rds->dir);
-			ret = 1;
-			goto error;
-		}
-
-		if (!path_is_in_dir(source_dir, rds->full_path)) {
-			error("subvolume %s is not a child of %s", rds->dir, source_dir);
-			ret = 1;
-			goto error;
-		}
-
-		for (rds2 = list_first_entry(&subvols, struct rootdir_subvol, list);
-		     rds2 != rds;
-		     rds2 = list_next_entry(rds2, list)) {
-			if (strcmp(rds2->full_path, rds->full_path) == 0) {
-				error("subvolume specified more than once: %s", rds->dir);
-				ret = 1;
-				goto error;
-			}
-		}
-	}
-
-	list_for_each_entry(rif, &inode_flags_list, list) {
-		char path[PATH_MAX];
-		struct rootdir_inode_flags_entry *rif2;
+	ret = btrfs_mkfs_validate_subvols(source_dir, &subvols);
+	if (ret < 0)
+		goto error;
 
-		if (path_cat_out(path, source_dir, rif->inode_path)) {
-			ret = -EINVAL;
-			error("path invalid: %s", path);
-			goto error;
-		}
-		if (!realpath(path, rif->full_path)) {
-			ret = -errno;
-			error("could not get canonical path: %s: %m", path);
-			goto error;
-		}
-		if (!path_exists(rif->full_path)) {
-			ret = -ENOENT;
-			error("inode path does not exist: %s", rif->full_path);
-			goto error;
-		}
-		list_for_each_entry(rif2, &inode_flags_list, list) {
-			/*
-			 * Only compare entries before us. So we won't compare
-			 * the same pair twice.
-			 */
-			if (rif2 == rif)
-				break;
-			if (strcmp(rif2->full_path, rif->full_path) == 0) {
-				error("duplicated inode flag entries for %s",
-					rif->full_path);
-				ret = -EEXIST;
-				goto error;
-			}
-		}
-	}
+	ret = btrfs_mkfs_validate_inode_flags(source_dir, &inode_flags_list);
+	if (ret < 0)
+		goto error;
 
 	if (*fs_uuid) {
 		uuid_t dummy_uuid;
@@ -1918,7 +2028,7 @@ int BOX_MAIN(mkfs)(int argc, char **argv
 	prepare_ctx = calloc(device_count, sizeof(*prepare_ctx));
 
 	if (!t_prepare || !prepare_ctx) {
-		error_msg(ERROR_MSG_MEMORY, "thread for preparing devices");
+		error_mem("thread for preparing devices");
 		ret = 1;
 		goto error;
 	}
@@ -2202,7 +2312,8 @@ raid_groups:
 
 		ret = btrfs_mkfs_fill_dir(trans, source_dir, root,
 					  &subvols, &inode_flags_list,
-					  compression, compression_level);
+					  compression, compression_level,
+					  do_reflink);
 		if (ret) {
 			errno = -ret;
 			error("error while filling filesystem: %m");
@@ -2283,9 +2394,14 @@ raid_groups:
 			pretty_size(allocation.system));
 		printf("SSD detected:       %s\n", ssd ? "yes" : "no");
 		printf("Zoned device:       %s\n", opt_zoned ? "yes" : "no");
-		if (opt_zoned)
+		if (opt_zoned) {
 			printf("  Zone size:        %s\n",
 			       pretty_size(fs_info->zone_size));
+			if (zoned_model(file) == ZONED_NONE)
+				printf("  Mode:             emulated\n");
+			else
+				printf("  Mode:             host managed\n");
+		}
 		btrfs_parse_fs_features_to_string(features_buf, &features);
 		printf("Features:           %s\n", features_buf);
 		printf("Checksum:           %s\n",
@@ -2301,6 +2417,15 @@ raid_groups:
 		}
 	}
 
+	if (opt_discard) {
+		ret = discard_free_space(fs_info, metadata_profile);
+		if (ret < 0) {
+			errno = -ret;
+			error("failed to discard free space: %m");
+			goto out;
+		}
+	}
+
 	/*
 	 * The filesystem is now fully set up, commit the remaining changes and
 	 * fix the signature as the last step before closing the devices.
diff -pruN 6.16-2/mkfs/rootdir.c 6.17-1/mkfs/rootdir.c
--- 6.16-2/mkfs/rootdir.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/mkfs/rootdir.c	2025-09-29 14:59:32.000000000 +0000
@@ -19,6 +19,7 @@
 #include "kerncompat.h"
 #include <sys/stat.h>
 #include <sys/xattr.h>
+#include <sys/ioctl.h>
 #include <dirent.h>
 #include <unistd.h>
 #include <fcntl.h>
@@ -158,6 +159,7 @@ static u64 next_subvol_id = BTRFS_FIRST_
 static u64 default_subvol_id;
 static enum btrfs_compression_type g_compression;
 static u64 g_compression_level;
+static bool g_do_reflink;
 
 static inline struct inode_entry *rootdir_path_last(struct rootdir_path *path)
 {
@@ -613,7 +615,7 @@ static ssize_t zstd_compress_extent(bool
 
 	zstd_ctx = ZSTD_createCCtx();
 	if (!zstd_ctx) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
@@ -702,6 +704,82 @@ struct source_descriptor {
 	char *wrkmem;
 };
 
+static int do_reflink_write(struct btrfs_fs_info *info,
+			    const struct source_descriptor *source, u64 addr,
+			    u64 file_pos, u64 bytes, const void *buf)
+{
+	struct btrfs_multi_bio *multi = NULL;
+	struct btrfs_device *device;
+	u64 bytes_left;
+	u64 this_len;
+	u64 total_write = 0;
+	u64 dev_bytenr;
+	int dev_nr;
+	int ret = 0;
+	struct file_clone_range fcr;
+
+	fcr.src_fd = source->fd;
+	bytes_left = round_down(bytes, info->sectorsize);
+
+	while (bytes_left > 0) {
+		this_len = bytes_left;
+		dev_nr = 0;
+
+		ret = btrfs_map_block(info, WRITE, addr, &this_len, &multi, 0, NULL);
+		if (ret) {
+			error("cannot map the block %llu", addr);
+			return -EIO;
+		}
+
+		while (dev_nr < multi->num_stripes) {
+			device = multi->stripes[dev_nr].dev;
+			if (device->fd <= 0) {
+				kfree(multi);
+				return -EIO;
+			}
+
+			dev_bytenr = multi->stripes[dev_nr].physical;
+			this_len = min(this_len, bytes_left);
+			dev_nr++;
+			device->total_ios++;
+
+			fcr.src_offset = file_pos + total_write;
+			fcr.src_length = this_len;
+			fcr.dest_offset = dev_bytenr;
+
+			ret = ioctl(device->fd, FICLONERANGE, &fcr);
+			if (ret < 0) {
+				error("cannot clone range: %m");
+				ret = -errno;
+				kfree(multi);
+				return ret;
+			}
+		}
+
+		BUG_ON(bytes_left < this_len);
+
+		bytes_left -= this_len;
+		addr += this_len;
+		total_write += this_len;
+
+		kfree(multi);
+		multi = NULL;
+	}
+
+	/*
+	 * FICLONERANGE can only handle whole sectors. If the file is not a
+	 * multiple of the sector size, we need to write the last sector
+	 * manually.
+	 */
+	if (bytes % info->sectorsize) {
+		return write_data_to_disk(info,
+			(char *)buf + round_down(bytes, info->sectorsize),
+			addr, info->sectorsize);
+	}
+
+	return 0;
+}
+
 static int add_file_item_extent(struct btrfs_trans_handle *trans,
 				struct btrfs_root *root,
 				struct btrfs_inode_item *btrfs_inode,
@@ -721,7 +799,7 @@ static int add_file_item_extent(struct b
 	ssize_t comp_ret;
 	u64 flags = btrfs_stack_inode_flags(btrfs_inode);
 
-	if (flags & BTRFS_INODE_NOCOMPRESS)
+	if (g_do_reflink || flags & BTRFS_INODE_NOCOMPRESS)
 		do_comp = false;
 
 	if ((flags & BTRFS_INODE_NODATACOW) || (flags & BTRFS_INODE_NODATASUM)) {
@@ -852,8 +930,13 @@ static int add_file_item_extent(struct b
 
 	first_block = key.objectid;
 
-	ret = write_data_to_disk(root->fs_info, write_buf, first_block,
-				 to_write);
+	if (g_do_reflink) {
+		ret = do_reflink_write(root->fs_info, source, first_block, file_pos,
+				       to_read, write_buf);
+	} else {
+		ret = write_data_to_disk(root->fs_info, write_buf, first_block, to_write);
+	}
+
 	if (ret) {
 		error("failed to write %s", source->path_name);
 		return ret;
@@ -909,7 +992,7 @@ static ssize_t zlib_compress_inline_exte
 
 	out = malloc(size);
 	if (!out) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		ret = -ENOMEM;
 		goto out;
 	}
@@ -967,7 +1050,7 @@ static ssize_t lzo_compress_inline_exten
 
 	out = malloc(out_size);
 	if (!out) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		ret = -ENOMEM;
 		goto out;
 	}
@@ -1015,7 +1098,7 @@ static ssize_t zstd_compress_inline_exte
 
 	zstd_ctx = ZSTD_createCCtx();
 	if (!zstd_ctx) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		return -ENOMEM;
 	}
 
@@ -1038,7 +1121,7 @@ static ssize_t zstd_compress_inline_exte
 
 	out = malloc(size);
 	if (!out) {
-		error_msg(ERROR_MSG_MEMORY, NULL);
+		error_mem(NULL);
 		ret = -ENOMEM;
 		goto out;
 	}
@@ -1077,6 +1160,110 @@ out:
 }
 #endif
 
+int btrfs_mkfs_validate_subvols(const char *source_dir, struct list_head *subvols)
+{
+	struct rootdir_subvol *rds;
+
+	list_for_each_entry(rds, subvols, list) {
+		char path[PATH_MAX];
+		char full_path[PATH_MAX];
+		struct stat stbuf;
+		struct rootdir_subvol *rds2;
+		int ret;
+
+		ret = path_cat_out(path, source_dir, rds->dir);
+		if (ret < 0) {
+			errno = -ret;
+			error("path invalid '%s': %m", path);
+			return ret;
+		}
+		if (!realpath(path, full_path)) {
+			ret = -errno;
+			error("could not get canonical path of '%s': %m", rds->dir);
+			return ret;
+		}
+		ret = path_exists(full_path);
+		if (ret < 0) {
+			error("subvolume path does not exist: %s", rds->dir);
+			return ret;
+		}
+		ret = path_is_dir(full_path);
+		if (ret < 0) {
+			error("subvolume is not a directory: %s", rds->dir);
+			return ret;
+		}
+		ret = lstat(full_path, &stbuf);
+		if (ret < 0) {
+			ret = -errno;
+			error("failed to get stat of '%s': %m", full_path);
+			return ret;
+		}
+		rds->st_dev = stbuf.st_dev;
+		rds->st_ino = stbuf.st_ino;
+		list_for_each_entry(rds2, subvols, list) {
+			/*
+			 * Only compare entries before us, So we won't compare
+			 * the same pair twice.
+			 */
+			if (rds2 == rds)
+				break;
+			if (rds2->st_dev == rds->st_dev && rds2->st_ino == rds->st_ino) {
+				error("subvolume specified more than once: %s", rds->dir);
+				return -EINVAL;
+			}
+		}
+	}
+	return 0;
+}
+
+int btrfs_mkfs_validate_inode_flags(const char *source_dir, struct list_head *inode_flags)
+{
+	struct rootdir_inode_flags_entry *rif;
+
+	list_for_each_entry(rif, inode_flags, list) {
+		char path[PATH_MAX];
+		char full_path[PATH_MAX];
+		struct rootdir_inode_flags_entry *rif2;
+		struct stat stbuf;
+		int ret;
+
+		if (path_cat_out(path, source_dir, rif->inode_path)) {
+			error("path invalid: %s", path);
+			return -EINTR;
+		}
+		if (!realpath(path, full_path)) {
+			ret = -errno;
+			error("could not get canonical path: %s: %m", path);
+			return ret;
+		}
+		if (!path_exists(full_path)) {
+			error("inode path does not exist: %s", full_path);
+			return -ENOENT;
+		}
+		ret = lstat(full_path, &stbuf);
+		if (ret < 0) {
+			ret = -errno;
+			error("failed to get stat of '%s': %m", full_path);
+			return ret;
+		}
+		rif->st_dev = stbuf.st_dev;
+		rif->st_ino = stbuf.st_ino;
+		list_for_each_entry(rif2, inode_flags, list) {
+			/*
+			 * Only compare entries before us. So we won't compare
+			 * the same pair twice.
+			 */
+			if (rif2 == rif)
+				break;
+			if (rif2->st_dev == rif->st_dev && rif2->st_ino == rif->st_ino) {
+				error("duplicated inode flag entries for %s", full_path);
+				return -EEXIST;
+			}
+		}
+	}
+	return 0;
+}
+
 static int add_file_items(struct btrfs_trans_handle *trans,
 			  struct btrfs_root *root,
 			  struct btrfs_inode_item *btrfs_inode, u64 objectid,
@@ -1315,12 +1502,12 @@ static void update_inode_flags(const str
 }
 
 static void search_and_update_inode_flags(struct btrfs_inode_item *stack_inode,
-					  const char *full_path)
+					  const struct stat *st)
 {
 	struct rootdir_inode_flags_entry *rif;
 
 	list_for_each_entry(rif, g_inode_flags_list, list) {
-		if (strcmp(rif->full_path, full_path) == 0) {
+		if (rif->st_dev == st->st_dev && rif->st_ino == st->st_ino) {
 			update_inode_flags(rif, stack_inode);
 
 			list_del(&rif->list);
@@ -1339,15 +1526,26 @@ static int ftw_add_subvol(const char *fu
 	struct btrfs_root *new_root;
 	struct inode_entry *parent;
 	struct btrfs_inode_item inode_item = { 0 };
+	char *path_dump;
+	char *base_path;
 	u64 subvol_id, ino;
 
 	subvol_id = next_subvol_id++;
+	path_dump = strdup(full_path);
+	if (!path_dump)
+		return -ENOMEM;
+	base_path = path_basename(path_dump);
+	if (!base_path) {
+		ret = -errno;
+		error("failed to get basename of '%s': %m", path_dump);
+		goto out;
+	}
 
 	ret = btrfs_make_subvolume(g_trans, subvol_id, subvol->readonly);
 	if (ret < 0) {
 		errno = -ret;
 		error("failed to create subvolume: %m");
-		return ret;
+		goto out;
 	}
 
 	if (subvol->is_default)
@@ -1362,19 +1560,17 @@ static int ftw_add_subvol(const char *fu
 		ret = PTR_ERR(new_root);
 		errno = -ret;
 		error("unable to read fs root id %llu: %m", subvol_id);
-		return ret;
+		goto out;
 	}
 
 	parent = rootdir_path_last(&current_path);
 
 	ret = btrfs_link_subvolume(g_trans, parent->root, parent->ino,
-				   path_basename(subvol->full_path),
-				   strlen(path_basename(subvol->full_path)),
-				   new_root);
+				   base_path, strlen(base_path), new_root);
 	if (ret) {
 		errno = -ret;
-		error("unable to link subvolume %s: %m", path_basename(subvol->full_path));
-		return ret;
+		error("unable to link subvolume %s: %m", base_path);
+		goto out;
 	}
 
 	ino = btrfs_root_dirid(&new_root->root_item);
@@ -1384,17 +1580,17 @@ static int ftw_add_subvol(const char *fu
 		errno = -ret;
 		error("failed to add xattr item for the top level inode in subvol %llu: %m",
 		      subvol_id);
-		return ret;
+		goto out;
 	}
 	stat_to_inode_item(&inode_item, st);
 
-	search_and_update_inode_flags(&inode_item, full_path);
+	search_and_update_inode_flags(&inode_item, st);
 	btrfs_set_stack_inode_nlink(&inode_item, 1);
 	ret = update_inode_item(g_trans, new_root, &inode_item, ino);
 	if (ret < 0) {
 		errno = -ret;
 		error("failed to update root dir for root %llu: %m", subvol_id);
-		return ret;
+		goto out;
 	}
 
 	ret = rootdir_path_push(&current_path, new_root, ino);
@@ -1402,10 +1598,12 @@ static int ftw_add_subvol(const char *fu
 		errno = -ret;
 		error("failed to allocate new entry for subvolume %llu ('%s'): %m",
 		      subvol_id, full_path);
-		return ret;
+		goto out;
 	}
 
-	return 0;
+out:
+	free(path_dump);
+	return ret;
 }
 
 static int read_inode_item(struct btrfs_root *root, struct btrfs_inode_item *inode_item,
@@ -1479,7 +1677,7 @@ static int ftw_add_inode(const char *ful
 		ret = rootdir_path_push(&current_path, root, btrfs_root_dirid(&root->root_item));
 		if (ret < 0) {
 			errno = -ret;
-			error_msg(ERROR_MSG_MEMORY, "push path for rootdir: %m");
+			error_mem("push path for rootdir: %m");
 			return ret;
 		}
 		return ret;
@@ -1526,7 +1724,7 @@ static int ftw_add_inode(const char *ful
 
 	if (S_ISDIR(st->st_mode)) {
 		list_for_each_entry(rds, g_subvols, list) {
-			if (!strcmp(full_path, rds->full_path)) {
+			if (st->st_dev == rds->st_dev && st->st_ino == rds->st_ino) {
 				ret = ftw_add_subvol(full_path, st, typeflag,
 						     ftwbuf, rds);
 
@@ -1580,7 +1778,7 @@ static int ftw_add_inode(const char *ful
 		return ret;
 	}
 	stat_to_inode_item(&inode_item, st);
-	search_and_update_inode_flags(&inode_item, full_path);
+	search_and_update_inode_flags(&inode_item, st);
 
 	ret = btrfs_insert_inode(g_trans, root, ino, &inode_item);
 	if (ret < 0) {
@@ -1718,7 +1916,7 @@ int btrfs_mkfs_fill_dir(struct btrfs_tra
 			struct btrfs_root *root, struct list_head *subvols,
 			struct list_head *inode_flags_list,
 			enum btrfs_compression_type compression,
-			unsigned int compression_level)
+			unsigned int compression_level, bool do_reflink)
 {
 	int ret;
 	struct stat root_st;
@@ -1766,6 +1964,7 @@ int btrfs_mkfs_fill_dir(struct btrfs_tra
 	g_inode_flags_list = inode_flags_list;
 	g_compression = compression;
 	g_compression_level = compression_level;
+	g_do_reflink = do_reflink;
 	INIT_LIST_HEAD(&current_path.inode_list);
 
 	ret = nftw(source_dir, ftw_add_inode, 32, FTW_PHYS);
diff -pruN 6.16-2/mkfs/rootdir.h 6.17-1/mkfs/rootdir.h
--- 6.16-2/mkfs/rootdir.h	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/mkfs/rootdir.h	2025-09-29 14:59:32.000000000 +0000
@@ -39,31 +39,37 @@ struct btrfs_root;
 
 struct rootdir_subvol {
 	struct list_head list;
+	/* The path inside the source_dir. */
 	char dir[PATH_MAX];
-	char full_path[PATH_MAX];
+	/* st_dev and st_ino is going to uniquely determine an inode inside the host fs. */
+	dev_t st_dev;
+	ino_t st_ino;
 	bool is_default;
 	bool readonly;
 };
 
 /*
- * Represent a flag for specified inode at @full_path.
+ * Represent a flag for specified inode at "$source_dir/$inode_path".
  */
 struct rootdir_inode_flags_entry {
 	struct list_head list;
-	/* Fully canonicalized path to the source file. */
-	char full_path[PATH_MAX];
 	/* Path inside the source directory. */
 	char inode_path[PATH_MAX];
+	/* st_dev and st_ino is going to uniquely determine an inode inside the host fs. */
+	dev_t st_dev;
+	ino_t st_ino;
 
 	bool nodatacow;
 	bool nodatasum;
 };
 
+int btrfs_mkfs_validate_subvols(const char *source_dir, struct list_head *subvols);
+int btrfs_mkfs_validate_inode_flags(const char *source_dir, struct list_head *inode_flags);
 int btrfs_mkfs_fill_dir(struct btrfs_trans_handle *trans, const char *source_dir,
 			struct btrfs_root *root, struct list_head *subvols,
 			struct list_head *inode_flags_list,
 			enum btrfs_compression_type compression,
-			unsigned int compression_level);
+			unsigned int compression_level, bool do_reflink);
 u64 btrfs_mkfs_size_dir(const char *dir_name, u32 sectorsize, u64 min_dev_size,
 			u64 meta_profile, u64 data_profile);
 int btrfs_mkfs_shrink_fs(struct btrfs_fs_info *fs_info, u64 *new_size_ret,
diff -pruN 6.16-2/show-blocks 6.17-1/show-blocks
--- 6.16-2/show-blocks	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/show-blocks	2025-09-29 14:59:32.000000000 +0000
@@ -16,7 +16,7 @@
 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 021110-1307, USA.
 #
-import sys, os, signal, time, commands, tempfile, random
+import sys, os, random
 
 # numpy seems to override random() with something else.  Instantiate our
 # own here
@@ -25,7 +25,6 @@ randgen.seed(50)
 
 from optparse import OptionParser
 from matplotlib import rcParams
-from matplotlib.font_manager import fontManager, FontProperties
 import numpy
 
 rcParams['numerix'] = 'numpy'
diff -pruN 6.16-2/tests/cli-tests/003-fi-resize-args/test.sh 6.17-1/tests/cli-tests/003-fi-resize-args/test.sh
--- 6.16-2/tests/cli-tests/003-fi-resize-args/test.sh	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tests/cli-tests/003-fi-resize-args/test.sh	2025-09-29 14:59:32.000000000 +0000
@@ -58,7 +58,7 @@ done
 run_mustfail_stdout "should fail for image" \
 	"$TOP/btrfs" filesystem resize 1:-128M "$TEST_DEV" |
 	_log_stdout |
-	grep -q "ERROR: resize works on mounted filesystems and accepts only" ||
+	grep -q "ERROR: to resize a file containing a BTRFS image use the --offline flag" ||
 	_fail "no expected error message in the output 2"
 
 run_check_umount_test_dev
diff -pruN 6.16-2/tests/common 6.17-1/tests/common
--- 6.16-2/tests/common	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tests/common	2025-09-29 14:59:32.000000000 +0000
@@ -413,7 +413,7 @@ check_prereq()
 {
 	# Internal tools for testing, not shipped with the package
 	case "$1" in
-	btrfs-corrupt-block|btrfs-find-root|btrfs-select-super|fssum)
+	btrfs-corrupt-block|btrfs-find-root|btrfs-select-super|fssum|btrfs-sb-mod)
 		if ! [ -f "$INTERNAL_BIN/$1" ]; then
 			_fail "Failed prerequisites: $INTERNAL_BIN/$1";
 		fi
Binary files 6.16-2/tests/fsck-tests/054-orphan-directory/default.img.xz and 6.17-1/tests/fsck-tests/054-orphan-directory/default.img.xz differ
diff -pruN 6.16-2/tests/fsck-tests/057-seed-false-alerts/test.sh 6.17-1/tests/fsck-tests/057-seed-false-alerts/test.sh
--- 6.16-2/tests/fsck-tests/057-seed-false-alerts/test.sh	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tests/fsck-tests/057-seed-false-alerts/test.sh	2025-09-29 14:59:32.000000000 +0000
@@ -35,13 +35,13 @@ sprouted_output=$(_mktemp btrfs-progs-sp
 run_check_stdout $SUDO_HELPER "$TOP/btrfs" check "$dev1" >> "$seed_output"
 run_check_stdout $SUDO_HELPER "$TOP/btrfs" check "$dev2" >> "$sprouted_output"
 
-# There should be no warning for both seed and sprouted fs
-if grep -q "WARNING" "$seed_output"; then
+# There should be no warning about the device size for both seed and sprouted fs
+if grep -q "fix-device-size" "$seed_output"; then
 	cleanup_loopdevs
 	rm -f -- "$seed_output" "$sprouted_output"
 	_fail "false alerts detected for seed fs"
 fi
-if grep -q "WARNING" "$sprouted_output"; then
+if grep -q "fix-device-size" "$sprouted_output"; then
 	cleanup_loopdevs
 	rm -f -- "$seed_output" "$sprouted_output"
 	_fail "false alerts detected for sprouted fs"
Binary files 6.16-2/tests/fsck-tests/058-bad-free-space-tree-entry/corrupt-free-space-tree2.img.xz and 6.17-1/tests/fsck-tests/058-bad-free-space-tree-entry/corrupt-free-space-tree2.img.xz differ
Binary files 6.16-2/tests/fsck-tests/067-dupe-filename/default.img.xz and 6.17-1/tests/fsck-tests/067-dupe-filename/default.img.xz differ
diff -pruN 6.16-2/tests/fsck-tests/067-dupe-filename/test.sh 6.17-1/tests/fsck-tests/067-dupe-filename/test.sh
--- 6.16-2/tests/fsck-tests/067-dupe-filename/test.sh	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/tests/fsck-tests/067-dupe-filename/test.sh	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,14 @@
+#!/bin/bash
+#
+# Verify that check can report duplicate filename as an error
+
+source "$TEST_TOP/common" || exit
+
+check_prereq btrfs
+
+check_image() {
+	run_mustfail "duplicate filename not reported as error" \
+		"$TOP/btrfs" check "$1"
+}
+
+check_all_images
diff -pruN 6.16-2/tests/fsstress.c 6.17-1/tests/fsstress.c
--- 6.16-2/tests/fsstress.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tests/fsstress.c	2025-09-29 14:59:32.000000000 +0000
@@ -2069,8 +2069,8 @@ symlink_path(const char *name1, pathname
 	char		buf[NAME_MAX + 1];
 	pathname_t	newname;
 	int		rval;
-        
-        if (!strcmp(name1, name->path)) {
+
+        if (strcmp(name1, name->path) == 0) {
             printf("yikes! %s %s\n", name1, name->path);
             return 0;
         }
diff -pruN 6.16-2/tests/fssum.c 6.17-1/tests/fssum.c
--- 6.16-2/tests/fssum.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tests/fssum.c	2025-09-29 14:59:32.000000000 +0000
@@ -426,8 +426,8 @@ static void
 check_match(char *fn, char *local_m, char *remote_m,
 	    char *local_c, char *remote_c)
 {
-	int match_m = !strcmp(local_m, remote_m);
-	int match_c = !strcmp(local_c, remote_c);
+	int match_m = (strcmp(local_m, remote_m) == 0);
+	int match_c = (strcmp(local_c, remote_c) == 0);
 
 	if (match_m && !match_c) {
 		printf("data mismatch in %s\n", fn);
@@ -540,7 +540,7 @@ sum(int dirfd, int level, sum_t *dircs,
 		exit(-1);
 	}
 	while((de = readdir(d))) {
-		if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
+		if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0)
 			continue;
 		if (entries == alloclen) {
 			void *tmp;
diff -pruN 6.16-2/tests/fuzz-tests/010-simple-sb/test.sh 6.17-1/tests/fuzz-tests/010-simple-sb/test.sh
--- 6.16-2/tests/fuzz-tests/010-simple-sb/test.sh	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/tests/fuzz-tests/010-simple-sb/test.sh	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,76 @@
+#!/bin/bash
+# Change fields in super block and do test run of 'btrfs check'
+
+source "$TEST_TOP/common" || exit
+source "$TEST_TOP/common.convert" || exit
+
+check_prereq btrfs-sb-mod
+
+setup_root_helper
+prepare_test_dev
+
+run_check_mkfs_test_dev
+run_check_mount_test_dev
+#populate_fs
+generate_dataset "small"
+generate_dataset "sparse"
+run_check_umount_test_dev
+
+# See btrfs-sb-mod --help
+fields=(
+bytenr
+flags
+magic
+generation
+root
+chunk_root
+log_root
+total_bytes
+bytes_used
+root_dir_objectid
+num_devices
+sectorsize
+nodesize
+stripesize
+sys_chunk_array_size
+chunk_root_generation
+compat_flags
+compat_ro_flags
+incompat_flags
+csum_type
+root_level
+chunk_root_level
+log_root_level
+cache_generation
+uuid_tree_generation
+dev_item.devid
+dev_item.total_bytes
+dev_item.bytes_used
+dev_item.io_align
+dev_item.io_width
+dev_item.sector_size
+dev_item.type
+dev_item.generation
+dev_item.start_offset
+dev_item.dev_group
+dev_item.seek_speed
+dev_item.bandwidth)
+
+# Attempted changes:
+#
+# - off by one
+# - LSB bit flips
+# - 32bit boundary bit flips
+# - off by sector
+# - off by node
+# - endianness swap
+for field in "${fields[@]}"; do
+	for op in -1 +1 ^2 ^4 ^256 ^2147483648 ^4294967296 ^8589934592 +4096 -4096 +16384 -16384 @; do
+		run_check $SUDO_HELPER truncate -s 0 image.test
+		run_check $SUDO_HELPER cp --reflink=auto --sparse=auto "$TEST_DEV" image.test
+		run_check $SUDO_HELPER "$TOP/btrfs-sb-mod" image.test "$field" "$op"
+		run_mayfail $SUDO_HELPER "$TOP/btrfs" check image.test
+	done
+done
+
+run_check $SUDO_HELPER rm -f -- image.test
diff -pruN 6.16-2/tests/misc-tests/046-seed-multi-mount/test.sh 6.17-1/tests/misc-tests/046-seed-multi-mount/test.sh
--- 6.16-2/tests/misc-tests/046-seed-multi-mount/test.sh	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tests/misc-tests/046-seed-multi-mount/test.sh	2025-09-29 14:59:32.000000000 +0000
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Verify that a seeding device can be mounted several times
+# Verify that a seeding device can be shared by different sprout filesystems.
 
 source "$TEST_TOP/common" || exit
 
@@ -74,21 +74,20 @@ nextdevice() {
 	if [ "$md5sum" != "$md5sum2" ]; then
 		_fail "file contents not same after remount"
 	fi
+	# Unmount the new device so that the seed device won't be mounted
+	# when the sprout fs is already mounted.
+	# This is to compensate for the new v6.17 kernel, as each different
+	# fs will have different holder for a block device, and a single block
+	# device can not belong to different mounted filesystems.
+	run_check_umount_test_dev
 }
 
-# Keep previous device(s) mounted, create a new filesystem from the seeding device
+# Create a new filesystem from the seeding device, with previous devices unmounted.
 nextdevice 2
 nextdevice 3
 nextdevice 4
 nextdevice 5
 
-# Final umount
-# Skip seeding device, loop device 1,
-run_check $SUDO_HELPER umount ${loopdevs[2]}
-run_check $SUDO_HELPER umount ${loopdevs[3]}
-run_check $SUDO_HELPER umount ${loopdevs[4]}
-run_check $SUDO_HELPER umount ${loopdevs[5]}
-
 cleanup_loopdevs
 
 rm -rf -- mnt[0-9]
diff -pruN 6.16-2/tests/misc-tests/070-offline-resize/test.sh 6.17-1/tests/misc-tests/070-offline-resize/test.sh
--- 6.16-2/tests/misc-tests/070-offline-resize/test.sh	1970-01-01 00:00:00.000000000 +0000
+++ 6.17-1/tests/misc-tests/070-offline-resize/test.sh	2025-09-29 14:59:32.000000000 +0000
@@ -0,0 +1,168 @@
+#!/bin/bash
+#
+# Test filesystem resize --offline functionality
+#
+# Tests various resize operations on offline:
+#
+# - Incremental resize (+1G, 1:+1G)
+# - Absolute resize (2G)
+# - Invalid operations (multi-device, invalid syntax, shrinking)
+
+source "$TEST_TOP/common" || exit
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+
+get_filesystem_size()
+{
+	local mount="$1"
+
+	size=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" filesystem usage -m "$mount" | \
+		grep "Device size:" | awk '{print $3}' | sed 's/\..*//')
+	echo "$size"
+}
+
+create_backing_file()
+{
+	local path="$1"
+	local size_mb="$2"
+
+	run_check truncate -s "${size_mb}M" "$path"
+}
+
+# Test offline resize with incremental size (+1G)
+_log "Testing offline resize +1G"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_check "$TOP/btrfs" filesystem resize --offline "+1G" "$backing"
+
+TEST_DEV="$backing"
+run_check_mount_test_dev
+actual_size=$(get_filesystem_size "$TEST_MNT")
+if [ "$actual_size" != "2048" ]; then
+	_fail "Size mismatch: expected 2048MiB, got ${actual_size}MiB"
+fi
+run_check_umount_test_dev
+rm -f "$backing"
+
+# Test offline resize with device-specific incremental size (1:+1G)
+_log "Testing offline resize 1:+1G"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_check "$TOP/btrfs" filesystem resize --offline "1:+1G" "$backing"
+
+TEST_DEV="$backing"
+run_check_mount_test_dev
+actual_size=$(get_filesystem_size "$TEST_MNT")
+if [ "$actual_size" != "2048" ]; then
+	_fail "Size mismatch: expected 2048MiB, got ${actual_size}MiB"
+fi
+run_check_umount_test_dev
+rm -f "$backing"
+
+# Test offline resize with absolute size (2G)
+_log "Testing offline resize 2G"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_check "$TOP/btrfs" filesystem resize --offline "2G" "$backing"
+
+TEST_DEV="$backing"
+run_check_mount_test_dev
+actual_size=$(get_filesystem_size "$TEST_MNT")
+if [ "$actual_size" != "2048" ]; then
+	_fail "Size mismatch: expected 2048MiB, got ${actual_size}MiB"
+fi
+run_check_umount_test_dev
+rm -f "$backing"
+
+# Test offline resize with invalid device id (2:+1G)
+_log "Testing offline resize with invalid device id 2:+1G"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_mustfail "offline resize should fail with invalid device id" \
+	"$TOP/btrfs" filesystem resize --offline "2:+1G" "$backing"
+rm -f "$backing"
+
+# Test offline resize with shrinking (not supported)
+_log "Testing offline resize with shrinking -10M"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_mustfail "offline resize should not support shrinking" \
+	"$TOP/btrfs" filesystem resize --offline "-10M" "$backing"
+rm -f "$backing"
+
+# Test offline resize with cancel (not supported)
+_log "Testing offline resize with cancel"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_mustfail "offline resize should not support cancel" \
+	"$TOP/btrfs" filesystem resize --offline "cancel" "$backing"
+rm -f "$backing"
+
+# Test offline resize with invalid size format
+_log "Testing offline resize with invalid size format 1:+1a"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_mustfail "offline resize should fail with invalid size format" \
+	"$TOP/btrfs" filesystem resize --offline "1:+1a" "$backing"
+rm -f "$backing"
+
+# Test offline resize on multi-device filesystem (should fail)
+_log "Testing offline resize on multi-device filesystem"
+backing1="$(_mktemp backing1)"
+backing2="$(_mktemp backing2)"
+
+create_backing_file "$backing1" 1024
+create_backing_file "$backing2" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing1" "$backing2"
+run_mustfail "offline resize should fail on multi-device filesystem" \
+	"$TOP/btrfs" filesystem resize --offline "+1G" "$backing1"
+
+rm -f "$backing1" "$backing2"
+
+# Test that --offline and --enqueue are incompatible
+_log "Testing that --offline and --enqueue are incompatible"
+backing="$(_mktemp backing)"
+create_backing_file "$backing" 1024
+
+run_check "$TOP/mkfs.btrfs" -f "$backing"
+run_mustfail "--offline and --enqueue should be incompatible" \
+	"$TOP/btrfs" filesystem resize --offline --enqueue "+1G" "$backing"
+
+rm -f "$backing"
+
+# Test offline resize on mounted filesystem (should fail)
+_log "Testing offline resize on mounted filesystem"
+setup_loopdevs 1
+prepare_loopdevs
+
+dev="${loopdevs[1]}"
+run_check "$TOP/mkfs.btrfs" -f "$dev"
+
+TEST_DEV="$dev"
+run_check_mount_test_dev
+
+# Get the backing file path from the loop device
+backing=$(losetup -l "$dev" | tail -n1 | awk '{print $6}')
+run_mustfail "offline resize should fail on mounted filesystem" \
+	"$TOP/btrfs" filesystem resize --offline "+1G" "$backing"
+
+run_check_umount_test_dev
+cleanup_loopdevs
diff -pruN 6.16-2/tune/change-uuid.c 6.17-1/tune/change-uuid.c
--- 6.16-2/tune/change-uuid.c	2025-08-13 18:02:57.000000000 +0000
+++ 6.17-1/tune/change-uuid.c	2025-09-29 14:59:32.000000000 +0000
@@ -300,9 +300,9 @@ int change_uuid(struct btrfs_fs_info *fs
 	/* Now fsid change is done */
 	pr_verbose(LOG_DEFAULT, "Clear superblock flag CHANGING_FSID\n");
 	ret = change_fsid_done(fs_info);
-	fs_info->new_chunk_tree_uuid = NULL;
 	pr_verbose(LOG_DEFAULT, "Fsid change finished\n");
 out:
+	fs_info->new_chunk_tree_uuid = NULL;
 	return ret;
 }
 
