Repository: borgbackup/borg

Issue:
Generic error message when trying to use non-upgraded attic repository
Hi,

while playing with borg (as attic user) i accidentally run borg commands on attic*s repository and i get ugly trackback:
```
Traceback (most recent call last):
  File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 1928, in main
    exit_code = archiver.run(args)
  File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 1873, in run
    return args.func(args)
  File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 81, in wrapper
    kwargs['manifest'], kwargs['key'] = Manifest.load(repository)
  File "/usr/lib64/python3.4/site-packages/borg/helpers.py", line 113, in load
    cdata = repository.get(cls.MANIFEST_ID)
  File "/usr/lib64/python3.4/site-packages/borg/repository.py", line 512, in get
    self.index = self.open_index(self.get_transaction_id())
  File "/usr/lib64/python3.4/site-packages/borg/repository.py", line 152, in get_transaction_id
    raise self.CheckNeeded(self.path)
borg.repository.CheckNeeded: /srv/backup/system.borg
```
IMO, this exception have to be catched and only error message needs to be reported, to get more better look ;-)

---

:moneybag: [there is a bounty for this](https://www.bountysource.com/issues/39795380-generic-error-message-when-trying-to-use-non-upgraded-attic-repository)

Discussion:
lfos: Pushed a new version that addresses your remarks. I also fixed the base class of `AtticSegment` (should be `Error` instead of `Exception`). Thanks for the review!
ThomasWaldmann: added to 1.1 backports. guess we really need this in 1.1, maybe even in 1.0.

in 1.2 it will be somehow pointless as release time of 1.2 is quite a bit in the future - maybe no attic repos left by then?
lfos: Added Attic repository detection to `check` which is now also covered in the test case.
ThomasWaldmann: Btw, when doing changes, rather add changeset than amending the existing one - easier to review and see what's changed. At the end, after review is finished, changesets can be collapsed to 1 or few.
lfos: Good point. I am rather used to the ML-based patch submission process (as used for the Linux kernel or Git development itself) where it is more common to resubmit amended patch series. It is kind of annoying that there seems to be no easy way to display inter-diffs in GitHub... In the future, I will submit changes on top and squash only when the whole series is ready to be merged.
ThomasWaldmann: btw, another thing i noticed is that the attic magic is also defined in upgrader.py.
lfos: True. We could import it from there but then we would lose the new assertion. Maybe both magic values should be defined in a central location (where we also have the length assertion)? Seems like this is going a bit out of the scope of this patch... But sounds like a nice idea for a follow-up patch!
ThomasWaldmann: To avoid cyclic imports we maybe rather move it to repository.py. constants.py might be also an option.
Sure, can be in another patch.
ThomasWaldmann: Hmm, btw, did you check that this handles all use cases when a user runs borg against a attic repo (no matter which command is used)?
lfos: Yes, I checked that and no, we do not obtain an error message on every command that is run against an Attic repository. This only affects commands actually reading segments. Running a command like `borg break-lock` against an Attic repository works fine. Should we really error out there as well? If we do, we might as well scrap this patch (keep the `IntegrityError`) and add a check that is run every time before borg accesses a repository... What do you think?
ThomasWaldmann: @enkore any feedback from you? would like to merge / backport this soon.
ThomasWaldmann: @lfos no, i don't think we need to invest extra work on special stuff like `break-lock` or `debug ...`.

It's fine if the usual commands fail with a nice error message (e.g. create, extract, list, delete, prune).
enkore: LGTM
ThomasWaldmann: @lfos still working on it or finished?
lfos: I noticed some issues. Almost done with a new implementation. Will provide more details and an updated patch in a couple of minutes...
lfos: I won't be able to finish the patch today. Have something that works more or less but I still need to rewrite the tests. The problem is that some operations (such as `borg create`) read segments only after making modifications which results in the Attic error message not being shown for some operations and being shown only after things have been modified for others. The new implementation always tries to read the latest segment (and check its MAGIC) when opening a repository, unless this check is explicitly disabled by an optional parameter (which is currently only used for `borg upgrade`).
lfos: Pushed the rewrite (decided to rebase since the new commit almost has nothing in common with the original implementation). It also contains a "high-level test case" to make sure the usual commands are covered.

Patch:
diff --git a/docs/internals/frontends.rst b/docs/internals/frontends.rst
index c41d427e..677db738 100644
--- a/docs/internals/frontends.rst
+++ b/docs/internals/frontends.rst
@@ -499,6 +499,8 @@ Errors
         Insufficient free space to complete transaction (required: {}, available: {}).
     Repository.InvalidRepository
         {} is not a valid repository. Check repo config.
+    Repository.AtticRepository
+        Attic repository detected. Please run "borg upgrade {}".
     Repository.ObjectNotFound
         Object with key {} not found in repository {}.
 
diff --git a/docs/misc/asciinema/advanced.json b/docs/misc/asciinema/advanced.json
deleted file mode 100644
index d9f951e6..00000000
--- a/docs/misc/asciinema/advanced.json
+++ /dev/null
@@ -1,7733 +0,0 @@
-{
-  "version": 1,
-  "width": 78,
-  "height": 24,
-  "duration": 446.783754,
-  "command": null,
-  "title": null,
-  "env": {
-    "TERM": "xterm-256color",
-    "SHELL": "/bin/zsh"
-  },
-  "stdout": [
-    [
-      0.29658,
-      "\b\u001b[1m$ # \u001b[1mFor the pro users, here are some advanced features of borg, so you can imp\u001b[1mr\u001b[1mess your friends. ;)\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.025674,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000375,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000796,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000953,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000799,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      4.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000368,
-      "\u001b[?2004h"
-    ],
-    [
-      0.857202,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.269836,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.277016,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.185115,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.222294,
-      "\b\u001b[1mo\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.098908,
-      "\b\u001b[1mt\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.471037,
-      "\b\u001b[1me\u001b[1m:\u001b[0m\u001b[39m"
-    ],
-    [
-      0.276132,
-      "\b\u001b[1m:\u001b[1m This screencast was made with borg version 1.1.0 – older or newer bo\u001b[1mr\u001b[1mg versions may behave differently.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.063392,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001402,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001228,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.002846,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002554,
-      "\u001b]7;\u0007"
-    ],
-    [
-      6.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000229,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000858,
-      "\u001b[?2004h"
-    ],
-    [
-      0.944947,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000319,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000652,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001131,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000871,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000117,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00014,
-      "\u001b[?2004h"
-    ],
-    [
-      0.91046,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.350642,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.226284,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mF\u001b[0m\u001b[39m"
-    ],
-    [
-      0.190635,
-      "\b\u001b[1mF\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.226298,
-      "\b\u001b[1mi\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.094075,
-      "\b\u001b[1mr\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.125931,
-      "\b\u001b[1ms\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.210409,
-      "\b\u001b[1mt\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.333349,
-      "\b\u001b[1m \u001b[1mof all, we can use several environment variables for borg.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.115007,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000418,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000665,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001185,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00091,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000298,
-      "\u001b[?2004h"
-    ],
-    [
-      1.193161,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.249128,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.253119,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mE\u001b[0m\u001b[39m"
-    ],
-    [
-      0.328187,
-      "\b\u001b[1mE\u001b[1m.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.873845,
-      "\b\u001b[1m.\u001b[1mg\u001b[0m\u001b[39m"
-    ],
-    [
-      0.164238,
-      "\b\u001b[1mg\u001b[1m.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.211331,
-      "\b\u001b[1m.\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.15971,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.133833,
-      "\b\u001b[1mw\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      2.95423,
-      "\b\u001b[1me\u001b[1m do not want to type in our repo path and password again and again…"
-    ],
-    [
-      1.769654,
-      "\u001b[K"
-    ],
-    [
-      2.7e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000616,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000594,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00144,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001172,
-      "\u001b]7;\u0007"
-    ],
-    [
-      3.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000419,
-      "\u001b[?2004h"
-    ],
-    [
-      0.975676,
-      "\u001b[1m\u001b[31me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.156719,
-      "\b\u001b[0m\u001b[32me\u001b[32mx\u001b[39m"
-    ],
-    [
-      0.121911,
-      "\b\b\u001b[1m\u001b[31me\u001b[1m\u001b[31mx\u001b[1m\u001b[31mp\u001b[0m\u001b[39m"
-    ],
-    [
-      0.15502,
-      "\b\u001b[1m\u001b[31mp\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.26241,
-      "\b\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.126933,
-      "\b\b\b\b\b\u001b[0m\u001b[33me\u001b[0m\u001b[33mx\u001b[0m\u001b[33mp\u001b[0m\u001b[33mo\u001b[0m\u001b[33mr\u001b[33mt\u001b[39m"
-    ],
-    [
-      0.192182,
-      " "
-    ],
-    [
-      0.304561,
-      "B"
-    ],
-    [
-      0.192073,
-      "O"
-    ],
-    [
-      0.136183,
-      "R"
-    ],
-    [
-      0.114362,
-      "G"
-    ],
-    [
-      0.576349,
-      "_"
-    ],
-    [
-      0.103719,
-      "R"
-    ],
-    [
-      0.113626,
-      "E"
-    ],
-    [
-      0.159395,
-      "P"
-    ],
-    [
-      0.141942,
-      "O"
-    ],
-    [
-      0.554082,
-      "="
-    ],
-    [
-      0.74644,
-      "'"
-    ],
-    [
-      0.69222,
-      "/"
-    ],
-    [
-      0.20093,
-      "m"
-    ],
-    [
-      0.108068,
-      "e"
-    ],
-    [
-      0.125576,
-      "d"
-    ],
-    [
-      0.161298,
-      "i"
-    ],
-    [
-      0.107949,
-      "a"
-    ],
-    [
-      0.423969,
-      "/"
-    ],
-    [
-      0.623591,
-      "b"
-    ],
-    [
-      0.102775,
-      "a"
-    ],
-    [
-      0.146442,
-      "c"
-    ],
-    [
-      0.116202,
-      "k"
-    ],
-    [
-      0.133034,
-      "u"
-    ],
-    [
-      0.282831,
-      "p"
-    ],
-    [
-      0.436512,
-      "/"
-    ],
-    [
-      0.551147,
-      "b"
-    ],
-    [
-      0.208373,
-      "o"
-    ],
-    [
-      0.108883,
-      "r"
-    ],
-    [
-      0.137272,
-      "g"
-    ],
-    [
-      0.218057,
-      "d"
-    ],
-    [
-      0.122586,
-      "e"
-    ],
-    [
-      0.133605,
-      "m"
-    ],
-    [
-      0.170095,
-      "o"
-    ],
-    [
-      0.795644,
-      "'"
-    ],
-    [
-      0.928899,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001469,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000802,
-      "\u001b]2;export BORG_REPO='/media/backup/borgdemo' \u0007\u001b]1;export\u0007"
-    ],
-    [
-      0.000109,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001347,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001006,
-      "\u001b]7;\u0007"
-    ],
-    [
-      5.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000186,
-      "\u001b[?2004h"
-    ],
-    [
-      0.718289,
-      "\u001b[1m\u001b[31me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.19628,
-      "\b\u001b[0m\u001b[32me\u001b[32mx\u001b[39m"
-    ],
-    [
-      0.269637,
-      "\b\b\u001b[1m\u001b[31me\u001b[1m\u001b[31mx\u001b[1m\u001b[31mp\u001b[0m\u001b[39m"
-    ],
-    [
-      0.164388,
-      "\b\u001b[1m\u001b[31mp\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.332999,
-      "\b\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.121063,
-      "\b\b\b\b\b\u001b[0m\u001b[33me\u001b[0m\u001b[33mx\u001b[0m\u001b[33mp\u001b[0m\u001b[33mo\u001b[0m\u001b[33mr\u001b[33mt\u001b[39m"
-    ],
-    [
-      0.265335,
-      " "
-    ],
-    [
-      0.311313,
-      "B"
-    ],
-    [
-      0.205307,
-      "O"
-    ],
-    [
-      0.159682,
-      "R"
-    ],
-    [
-      0.141683,
-      "G"
-    ],
-    [
-      0.553563,
-      "_"
-    ],
-    [
-      0.225583,
-      "P"
-    ],
-    [
-      0.10739,
-      "A"
-    ],
-    [
-      0.204722,
-      "S"
-    ],
-    [
-      0.145905,
-      "S"
-    ],
-    [
-      0.312666,
-      "P"
-    ],
-    [
-      0.311469,
-      "H"
-    ],
-    [
-      0.209393,
-      "R"
-    ],
-    [
-      0.069618,
-      "A"
-    ],
-    [
-      0.208505,
-      "S"
-    ],
-    [
-      0.202229,
-      "E"
-    ],
-    [
-      0.719142,
-      "="
-    ],
-    [
-      0.61979,
-      "'"
-    ],
-    [
-      0.414834,
-      "1"
-    ],
-    [
-      0.208777,
-      "2"
-    ],
-    [
-      0.193519,
-      "3"
-    ],
-    [
-      0.171001,
-      "4"
-    ],
-    [
-      0.542373,
-      "'"
-    ],
-    [
-      0.876006,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.002877,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001161,
-      "\u001b]2;export BORG_PASSPHRASE='1234' \u0007\u001b]1;export\u0007"
-    ],
-    [
-      8.5e-05,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.003438,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002065,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000146,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000508,
-      "\u001b[?2004h"
-    ],
-    [
-      1.238676,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.273221,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.248131,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mP\u001b[0m\u001b[39m"
-    ],
-    [
-      0.142137,
-      "\b\u001b[1mP\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.089312,
-      "\b\u001b[1mr\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.19919,
-      "\b\u001b[1mo\u001b[1mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.207691,
-      "\b\u001b[1mb\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.105529,
-      "\b\u001b[1ml\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.075159,
-      "\b\u001b[1me\u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.625428,
-      "\b\u001b[1mm\u001b[1m solved, borg will use this automatically… :)\u001b[0m\u001b[39m"
-    ],
-    [
-      0.442303,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.0004,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00077,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001065,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001105,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000266,
-      "\u001b[?2004h"
-    ],
-    [
-      1.570802,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.218966,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.191279,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mW\u001b[0m\u001b[39m"
-    ],
-    [
-      0.144698,
-      "\b\u001b[1mW\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.313061,
-      "\b\u001b[1me\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.245196,
-      "\b\u001b[1m'\u001b[1mll use this right away…\u001b[0m\u001b[39m"
-    ],
-    [
-      0.532339,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000412,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00062,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001169,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00087,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000101,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000279,
-      "\u001b[?2004h"
-    ],
-    [
-      0.63892,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000369,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00044,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.002911,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002442,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000162,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00059,
-      "\u001b[?2004h"
-    ],
-    [
-      0.548725,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.113549,
-      "\b\u001b[1m#\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.290577,
-      "\b\b\u001b[1m#\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.262532,
-      "\b\u001b[1m \u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.41846,
-      "\b\u001b[1mA\u001b[1mDVANCED CREATION ##\u001b[0m\u001b[39m"
-    ],
-    [
-      0.535376,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001234,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000938,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.002912,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001987,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000134,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000671,
-      "\u001b[?2004h"
-    ],
-    [
-      0.759129,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000397,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000757,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001297,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00131,
-      "\u001b]7;\u0007"
-    ],
-    [
-      3.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.0001,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000135,
-      "\u001b[?2004h"
-    ],
-    [
-      0.425509,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.233111,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.185443,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mW\u001b[0m\u001b[39m"
-    ],
-    [
-      0.151433,
-      "\b\u001b[1mW\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157168,
-      "\b\u001b[1me\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.148414,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.200586,
-      "\b\u001b[1mc\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145343,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.414343,
-      "\b\u001b[1mn\u001b[1m also use some placeholders in our archive name…\u001b[0m\u001b[39m"
-    ],
-    [
-      1.198174,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000433,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000647,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001494,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001069,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      4.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000395,
-      "\u001b[?2004h"
-    ],
-    [
-      0.832499,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.186742,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.076839,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.15706,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.175773,
-      " "
-    ],
-    [
-      0.265231,
-      "c"
-    ],
-    [
-      0.198791,
-      "r"
-    ],
-    [
-      0.162497,
-      "e"
-    ],
-    [
-      0.08856,
-      "a"
-    ],
-    [
-      0.135865,
-      "t"
-    ],
-    [
-      0.112707,
-      "e"
-    ],
-    [
-      0.634063,
-      " "
-    ],
-    [
-      0.621186,
-      "-"
-    ],
-    [
-      0.112118,
-      "-"
-    ],
-    [
-      0.270276,
-      "s"
-    ],
-    [
-      0.135637,
-      "t"
-    ],
-    [
-      0.130994,
-      "a"
-    ],
-    [
-      0.086801,
-      "t"
-    ],
-    [
-      0.119778,
-      "s"
-    ],
-    [
-      0.24882,
-      " "
-    ],
-    [
-      0.47677,
-      "-"
-    ],
-    [
-      0.112232,
-      "-"
-    ],
-    [
-      0.26855,
-      "p"
-    ],
-    [
-      0.218974,
-      "r"
-    ],
-    [
-      0.14527,
-      "o"
-    ],
-    [
-      0.21975,
-      "g"
-    ],
-    [
-      0.104406,
-      "r"
-    ],
-    [
-      0.168975,
-      "e"
-    ],
-    [
-      0.224875,
-      "s"
-    ],
-    [
-      0.161557,
-      "s"
-    ],
-    [
-      0.556139,
-      " "
-    ],
-    [
-      0.90841,
-      "-"
-    ],
-    [
-      0.117065,
-      "-"
-    ],
-    [
-      0.268496,
-      "c"
-    ],
-    [
-      0.118758,
-      "o"
-    ],
-    [
-      0.13892,
-      "m"
-    ],
-    [
-      0.17322,
-      "p"
-    ],
-    [
-      0.146756,
-      "r"
-    ],
-    [
-      0.196139,
-      "e"
-    ],
-    [
-      0.249655,
-      "s"
-    ],
-    [
-      0.157202,
-      "s"
-    ],
-    [
-      0.236521,
-      "i"
-    ],
-    [
-      0.120624,
-      "o"
-    ],
-    [
-      0.175143,
-      "n"
-    ],
-    [
-      0.321073,
-      " "
-    ],
-    [
-      0.249849,
-      "l"
-    ],
-    [
-      0.281988,
-      "z"
-    ],
-    [
-      0.281179,
-      "4"
-    ],
-    [
-      1.223567,
-      " "
-    ],
-    [
-      0.604439,
-      ":"
-    ],
-    [
-      0.099497,
-      ":"
-    ],
-    [
-      0.760652,
-      "{"
-    ],
-    [
-      0.504646,
-      "u"
-    ],
-    [
-      0.249702,
-      "s"
-    ],
-    [
-      0.310204,
-      "e"
-    ],
-    [
-      0.156776,
-      "r"
-    ],
-    [
-      0.927624,
-      "}"
-    ],
-    [
-      0.972074,
-      "-"
-    ],
-    [
-      0.979824,
-      "{"
-    ],
-    [
-      0.397346,
-      "n"
-    ],
-    [
-      0.195251,
-      "o"
-    ],
-    [
-      0.203266,
-      "w"
-    ],
-    [
-      0.716944,
-      "}"
-    ],
-    [
-      0.992466,
-      " "
-    ],
-    [
-      0.404348,
-      "\u001b[4mW\u001b[24m"
-    ],
-    [
-      0.098053,
-      "\b\u001b[4mW\u001b[4ma\u001b[24m \b"
-    ],
-    [
-      0.440872,
-      "\b\u001b[4ma\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.130433,
-      "\b\u001b[4ml\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.079918,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.009903,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m create --stats --progress --compression lz4 ::{user}-{now} \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      1.432747,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.006238,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001309,
-      "\u001b]2;borg create --stats --progress --compression lz4 ::{user}-{now} Wallpaper\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.703285,
-      "0 B O 0 B C 0 B D 0 N Wallpaper                                               \r"
-    ],
-    [
-      0.059704,
-      "Initializing cache transaction: Reading config                                \r"
-    ],
-    [
-      0.000259,
-      "Initializing cache transaction: Reading chunks                                \r"
-    ],
-    [
-      0.000283,
-      "Initializing cache transaction: Reading files                                 \r"
-    ],
-    [
-      0.00035,
-      "                                                                              \r"
-    ],
-    [
-      0.302813,
-      "Compacting segments   0%                                                      \r"
-    ],
-    [
-      0.000422,
-      "Compacting segments  50%                                                      \r"
-    ],
-    [
-      2.6e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.053481,
-      "Saving files cache                                                            \r"
-    ],
-    [
-      0.010102,
-      "Saving chunks cache                                                           \r"
-    ],
-    [
-      0.000354,
-      "Saving cache config                                                           \r"
-    ],
-    [
-      0.08865,
-      "                                                                              \r"
-    ],
-    [
-      2.6e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.000371,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      3.4e-05,
-      "Archive name: rugk-2017-07-16T18:51:34\r\n"
-    ],
-    [
-      8e-06,
-      "Archive fingerprint: d054cc411324d4bd848b39d1c9cad909073f9ff1a1a503a676d3e050be140396\r\n"
-    ],
-    [
-      0.000101,
-      "Time (start): Sun, 2017-07-16 18:51:34\r\nTime (end):   Sun, 2017-07-16 18:51:35\r\n"
-    ],
-    [
-      7.5e-05,
-      "Duration: 0.18 seconds\r\nNumber of files: 1\r\n"
-    ],
-    [
-      8.8e-05,
-      "Utilization of maximum supported archive size: 0%\r\n"
-    ],
-    [
-      7e-05,
-      "------------------------------------------------------------------------------\r\n                       Original size      Compressed size    Deduplicated size\r\n"
-    ],
-    [
-      1.6e-05,
-      "This archive:                3.78 MB              3.80 MB                916 B\r\n"
-    ],
-    [
-      5.2e-05,
-      "All archives:                1.86 GB              1.86 GB            561.88 MB\r\n"
-    ],
-    [
-      1.3e-05,
-      "\r\n"
-    ],
-    [
-      2.4e-05,
-      "                       Unique chunks         Total chunks\r\n"
-    ],
-    [
-      2.4e-05,
-      "Chunk index:                    1008                 3288\r\n"
-    ],
-    [
-      2.4e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      0.049018,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00124,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000936,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000124,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00019,
-      "\u001b[?2004h"
-    ],
-    [
-      0.814358,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.326066,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.279288,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.200695,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.2241,
-      "\b\u001b[1mo\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.221056,
-      "\b\u001b[1mt\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.341582,
-      "\b\u001b[1mi\u001b[1mce the backup name.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.40396,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000442,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000701,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00108,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000942,
-      "\u001b]7;\u0007"
-    ],
-    [
-      5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      4.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00028,
-      "\u001b[?2004h"
-    ],
-    [
-      1.540998,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000288,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000571,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.0013,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000852,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000106,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000164,
-      "\u001b[?2004h"
-    ],
-    [
-      0.402376,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.27499,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.220032,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.127907,
-      "\b\u001b[1mA\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.092357,
-      "\b\u001b[1mn\u001b[1md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145572,
-      "\b\u001b[1md\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.222962,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.178534,
-      "\b\u001b[1mw\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.196668,
-      "\b\u001b[1me\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.225933,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.175493,
-      "\b\u001b[1mc\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.119503,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.425112,
-      "\b\u001b[1mn\u001b[1m put completely different data, with different backup settings, i\u001b[1mn\u001b[1m our backup. It will be deduplicated, anyway:\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.421849,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000749,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00066,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00197,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001476,
-      "\u001b]7;\u0007"
-    ],
-    [
-      5.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000124,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000525,
-      "\u001b[?2004h"
-    ],
-    [
-      1.444268,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.209812,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.118788,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145792,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.20446,
-      " "
-    ],
-    [
-      0.309592,
-      "c"
-    ],
-    [
-      0.201447,
-      "r"
-    ],
-    [
-      0.151315,
-      "e"
-    ],
-    [
-      0.084953,
-      "a"
-    ],
-    [
-      0.156918,
-      "t"
-    ],
-    [
-      0.091724,
-      "e"
-    ],
-    [
-      0.324287,
-      " "
-    ],
-    [
-      0.861486,
-      "-"
-    ],
-    [
-      0.134231,
-      "-"
-    ],
-    [
-      0.491182,
-      "s"
-    ],
-    [
-      0.195253,
-      "t"
-    ],
-    [
-      0.097572,
-      "a"
-    ],
-    [
-      0.09545,
-      "t"
-    ],
-    [
-      0.111782,
-      "s"
-    ],
-    [
-      0.301387,
-      " "
-    ],
-    [
-      0.524478,
-      "-"
-    ],
-    [
-      0.112538,
-      "-"
-    ],
-    [
-      0.397406,
-      "p"
-    ],
-    [
-      0.175509,
-      "r"
-    ],
-    [
-      0.203203,
-      "o"
-    ],
-    [
-      0.257392,
-      "g"
-    ],
-    [
-      0.1453,
-      "r"
-    ],
-    [
-      0.174285,
-      "e"
-    ],
-    [
-      0.353531,
-      "s"
-    ],
-    [
-      0.176989,
-      "s"
-    ],
-    [
-      0.386157,
-      " "
-    ],
-    [
-      0.510691,
-      "-"
-    ],
-    [
-      0.115919,
-      "-"
-    ],
-    [
-      0.225102,
-      "c"
-    ],
-    [
-      0.145577,
-      "o"
-    ],
-    [
-      0.133821,
-      "m"
-    ],
-    [
-      0.171364,
-      "p"
-    ],
-    [
-      0.157255,
-      "r"
-    ],
-    [
-      0.162989,
-      "e"
-    ],
-    [
-      0.256274,
-      "s"
-    ],
-    [
-      0.167254,
-      "s"
-    ],
-    [
-      0.253369,
-      "i"
-    ],
-    [
-      0.1197,
-      "o"
-    ],
-    [
-      0.178105,
-      "n"
-    ],
-    [
-      0.824434,
-      " "
-    ],
-    [
-      0.734608,
-      "z"
-    ],
-    [
-      0.237239,
-      "l"
-    ],
-    [
-      0.158877,
-      "i"
-    ],
-    [
-      0.148988,
-      "b"
-    ],
-    [
-      0.289236,
-      ","
-    ],
-    [
-      0.349273,
-      "6"
-    ],
-    [
-      0.618231,
-      " "
-    ],
-    [
-      0.449031,
-      "-"
-    ],
-    [
-      0.119307,
-      "-"
-    ],
-    [
-      0.451923,
-      "e"
-    ],
-    [
-      0.330743,
-      "x"
-    ],
-    [
-      0.232655,
-      "c"
-    ],
-    [
-      0.197384,
-      "l"
-    ],
-    [
-      0.176276,
-      "u"
-    ],
-    [
-      0.104427,
-      "d"
-    ],
-    [
-      0.141163,
-      "e"
-    ],
-    [
-      0.359309,
-      " "
-    ],
-    [
-      1.198529,
-      "\u001b[4m~\u001b[24m"
-    ],
-    [
-      0.338729,
-      "\b\u001b[4m~\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.352573,
-      "\b\u001b[4m/\u001b[4mD\u001b[24m"
-    ],
-    [
-      0.190254,
-      "\b\u001b[4mD\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.113631,
-      "\b\u001b[4mo\u001b[4mw\u001b[24m"
-    ],
-    [
-      0.743216,
-      "\b\u001b[4mw\u001b[4mn\u001b[24m"
-    ],
-    [
-      0.613852,
-      "\b\u001b[4mn\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.121501,
-      "\b\u001b[4ml\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.068625,
-      "\b\u001b[4mo\u001b[4ma\u001b[24m"
-    ],
-    [
-      0.183855,
-      "\b\u001b[4ma\u001b[4md\u001b[24m"
-    ],
-    [
-      0.152099,
-      "\b\u001b[4md\u001b[4ms\u001b[24m"
-    ],
-    [
-      0.793349,
-      "\b\u001b[4ms\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.477575,
-      "\b\u001b[4m/\u001b[4mb\u001b[24m"
-    ],
-    [
-      0.198072,
-      "\b\u001b[4mb\u001b[4mi\u001b[24m \r\u001b[K"
-    ],
-    [
-      0.175276,
-      "\u001b[A\u001b[77C\u001b[4mi\u001b[4mg\u001b[24m"
-    ],
-    [
-      0.647369,
-      "\r\u001b[4mg\u001b[24m "
-    ],
-    [
-      0.439418,
-      ":"
-    ],
-    [
-      0.108932,
-      ":"
-    ],
-    [
-      0.556615,
-      "{"
-    ],
-    [
-      0.244626,
-      "u"
-    ],
-    [
-      0.097534,
-      "s"
-    ],
-    [
-      0.187502,
-      "e"
-    ],
-    [
-      0.16023,
-      "r"
-    ],
-    [
-      0.675542,
-      "}"
-    ],
-    [
-      0.988946,
-      "-"
-    ],
-    [
-      0.545789,
-      "{"
-    ],
-    [
-      0.33121,
-      "n"
-    ],
-    [
-      0.204667,
-      "o"
-    ],
-    [
-      0.141818,
-      "w"
-    ],
-    [
-      0.397217,
-      "}"
-    ],
-    [
-      0.979478,
-      " "
-    ],
-    [
-      0.768118,
-      "\u001b[4m~\u001b[24m"
-    ],
-    [
-      0.589532,
-      "\b\u001b[4m~\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.515186,
-      "\b\u001b[4m/\u001b[4mD\u001b[24m"
-    ],
-    [
-      0.17703,
-      "\b\u001b[4mD\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.121294,
-      "\b\u001b[4mo\u001b[4mw\u001b[24m"
-    ],
-    [
-      0.153543,
-      "\b\u001b[4mw\u001b[4mn\u001b[24m"
-    ],
-    [
-      0.282343,
-      "\b\u001b[4mn\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.129573,
-      "\b\u001b[4ml\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.095125,
-      "\b\u001b[4mo\u001b[4ma\u001b[24m"
-    ],
-    [
-      0.19963,
-      "\b\u001b[4ma\u001b[4md\u001b[24m"
-    ],
-    [
-      0.142667,
-      "\b\u001b[4md\u001b[4ms\u001b[24m"
-    ],
-    [
-      1.499285,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.003081,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000637,
-      "\u001b]2;borg create --stats --progress --compression zlib,6 --exclude ~/Downloads/big\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.687457,
-      "0 B O 0 B C 0 B D 0 N home/rugk/Downloads                                     \r"
-    ],
-    [
-      0.025551,
-      "Initializing cache transaction: Reading config                                \r"
-    ],
-    [
-      0.000326,
-      "Initializing cache transaction: Reading chunks                                \r"
-    ],
-    [
-      0.000273,
-      "Initializing cache transaction: Reading files                                 \r"
-    ],
-    [
-      0.000394,
-      "                                                                              \r"
-    ],
-    [
-      0.220691,
-      "1.31 MB O 1.29 MB C 1.29 MB D 1 N home/rugk/Downloads...chiveWithStuffHere.zip\r"
-    ],
-    [
-      0.26224,
-      "7.70 MB O 6.91 MB C 6.91 MB D 2 N home/rugk/Downloads...droid.gms-11059462.apk\r"
-    ],
-    [
-      0.32599,
-      "Compacting segments   0%                                                      \r"
-    ],
-    [
-      0.026073,
-      "Compacting segments  50%                                                      \r"
-    ],
-    [
-      0.001982,
-      "                                                                              \r"
-    ],
-    [
-      0.058565,
-      "Saving files cache                                                            \r"
-    ],
-    [
-      0.011363,
-      "Saving chunks cache                                                           \r"
-    ],
-    [
-      0.000378,
-      "Saving cache config                                                           \r"
-    ],
-    [
-      0.12955,
-      "                                                                              \r"
-    ],
-    [
-      3.4e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.00039,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      1.6e-05,
-      "Archive name: rugk-2017-07-16T18:52:19\r\n"
-    ],
-    [
-      3.1e-05,
-      "Archive fingerprint: 0de98f590b004ad7545f2013c4c9f2d4e3eed1415d177c89d6c2b7ff05918d2e\r\n"
-    ],
-    [
-      2.2e-05,
-      "Time (start): Sun, 2017-07-16 18:52:19\r\n"
-    ],
-    [
-      7.2e-05,
-      "Time (end):   Sun, 2017-07-16 18:52:20\r\nDuration: 0.63 seconds\r\n"
-    ],
-    [
-      3e-05,
-      "Number of files: 6\r\n"
-    ],
-    [
-      2.5e-05,
-      "Utilization of maximum supported archive size: 0%\r\n"
-    ],
-    [
-      2.4e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      1.8e-05,
-      "                       Original size      Compressed size    Deduplicated size\r\n"
-    ],
-    [
-      2.5e-05,
-      "This archive:                9.55 MB              8.04 MB              8.04 MB\r\n"
-    ],
-    [
-      2.4e-05,
-      "All archives:                1.87 GB              1.86 GB            569.92 MB\r\n"
-    ],
-    [
-      2.5e-05,
-      "\r\n"
-    ],
-    [
-      2.4e-05,
-      "                       Unique chunks         Total chunks\r\n"
-    ],
-    [
-      2.4e-05,
-      "Chunk index:                    1023                 3303\r\n"
-    ],
-    [
-      2.4e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      0.063104,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001326,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001145,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.0002,
-      "\u001b[?2004h"
-    ],
-    [
-      3.131399,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000281,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00048,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001354,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000923,
-      "\u001b]7;\u0007"
-    ],
-    [
-      6.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000161,
-      "\u001b[?2004h"
-    ],
-    [
-      0.285262,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.419379,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.277555,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mO\u001b[0m\u001b[39m"
-    ],
-    [
-      0.015676,
-      "\b\u001b[1mO\u001b[0m\u001b[39m"
-    ],
-    [
-      0.119839,
-      "\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.315418,
-      "\b\u001b[1mr\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.224426,
-      "\b\u001b[1m \u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.10624,
-      "\b\u001b[1ml\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.170324,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.995665,
-      "\b\u001b[1mt\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.139331,
-      "\b\u001b[1m'\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.174188,
-      "\b\u001b[1ms\u001b[1m backup a device via STDIN.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.117059,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000376,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000566,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001272,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000893,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      3.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000291,
-      "\u001b[?2004h"
-    ],
-    [
-      2.390246,
-      "\u001b[1m\u001b[31ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.179283,
-      "\b\u001b[0m\u001b[32ms\u001b[32mu\u001b[39m"
-    ],
-    [
-      0.08919,
-      "\b\b\u001b[1m\u001b[31ms\u001b[1m\u001b[31mu\u001b[1m\u001b[31md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.156134,
-      "\b\b\b\u001b[0m\u001b[4m\u001b[32ms\u001b[0m\u001b[4m\u001b[32mu\u001b[0m\u001b[4m\u001b[32md\u001b[4m\u001b[32mo\u001b[24m\u001b[39m"
-    ],
-    [
-      0.939511,
-      " "
-    ],
-    [
-      0.219491,
-      "\u001b[32md\u001b[39m"
-    ],
-    [
-      0.128817,
-      "\b\u001b[32md\u001b[32md\u001b[39m"
-    ],
-    [
-      0.317081,
-      " "
-    ],
-    [
-      0.206442,
-      "i"
-    ],
-    [
-      0.127682,
-      "f"
-    ],
-    [
-      0.497718,
-      "="
-    ],
-    [
-      0.79125,
-      "/"
-    ],
-    [
-      0.162326,
-      "d"
-    ],
-    [
-      0.141147,
-      "e"
-    ],
-    [
-      0.17081,
-      "v"
-    ],
-    [
-      0.229501,
-      "/"
-    ],
-    [
-      0.309668,
-      "s"
-    ],
-    [
-      0.201626,
-      "d"
-    ],
-    [
-      0.121565,
-      "x"
-    ],
-    [
-      1.112764,
-      " "
-    ],
-    [
-      0.458342,
-      "b"
-    ],
-    [
-      0.13412,
-      "s"
-    ],
-    [
-      0.426796,
-      "="
-    ],
-    [
-      0.325514,
-      "1"
-    ],
-    [
-      0.182735,
-      "0"
-    ],
-    [
-      0.635284,
-      "M"
-    ],
-    [
-      0.571527,
-      " "
-    ],
-    [
-      0.644682,
-      "|"
-    ],
-    [
-      0.668689,
-      " "
-    ],
-    [
-      0.368219,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.197192,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.069454,
-      "\b\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.15983,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.193693,
-      " "
-    ],
-    [
-      0.342177,
-      "c"
-    ],
-    [
-      0.213502,
-      "r"
-    ],
-    [
-      0.165989,
-      "e"
-    ],
-    [
-      0.101269,
-      "a"
-    ],
-    [
-      0.20561,
-      "t"
-    ],
-    [
-      0.172574,
-      "e"
-    ],
-    [
-      0.302751,
-      " "
-    ],
-    [
-      0.524261,
-      "-"
-    ],
-    [
-      0.112867,
-      "-"
-    ],
-    [
-      0.358854,
-      "p"
-    ],
-    [
-      0.158933,
-      "r"
-    ],
-    [
-      0.146881,
-      "o"
-    ],
-    [
-      0.235592,
-      "g"
-    ],
-    [
-      0.153909,
-      "r"
-    ],
-    [
-      0.187519,
-      "e"
-    ],
-    [
-      0.278997,
-      "s"
-    ],
-    [
-      0.161351,
-      "s"
-    ],
-    [
-      0.536239,
-      " "
-    ],
-    [
-      0.472536,
-      "-"
-    ],
-    [
-      0.103445,
-      "-"
-    ],
-    [
-      0.315142,
-      "s"
-    ],
-    [
-      0.188015,
-      "t"
-    ],
-    [
-      0.092463,
-      "a"
-    ],
-    [
-      0.121697,
-      "t"
-    ],
-    [
-      0.108331,
-      "s"
-    ],
-    [
-      0.863705,
-      " "
-    ],
-    [
-      0.547363,
-      ":"
-    ],
-    [
-      0.101957,
-      ":"
-    ],
-    [
-      0.713103,
-      "s"
-    ],
-    [
-      0.172527,
-      "p"
-    ],
-    [
-      0.143374,
-      "e"
-    ],
-    [
-      0.495475,
-      "c"
-    ],
-    [
-      0.184747,
-      "i"
-    ],
-    [
-      0.118626,
-      "a"
-    ],
-    [
-      0.21782,
-      "l"
-    ],
-    [
-      0.61779,
-      "b"
-    ],
-    [
-      0.056813,
-      "a"
-    ],
-    [
-      0.18761,
-      "c"
-    ],
-    [
-      0.116227,
-      "k"
-    ],
-    [
-      0.143399,
-      "u \r\u001b[K"
-    ],
-    [
-      0.31621,
-      "p"
-    ],
-    [
-      0.174943,
-      "\rp "
-    ],
-    [
-      0.964699,
-      "-"
-    ],
-    [
-      1.23368,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.003628,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000824,
-      "\u001b]2;sudo dd if=/dev/sdx bs=10M | borg create --progress --stats ::specialbackup\u0007\u001b]1;dd\u0007"
-    ],
-    [
-      0.023411,
-      "[sudo] password for rugk: "
-    ],
-    [
-      3.286582,
-      "\r\n"
-    ],
-    [
-      0.077852,
-      "Initializing cache transaction: Reading config                                \r"
-    ],
-    [
-      0.000267,
-      "Initializing cache transaction: Reading chunks                                \r"
-    ],
-    [
-      0.000293,
-      "Initializing cache transaction: Reading files                                 \r"
-    ],
-    [
-      0.00045,
-      "                                                                              \r"
-    ],
-    [
-      0.083816,
-      "8.39 MB O 34.25 kB C 34.25 kB D 0 N stdin                                     \r"
-    ],
-    [
-      0.228267,
-      "41.94 MB O 166.40 kB C 100.50 kB D 0 N stdin                                  \r"
-    ],
-    [
-      0.216716,
-      "75.50 MB O 298.20 kB C 100.50 kB D 0 N stdin                                  \r"
-    ],
-    [
-      0.218476,
-      "109.05 MB O 430.00 kB C 100.50 kB D 0 N stdin                                 \r"
-    ],
-    [
-      0.219164,
-      "142.61 MB O 562.12 kB C 133.77 kB D 0 N stdin                                 \r"
-    ],
-    [
-      0.216368,
-      "176.16 MB O 693.92 kB C 133.77 kB D 0 N stdin                                 \r"
-    ],
-    [
-      0.222311,
-      "209.72 MB O 825.72 kB C 133.77 kB D 0 N stdin                                 \r"
-    ],
-    [
-      0.217156,
-      "243.27 MB O 957.52 kB C 133.77 kB D 0 N stdin                                 \r"
-    ],
-    [
-      0.22399,
-      "276.82 MB O 1.09 MB C 166.77 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.223827,
-      "310.38 MB O 1.22 MB C 166.77 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.220959,
-      "343.93 MB O 1.35 MB C 166.77 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.223439,
-      "377.49 MB O 1.48 MB C 166.77 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.226226,
-      "411.04 MB O 1.62 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.239743,
-      "444.60 MB O 1.75 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.229508,
-      "478.15 MB O 1.88 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.220491,
-      "511.71 MB O 2.01 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.2504,
-      "545.26 MB O 2.14 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.241044,
-      "578.81 MB O 2.28 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.215372,
-      "612.37 MB O 2.41 MB C 200.04 kB D 0 N stdin                                   \r"
-    ],
-    [
-      0.113508,
-      "60+0 records in\r\n60+0 records out\r\n"
-    ],
-    [
-      3.9e-05,
-      "629145600 bytes (629 MB, 600 MiB) copied, 4.31277 s, 146 MB/s\r\n"
-    ],
-    [
-      0.231874,
-      "Compacting segments   0%                                                      \r"
-    ],
-    [
-      0.001188,
-      "Compacting segments  50%                                                      \r"
-    ],
-    [
-      3.7e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.078344,
-      "Saving chunks cache                                                           \r"
-    ],
-    [
-      0.000348,
-      "Saving cache config                                                           \r"
-    ],
-    [
-      0.087821,
-      "                                                                              \r"
-    ],
-    [
-      2.8e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.000346,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      2.2e-05,
-      "Archive name: specialbackup\r\n"
-    ],
-    [
-      9.7e-05,
-      "Archive fingerprint: 68e942cc4a48402e48ba87f4887c24e5b9fe06e881b0ca241c791810a108bec0\r\nTime (start): Sun, 2017-07-16 18:52:58\r\n"
-    ],
-    [
-      0.000133,
-      "Time (end):   Sun, 2017-07-16 18:53:05\r\nDuration: 6.99 seconds\r\n"
-    ],
-    [
-      1.3e-05,
-      "Number of files: 1\r\n"
-    ],
-    [
-      2.2e-05,
-      "Utilization of maximum supported archive size: 0%\r\n"
-    ],
-    [
-      7.3e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      1.1e-05,
-      "                       Original size      Compressed size    Deduplicated size\r\n"
-    ],
-    [
-      2.7e-05,
-      "This archive:              629.15 MB              2.47 MB            234.02 kB\r\n"
-    ],
-    [
-      3.3e-05,
-      "All archives:                2.50 GB              1.87 GB            570.15 MB\r\n"
-    ],
-    [
-      3.3e-05,
-      "\r\n"
-    ],
-    [
-      3.3e-05,
-      "                       Unique chunks         Total chunks\r\n"
-    ],
-    [
-      2.4e-05,
-      "Chunk index:                    1032                 3380\r\n"
-    ],
-    [
-      2.4e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      0.047256,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001383,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001024,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ "
-    ],
-    [
-      7e-06,
-      "\u001b[K"
-    ],
-    [
-      7.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00021,
-      "\u001b[?2004h"
-    ],
-    [
-      3.669021,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000291,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000719,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001178,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.0009,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00022,
-      "\u001b[?2004h"
-    ],
-    [
-      0.311851,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.290767,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.23476,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mL\u001b[0m\u001b[39m"
-    ],
-    [
-      0.188456,
-      "\b\u001b[1mL\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.139916,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.522516,
-      "\b\u001b[1mt\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157443,
-      "\b\u001b[1m'\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.460729,
-      "\b\u001b[1ms\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.1201,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.324466,
-      "\b\u001b[1mc\u001b[1montinue with some simple things:\u001b[0m\u001b[39m"
-    ],
-    [
-      0.634167,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000434,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.0006,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00124,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001113,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00012,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000136,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000274,
-      "\u001b[?2004h"
-    ],
-    [
-      1.724466,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.116327,
-      "\b\u001b[1m#\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.26172,
-      "\b\b\u001b[1m#\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.250198,
-      "\b\u001b[1m \u001b[1mU\u001b[0m\u001b[39m"
-    ],
-    [
-      0.746624,
-      "\b\u001b[1mU\u001b[1mSEFUL COMMANDS ##\u001b[0m\u001b[39m"
-    ],
-    [
-      0.5602,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001411,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001009,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.003137,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002454,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000167,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000157,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000746,
-      "\u001b[?2004h"
-    ],
-    [
-      1.207899,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000322,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000472,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001289,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000891,
-      "\u001b]7;\u0007"
-    ],
-
-    [
-      9.5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ "
-    ],
-    [
-      1.8e-05,
-      "\u001b[K"
-    ],
-    [
-      0.000115,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000246,
-      "\u001b[?2004h"
-    ],
-    [
-      0.734707,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.247085,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.182467,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mY\u001b[0m\u001b[39m"
-    ],
-    [
-      0.123582,
-      "\b\u001b[1mY\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.16343,
-      "\b\u001b[1mo\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.183388,
-      "\b\u001b[1mu\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.083055,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.187526,
-      "\b\u001b[1mc\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.130988,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.142246,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.145489,
-      "\b\u001b[1m \u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132155,
-      "\b\u001b[1ms\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.192915,
-      "\b\u001b[1mh\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.142644,
-      "\b\u001b[1mo\u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.149707,
-      "\b\u001b[1mw\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.134515,
-      "\b\u001b[1m \u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.085942,
-      "\b\u001b[1ms\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.160772,
-      "\b\u001b[1mo\u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132016,
-      "\b\u001b[1mm\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.219601,
-      "\b\u001b[1me\u001b[1m information about an archive. You can even do it without \u001b[1mn\u001b[1meeding to specify the archive name:\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      0.644657,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000392,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000705,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001347,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001099,
-      "\u001b]7;\u0007"
-    ],
-    [
-      4.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.0001,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000372,
-      "\u001b[?2004h"
-    ],
-    [
-      2.264862,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.182056,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.083939,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.152072,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.142791,
-      " "
-    ],
-    [
-      0.224315,
-      "i"
-    ],
-    [
-      0.130651,
-      "n"
-    ],
-    [
-      0.100647,
-      "f"
-    ],
-    [
-      0.155636,
-      "o"
-    ],
-    [
-      0.716063,
-      " "
-    ],
-    [
-      0.736635,
-      ":"
-    ],
-    [
-      0.107352,
-      ":"
-    ],
-    [
-      0.289804,
-      " "
-    ],
-    [
-      0.436564,
-      "-"
-    ],
-    [
-      0.131871,
-      "-"
-    ],
-    [
-      0.824072,
-      "l"
-    ],
-    [
-      0.061945,
-      "a"
-    ],
-    [
-      0.136723,
-      "s"
-    ],
-    [
-      0.143197,
-      "t"
-    ],
-    [
-      0.186833,
-      " "
-    ],
-    [
-      0.125784,
-      "1"
-    ],
-    [
-      0.924568,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.002555,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00096,
-      "\u001b]2;borg info :: --last 1\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.693043,
-      "Archive name: specialbackup\r\nArchive fingerprint: 68e942cc4a48402e48ba87f4887c24e5b9fe06e881b0ca241c791810a108bec0\r\nComment: \r\nHostname: tux\r\nUsername: rugk\r\nTime (start): Sun, 2017-07-16 18:52:58\r\nTime (end): Sun, 2017-07-16 18:53:05\r\nDuration: 6.99 seconds\r\nNumber of files: 1\r\nCommand line: borg create --progress --stats ::specialbackup -\r\nUtilization of maximum supported archive size: 0%\r\n------------------------------------------------------------------------------\r\n                       Original size      Compressed size    Deduplicated size\r\nThis archive:              629.15 MB              2.47 MB            234.02 kB\r\nAll archives:                2.50 GB              1.87 GB            570.15 MB\r\n\r\n                       Unique chunks         Total chunks\r\nChunk index:                    1032                 3380\r\n"
-    ],
-    [
-      0.045207,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001204,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000923,
-      "\u001b]7;\u0007"
-    ],
-    [
-      3.5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000129,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000196,
-      "\u001b[?2004h"
-    ],
-    [
-      1.70302,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000314,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000475,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001262,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00098,
-      "\u001b]7;\u0007"
-    ],
-    [
-      4.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000164,
-      "\u001b[?2004h"
-    ],
-    [
-      0.281651,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.234109,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.181326,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mS\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12398,
-      "\b\u001b[1mS\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.166912,
-      "\b\u001b[1mo\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.490114,
-      "\b\u001b[1m \u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.160581,
-      "\b\u001b[1ml\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.148283,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.453708,
-      "\b\u001b[1mt\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.118956,
-      "\b\u001b[1m'\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.125062,
-      "\b\u001b[1ms\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.130519,
-      "\b\u001b[1m \u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.130132,
-      "\b\u001b[1mr\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.265033,
-      "\b\u001b[1me\u001b[1mname our last archive:\u001b[0m\u001b[39m"
-    ],
-    [
-      1.001935,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000416,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.0006,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00114,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000898,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000286,
-      "\u001b[?2004h"
-    ],
-    [
-      1.253113,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.202007,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.105752,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.134948,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.14764,
-      " "
-    ],
-    [
-      0.157682,
-      "r"
-    ],
-    [
-      0.124491,
-      "e"
-    ],
-    [
-      0.118993,
-      "n"
-    ],
-    [
-      0.140445,
-      "a"
-    ],
-    [
-      0.101365,
-      "m"
-    ],
-    [
-      0.115953,
-      "e"
-    ],
-    [
-      1.107064,
-      " "
-    ],
-    [
-      0.561405,
-      ":"
-    ],
-    [
-      0.103305,
-      ":"
-    ],
-    [
-      0.263633,
-      "s"
-    ],
-    [
-      0.142089,
-      "p"
-    ],
-    [
-      0.134253,
-      "e"
-    ],
-    [
-      0.240688,
-      "c"
-    ],
-    [
-      0.136782,
-      "i"
-    ],
-    [
-      0.128372,
-      "a"
-    ],
-    [
-      0.170065,
-      "l"
-    ],
-    [
-      0.592209,
-      "b"
-    ],
-    [
-      0.348417,
-      "a"
-    ],
-    [
-      0.210896,
-      "c"
-    ],
-    [
-      0.259528,
-      "k"
-    ],
-    [
-      0.171523,
-      "u"
-    ],
-    [
-      0.245786,
-      "p"
-    ],
-    [
-      0.582735,
-      " "
-    ],
-    [
-      0.568884,
-      "b"
-    ],
-    [
-      0.101982,
-      "a"
-    ],
-    [
-      0.162673,
-      "c"
-    ],
-    [
-      0.104218,
-      "k"
-    ],
-    [
-      0.132828,
-      "u"
-    ],
-    [
-      0.245157,
-      "p"
-    ],
-    [
-      0.266242,
-      "-"
-    ],
-    [
-      0.316388,
-      "b"
-    ],
-    [
-      0.43535,
-      "l"
-    ],
-    [
-      0.133908,
-      "o"
-    ],
-    [
-      0.047013,
-      "c"
-    ],
-    [
-      0.622041,
-      "k"
-    ],
-    [
-      0.82215,
-      "-"
-    ],
-    [
-      0.183882,
-      "d"
-    ],
-    [
-      0.189034,
-      "e"
-    ],
-    [
-      0.181902,
-      "v"
-    ],
-    [
-      0.18728,
-      "i"
-    ],
-    [
-      0.052242,
-      "c"
-    ],
-    [
-      0.160462,
-      "e"
-    ],
-    [
-      0.645053,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001146,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000741,
-      "\u001b]2;borg rename ::specialbackup backup-block-device\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      1.136038,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001149,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000968,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000107,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000193,
-      "\u001b[?2004h"
-    ],
-    [
-      1.203902,
-      "\u001b[32mborg\u001b[39m rename ::specialbackup backup-block-device"
-    ],
-    [
-      0.192203,
-      "\u001b[47D\u001b[1m#\u001b[1m \u001b[1mS\u001b[1mo\u001b[1m \u001b[1ml\u001b[1me\u001b[1mt\u001b[1m'\u001b[1ms\u001b[1m \u001b[1mr\u001b[1me\u001b[1mn\u001b[1ma\u001b[1mm\u001b[1me\u001b[1m \u001b[1mo\u001b[1mu\u001b[1mr\u001b[1m \u001b[1ml\u001b[1ma\u001b[1ms\u001b[1mt\u001b[1m \u001b[1ma\u001b[1mr\u001b[1mc\u001b[1mh\u001b[1mi\u001b[1mv\u001b[1me\u001b[1m:\u001b[0m\u001b[39m            \u001b[12D"
-    ],
-    [
-      0.528657,
-      "\u001b[35D\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[0m\u001b[32mg\u001b[39m\u001b[0m\u001b[39m \u001b[0m\u001b[39mi\u001b[0m\u001b[39mn\u001b[0m\u001b[39mf\u001b[0m\u001b[39mo\u001b[0m\u001b[39m \u001b[0m\u001b[39m:\u001b[0m\u001b[39m:\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39m-\u001b[0m\u001b[39ml\u001b[0m\u001b[39ma\u001b[0m\u001b[39ms\u001b[0m\u001b[39mt\u001b[0m\u001b[39m \u001b[0m\u001b[39m1\u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[14D"
-    ],
-    [
-      0.548884,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.003595,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000857,
-      "\u001b]2;borg info :: --last 1\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.689879,
-      "Archive name: backup-block-device\r\nArchive fingerprint: 5fd9732b4809252742a7cb3fadf2a971dd6371afd11a07944c0b5803d57c240f\r\nComment: \r\nHostname: tux\r\nUsername: rugk\r\nTime (start): Sun, 2017-07-16 18:52:58\r\nTime (end): Sun, 2017-07-16 18:53:05\r\nDuration: 6.99 seconds\r\nNumber of files: 1\r\nCommand line: borg create --progress --stats ::specialbackup -\r\nUtilization of maximum supported archive size: 0%\r\n------------------------------------------------------------------------------\r\n                       Original size      Compressed size    Deduplicated size\r\nThis archive:              629.15 MB              2.47 MB            234.04 kB\r\nAll archives:                2.50 GB              1.87 GB            570.15 MB\r\n\r\n                       Unique chunks         Total chunks\r\nChunk index:                    1032                 3380\r\n"
-    ],
-    [
-      0.044772,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001259,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001013,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000109,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000191,
-      "\u001b[?2004h"
-    ],
-    [
-      2.415375,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000379,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000632,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001347,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001044,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000101,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000183,
-      "\u001b[?2004h"
-    ],
-    [
-      0.412865,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.250988,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.245192,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.706056,
-      "\b\u001b[1mA\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.273409,
-      "\b\u001b[1m \u001b[1mv\u001b[0m\u001b[39m"
-    ],
-    [
-      0.194462,
-      "\b\u001b[1mv\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.114445,
-      "\b\u001b[1me\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.097756,
-      "\b\u001b[1mr\u001b[1my\u001b[0m\u001b[39m"
-    ],
-    [
-      0.149155,
-      "\b\u001b[1my\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.258303,
-      "\b\u001b[1m \u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.133528,
-      "\b\u001b[1mi\u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.225062,
-      "\b\u001b[1mm\u001b[1mp\u001b[0m\u001b[39m"
-    ],
-    [
-      0.352638,
-      "\b\u001b[1mp\u001b[1mortant step if you choose keyfile mode (where the keyfile is onl\u001b[1my\u001b[1m saved locally) is to export your keyfile and possibly print it, etc.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.170303,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000524,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000714,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001487,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001303,
-      "\u001b]7;\u0007"
-    ],
-    [
-      3.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000291,
-      "\u001b[?2004h"
-    ],
-    [
-      2.080689,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.197142,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.172626,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145083,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.943024,
-      " "
-    ],
-    [
-      0.511742,
-      "k"
-    ],
-    [
-      0.274338,
-      "e"
-    ],
-    [
-      0.308416,
-      "y"
-    ],
-    [
-      0.568141,
-      " "
-    ],
-    [
-      0.62626,
-      "e"
-    ],
-    [
-      0.224255,
-      "x"
-    ],
-    [
-      2.028973,
-      "p"
-    ],
-    [
-      0.220629,
-      "o"
-    ],
-    [
-      0.395617,
-      "r"
-    ],
-    [
-      0.127004,
-      "t"
-    ],
-    [
-      0.635262,
-      " "
-    ],
-    [
-      0.728631,
-      ":"
-    ],
-    [
-      0.116567,
-      ":"
-    ],
-    [
-      0.347323,
-      " "
-    ],
-    [
-      1.713208,
-      "-"
-    ],
-    [
-      0.134471,
-      "-"
-    ],
-    [
-      0.298094,
-      "q"
-    ],
-    [
-      0.316108,
-      "r"
-    ],
-    [
-      0.373821,
-      "-"
-    ],
-    [
-      0.416623,
-      "c"
-    ],
-    [
-      0.400783,
-      "o"
-    ],
-    [
-      0.107762,
-      "d"
-    ],
-    [
-      0.134276,
-      "e"
-    ],
-    [
-      0.384438,
-      " "
-    ],
-    [
-      0.447909,
-      "f"
-    ],
-    [
-      0.162017,
-      "i"
-    ],
-    [
-      0.113187,
-      "l"
-    ],
-    [
-      0.069321,
-      "e"
-    ],
-    [
-      0.627894,
-      "."
-    ],
-    [
-      0.32877,
-      "h"
-    ],
-    [
-      0.137354,
-      "t"
-    ],
-    [
-      0.181468,
-      "m"
-    ],
-    [
-      0.156847,
-      "l"
-    ],
-    [
-      0.434616,
-      " "
-    ],
-    [
-      0.906636,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.546016,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      1.755972,
-      "\b\u001b[1m \u001b[1mthis creates a nice HTML, but when \u001b[1my\u001b[1mou want something simpler…\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.940038,
-      "\b\b\u001b[1mr\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      0.691374,
-      "\b\b\u001b[1me\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.501031,
-      "\b\b\u001b[1ml\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.0295,
-      "\b\b\u001b[1mp\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029695,
-      "\b\b\u001b[1mm\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029437,
-      "\b\b\u001b[1mi\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03032,
-      "\b\b\u001b[1ms\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029433,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030373,
-      "\b\b\u001b[1mg\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029337,
-      "\b\b\u001b[1mn\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.031058,
-      "\b\b\u001b[1mi\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029329,
-      "\b\b\u001b[1mh\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.031142,
-      "\b\b\u001b[1mt\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029181,
-      "\b\b\u001b[1me\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029786,
-      "\b\b\u001b[1mm\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030603,
-      "\b\b\u001b[1mo\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029332,
-      "\b\b\u001b[1ms\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030813,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029428,
-      "\b\b\u001b[1mt\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029368,
-      "\b\b\u001b[1mn\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030166,
-      "\b\b\u001b[1ma\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030524,
-      "\b\b\u001b[1mw\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029333,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030607,
-      "\b\b\u001b[1mu\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029346,
-      "\r\u001b[1my\u001b[1mo\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.031102,
-      "\r\u001b[1my\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029544,
-      "\u001b[A\u001b[76C\u001b[1m \u001b[0m\u001b[39m \u001b[K\r"
-    ],
-    [
-      0.029675,
-      "\u001b[A\u001b[76C\u001b[1mn\u001b[0m\u001b[39m\u001b[K\u001b[1B\r\u001b[K\u001b[A\u001b[77C"
-    ],
-    [
-      0.030809,
-      "\b\b\u001b[1me\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.02987,
-      "\b\b\u001b[1mh\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029707,
-      "\b\b\u001b[1mw\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029901,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03057,
-      "\b\b\u001b[1mt\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029469,
-      "\b\b\u001b[1mu\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030219,
-      "\b\b\u001b[1mb\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029227,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030465,
-      "\b\b\u001b[1m,\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029423,
-      "\b\b\u001b[1mL\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030292,
-      "\b\b\u001b[1mM\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030715,
-      "\b\b\u001b[1mT\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029641,
-      "\b\b\u001b[1mH\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029367,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.031235,
-      "\b\b\u001b[1me\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030119,
-      "\b\b\u001b[1mc\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030061,
-      "\b\b\u001b[1mi\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030102,
-      "\b\b\u001b[1mn\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029384,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029499,
-      "\b\b\u001b[1ma\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03047,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03019,
-      "\b\b\u001b[1ms\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029337,
-      "\b\b\u001b[1me\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030138,
-      "\b\b\u001b[1mt\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030049,
-      "\b\b\u001b[1ma\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030132,
-      "\b\b\u001b[1me\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029948,
-      "\b\b\u001b[1mr\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029428,
-      "\b\b\u001b[1mc\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030197,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.030196,
-      "\b\b\u001b[1ms\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03118,
-      "\b\b\u001b[1mi\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.028165,
-      "\b\b\u001b[1mh\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03128,
-      "\b\b\u001b[1mt\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.029716,
-      "\b\b\u001b[1m \u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.03012,
-      "\b\b\u001b[1m#\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.346808,
-      "\b\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.19843,
-      "\b"
-    ],
-    [
-      0.307235,
-      "\b \b"
-    ],
-    [
-      0.499683,
-      "\b \b"
-    ],
-    [
-      0.028468,
-      "\b \b"
-    ],
-    [
-      0.029472,
-      "\b \b"
-    ],
-    [
-      0.030565,
-      "\b \b"
-    ],
-    [
-      0.029224,
-      "\b \b"
-    ],
-    [
-      0.030493,
-      "\b \b"
-    ],
-    [
-      0.030666,
-      "\b \b"
-    ],
-    [
-      0.029185,
-      "\b \b"
-    ],
-    [
-      0.02989,
-      "\b"
-    ],
-    [
-      0.029921,
-      "\b \b"
-    ],
-    [
-      0.029657,
-      "\b \b"
-    ],
-    [
-      0.154399,
-      "\b \b"
-    ],
-    [
-      0.165915,
-      "\b \b"
-    ],
-    [
-      0.154316,
-      "\b \b"
-    ],
-    [
-      0.154588,
-      "\b \b"
-    ],
-    [
-      0.147868,
-      "\b \b"
-    ],
-    [
-      1.555865,
-      "p"
-    ],
-    [
-      0.446126,
-      "a"
-    ],
-    [
-      0.188714,
-      "p"
-    ],
-    [
-      0.252833,
-      "e"
-    ],
-    [
-      0.142044,
-      "r"
-    ],
-    [
-      0.395895,
-      " "
-    ],
-    [
-      0.423453,
-      "\u001b[1m# this is a \"manual input\"-only backup (but it is\u001b[1m \u001b[1malso included in the --qr-code option)\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      3.71528,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001413,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000757,
-      "\u001b]2;borg key export :: --paper\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.550352,
-      "To restore key use borg key import --paper /path/to/repo\r\n\r\nBORG PAPER KEY v1\r\nid: 20 / 54f957 2d6d72 de8280 / 158a57 45bdc3 - f6\r\n 1: 86a961 6c676f 726974 686da6 736861 323536 - 14\r\n 2: a46461 7461da 00def1 7c9f3c 81ebc6 730a05 - 35\r\n 3: 12453e d02760 ffdeef 4d0daa 231d81 ae10d8 - e5\r\n 4: 7bb0a1 97c30f 312b61 7170ba d1ea91 da2c88 - 30\r\n 5: ca997e 177b74 38f906 709a66 fbf013 40ab3d - c4\r\n 6: 6af94b 8a36a9 e07b9d b0e08d 3935cd f1bbb9 - 5c\r\n 7: 2b10b6 ebb586 4c0967 f682b9 c64358 fbb63c - a4\r\n 8: b9fc94 240d08 072524 98b619 7bd1c5 21094e - ec\r\n 9: ac4f05 d65a6a 7f8a0d 8cc14e 405b36 c248e1 - 79\r\n10: d23b89 c61074 3e68c9 79c683 2384e8 cd9f82 - 50\r\n11: fc76a9 3f2a9e 05d5f1 313f95 ec4313 53e0c1 - 4a\r\n12: 654f1d ab2b51 2ccbe8 80be07 b6132f 86aeb5 - 11\r\n13: 7e6e48 5ff0d4 41e659 a421f0 5123df f88dff - c9\r\n14: 03db58 bbb410 87d7fc 075b14 5108a4 686173 - 9a\r\n15: 68da00 20524b 8769e9 e5bd18 a9b431 c05b49 - ba\r\n16: 505280 9b104a b081c0 f4efd1 1d3771 34c701 - 40\r\n17: aa6974 657261 74696f 6e73ce 000186 a0a473 - 15\r\n18: 616c7"
-    ],
-    [
-      7.2e-05,
-      "4 da0020 0be74e e1e9af 7b1364 3ee362 - 32\r\n19: 643069 b57a75 d30eb6 104c28 367e17 7dd4d9 - 79\r\n20: f556a7 766572 73696f 6e01 - 32\r\n\r\n"
-    ],
-    [
-      0.048873,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001193,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000921,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000185,
-      "\u001b[?2004h"
-    ],
-    [
-      3.146565,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000424,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000795,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001307,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001444,
-      "\u001b]7;\u0007"
-    ],
-    [
-      8.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.00011,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000263,
-      "\u001b[?2004h"
-    ],
-    [
-      0.441809,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136081,
-      "\b\u001b[1m#\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.375389,
-      "\b\b\u001b[1m#\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.284554,
-      "\b\u001b[1m \u001b[1mM\u001b[0m\u001b[39m"
-    ],
-    [
-      0.395833,
-      "\b\u001b[1mM\u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.434316,
-      "\b\u001b[1mA\u001b[1mINTENANCE ##\u001b[0m\u001b[39m"
-    ],
-    [
-      1.471226,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.00055,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000605,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001464,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00092,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000104,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000309,
-      "\u001b[?2004h"
-    ],
-    [
-      0.977805,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000452,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000828,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001436,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001464,
-      "\u001b]7;\u0007"
-    ],
-    [
-      3.8e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000171,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000247,
-      "\u001b[?2004h"
-    ],
-    [
-      0.221358,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.374414,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.189751,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mS\u001b[0m\u001b[39m"
-    ],
-    [
-      0.087275,
-      "\b\u001b[1mS\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.140008,
-      "\b\u001b[1mo\u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.150891,
-      "\b\u001b[1mm\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.387855,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.204067,
-      "\b\u001b[1mt\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.127209,
-      "\b\u001b[1mi\u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.073999,
-      "\b\u001b[1mm\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.130356,
-      "\b\u001b[1me\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.224406,
-      "\b\u001b[1ms\u001b[1m backups get broken or we want a regular \"checkup\" that everythin\u001b[1mg\u001b[1m is okay…\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.361948,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000402,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000743,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001212,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000923,
-      "\u001b]7;\u0007"
-    ],
-    [
-      1.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000321,
-      "\u001b[?2004h"
-    ],
-    [
-      2.246766,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.18622,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.121068,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.146401,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.255479,
-      " "
-    ],
-    [
-      0.268833,
-      "c"
-    ],
-    [
-      0.154418,
-      "h"
-    ],
-    [
-      0.106649,
-      "e"
-    ],
-    [
-      0.142762,
-      "c"
-    ],
-    [
-      0.306359,
-      "k"
-    ],
-    [
-      0.697455,
-      " "
-    ],
-    [
-      1.113236,
-      "-"
-    ],
-    [
-      0.768765,
-      "v"
-    ],
-    [
-      0.477353,
-      " "
-    ],
-    [
-      0.387303,
-      ":"
-    ],
-    [
-      0.102251,
-      ":"
-    ],
-    [
-      0.749971,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001961,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000798,
-      "\u001b]2;borg check -v ::\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.54272,
-      "Starting repository check\r\n"
-    ],
-    [
-      1.152819,
-      "Starting repository index check\r\n"
-    ],
-    [
-      0.00038,
-      "Completed repository check, no problems found.\r\n"
-    ],
-    [
-      0.000129,
-      "Starting archive consistency check...\r\n"
-    ],
-    [
-      0.095799,
-      "Analyzing archive backup1 (1/6)\r\n"
-    ],
-    [
-      0.109358,
-      "Analyzing archive backup2 (2/6)\r\n"
-    ],
-    [
-      0.036555,
-      "Analyzing archive backup3 (3/6)\r\n"
-    ],
-    [
-      0.03649,
-      "Analyzing archive rugk-2017-07-16T18:51:34 (4/6)\r\n"
-    ],
-    [
-      0.000491,
-      "Analyzing archive rugk-2017-07-16T18:52:19 (5/6)\r\n"
-    ],
-    [
-      0.000729,
-      "Analyzing archive backup-block-device (6/6)\r\n"
-    ],
-    [
-      0.00119,
-      "Archive consistency check complete, no problems found.\r\n"
-    ],
-    [
-      0.081895,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001153,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000924,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000108,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00022,
-      "\u001b[?2004h"
-    ],
-    [
-      2.243609,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000511,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000535,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001789,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00157,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000139,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.7e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00033,
-      "\u001b[?2004h"
-    ],
-    [
-      0.326751,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.24289,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.285802,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.191158,
-      "\b\u001b[1mN\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184029,
-      "\b\u001b[1me\u001b[1mx\u001b[0m\u001b[39m"
-    ],
-    [
-      0.16373,
-      "\b\u001b[1mx\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.239936,
-      "\b\u001b[1mt\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.27885,
-      "\b\u001b[1m \u001b[1mp\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12665,
-      "\b\u001b[1mp\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.154792,
-      "\b\u001b[1mr\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.372203,
-      "\b\u001b[1mo\u001b[1mblem: Usually you do not have infinite disk space. So you may need\u001b[1m \u001b[1mto prune your archive…\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.956234,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000446,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000607,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001281,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000983,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000142,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00032,
-      "\u001b[?2004h"
-    ],
-    [
-      1.137641,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.26675,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.151609,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mY\u001b[0m\u001b[39m"
-    ],
-    [
-      0.11765,
-      "\b\u001b[1mY\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.158458,
-      "\b\u001b[1mo\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.149615,
-      "\b\u001b[1mu\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.080657,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.144379,
-      "\b\u001b[1mc\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.104266,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132218,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.202965,
-      "\b\u001b[1m \u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.17807,
-      "\b\u001b[1mt\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.123814,
-      "\b\u001b[1mu\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.325016,
-      "\b\u001b[1mn\u001b[1me this in every detail. See the docs for details. Here only a s\u001b[1mi\u001b[1mmple example:\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.91505,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000406,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000684,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001347,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001084,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000116,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000118,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000246,
-      "\u001b[?2004h"
-    ],
-    [
-      2.556304,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.198214,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.125589,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.147156,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.202848,
-      " "
-    ],
-    [
-      0.369539,
-      "p"
-    ],
-    [
-      0.228714,
-      "r"
-    ],
-    [
-      0.184236,
-      "u"
-    ],
-    [
-      0.154014,
-      "n"
-    ],
-    [
-      0.136362,
-      "e"
-    ],
-    [
-      0.94169,
-      " "
-    ],
-    [
-      0.44829,
-      "-"
-    ],
-    [
-      0.112062,
-      "-"
-    ],
-    [
-      0.37454,
-      "l"
-    ],
-    [
-      0.157195,
-      "i"
-    ],
-    [
-      0.116633,
-      "s"
-    ],
-    [
-      0.193515,
-      "t"
-    ],
-    [
-      0.486369,
-      " "
-    ],
-    [
-      0.442107,
-      "-"
-    ],
-    [
-      0.12257,
-      "-"
-    ],
-    [
-      0.403774,
-      "k"
-    ],
-    [
-      0.214488,
-      "e"
-    ],
-    [
-      0.771743,
-      "e"
-    ],
-    [
-      0.349591,
-      "p"
-    ],
-    [
-      0.352253,
-      "-"
-    ],
-    [
-      0.201267,
-      "l"
-    ],
-    [
-      0.109728,
-      "a"
-    ],
-    [
-      0.146296,
-      "s"
-    ],
-    [
-      0.130476,
-      "t"
-    ],
-    [
-      0.234998,
-      " "
-    ],
-    [
-      0.264266,
-      "1"
-    ],
-    [
-      0.429572,
-      " "
-    ],
-    [
-      0.505667,
-      "-"
-    ],
-    [
-      0.105697,
-      "-"
-    ],
-    [
-      0.294354,
-      "d"
-    ],
-    [
-      0.178175,
-      "r"
-    ],
-    [
-      0.239011,
-      "y"
-    ],
-    [
-      0.561933,
-      "-"
-    ],
-    [
-      0.220564,
-      "r"
-    ],
-    [
-      0.172983,
-      "u"
-    ],
-    [
-      0.138969,
-      "n"
-    ],
-    [
-      0.891028,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.004152,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000975,
-      "\u001b]2;borg prune --list --keep-last 1 --dry-run\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.658906,
-      "Keeping archive: backup-block-device                  Sun, 2017-07-16 18:52:58 [5fd9732b4809252742a7cb3fadf2a971dd6371afd11a07944c0b5803d57c240f]\r\n"
-    ],
-    [
-      0.000155,
-      "Would prune:     rugk-2017-07-16T18:52:19             Sun, 2017-07-16 18:52:19 [0de98f590b004ad7545f2013c4c9f2d4e3eed1415d177c89d6c2b7ff05918d2e]\r\n"
-    ],
-    [
-      0.000118,
-      "Would prune:     rugk-2017-07-16T18:51:34             Sun, 2017-07-16 18:51:34 [d054cc411324d4bd848b39d1c9cad909073f9ff1a1a503a676d3e050be140396]\r\n"
-    ],
-    [
-      6.5e-05,
-      "Would prune:     backup3                              Fri, 2017-07-14 21:55:37 [36cd8fdf9b8b2e3bbb3fc2bb600acd48609efaf3a0880f900e0701a47ff69d4d]\r\n"
-    ],
-    [
-      7.1e-05,
-      "Would prune:     backup2                              Fri, 2017-07-14 21:54:56 [5aaf03d1c710cf774f9c9ff1c6317b621c14e519c6bac459f6d64b31e3bbd200]\r\n"
-    ],
-    [
-      7.1e-05,
-      "Would prune:     backup1                              Fri, 2017-07-14 21:54:06 [9758c7db339a066360bffad17b2ffac4fb368c6722c0be3a47a7a9b631f06407]\r\n"
-    ],
-    [
-      0.047362,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001109,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00093,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000163,
-      "\u001b[?2004h"
-    ],
-    [
-      2.173126,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.420696,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.658252,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mW\u001b[0m\u001b[39m"
-    ],
-    [
-      0.186236,
-      "\b\u001b[1mW\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.09843,
-      "\b\u001b[1mh\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.143515,
-      "\b\u001b[1me\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.153626,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.136407,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.170555,
-      "\b\u001b[1ma\u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157309,
-      "\b\u001b[1mc\u001b[1mtually executing it in a script, you have to use it without the --dry\u001b[1m-\u001b[1mrun option, of course.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.08243,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000512,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000552,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001375,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000922,
-      "\u001b]7;\u0007"
-    ],
-    [
-      3.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00026,
-      "\u001b[?2004h"
-    ],
-    [
-      1.169356,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000602,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000917,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001594,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001826,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000204,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000349,
-      "\u001b[?2004h"
-    ],
-    [
-      0.464206,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.135956,
-      "\b\u001b[1m#\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.484249,
-      "\b\b\u001b[1m#\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.299809,
-      "\b\u001b[1m \u001b[1mR\u001b[0m\u001b[39m"
-    ],
-    [
-      0.199072,
-      "\b\u001b[1mR\u001b[1mE\u001b[0m\u001b[39m"
-    ],
-    [
-      0.620669,
-      "\b\u001b[1mE\u001b[1mSTORE ##\u001b[0m\u001b[39m"
-    ],
-    [
-      0.924028,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000399,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000744,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001142,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000834,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000124,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000294,
-      "\u001b[?2004h"
-    ],
-    [
-      0.797042,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000325,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001543,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.002662,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001568,
-      "\u001b]7;\u0007"
-    ],
-    [
-      4.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000185,
-      "\u001b[?2004h"
-    ],
-    [
-      0.705049,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.50212,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      1.210452,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mW\u001b[0m\u001b[39m"
-    ],
-    [
-      0.1987,
-      "\b\u001b[1mW\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12116,
-      "\b\u001b[1mh\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.152173,
-      "\b\u001b[1me\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.16582,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.378037,
-      "\b\u001b[1m \u001b[1my\u001b[0m\u001b[39m"
-    ],
-    [
-      0.330829,
-      "\b\u001b[1my\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.180945,
-      "\b\u001b[1mo\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.152701,
-      "\b\u001b[1mu\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.121298,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.148067,
-      "\b\u001b[1mw\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.233865,
-      "\b\u001b[1ma\u001b[1mnt to see the diff between two archives use this command.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.947763,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000408,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000607,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001033,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000979,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000127,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000278,
-      "\u001b[?2004h"
-    ],
-    [
-      0.693036,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.275798,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.281158,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mE\u001b[0m\u001b[39m"
-    ],
-    [
-      0.386709,
-      "\b\u001b[1mE\u001b[1m.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136187,
-      "\b\u001b[1m.\u001b[1mg\u001b[0m\u001b[39m"
-    ],
-    [
-      0.262011,
-      "\b\u001b[1mg\u001b[1m.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.234889,
-      "\b\u001b[1m.\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.361971,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.162798,
-      "\b\u001b[1mw\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.077265,
-      "\b\u001b[1mh\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.148774,
-      "\b\u001b[1ma\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.34541,
-      "\b\u001b[1mt\u001b[1m happened between the first two backups?\u001b[0m\u001b[39m"
-    ],
-    [
-      1.295996,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000733,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001102,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001634,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000634,
-      "\u001b]7;\u0007"
-    ],
-    [
-      5.6e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000303,
-      "\u001b[?2004h"
-    ],
-    [
-      0.441685,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.182795,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.072867,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.161104,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.179655,
-      " "
-    ],
-    [
-      0.154676,
-      "d"
-    ],
-    [
-      0.132421,
-      "i"
-    ],
-    [
-      0.124239,
-      "f"
-    ],
-    [
-      0.13999,
-      "f"
-    ],
-    [
-      0.624444,
-      " "
-    ],
-    [
-      0.862302,
-      ":"
-    ],
-    [
-      0.1169,
-      ":"
-    ],
-    [
-      0.274626,
-      "b"
-    ],
-    [
-      0.100778,
-      "a"
-    ],
-    [
-      0.188526,
-      "c"
-    ],
-    [
-      0.097402,
-      "k"
-    ],
-    [
-      0.144999,
-      "u"
-    ],
-    [
-      0.22317,
-      "p"
-    ],
-    [
-      0.167969,
-      "1"
-    ],
-    [
-      0.44642,
-      " "
-    ],
-    [
-      0.240129,
-      "b"
-    ],
-    [
-      0.164579,
-      "a"
-    ],
-    [
-      0.190471,
-      "c"
-    ],
-    [
-      0.136211,
-      "k"
-    ],
-    [
-      0.12257,
-      "u"
-    ],
-    [
-      0.258587,
-      "p"
-    ],
-    [
-      0.215453,
-      "2"
-    ],
-    [
-      1.160869,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001983,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000801,
-      "\u001b]2;borg diff ::backup1 backup2\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.717522,
-      "added          20 B Wallpaper/newfile.txt\r\n"
-    ],
-    [
-      0.044186,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001157,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000949,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000108,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000147,
-      "\u001b[?2004h"
-    ],
-    [
-      1.545435,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.26435,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.178864,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.161899,
-      "\b\u001b[1mA\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.240289,
-      "\b\u001b[1mh\u001b[1m,\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132971,
-      "\b\u001b[1m,\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.115812,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.111227,
-      "\b\u001b[1mw\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.159647,
-      "\b\u001b[1me\u001b[1m added a file, right…\u001b[0m\u001b[39m"
-    ],
-    [
-      0.97686,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000441,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00091,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001031,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000995,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000141,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000303,
-      "\u001b[?2004h"
-    ],
-    [
-      6.370198,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000854,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000815,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.003101,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002831,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000107,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000314,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000499,
-      "\u001b[?2004h"
-    ],
-    [
-      0.580198,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.240323,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.29592,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.135389,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.115437,
-      "\b\u001b[1mh\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157526,
-      "\b\u001b[1me\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.624235,
-      "\b\u001b[1mr\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.282742,
-      "\b\u001b[1me\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.133006,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.206434,
-      "\b\u001b[1ma\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.13301,
-      "\b\u001b[1mr\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.255991,
-      "\b\u001b[1me\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.196416,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.275594,
-      "\b\u001b[1ma\u001b[1mlso other ways to extract the data.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.932018,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001354,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001071,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00297,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002675,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000154,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000231,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000895,
-      "\u001b[?2004h"
-    ],
-    [
-      1.021752,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.238058,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.245484,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mE\u001b[0m\u001b[39m"
-    ],
-    [
-      0.719467,
-      "\b\u001b[1mE\u001b[1m.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.151468,
-      "\b\u001b[1m.\u001b[1mg\u001b[0m\u001b[39m"
-    ],
-    [
-      0.183213,
-      "\b\u001b[1mg\u001b[1m.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.599958,
-      "\b\u001b[1m.\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.316279,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.166858,
-      "\b\u001b[1ma\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.551272,
-      "\b\u001b[1ms\u001b[1m a tar archive.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.938861,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000638,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000793,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001159,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000867,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000282,
-      "\u001b[?2004h"
-    ],
-    [
-      0.860998,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.189263,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.11245,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.133531,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.62438,
-      " "
-    ],
-    [
-      0.295845,
-      "e"
-    ],
-    [
-      0.165874,
-      "x"
-    ],
-    [
-      0.180501,
-      "p"
-    ],
-    [
-      0.166254,
-      "o"
-    ],
-    [
-      0.27793,
-      "r"
-    ],
-    [
-      0.113477,
-      "t"
-    ],
-    [
-      0.46559,
-      "-"
-    ],
-    [
-      0.34577,
-      "t"
-    ],
-    [
-      0.148398,
-      "a"
-    ],
-    [
-      0.17144,
-      "r"
-    ],
-    [
-      0.920527,
-      " "
-    ],
-    [
-      0.40208,
-      "-"
-    ],
-    [
-      0.108683,
-      "-"
-    ],
-    [
-      0.326944,
-      "p"
-    ],
-    [
-      0.195982,
-      "r"
-    ],
-    [
-      0.175632,
-      "o"
-    ],
-    [
-      0.229442,
-      "g"
-    ],
-    [
-      0.133505,
-      "r"
-    ],
-    [
-      0.171995,
-      "e"
-    ],
-    [
-      0.244119,
-      "s"
-    ],
-    [
-      0.154514,
-      "s"
-    ],
-    [
-      0.579295,
-      " "
-    ],
-    [
-      0.575201,
-      ":"
-    ],
-    [
-      0.112098,
-      ":"
-    ],
-    [
-      0.355392,
-      "b"
-    ],
-    [
-      0.110008,
-      "a"
-    ],
-    [
-      0.172393,
-      "c"
-    ],
-    [
-      0.080739,
-      "k"
-    ],
-    [
-      0.134163,
-      "u"
-    ],
-    [
-      0.221434,
-      "p"
-    ],
-    [
-      0.276712,
-      "2"
-    ],
-    [
-      0.6747,
-      " "
-    ],
-    [
-      0.372614,
-      "b"
-    ],
-    [
-      0.09319,
-      "a"
-    ],
-    [
-      0.152876,
-      "c"
-    ],
-    [
-      0.089531,
-      "k"
-    ],
-    [
-      0.150747,
-      "u"
-    ],
-    [
-      0.233879,
-      "p"
-    ],
-    [
-      0.273301,
-      "."
-    ],
-    [
-      0.354416,
-      "t"
-    ],
-    [
-      0.107034,
-      "a"
-    ],
-    [
-      0.144993,
-      "r"
-    ],
-    [
-      0.463039,
-      "."
-    ],
-    [
-      0.352906,
-      "g"
-    ],
-    [
-      0.133262,
-      "z"
-    ],
-    [
-      1.083854,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.004197,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001109,
-      "\u001b]2;borg export-tar --progress ::backup2 backup.tar.gz\u0007"
-    ],
-    [
-      4.7e-05,
-      "\u001b]1;borg\u0007"
-    ],
-    [
-      0.679042,
-      "Calculating size                                                              \r"
-    ],
-    [
-      0.036244,
-      "  0.0% Processing: Wallpaper/bigcollection/Macaws_USBingImage.jpg             \r"
-    ],
-    [
-      0.020857,
-      "  0.1% Processing: Wallpaper/bigcollection/_A...r_the_town_of_Herrischried.jpg\r"
-    ],
-    [
-      0.030544,
-      "  0.2% Processing: Wallpaper/bigcollection/_A...her_Atlas__Marokko____Doug.jpg\r"
-    ],
-    [
-      0.030864,
-      "  0.3% Processing: Wallpaper/bigcollection/_A...ssar__S_d-Sulawesi__Indone.jpg\r"
-    ],
-    [
-      0.030144,
-      "  0.4% Processing: Wallpaper/bigcollection/_A..._N_he_von_Timimoun__Algeri.jpg\r"
-    ],
-    [
-      0.027643,
-      "  0.5% Processing: Wallpaper/bigcollection/_A...t_kleinen__aus_Servietten_.jpg\r"
-    ],
-    [
-      0.03121,
-      "  0.6% Processing: Wallpaper/bigcollection/_A...g_Norderoog__small_island_.jpg\r"
-    ],
-    [
-      0.031343,
-      "  0.7% Processing: Wallpaper/bigcollection/_A...im_Snowdonia-Nationalpark_.jpg\r"
-    ],
-    [
-      0.031862,
-      "  0.8% Processing: Wallpaper/bigcollection/_A...l_an_einem_Wasserloch_im_Q.jpg\r"
-    ],
-    [
-      0.034847,
-      "  0.9% Processing: Wallpaper/bigcollection/_A...nten____James_HagerOffset_.jpg\r"
-    ],
-    [
-      0.033989,
-      "  1.0% Processing: Wallpaper/bigcollection/_A...nen__Masai_Mara_National_R.jpg\r"
-    ],
-    [
-      0.027388,
-      "  1.1% Processing: Wallpaper/bigcollection/_A...ard_im_Londolozi-Wildreser.jpg\r"
-    ],
-    [
-      0.026632,
-      "  1.2% Processing: Wallpaper/bigcollection/_A...orning_fog__Aidling__Pfaff.jpg\r"
-    ],
-    [
-      0.030864,
-      "  1.3% Processing: Wallpaper/bigcollection/_A...hutzgebiet_Lewa_Wildlife_C.jpg\r"
-    ],
-    [
-      0.029943,
-      "  1.4% Processing: Wallpaper/bigcollection/_A...in_Delhi__Indien____AirPan.jpg\r"
-    ],
-    [
-      0.035404,
-      "  1.5% Processing: Wallpaper/bigcollection/_A...morial_Gardens_in_den_Dand.jpg\r"
-    ],
-    [
-      0.030931,
-      "  1.6% Processing: Wallpaper/bigcollection/_A...rthumberland__England____A.jpg\r"
-    ],
-    [
-      0.035605,
-      "  1.7% Processing: Wallpaper/bigcollection/_A...berg__Bayern__Deutschland_.jpg\r"
-    ],
-    [
-      0.026827,
-      "  1.8% Processing: Wallpaper/bigcollection/_A...ns_am_Little_Missouri_Rive.jpg\r"
-    ],
-    [
-      0.030196,
-      "  1.9% Processing: Wallpaper/bigcollection/_A...toberfest_in_Munich__Ger 1.jpg\r"
-    ],
-    [
-      0.025763,
-      "  2.0% Processing: Wallpaper/bigcollection/_A...toberfest_in_Munich__Ger 2.jpg\r"
-    ],
-    [
-      0.025306,
-      "  2.1% Processing: Wallpaper/bigcollection/_A...toberfest_in_Munich__Ger 3.jpg\r"
-    ],
-    [
-      0.027286,
-      "  2.2% Processing: Wallpaper/bigcollection/_A...Oktoberfest_in_Munich__Ger.jpg\r"
-    ],
-    [
-      0.02806,
-      "  2.3% Processing: Wallpaper/bigcollection/_A..._Florida-Scheibenanemone__.jpg\r"
-    ],
-    [
-      0.032994,
-      "  2.4% Processing: Wallpaper/bigcollection/_A...n__Nationalpark_Ankarafant.jpg\r"
-    ],
-    [
-      0.033538,
-      "  2.5% Processing: Wallpaper/bigcollection/_A..._der_N_he_von_Page__Arizon.jpg\r"
-    ],
-    [
-      0.030034,
-      "  2.6% Processing: Wallpaper/bigcollection/_A...r_Inselgruppe_L_archipel_d.jpg\r"
-    ],
-    [
-      0.030477,
-      "  2.7% Processing: Wallpaper/bigcollection/_A...land____Hercules_MilasAlam.jpg\r"
-    ],
-    [
-      0.033376,
-      "  2.8% Processing: Wallpaper/bigcollection/_A...maguchiFlickr_OpenGetty_Im.jpg\r"
-    ],
-    [
-      0.032919,
-      "  2.9% Processing: Wallpaper/bigcollection/_A...imetersubmillimeter_Array_.jpg\r"
-    ],
-    [
-      0.027034,
-      "  4.7% Processing: Wallpaper/bigcollection/_B...rairie_Creek_Redwoods_Stat.jpg\r"
-    ],
-    [
-      0.034892,
-      "  4.8% Processing: Wallpaper/bigcollection/_B...__Montana__USA____Jeff_Kro.jpg\r"
-    ],
-    [
-      0.031042,
-      "  4.9% Processing: Wallpaper/bigcollection/_B...gatta__Golf_von_Triest__It.jpg\r"
-    ],
-    [
-      0.030521,
-      "  5.0% Processing: Wallpaper/bigcollection/_B...and__Schleswig-Holstein__D.jpg\r"
-    ],
-    [
-      0.028755,
-      "  5.1% Processing: Wallpaper/bigcollection/_B..._Islands__Irland____Bart_B.jpg\r"
-    ],
-    [
-      0.031129,
-      "  5.2% Processing: Wallpaper/bigcollection/_B...e_im_Glacier-Nationalpark_.jpg\r"
-    ],
-    [
-      0.032588,
-      "  5.3% Processing: Wallpaper/bigcollection/_B...Nationalpark_Bayerischer_W.jpg\r"
-    ],
-    [
-      0.025077,
-      "  5.4% Processing: Wallpaper/bigcollection/_B...Arena_bei_Nacht__Stockholm.jpg\r"
-    ],
-    [
-      0.027803,
-      "  5.5% Processing: Wallpaper/bigcollection/_B...ner_Fernsehturm_w_hrend_de.jpg\r"
-    ],
-    [
-      0.031262,
-      "  5.6% Processing: Wallpaper/bigcollection/_B...nd__Bayern__Deutschland_mi.jpg\r"
-    ],
-    [
-      0.031721,
-      "  5.7% Processing: Wallpaper/bigcollection/_B...er__Schwarzwald__Baden-W_r.jpg\r"
-    ],
-    [
-      0.032768,
-      "  5.8% Processing: Wallpaper/bigcollection/_B...ebirge_oberhalb_der_Dad_s-.jpg\r"
-    ],
-    [
-      0.030763,
-      "  5.9% Processing: Wallpaper/bigcollection/_B...ngerburgbahn__Innsbruck___.jpg\r"
-    ],
-    [
-      0.028673,
-      "  7.6% Processing: Wallpaper/bigcollection/_B...rn_des__Wilson_Stump___ein.jpg\r"
-    ],
-    [
-      0.029182,
-      "  7.7% Processing: Wallpaper/bigcollection/_B...t_Jefferson-Wildschutzgebi.jpg\r"
-    ],
-    [
-      0.029225,
-      " 11.2% Processing: Wallpaper/bigcollection/_B...Saloum-Delta__Senegal____B.jpg\r"
-    ],
-    [
-      0.030837,
-      " 11.3% Processing: Wallpaper/bigcollection/_B..._Venedig__Italien____Digit.jpg\r"
-    ],
-    [
-      0.034033,
-      " 11.4% Processing: Wallpaper/bigcollection/_B..._Koblenz_und_Trier__Rheinl.jpg\r"
-    ],
-    [
-      0.028958,
-      " 11.5% Processing: Wallpaper/bigcollection/_B..._Baden-W_rttemberg__Deutsc.jpg\r"
-    ],
-    [
-      0.025933,
-      " 11.6% Processing: Wallpaper/bigcollection/_B..._Bisingen__Baden-W_rttembe.jpg\r"
-    ],
-    [
-      0.030318,
-      " 11.7% Processing: Wallpaper/bigcollection/_B...in_Koknese__Lettland____An.jpg\r"
-    ],
-    [
-      0.029535,
-      " 11.8% Processing: Wallpaper/bigcollection/_C...__Deutschland____R_diger_H.jpg\r"
-    ],
-    [
-      0.032432,
-      " 11.9% Processing: Wallpaper/bigcollection/_C...Toulouse__D_partement_Haut.jpg\r"
-    ],
-    [
-      0.032966,
-      " 12.0% Processing: Wallpaper/bigcollection/_C...pring__Germany____Boris_St.jpg\r"
-    ],
-    [
-      0.024881,
-      " 12.1% Processing: Wallpaper/bigcollection/_C...pring__Germany____Boris_St.jpg\r"
-    ],
-    [
-      0.02818,
-      " 12.2% Processing: Wallpaper/bigcollection/_C...Mallorca__Balearische_Inse.jpg\r"
-    ],
-    [
-      0.029353,
-      " 12.3% Processing: Wallpaper/bigcollection/_C...A__ESA__N._Smith__Universi.jpg\r"
-    ],
-    [
-      0.03626,
-      " 12.4% Processing: Wallpaper/bigcollection/_C...gebr_cke_bei_Ballintoy__Co.jpg\r"
-    ],
-    [
-      0.025838,
-      " 12.5% Processing: Wallpaper/bigcollection/_C...gebr_cke_bei_Ballintoy__Co.jpg\r"
-    ],
-    [
-      0.027176,
-      " 12.6% Processing: Wallpaper/bigcollection/_C...lona__Spanien____Nora_De_A.jpg\r"
-    ],
-    [
-      0.0298,
-      " 12.7% Processing: Wallpaper/bigcollection/_C...rcia__Nationalpark_Monti_S.jpg\r"
-    ],
-    [
-      0.027672,
-      " 12.8% Processing: Wallpaper/bigcollection/_C...vinz_Potenza__Italien____F.jpg\r"
-    ],
-    [
-      0.032259,
-      " 12.9% Processing: Wallpaper/bigcollection/_C...semite-Nationalpark__Kalif.jpg\r"
-    ],
-    [
-      0.031451,
-      " 13.0% Processing: Wallpaper/bigcollection/_C...um_Ludwig__Cologne__German.jpg\r"
-    ],
-    [
-      0.030096,
-      " 13.1% Processing: Wallpaper/bigcollection/_C..._Ludwig__Cologne__North_ 1.jpg\r"
-    ],
-    [
-      0.028235,
-      " 15.1% Processing: Wallpaper/bigcollection/_D...n_Hannover_bei_Nacht____Ma.jpg\r"
-    ],
-    [
-      0.028761,
-      " 15.2% Processing: Wallpaper/bigcollection/_D...rieb_befindliche_Opernhaus.jpg\r"
-    ],
-    [
-      0.027439,
-      " 15.3% Processing: Wallpaper/bigcollection/_D...esert_View_Watchtower__Gra.jpg\r"
-    ],
-    [
-      0.028598,
-      " 15.4% Processing: Wallpaper/bigcollection/_D..._Provinz_Shaanxi__Volksrep.jpg\r"
-    ],
-    [
-      0.031617,
-      " 15.5% Processing: Wallpaper/bigcollection/_D...gr__t_den_Hund_Sudo_in_Mel.jpg\r"
-    ],
-    [
-      0.032865,
-      " 17.5% Processing: Wallpaper/bigcollection/_D...s_du_Tarn__Nationalpark_Ce.jpg\r"
-    ],
-    [
-      0.031736,
-      " 17.6% Processing: Wallpaper/bigcollection/_D..._he_von_Sens__D_partement_.jpg\r"
-    ],
-    [
-      0.030474,
-      " 17.7% Processing: Wallpaper/bigcollection/_D...__Wales__Vereinigtes_K_nig.jpg\r"
-    ],
-    [
-      0.026112,
-      " 20.5% Processing: Wallpaper/bigcollection/_E...Junges_schnuppert_an_einer.jpg\r"
-    ],
-    [
-      0.027898,
-      " 20.6% Processing: Wallpaper/bigcollection/_E...chen_versteckt_sich_in_ein.jpg\r"
-    ],
-    [
-      0.027202,
-      " 20.7% Processing: Wallpaper/bigcollection/_E...r_Frosch_in_einem_Wassertr.jpg\r"
-    ],
-    [
-      0.027615,
-      " 20.8% Processing: Wallpaper/bigcollection/_E...ekorierter_Saguaro-Kaktus_.jpg\r"
-    ],
-    [
-      0.028446,
-      " 20.9% Processing: Wallpaper/bigcollection/_E...e__berquert_den_Luangwa-Fl.jpg\r"
-    ],
-    [
-      0.031808,
-      " 21.0% Processing: Wallpaper/bigcollection/_E...ngstunnel_zur_Felsenkirche.jpg\r"
-    ],
-    [
-      0.031065,
-      " 22.7% Processing: Wallpaper/bigcollection/_E...n_Koblenz_and_Trier__Germa.jpg\r"
-    ],
-    [
-      0.033059,
-      " 22.8% Processing: Wallpaper/bigcollection/_E...n_Angola_und_Namibia____Fr.jpg\r"
-    ],
-    [
-      0.035115,
-      " 22.9% Processing: Wallpaper/bigcollection/_E...r_Olympischen_Spiele_1896_.jpg\r"
-    ],
-    [
-      0.032507,
-      " 23.0% Processing: Wallpaper/bigcollection/_E..._Fr_hlingskrokus__Almwiese.jpg\r"
-    ],
-    [
-      0.028219,
-      " 23.1% Processing: Wallpaper/bigcollection/_E...in_der_Meeresbucht_Cathedr.jpg\r"
-    ],
-    [
-      0.029551,
-      " 23.2% Processing: Wallpaper/bigcollection/_E..._Nationalpark_Bayerischer_.jpg\r"
-    ],
-    [
-      0.02746,
-      " 23.3% Processing: Wallpaper/bigcollection/_E...im_Nationalpark_Bayerische.jpg\r"
-    ],
-    [
-      0.028081,
-      " 23.4% Processing: Wallpaper/bigcollection/_E...im__umava-Nationalpark__Ts.jpg\r"
-    ],
-    [
-      0.027796,
-      " 23.5% Processing: Wallpaper/bigcollection/_E..._Emsland__Germany____Erh 1.jpg\r"
-    ],
-    [
-      0.026053,
-      " 25.4% Processing: Wallpaper/bigcollection/_F...chersee_J_kuls_rl_n__Islan.jpg\r"
-    ],
-    [
-      0.029312,
-      " 25.5% Processing: Wallpaper/bigcollection/_F...Yellowstone_Nationalpark__.jpg\r"
-    ],
-    [
-      0.029189,
-      " 25.6% Processing: Wallpaper/bigcollection/_F...yi__Provinz_Phang-nga__Tha.jpg\r"
-    ],
-    [
-      0.029535,
-      " 25.7% Processing: Wallpaper/bigcollection/_F..._Tree_River__Kitikmeot_Reg.jpg\r"
-    ],
-    [
-      0.031935,
-      " 25.8% Processing: Wallpaper/bigcollection/_F...ystad__Niederlande____Erns.jpg\r"
-    ],
-    [
-      0.034076,
-      " 25.9% Processing: Wallpaper/bigcollection/_F...kyline_von_Baku__Aserbaids.jpg\r"
-    ],
-    [
-      0.028655,
-      " 26.0% Processing: Wallpaper/bigcollection/_F..._New_York_City__Bundesstaa.jpg\r"
-    ],
-    [
-      0.030152,
-      " 26.1% Processing: Wallpaper/bigcollection/_F...wals__Cierva_Cove__Antarkt.jpg\r"
-    ],
-    [
-      0.030983,
-      " 26.2% Processing: Wallpaper/bigcollection/_F..._des_Norman_River__Queensl.jpg\r"
-    ],
-    [
-      0.027019,
-      " 27.4% Processing: Wallpaper/bigcollection/_G..._Ger_llhang_im_Rondane-Nat.jpg\r"
-    ],
-    [
-      0.027058,
-      " 27.5% Processing: Wallpaper/bigcollection/_G...tzgebiet_Sacramento_Nation.jpg\r"
-    ],
-    [
-      0.038515,
-      " 27.6% Processing: Wallpaper/bigcollection/_G...Villandry__Loiretal__Frank.jpg\r"
-    ],
-    [
-      0.024219,
-      " 27.7% Processing: Wallpaper/bigcollection/_G...Villandry__Loiretal__Frank.jpg\r"
-    ],
-    [
-      0.028063,
-      " 27.8% Processing: Wallpaper/bigcollection/_G...__Champion-Insel__Floreana.jpg\r"
-    ],
-    [
-      0.030237,
-      " 27.9% Processing: Wallpaper/bigcollection/_G...__R_bida__Gal_pagosinseln_.jpg\r"
-    ],
-    [
-      0.031455,
-      " 28.0% Processing: Wallpaper/bigcollection/_G...c-Nationalpark__Alaska__US.jpg\r"
-    ],
-    [
-      0.028409,
-      " 28.1% Processing: Wallpaper/bigcollection/_G...um_Bridge__Newcastle_upon_.jpg\r"
-    ],
-    [
-      0.031595,
-      " 28.2% Processing: Wallpaper/bigcollection/_G..._Kanal_in_Venedig__Italien.jpg\r"
-    ],
-    [
-      0.031079,
-      " 28.3% Processing: Wallpaper/bigcollection/_G..._Rock_Canyon__Waterton-Lak.jpg\r"
-    ],
-    [
-      0.028272,
-      " 30.5% Processing: Wallpaper/bigcollection/_G...oos_in_der_Gro_aufnahme___.jpg\r"
-    ],
-    [
-      0.034208,
-      " 30.6% Processing: Wallpaper/bigcollection/_G...iesel__Bayern__Deutschland.jpg\r"
-    ],
-    [
-      0.034016,
-      " 30.7% Processing: Wallpaper/bigcollection/_G...__ber_dem_Thunersee__Berne.jpg\r"
-    ],
-    [
-      0.0292,
-      " 30.8% Processing: Wallpaper/bigcollection/_G...ell-St.-Elias-Nationalpark.jpg\r"
-    ],
-    [
-      0.024942,
-      " 32.8% Processing: Wallpaper/bigcollection/_G..._bei_Mettlach__Saarland__D.jpg\r"
-    ],
-    [
-      0.031677,
-      " 32.9% Processing: Wallpaper/bigcollection/_G...ngxia-Zuchtstation__Ya_an_.jpg\r"
-    ],
-    [
-      0.031108,
-      " 33.9% Processing: Wallpaper/bigcollection/_H...kaido__Japan____JTB_Media_.jpg\r"
-    ],
-    [
-      0.030964,
-      " 35.9% Processing: Wallpaper/bigcollection/_H...ew_RussellVisuals_Unlimite.jpg\r"
-    ],
-    [
-      0.026577,
-      " 38.9% Processing: Wallpaper/bigcollection/_I...eutschen_Doms__Gendarmenma.jpg\r"
-    ],
-    [
-      0.031898,
-      " 39.0% Processing: Wallpaper/bigcollection/_I...ukuoka_Tower__Fukuoka__Jap.jpg\r"
-    ],
-    [
-      0.031693,
-      " 39.1% Processing: Wallpaper/bigcollection/_I...__Bermeo__Provinz_Bizkaia_.jpg\r"
-    ],
-    [
-      0.026825,
-      " 39.2% Processing: Wallpaper/bigcollection/_I...P_tzcuaro-See__Bundesstaat.jpg\r"
-    ],
-    [
-      0.030749,
-      " 41.0% Processing: Wallpaper/bigcollection/_J...ia-Nationalpark__Maine__US.jpg\r"
-    ],
-    [
-      0.032301,
-      " 41.1% Processing: Wallpaper/bigcollection/_J..._im_Moremi_Game_Reserve__O.jpg\r"
-    ],
-    [
-      0.031689,
-      " 42.2% Processing: Wallpaper/bigcollection/_K...n_in_der_Antarktis____Jan_.jpg\r"
-    ],
-    [
-      0.029222,
-      " 42.3% Processing: Wallpaper/bigcollection/_K...e_Washington__Antarktis___.jpg\r"
-    ],
-    [
-      0.174039,
-      " 42.4% Processing: Wallpaper/bigcollection/_K...K_ken__Snow_Hill_Island__A.jpg\r"
-    ],
-    [
-      0.03322,
-      " 42.5% Processing: Wallpaper/bigcollection/_K...SCO-Welterbest_tte__Trier_.jpg\r"
-    ],
-    [
-      0.031657,
-      " 43.4% Processing: Wallpaper/bigcollection/_K...ufort__South_Carolina__USA.jpg\r"
-    ],
-    [
-      0.026738,
-      " 43.5% Processing: Wallpaper/bigcollection/_K...chfang_vor_Port_St._Johns_.jpg\r"
-    ],
-    [
-      0.033834,
-      " 44.4% Processing: Wallpaper/bigcollection/_K...eide__Schottisches_Hochlan.jpg\r"
-    ],
-    [
-      0.034061,
-      " 44.5% Processing: Wallpaper/bigcollection/_K...m_Schlossgarten_Schwetzing.jpg\r"
-    ],
-    [
-      0.033845,
-      " 44.6% Processing: Wallpaper/bigcollection/_K...dscha__Kachetien__Georgien.jpg\r"
-    ],
-    [
-      0.031383,
-      " 44.7% Processing: Wallpaper/bigcollection/_K..._Baden-W_rttemberg__Deutsc.jpg\r"
-    ],
-    [
-      0.027515,
-      " 44.8% Processing: Wallpaper/bigcollection/_K..._Zanskar__Region_Ladakh__B.jpg\r"
-    ],
-    [
-      0.031935,
-      " 44.9% Processing: Wallpaper/bigcollection/_K...Meteora__Griechenland____S.jpg\r"
-    ],
-    [
-      0.030994,
-      " 45.0% Processing: Wallpaper/bigcollection/_K...-Ville__Belgien____Patty_P.jpg\r"
-    ],
-    [
-      0.031632,
-      " 46.8% Processing: Wallpaper/bigcollection/_L...ionalpark__Simbabwe____Jer.jpg\r"
-    ],
-    [
-      0.032645,
-      " 46.9% Processing: Wallpaper/bigcollection/_L...Hochland_von_Cuenca__Auton.jpg\r"
-    ],
-    [
-      0.028682,
-      " 47.0% Processing: Wallpaper/bigcollection/_L...Hochland_von_Cuenca__Auton.jpg\r"
-    ],
-    [
-      0.030087,
-      " 47.1% Processing: Wallpaper/bigcollection/_L...__Axel_Flasbarth500px_____.jpg\r"
-    ],
-    [
-      0.030684,
-      " 47.2% Processing: Wallpaper/bigcollection/_L...athedrale_von_Chartres__Fr.jpg\r"
-    ],
-    [
-      0.029522,
-      " 47.3% Processing: Wallpaper/bigcollection/_L...und_Aiguilles_de_Chamonix_.jpg\r"
-    ],
-    [
-      0.032174,
-      " 47.4% Processing: Wallpaper/bigcollection/_L...Nutthavood_Punpeng500px___.jpg\r"
-    ],
-    [
-      0.029075,
-      " 47.5% Processing: Wallpaper/bigcollection/_L...nd__Great_Barrier_Reef__Au.jpg\r"
-    ],
-    [
-      0.028973,
-      " 47.6% Processing: Wallpaper/bigcollection/_L...__Insel_Corvo__Portugal___.jpg\r"
-    ],
-    [
-      0.030047,
-      " 47.7% Processing: Wallpaper/bigcollection/_L...ationalpark__British_Colum.jpg\r"
-    ],
-    [
-      0.031497,
-      " 49.3% Processing: Wallpaper/bigcollection/_L...hof__Great_Court__des_Brit.jpg\r"
-    ],
-    [
-      0.029466,
-      " 49.4% Processing: Wallpaper/bigcollection/_L...em_Wald_auf_der_Insel_Shik.jpg\r"
-    ],
-    [
-      0.025178,
-      " 49.5% Processing: Wallpaper/bigcollection/_L...er_K_ste_von_Ixtapa_Zihuat.jpg\r"
-    ],
-    [
-      0.030228,
-      " 49.6% Processing: Wallpaper/bigcollection/_L...e_Itapu__in_Salvador__Bahi.jpg\r"
-    ],
-    [
-      0.027644,
-      " 49.7% Processing: Wallpaper/bigcollection/_L...l_Point_in_der_N_he_von_Po.jpg\r"
-    ],
-    [
-      0.026513,
-      " 49.8% Processing: Wallpaper/bigcollection/_L...eversand__Westerhever__Sch.jpg\r"
-    ],
-    [
-      0.032316,
-      " 49.9% Processing: Wallpaper/bigcollection/_L...i__Provinz_Jiangsu__Volksr.jpg\r"
-    ],
-    [
-      0.026983,
-      " 50.0% Processing: Wallpaper/bigcollection/_L...g__aufgenommen_von_der_Int.jpg\r"
-    ],
-    [
-      0.03107,
-      " 51.7% Processing: Wallpaper/bigcollection/_M..._Cay__Exuma__Bahamas____Ji.jpg\r"
-    ],
-    [
-      0.028123,
-      " 51.8% Processing: Wallpaper/bigcollection/_M...ationalpark_Jardines_de_la.jpg\r"
-    ],
-    [
-      0.028547,
-      " 51.9% Processing: Wallpaper/bigcollection/_M...au____WaterFrameAlamy_____.jpg\r"
-    ],
-    [
-      0.030092,
-      " 53.1% Processing: Wallpaper/bigcollection/_M...ands-Nationalpark__Utah__U.jpg\r"
-    ],
-    [
-      0.027589,
-      " 53.2% Processing: Wallpaper/bigcollection/_M...useum_in_den_Wolken__Monte.jpg\r"
-    ],
-    [
-      0.029779,
-      " 53.3% Processing: Wallpaper/bigcollection/_M...Plaza_de_la_Encarnaci_n__S.jpg\r"
-    ],
-    [
-      0.031154,
-      " 54.6% Processing: Wallpaper/bigcollection/_M...lmie_National_Forest__Bund.jpg\r"
-    ],
-    [
-      0.03317,
-      " 54.7% Processing: Wallpaper/bigcollection/_M...t_Edziza_Provincial_Park__.jpg\r"
-    ],
-    [
-      0.031631,
-      " 54.8% Processing: Wallpaper/bigcollection/_M...__Washington__USA____Diane.jpg\r"
-    ],
-    [
-      0.025722,
-      " 56.1% Processing: Wallpaper/bigcollection/_N..._K_ste_des_Atlantischen_Oz.jpg\r"
-    ],
-    [
-      0.029888,
-      " 56.2% Processing: Wallpaper/bigcollection/_N...hee__Schiras__Iran____R.Cr.jpg\r"
-    ],
-    [
-      0.022761,
-      " 57.5% Processing: Wallpaper/bigcollection/_N...Fischotter_im_Yellowstone-.jpg\r"
-    ],
-    [
-      0.030469,
-      " 57.6% Processing: Wallpaper/bigcollection/_N..._Baumstachler____Minden_Pi.jpg\r"
-    ],
-    [
-      0.032258,
-      " 58.9% Processing: Wallpaper/bigcollection/_O...-Park__Bomarzo__Italien___.jpg\r"
-    ],
-    [
-      0.028556,
-      " 59.0% Processing: Wallpaper/bigcollection/_O...-Park__Bomarzo__Italien___.jpg\r"
-    ],
-    [
-      0.029665,
-      " 60.4% Processing: Wallpaper/bigcollection/_P..._der_Boardman_Tree_Farm__B.jpg\r"
-    ],
-    [
-      0.030072,
-      " 60.5% Processing: Wallpaper/bigcollection/_P...o-Ebene__Italien____Eddy_G.jpg\r"
-    ],
-    [
-      0.034601,
-      " 60.6% Processing: Wallpaper/bigcollection/_P...nem_Karnevalswagen_beim_Ro.jpg\r"
-    ],
-    [
-      0.029305,
-      " 61.9% Processing: Wallpaper/bigcollection/_P...der_argentinischen_Atlanti.jpg\r"
-    ],
-    [
-      0.03045,
-      " 62.0% Processing: Wallpaper/bigcollection/_P...m__Pilsum__Niedersachsen__.jpg\r"
-    ],
-    [
-      0.02941,
-      " 63.4% Processing: Wallpaper/bigcollection/_P...rk_Torres_del_Paine__Chile.jpg\r"
-    ],
-    [
-      0.033345,
-      " 63.5% Processing: Wallpaper/bigcollection/_P...i-Nationalpark__New_South_.jpg\r"
-    ],
-    [
-      0.031818,
-      " 64.9% Processing: Wallpaper/bigcollection/_R...ationalpark_Sarek__Schwede.jpg\r"
-    ],
-    [
-      0.025656,
-      " 65.0% Processing: Wallpaper/bigcollection/_R...ationalpark_Sarek__Schwede.jpg\r"
-    ],
-    [
-      0.030751,
-      " 66.6% Processing: Wallpaper/bigcollection/_R...nyang__Provinz_Yunnan__Chi.jpg\r"
-    ],
-    [
-      0.030313,
-      " 66.7% Processing: Wallpaper/bigcollection/_R...n_Ludwig_XIV._auf_dem_Plac.jpg\r"
-    ],
-    [
-      0.032915,
-      " 68.6% Processing: Wallpaper/bigcollection/_R...r____Getty_Images______Bin.jpg\r"
-    ],
-    [
-      0.029504,
-      " 70.1% Processing: Wallpaper/bigcollection/_S...tional_Park__Germany____ 3.jpg\r"
-    ],
-    [
-      0.026571,
-      " 70.2% Processing: Wallpaper/bigcollection/_S...tional_Park__Germany____ 4.jpg\r"
-    ],
-    [
-      0.032136,
-      " 71.7% Processing: Wallpaper/bigcollection/_S...e_t_sich_als_Wasserfall_vo.jpg\r"
-    ],
-    [
-      0.032883,
-      " 72.6% Processing: Wallpaper/bigcollection/_S...riehunde_im_Wind_Cave_Nati.jpg\r"
-    ],
-    [
-      0.031602,
-      " 72.7% Processing: Wallpaper/bigcollection/_S...erkstatt__Hexenlochm_hle__.jpg\r"
-    ],
-    [
-      0.030634,
-      " 73.6% Processing: Wallpaper/bigcollection/_S...en_in_der_Son_Doong-H_hle_.jpg\r"
-    ],
-    [
-      0.027026,
-      " 74.5% Processing: Wallpaper/bigcollection/_S..._at_sunset__Attendorn__Sau.jpg\r"
-    ],
-    [
-      0.038777,
-      " 75.4% Processing: Wallpaper/bigcollection/_S..._Dartmoor-Nationalpark__De.jpg\r"
-    ],
-    [
-      0.027422,
-      " 75.5% Processing: Wallpaper/bigcollection/_S..._der_Halong-Bucht__Vietnam.jpg\r"
-    ],
-    [
-      0.027539,
-      " 76.3% Processing: Wallpaper/bigcollection/_S...em_See__Bergpark_Wilhelmsh.jpg\r"
-    ],
-    [
-      0.031058,
-      " 76.4% Processing: Wallpaper/bigcollection/_S...ge_in_den_Ausl_ufern_der_R.jpg\r"
-    ],
-
-    [
-      0.036506,
-      " 77.6% Processing: Wallpaper/bigcollection/_S..._Geothermalgebiet_Haukadal.jpg\r"
-    ],
-    [
-      0.025063,
-      " 77.7% Processing: Wallpaper/bigcollection/_S...ampagne-Ardennes__Frankrei.jpg\r"
-    ],
-    [
-      0.029054,
-      " 77.8% Processing: Wallpaper/bigcollection/_S...r__ber_West_Point__Nebrask.jpg\r"
-    ],
-    [
-      0.028908,
-      " 77.9% Processing: Wallpaper/bigcollection/_S...n-Bodenstation__Longyearby.jpg\r"
-    ],
-    [
-      0.029276,
-      " 78.0% Processing: Wallpaper/bigcollection/_S..._und_Solidarit_t_Kerzen__K.jpg\r"
-    ],
-    [
-      0.024812,
-      " 79.0% Processing: Wallpaper/bigcollection/_T..._Blatt_eines_Per_ckenstrau.jpg\r"
-    ],
-    [
-      0.031898,
-      " 80.0% Processing: Wallpaper/bigcollection/_T...er_Bavaria__Germany____F 3.jpg\r"
-    ],
-    [
-      0.029189,
-      " 80.1% Processing: Wallpaper/bigcollection/_T...pper_Bavaria__Germany____F.jpg\r"
-    ],
-    [
-      0.028065,
-      " 81.2% Processing: Wallpaper/bigcollection/_T...Image_BrokerRex_Features 1.jpg\r"
-    ],
-    [
-      0.03116,
-      " 81.3% Processing: Wallpaper/bigcollection/_T...n__Baden-W_rttemberg__Deut.jpg\r"
-    ],
-    [
-      0.026524,
-      " 82.3% Processing: Wallpaper/bigcollection/_U..._seltene_Blattschwanzgecko.jpg\r"
-    ],
-    [
-      0.028383,
-      " 82.4% Processing: Wallpaper/bigcollection/_V...en_und_Altstadt_von_Chania.jpg\r"
-    ],
-    [
-      0.032476,
-      " 83.5% Processing: Wallpaper/bigcollection/_V..._Hirta__St._Kilda__Schottl.jpg\r"
-    ],
-    [
-      0.030701,
-      " 84.7% Processing: Wallpaper/bigcollection/_W...wald__Insel_Sula__Solund__.jpg\r"
-    ],
-    [
-      0.034129,
-      " 84.8% Processing: Wallpaper/bigcollection/_W...nschafe__Kanton_Wallis__ 1.jpg\r"
-    ],
-    [
-      0.03033,
-      " 85.8% Processing: Wallpaper/bigcollection/_W...ionalpark_Plitvicer_Seen__.jpg\r"
-    ],
-
-    [
-      0.031761,
-      " 87.2% Processing: Wallpaper/bigcollection/_W..._N_he_von_Ca_amares__Provi.jpg\r"
-    ],
-    [
-      0.031627,
-      " 87.3% Processing: Wallpaper/bigcollection/_W..._N_he_von_Cuenca__Spanien_.jpg\r"
-    ],
-    [
-      0.024242,
-      " 88.3% Processing: Wallpaper/bigcollection/_W...jeu__D_partement_Rh_ne__Re.jpg\r"
-    ],
-    [
-      0.027362,
-      " 89.3% Processing: Wallpaper/bigcollection/_W...guna_Colorada__Bolivien___.jpg\r"
-    ],
-    [
-      0.031448,
-      " 90.5% Processing: Wallpaper/bigcollection/_Z..._von_Autobahnen_in_Bangkok.jpg\r"
-    ],
-    [
-      0.027535,
-      " 90.6% Processing: Wallpaper/bigcollection/_Z...abara-Bucht__Rio_de_Janeir.jpg\r"
-    ],
-    [
-      0.025329,
-      " 92.1% Processing: Wallpaper/bigcollection/__...ptur_der_Landart-K_nstleri.jpg\r"
-    ],
-    [
-      0.044106,
-      " 92.2% Processing: Wallpaper/bigcollection/__...__Magic_Mountain_-Landmark.jpg\r"
-    ],
-    [
-      0.03068,
-      " 93.5% Processing: Wallpaper/bigcollection/_F...rte_Marina_Bay_zum_50._Nat.jpg\r"
-    ],
-    [
-      0.031039,
-      " 93.6% Processing: Wallpaper/bigcollection/_H...ing_Crane_Pond_Conservancy.jpg\r"
-    ],
-    [
-      0.020685,
-      " 95.0% Processing: Wallpaper/2048example/Palo...t_by_Beth___Jeremy_Jonkman.jpg\r"
-    ],
-    [
-      0.019863,
-      " 96.3% Processing: Wallpaper/evenmore/ChipDE ...jpg                           \r"
-    ],
-    [
-      0.056069,
-      " 96.4% Processing: Wallpaper/evenmore/ChipDE ...jpg                           \r"
-    ],
-    [
-      0.049869,
-      " 97.4% Processing: Wallpaper/evenmore/ChipDE 06.jpg                           \r"
-    ],
-    [
-      0.021021,
-      " 97.5% Processing: Wallpaper/evenmore/ChipDE ...jpg                           \r"
-    ],
-    [
-      0.019135,
-      " 98.4% Processing: Wallpaper/evenmore/ChipDE ...jpg                           \r"
-    ],
-    [
-      0.021483,
-      " 99.6% Processing: Wallpaper/deer.jpg        ...                              \r"
-    ],
-    [
-      0.021593,
-      " 99.7% Processing: Wallpaper/deer.jpg        ...                              \r"
-    ],
-    [
-      0.02037,
-      " 99.8% Processing: Wallpaper/deer.jpg        ...                              \r"
-    ],
-    [
-      0.027858,
-      " 99.9% Processing: Wallpaper/deer.jpg        ...                              \r"
-    ],
-    [
-      0.020864,
-      "                                                                              \r"
-    ],
-    [
-      0.077955,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001068,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000836,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000104,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000234,
-      "\u001b[?2004h"
-    ],
-    [
-      2.471911,
-      "\u001b[32ml\u001b[39m"
-    ],
-    [
-      0.102688,
-      "\b\u001b[32ml\u001b[32ms\u001b[39m"
-    ],
-    [
-      0.272296,
-      " "
-    ],
-    [
-      0.220114,
-      "-"
-    ],
-    [
-      0.157165,
-      "l"
-    ],
-    [
-      0.074368,
-      "a"
-    ],
-    [
-      0.353976,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000755,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000778,
-      "\u001b]2;ls --color=tty -la\u0007\u001b]1;ls\u0007"
-    ],
-    [
-      0.001633,
-      "total 573616\r\n"
-    ],
-    [
-      1.9e-05,
-      "drwxr-xr-x.  4 rugk rugk      4096 Jul 16 18:56 \u001b[0m\u001b[38;5;33m.\u001b[0m\r\ndrwxr-x---. 55 rugk rugk      4096 Jul 16 18:57 \u001b[38;5;33m..\u001b[0m\r\ndrwx------.  2 rugk rugk      4096 Jul 14 21:57 \u001b[38;5;33mWallpaper\u001b[0m\r\ndrwxr-xr-x.  6 rugk rugk      4096 Jul 14 21:55 \u001b[38;5;33mWallpaper.orig\u001b[0m\r\n-rw-------.  1 rugk rugk 587361454 Jul 16 18:57 \u001b[38;5;9mbackup.tar.gz\u001b[0m\r\n"
-    ],
-    [
-      0.000404,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001103,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000992,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000158,
-      "\u001b[?2004h"
-    ],
-    [
-      3.04506,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000385,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000485,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001512,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001245,
-      "\u001b]7;\u0007"
-    ],
-    [
-      6.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000129,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000247,
-      "\u001b[?2004h"
-    ],
-    [
-      0.325892,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.228892,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.186392,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mY\u001b[0m\u001b[39m"
-    ],
-    [
-      0.112073,
-      "\b\u001b[1mY\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.139024,
-      "\b\u001b[1mo\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.151793,
-      "\b\u001b[1mu\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.106484,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.147932,
-      "\b\u001b[1mc\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.181458,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.137456,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.21885,
-      "\b\u001b[1m \u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.170788,
-      "\b\u001b[1me\u001b[1mv\u001b[0m\u001b[39m"
-    ],
-    [
-      0.133285,
-      "\b\u001b[1mv\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.28717,
-      "\b\u001b[1me\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.485291,
-      "\b\u001b[1mn\u001b[1m mount an archive or even the whole repository:\u001b[0m\u001b[39m"
-    ],
-    [
-      1.036008,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001535,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001777,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.002934,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.002695,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00014,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000881,
-      "\u001b[?2004h"
-    ],
-    [
-      1.264493,
-      "\u001b[1m\u001b[31mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.158178,
-      "\b\u001b[1m\u001b[31mm\u001b[1m\u001b[31mk\u001b[0m\u001b[39m"
-    ],
-    [
-      0.129344,
-      "\b\b\u001b[1m\u001b[31mm\u001b[1m\u001b[31mk\u001b[1m\u001b[31md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.153746,
-      "\b\u001b[1m\u001b[31md\u001b[1m\u001b[31mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.106254,
-      "\b\b\b\b\u001b[0m\u001b[32mm\u001b[0m\u001b[32mk\u001b[0m\u001b[32md\u001b[0m\u001b[32mi\u001b[32mr\u001b[39m"
-    ],
-    [
-      0.178794,
-      " "
-    ],
-    [
-      0.328222,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.202794,
-      "\b\u001b[4m/\u001b[4mt\u001b[24m"
-    ],
-    [
-      0.246443,
-      "\b\u001b[4mt\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.207634,
-      "\b\u001b[4mm\u001b[4mp\u001b[24m"
-    ],
-    [
-      0.88273,
-      "\b\u001b[4mp\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.339887,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.210076,
-      "\b\u001b[4mm\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.16667,
-      "\b\b\b\b\b\b\b\u001b[24m/\u001b[24mt\u001b[24mm\u001b[24mp\u001b[24m/\u001b[24mm\u001b[24mou"
-    ],
-    [
-      0.141564,
-      "n"
-    ],
-    [
-      0.184,
-      "t"
-    ],
-    [
-      1.4607,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001306,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000794,
-      "\u001b]2;mkdir /tmp/mount\u0007"
-    ],
-    [
-      6.6e-05,
-      "\u001b]1;mkdir\u0007"
-    ],
-    [
-      0.00176,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00142,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001308,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ "
-    ],
-    [
-      1.3e-05,
-      "\u001b[K"
-    ],
-    [
-      9.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000273,
-      "\u001b[?2004h"
-    ],
-    [
-      1.09686,
-      "\u001b[4mb\u001b[24m"
-    ],
-    [
-      0.187046,
-      "\b\u001b[24m\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.10907,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12414,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.187573,
-      " "
-    ],
-    [
-      0.229364,
-      "m"
-    ],
-    [
-      0.195942,
-      "o"
-    ],
-    [
-      0.183861,
-      "u"
-    ],
-    [
-      0.138559,
-      "n"
-    ],
-    [
-      0.207537,
-      "t"
-    ],
-    [
-      1.01571,
-      " "
-    ],
-    [
-      0.55086,
-      ":"
-    ],
-    [
-      0.110713,
-      ":"
-    ],
-    [
-      0.27265,
-      " "
-    ],
-    [
-      0.462869,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.795464,
-      "\b\u001b[4m/\u001b[4mt\u001b[24m"
-    ],
-    [
-      0.295092,
-      "\b\u001b[4mt\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.200509,
-      "\b\u001b[4mm\u001b[4mp\u001b[24m"
-    ],
-    [
-      0.878464,
-      "\b\u001b[4mp\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.306666,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.24341,
-      "\b\u001b[4mm\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.166203,
-      "\b\u001b[4mo\u001b[4mu\u001b[24m"
-    ],
-    [
-      0.138953,
-      "\b\u001b[4mu\u001b[4mn\u001b[24m"
-    ],
-    [
-      0.177723,
-      "\b\u001b[4mn\u001b[4mt\u001b[24m"
-    ],
-    [
-      1.371278,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001184,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000603,
-      "\u001b]2;borg mount :: /tmp/mount\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.651025,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001453,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000984,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      2.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.0002,
-      "\u001b[?2004h"
-    ],
-    [
-      1.860515,
-      "\u001b[32ml\u001b[39m"
-    ],
-    [
-      0.107896,
-      "\b\u001b[32ml\u001b[32ms\u001b[39m"
-    ],
-    [
-      0.253911,
-      " "
-    ],
-    [
-      0.203092,
-      "-"
-    ],
-    [
-      0.178525,
-      "l"
-    ],
-    [
-      0.111795,
-      "a"
-    ],
-    [
-      0.200138,
-      " "
-    ],
-    [
-      0.353001,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.264827,
-      "\b\u001b[4m/\u001b[4mt\u001b[24m"
-    ],
-    [
-      0.205749,
-      "\b\u001b[4mt\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.168679,
-      "\b\u001b[4mm\u001b[4mp\u001b[24m"
-    ],
-    [
-      0.016649,
-      "\b\b\b\b\u001b[24m/\u001b[24mt\u001b[24mm\u001b[24mp"
-    ],
-    [
-      0.712108,
-      "\b\b\b\b\u001b[4m/\u001b[4mt\u001b[4mm\u001b[4mp\u001b[24m \b"
-    ],
-    [
-      0.383057,
-      "\b\u001b[4mp\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.159994,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.187645,
-      "\b\u001b[4mm\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.168813,
-      "\b\u001b[4mo\u001b[4mu\u001b[24m"
-    ],
-    [
-      0.12933,
-      "\b\u001b[4mu\u001b[4mn\u001b[24m"
-    ],
-    [
-      0.421583,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.018359,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mls\u001b[39m -la \u001b[4m/tmp/mount\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.602087,
-      "\b\b\u001b[4mt\u001b[24m\u001b[0m\u001b[24m \b"
-    ],
-    [
-      2.5e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000874,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000682,
-      "\u001b]2;ls --color=tty -la /tmp/mount\u0007\u001b]1;ls\u0007"
-    ],
-    [
-      0.002495,
-      "total 0\r\n"
-    ],
-    [
-      4.4e-05,
-      "drwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[0m\u001b[38;5;33m.\u001b[0m\r\ndrwxrwxrwt. 27 root root 660 Jul 16 18:58 \u001b[48;5;10;38;5;16m..\u001b[0m\r\ndrwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[38;5;33mbackup-block-device\u001b[0m\r\ndrwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[38;5;33mbackup1\u001b[0m\r\ndrwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[38;5;33mbackup2\u001b[0m\r\ndrwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[38;5;33mbackup3\u001b[0m\r\ndrwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[38;5;33mrugk-2017-07-16T18:51:34\u001b[0m\r\ndrwxr-xr-x.  1 rugk rugk   0 Jul 16 18:58 \u001b[38;5;33mrugk-2017-07-16T18:52:19\u001b[0m\r\n"
-    ],
-    [
-      0.000169,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000984,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.00097,
-      "\u001b]7;\u0007"
-    ],
-    [
-      2.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000122,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000251,
-      "\u001b[?2004h"
-    ],
-    [
-      0.482339,
-      "\u001b[4mb\u001b[24m"
-    ],
-    [
-      0.179808,
-      "\b\u001b[24m\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.105817,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.116974,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.173004,
-      " "
-    ],
-    [
-      0.216291,
-      "u"
-    ],
-    [
-      0.168732,
-      "m"
-    ],
-    [
-      0.228004,
-      "o"
-    ],
-    [
-      0.19268,
-      "u"
-    ],
-    [
-      0.14303,
-      "n"
-    ],
-    [
-      0.175557,
-      "t"
-    ],
-    [
-      0.406596,
-      " "
-    ],
-    [
-      0.69215,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.242216,
-      "\b\u001b[4m/\u001b[4mt\u001b[24m"
-    ],
-    [
-      0.260453,
-      "\b\u001b[4mt\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.2605,
-      "\b\u001b[4mm\u001b[4mp\u001b[24m"
-    ],
-    [
-      0.014483,
-      "\b\b\b\b\u001b[24m/\u001b[24mt\u001b[24mm\u001b[24mp"
-    ],
-    [
-      0.597766,
-      "\b\b\b\b\u001b[4m/\u001b[4mt\u001b[4mm\u001b[4mp\u001b[24m \b"
-    ],
-    [
-      0.482551,
-      "\b\u001b[4mp\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.236361,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.212317,
-      "\b\u001b[4mm\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.160611,
-      "\b\u001b[4mo\u001b[4mu\u001b[24m"
-    ],
-    [
-      0.142036,
-      "\b\u001b[4mu\u001b[4mn\u001b[24m"
-    ],
-    [
-      0.335664,
-      "\b\u001b[4mn\u001b[4mt\u001b[24m"
-    ],
-    [
-      1.159614,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001057,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000642,
-      "\u001b]2;borg umount /tmp/mount\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.596849,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.001387,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.001067,
-      "\u001b]7;\u0007"
-    ],
-    [
-      9.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000187,
-      "\u001b[?2004h"
-    ],
-    [
-      1.467084,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.264583,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.277487,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12184,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.103403,
-      "\b\u001b[1mh\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.125651,
-      "\b\u001b[1ma\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.465663,
-      "\b\u001b[1mt\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.298764,
-      "\b\u001b[1m'\u001b[1ms it, but of course there is more to explore, so have a look at the d\u001b[1mo\u001b[1mcs.\u001b[0m\u001b[39m\u001b[K\r\r\n\u001b[K\u001b[A\u001b[4C"
-    ],
-    [
-      1.453815,
-      "\u001b[1B\r\u001b[K\u001b[A\u001b[4C"
-    ],
-    [
-      2e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000725,
-      "\u001b[?2004l\u001b[1B\r\r\n"
-    ],
-    [
-      0.00054,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00118,
-      "\u001b]7;\u0007"
-    ],
-    [
-      0.000909,
-      "\u001b]7;\u0007"
-    ],
-    [
-      7.8e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000524,
-      "\u001b[?2004h"
-    ],
-    [
-      1.74407,
-      "\u001b[?2004l\r\r\n"
-    ]
-  ]
-}
diff --git a/docs/misc/asciinema/advanced.sh b/docs/misc/asciinema/advanced.sh
deleted file mode 100644
index e09d7bcb..00000000
--- a/docs/misc/asciinema/advanced.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-# For the pro users, here are some advanced features of borg, so you can impress your friends. ;)
-# Note: This screencast was made with borg version 1.1.0 – older or newer borg versions may behave differently.
-
-# First of all, we can use several environment variables for borg.
-# E.g. we do not want to type in our repo path and password again and again…
-export BORG_REPO='/media/backup/borgdemo'
-export BORG_PASSPHRASE='1234'
-# Problem solved, borg will use this automatically… :)
-# We'll use this right away…
-
-## ADVANCED CREATION ##
-
-# We can also use some placeholders in our archive name…
-borg create --stats --progress --compression lz4 ::{user}-{now} Wallpaper
-# Notice the backup name.
-
-# And we can put completely different data, with different backup settings, in our backup. It will be deduplicated, anyway:
-borg create --stats --progress --compression zlib,6 --exclude ~/Downloads/big ::{user}-{now} ~/Downloads
-
-# Or let's backup a device via STDIN.
-sudo dd if=/dev/loop0 bs=10M | borg create --progress --stats ::specialbackup -
-
-# Let's continue with some simple things:
-## USEFUL COMMANDS ##
-# You can show some information about an archive. You can even do it without needing to specify the archive name:
-borg info :: --last 1
-
-# So let's rename our last archive:
-borg rename ::specialbackup backup-block-device
-<up>
-borg info :: --last 1
-
-# A very important step if you choose keyfile mode (where the keyfile is only saved locally) is to export your keyfile and possibly print it, etc.
-borg key export :: --qr-code file.html # this creates a nice HTML, but when you want something simpler…
-< remove comment >
-< let there: borg check > --paper # this is a "manual input"-only backup (but it is also included in the --qr-code option)
-
-## MAINTENANCE ##
-# Sometimes backups get broken or we want a regular "checkup" that everything is okay…
-borg check -v ::
-
-# Next problem: Usually you do not have infinite disk space. So you may need to prune your archive…
-# You can tune this in every detail. See the docs for details. Here only a simple example:
-borg prune --list --keep-last 1 --dry-run
-# When actually executing it in a script, you have to use it without the --dry-run option, of course.
-
-## RESTORE ##
-
-# When you want to see the diff between two archives use this command.
-# E.g. what happened between the first two backups?
-borg diff ::backup1 backup2
-# Ah, we added a file, right…
-
-# There are also other ways to extract the data.
-# E.g. as a tar archive.
-borg export-tar --progress ::backup2 backup.tar.gz
-ls -l
-
-# You can mount an archive or even the whole repository:
-mkdir /tmp/mount
-borg mount :: /tmp/mount
-ls -la /tmp/mount
-borg umount /tmp/mount
-
-# That's it, but of course there is more to explore, so have a look at the docs.
diff --git a/docs/misc/asciinema/basic.json b/docs/misc/asciinema/basic.json
deleted file mode 100644
index 9eaf8935..00000000
--- a/docs/misc/asciinema/basic.json
+++ /dev/null
@@ -1,4862 +0,0 @@
-{
-  "version": 1,
-  "width": 78,
-  "height": 25,
-  "duration": 379.234504,
-  "command": null,
-  "title": null,
-  "env": {
-    "TERM": "xterm-256color",
-    "SHELL": "/bin/zsh"
-  },
-  "stdout": [
-    [
-      0.000155,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000133,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000183,
-      "\u001b[?2004h"
-    ],
-    [
-      0.468833,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.413214,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.440799,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mH\u001b[0m\u001b[39m"
-    ],
-    [
-      0.155436,
-      "\b\u001b[1mH\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.153888,
-      "\b\u001b[1me\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145046,
-      "\b\u001b[1mr\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.191005,
-      "\b\u001b[1me\u001b[1m you'll see some basic commands to start working with borg.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.328571,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000462,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000787,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      7.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      1.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.0003,
-      "\u001b[?2004h"
-    ],
-    [
-      0.553943,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.254153,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.205346,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.164037,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.198817,
-      "\b\u001b[1mo\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157487,
-      "\b\u001b[1mt\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.348855,
-      "\b\u001b[1me\u001b[1m:\u001b[0m\u001b[39m"
-    ],
-    [
-      0.308837,
-      "\b\u001b[1m:\u001b[1m This teaser screencast was made with borg version 1.1.0 – older or n\u001b[1me\u001b[1mwer borg versions may behave differently.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      0.760183,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001229,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001043,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000111,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000699,
-      "\u001b[?2004h"
-    ],
-    [
-      0.617302,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.269944,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.231147,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mB\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157768,
-      "\b\u001b[1mB\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145012,
-      "\b\u001b[1mu\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.360132,
-      "\b\u001b[1mt\u001b[1m let's start.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.808076,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000384,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001063,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000271,
-      "\u001b[?2004h"
-    ],
-    [
-      1.213811,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000271,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001041,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      7e-06,
-      "\u001b]1;~/Pictures\u0007"
-    ],
-    [
-      4.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000167,
-      "\u001b[?2004h"
-    ],
-    [
-      0.326924,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.245919,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.173421,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mF\u001b[0m\u001b[39m"
-    ],
-    [
-      0.121947,
-      "\b\u001b[1mF\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.196316,
-      "\b\u001b[1mi\u001b[1mr\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.224037,
-      "\b\u001b[1ms\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.323925,
-      "\b\u001b[1mt\u001b[1m of all, you can always get help:\u001b[0m\u001b[39m"
-    ],
-    [
-      0.738987,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000395,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000643,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000107,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      3.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00031,
-      "\u001b[?2004h"
-    ],
-    [
-      1.268663,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.19562,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.100091,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157538,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.196595,
-      " "
-    ],
-    [
-      0.210071,
-      "h"
-    ],
-    [
-      0.124892,
-      "e"
-    ],
-    [
-      0.177906,
-      "l"
-    ],
-    [
-      0.121006,
-      "p"
-    ],
-    [
-      0.314487,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000695,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000777,
-      "\u001b]2;borg help\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.538908,
-      "usage: borg [-V] [-h] [--critical] [--error] [--warning] [--info] [--debug]\r\n            [--debug-topic TOPIC] [-p] [--log-json] [--lock-wait N]\r\n            [--show-version] [--show-rc] [--no-files-cache] [--umask M]\r\n            [--remote-path PATH] [--remote-ratelimit rate]\r\n            [--consider-part-files] [--debug-profile FILE]\r\n            <command> ...\r\n\r\nBorg - Deduplicated Backups\r\n\r\noptional arguments:\r\n  -V, --version         show version number and exit\r\n\r\nCommon options:\r\n  -h, --help            show this help message and exit\r\n  --critical            work on log level CRITICAL\r\n  --error               work on log level ERROR\r\n  --warning             work on log level WARNING (default)\r\n  --info, -v, --verbose\r\n                        work on log level INFO\r\n  --debug               enable debug output, work on log level DEBUG\r\n  --debug-topic TOPIC   enable TOPIC debugging (can be specified multiple\r\n                        times). The logger path is borg.debug.<TOPIC> if TOPIC\r\n              "
-    ],
-    [
-      4.1e-05,
-      "          is not fully qualified.\r\n  -p, --progress        show progress information\r\n  --log-json            Output one JSON object per log line instead of\r\n                        formatted text.\r\n  --lock-wait N         wait for the lock, but max. N seconds (default: 1).\r\n  --show-version        show/log the borg version\r\n  --show-rc             show/log the return code (rc)\r\n  --no-files-cache      do not load/update the file metadata cache used to\r\n                        detect unchanged files\r\n  --umask M             set umask to M (local and remote, default: 0077)\r\n  --remote-path PATH    use PATH as borg executable on the remote (default:\r\n                        \"borg\")\r\n  --remote-ratelimit rate\r\n                        set remote network upload rate limit in kiByte/s\r\n                        (default: 0=unlimited)\r\n  --consider-part-files\r\n                        treat part files like normal files (e.g. to\r\n                        list/extract them)\r\n  --debug-profile FILE  Write execution profile"
-    ],
-    [
-      1.6e-05,
-      " in Borg format into FILE. For\r\n                        local use a Python-compatible file can be generated by\r\n                        suffixing FILE with \".pyprof\".\r\n\r\nrequired arguments:\r\n  <command>\r\n    serve               start repository server process\r\n    init                initialize empty repository\r\n    check               verify repository\r\n    key                 manage repository key\r\n    change-passphrase   change repository passphrase\r\n    create              create backup\r\n    extract             extract archive contents\r\n    export-tar          create tarball from archive\r\n    diff                find differences in archive contents\r\n    rename              rename archive\r\n    delete              delete archive\r\n    list                list archive or repository contents\r\n    mount               mount repository\r\n    umount              umount repository\r\n    info                show repository or archive information\r\n    break-lock          break repository and cache locks\r\n    prune     "
-    ],
-    [
-      2e-05,
-      "          prune archives\r\n    upgrade             upgrade repository format\r\n    recreate            Re-create archives\r\n    with-lock           run user command with lock held\r\n    debug               debugging command (not intended for normal use)\r\n    benchmark           benchmark command\r\n"
-    ],
-    [
-      0.043747,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      8e-06,
-      "\u001b]1;~/Pictures\u0007"
-    ],
-    [
-      5.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      4.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000163,
-      "\u001b[?2004h"
-    ],
-    [
-      1.509225,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.593308,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.334291,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.170683,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.07295,
-      "\b\u001b[1mh\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184509,
-      "\b\u001b[1me\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136032,
-      "\b\u001b[1ms\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.250718,
-      "\b\u001b[1me\u001b[1m are a lot of commands, so better we start with a few:\u001b[0m\u001b[39m"
-    ],
-    [
-      1.088446,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000396,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000604,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000101,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      4.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000296,
-      "\u001b[?2004h"
-    ],
-    [
-      0.921744,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.276219,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.204903,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mL\u001b[0m\u001b[39m"
-    ],
-    [
-      0.137064,
-      "\b\u001b[1mL\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.16386,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.340061,
-      "\b\u001b[1mt\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.115905,
-      "\b\u001b[1m'\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.213255,
-      "\b\u001b[1ms\u001b[1m create a repo on an external drive:\u001b[0m\u001b[39m"
-    ],
-    [
-      1.086717,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000391,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000606,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000133,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000274,
-      "\u001b[?2004h"
-    ],
-    [
-      1.935612,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184978,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.115803,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.134282,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.266061,
-      " "
-    ],
-    [
-      0.599046,
-      "i"
-    ],
-    [
-      0.183493,
-      "n"
-    ],
-    [
-      0.181453,
-      "i"
-    ],
-    [
-      0.258375,
-      "t"
-    ],
-    [
-      0.712329,
-      " "
-    ],
-    [
-      0.381053,
-      ""
-    ],
-    [
-      0.381053,
-     "-"
-    ],
-    [
-      0.119206,
-     "-"
-    ],
-    [
-      0.18993,
-      "e"
-    ],
-    [
-      0.175168,
-      "n"
-    ],
-    [
-      0.258977,
-      "c"
-    ],
-    [
-      0.139364,
-      "r"
-    ],
-    [
-      0.111012,
-      "y"
-    ],
-    [
-      0.55406,
-      "p"
-    ],
-    [
-      0.261667,
-      "t"
-    ],
-    [
-      0.284611,
-      "i"
-    ],
-    [
-      0.142087,
-      "o"
-    ],
-    [
-      0.195185,
-      "n"
-    ],
-    [
-      0.23882,
-      "="
-    ],
-    [
-      0.31059,
-      "r"
-    ],
-    [
-      0.151355,
-      "e"
-    ],
-    [
-      0.165925,
-      "p"
-    ],
-    [
-      0.132833,
-      "o"
-    ],
-    [
-      0.253402,
-      "k"
-    ],
-    [
-      0.174711,
-      "e"
-    ],
-    [
-      0.245888,
-      "y"
-    ],
-    [
-      0.759586,
-      " "
-    ],
-    [
-      0.383355,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.189694,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.16364,
-      "\b\u001b[4mm\u001b[4me\u001b[24m"
-    ],
-    [
-      0.151451,
-      "\b\u001b[4me\u001b[4md\u001b[24m"
-    ],
-    [
-      0.239109,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.006487,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m init --encryption=repokey \u001b[4m/media\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.268216,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003429,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m init --encryption=repokey \u001b[4m/media/backup\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.232352,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003575,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m init --encryption=repokey \u001b[4m/media/backup/borgdemo\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.492094,
-      "\b\b\u001b[4mo\u001b[24m\u001b[0m\u001b[24m \b"
-    ],
-    [
-      0.748712,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001017,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000712,
-      "\u001b]2;borg init --encryption=repokey /media/backup/borgdemo\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.548105,
-      "Enter new passphrase: "
-    ],
-    [
-      2.119749,
-      "\r\n"
-    ],
-    [
-      0.000155,
-      "Enter same passphrase again: "
-    ],
-    [
-      1.606761,
-      "\r\n"
-    ],
-    [
-      5.8e-05,
-      "Do you want your passphrase to be displayed for verification? [yN]: "
-    ],
-    [
-      0.901237,
-      "\r\n"
-    ],
-    [
-      0.362453,
-      "\r\nBy default repositories initialized with this version will produce security\r\nerrors if written to with an older version (up to and including Borg 1.0.8).\r\n\r\nIf you want to use these older versions, you can disable the check by running:\r\nborg upgrade --disable-tam '/media/backup/borgdemo'\r\n\r\nSee https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications.\r\n"
-    ],
-    [
-      0.050488,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000166,
-      "\u001b[?2004h"
-    ],
-    [
-      2.49308,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.308744,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.256774,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157732,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.127107,
-      "\b\u001b[1mh\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.178449,
-      "\b\u001b[1mi\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.179372,
-      "\b\u001b[1ms\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.383584,
-      "\b\u001b[1m \u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.103361,
-      "\b\u001b[1mu\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.155066,
-      "\b\u001b[1ms\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.133308,
-      "\b\u001b[1me\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.23615,
-      "\b\u001b[1ms\u001b[1m the repokey encryption. You may look at \"borg help init\" or the \u001b[1mo\u001b[1mnline doc at https://borgbackup.readthedocs.io/ for other modes.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.159159,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.0004,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000738,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000111,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000286,
-      "\u001b[?2004h"
-    ],
-    [
-      1.645569,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000452,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000619,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.0001,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000161,
-      "\u001b[?2004h"
-    ],
-    [
-      1.17234,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.575706,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.205759,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mS\u001b[0m\u001b[39m"
-    ],
-    [
-      0.343517,
-      "\b\u001b[1mS\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.245497,
-      "\b\u001b[1mo\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.218486,
-      "\b\u001b[1m \u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.171258,
-      "\b\u001b[1mn\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.146364,
-      "\b\u001b[1mo\u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.25775,
-      "\b\u001b[1mw\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.271708,
-      "\b\b\u001b[1mw\u001b[0m\u001b[39m\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.213838,
-      "\b\u001b[1mw\u001b[1m,\u001b[0m\u001b[39m"
-    ],
-    [
-      0.422324,
-      "\b\u001b[1m,\u001b[1m let's create our first (compressed) backup.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.561514,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000855,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000773,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      4.8e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000411,
-      "\u001b[?2004h"
-    ],
-    [
-      1.326196,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.191851,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136657,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.142499,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.173217,
-      " "
-    ],
-    [
-      0.294445,
-      "c"
-    ],
-    [
-      0.200519,
-      "r"
-    ],
-    [
-      0.153078,
-      "e"
-    ],
-    [
-      0.133383,
-      "a"
-    ],
-    [
-      0.12891,
-      "t"
-    ],
-    [
-      0.151491,
-      "e"
-    ],
-    [
-      0.728709,
-      " "
-    ],
-    [
-      0.592118,
-      "-"
-    ],
-    [
-      0.118108,
-      "-"
-    ],
-    [
-      0.277349,
-      "s"
-    ],
-    [
-      0.134588,
-      "t"
-    ],
-    [
-      0.148057,
-      "a"
-    ],
-    [
-      0.090202,
-      "t"
-    ],
-    [
-      0.150971,
-      "s"
-    ],
-    [
-      0.307217,
-      " "
-    ],
-    [
-      0.481688,
-      "-"
-    ],
-    [
-      0.112243,
-      "-"
-    ],
-    [
-      0.234317,
-      "p"
-    ],
-    [
-      0.12453,
-      "r"
-    ],
-    [
-      0.116446,
-      "o"
-    ],
-    [
-      0.213657,
-      "g"
-    ],
-    [
-      0.12239,
-      "r"
-    ],
-    [
-      0.165156,
-      "e"
-    ],
-    [
-      0.256082,
-      "s"
-    ],
-    [
-      0.175158,
-      "s"
-    ],
-    [
-      0.302493,
-      " "
-    ],
-    [
-      0.490303,
-      "-"
-    ],
-    [
-      0.117279,
-      "-"
-    ],
-    [
-      0.130499,
-      "c"
-    ],
-    [
-      0.146261,
-      "o"
-    ],
-    [
-      0.139848,
-      "m"
-    ],
-    [
-      0.156108,
-      "p"
-    ],
-    [
-      0.190058,
-      "r"
-    ],
-    [
-      0.166862,
-      "e"
-    ],
-    [
-      0.261225,
-      "s"
-    ],
-    [
-      0.157133,
-      "s"
-    ],
-    [
-      0.281205,
-      "i"
-    ],
-    [
-      0.142487,
-      "o"
-    ],
-    [
-      0.179023,
-      "n"
-    ],
-    [
-      0.854723,
-      " "
-    ],
-    [
-      0.580178,
-      "l"
-    ],
-    [
-      0.29757,
-      "z"
-    ],
-    [
-      0.3111,
-      "4"
-    ],
-    [
-      1.085772,
-      " "
-    ],
-    [
-      0.635539,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.268857,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.121341,
-      "\b\u001b[4mm\u001b[4me\u001b[24m"
-    ],
-    [
-      0.141645,
-      "\b\u001b[4me\u001b[4md\u001b[24m"
-    ],
-    [
-      0.230858,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.010346,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m create --stats --progress --compression lz4 \u001b[4m/media\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.416084,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.004048,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m create --stats --progress --compression lz4 \u001b[4m/media/backup\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.346657,
-      "\u001b[?7l"
-    ],
-    [
-      2.7e-05,
-      "\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003996,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m create --stats --progress --compression lz4 \u001b[4m/media/backup/borgdemo\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      1.068791,
-      "\b\b\u001b[4mo\u001b[24m\u001b[0m\u001b[24m \b"
-    ],
-    [
-      1.210608,
-      "\u001b[22D\u001b[24m/\u001b[24mm\u001b[24me\u001b[24md\u001b[24mi\u001b[24ma\u001b[24m/\u001b[24mb\u001b[24ma\u001b[24mc\u001b[24mk\u001b[24mu\u001b[24mp\u001b[24m/\u001b[24mb\u001b[24mo\u001b[24mr\u001b[24mg\u001b[24md\u001b[24me\u001b[24mm\u001b[24mo:"
-    ],
-    [
-      0.125995,
-      ":"
-    ],
-    [
-      0.376036,
-      "b"
-    ],
-    [
-      0.101011,
-      "a"
-    ],
-    [
-      0.178171,
-      "c \r\u001b[K"
-    ],
-    [
-      0.133561,
-      "k"
-    ],
-    [
-      0.162923,
-      "\rku"
-    ],
-    [
-      0.241519,
-      "p"
-    ],
-    [
-      1.426974,
-      "1"
-    ],
-    [
-      0.432275,
-      " "
-    ],
-    [
-      0.295102,
-      "\u001b[4mW\u001b[24m"
-    ],
-    [
-      0.158768,
-      "\b\u001b[4mW\u001b[4ma\u001b[24m"
-    ],
-    [
-      0.270666,
-      "\b\u001b[4ma\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.13015,
-      "\b\u001b[4ml\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.267749,
-      "\b\u001b[4ml\u001b[4mp\u001b[24m"
-    ],
-    [
-      0.173461,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003997,
-      "\u001b[A\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ "
-    ],
-    [
-      3.5e-05,
-      "\u001b[32mborg\u001b[39m create --stats --progress --compression lz4 /media/backup/borgdemo::backup1 \u001b[4mWallpaper\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.997225,
-      "\b\b\u001b[4mr\u001b[24m\u001b[K"
-    ],
-    [
-      0.447022,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.002978,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000917,
-      "\u001b]2;borg create --stats --progress --compression lz4 Wallpaper\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.630228,
-      "Enter passphrase for key /media/backup/borgdemo: "
-    ],
-    [
-      2.264647,
-      "\r\n"
-    ],
-    [
-      0.108689,
-      "0 B O 0 B C 0 B D 0 N Wallpaper                                               \r"
-    ],
-    [
-      0.024194,
-      "Initializing cache transaction: Reading config                                \r"
-    ],
-    [
-      0.000234,
-      "Initializing cache transaction: Reading chunks                                \r"
-    ],
-    [
-      0.000225,
-      "Initializing cache transaction: Reading files                                 \r"
-    ],
-    [
-      0.000215,
-      "                                                                              \r"
-    ],
-    [
-      0.179719,
-      "5.21 MB O 5.21 MB C 5.21 MB D 8 N Wallpaper/bigcollec...em_Wasserloch_im_Q.jpg\r"
-    ],
-    [
-      0.206362,
-      "17.55 MB O 17.51 MB C 15.18 MB D 31 N Wallpaper/bigcoll...ckr_OpenGetty_Im.jpg\r"
-    ],
-    [
-      0.202173,
-      "28.63 MB O 28.59 MB C 26.26 MB D 49 N Wallpaper/bigcoll...ortugal____Stefa.jpg\r"
-    ],
-    [
-      0.201105,
-      "41.30 MB O 41.26 MB C 38.94 MB D 71 N Wallpaper/bigcoll...e_in_der_Gro_auf.jpg\r"
-    ],
-    [
-      0.205913,
-      "53.63 MB O 53.54 MB C 51.21 MB D 93 N Wallpaper/bigcoll...De_Janeiro__Bras.jpg\r"
-    ],
-    [
-      0.201657,
-      "66.10 MB O 65.99 MB C 63.66 MB D 115 N Wallpaper/bigcol...Kenai-Fjords-Nat.jpg\r"
-    ],
-    [
-      0.222663,
-      "78.06 MB O 77.92 MB C 75.59 MB D 135 N Wallpaper/bigcol...ien____Nora_De_A.jpg\r"
-    ],
-    [
-      0.206809,
-      "89.99 MB O 89.82 MB C 85.43 MB D 155 N Wallpaper/bigcol...__De_Pere__Wisco.jpg\r"
-    ],
-    [
-      0.204475,
-      "101.51 MB O 101.32 MB C 96.93 MB D 175 N Wallpaper/bigco..._Silver_Falls_S.jpg\r"
-    ],
-    [
-      0.206201,
-      "115.08 MB O 114.89 MB C 110.50 MB D 199 N Wallpaper/bigco..._Garret_Suhrie.jpg\r"
-    ],
-    [
-      0.202147,
-      "126.51 MB O 126.28 MB C 119.47 MB D 220 N Wallpaper/bigco...fenmesserfisch.jpg\r"
-    ],
-    [
-      0.206629,
-      "138.74 MB O 138.50 MB C 131.69 MB D 243 N Wallpaper/bigco...tswana____Mich.jpg\r"
-    ],
-    [
-      0.214855,
-      "152.84 MB O 152.60 MB C 142.74 MB D 269 N Wallpaper/bigco...fest__Munich__.jpg\r"
-    ],
-    [
-      0.200083,
-      "163.05 MB O 162.80 MB C 152.94 MB D 288 N Wallpaper/bigco..._Marco_RomaniG.jpg\r"
-    ],
-    [
-      0.208535,
-      "175.85 MB O 175.57 MB C 164.47 MB D 308 N Wallpaper/bigco...gway__Colorado.jpg\r"
-    ],
-    [
-      0.21234,
-      "184.65 MB O 184.36 MB C 173.25 MB D 324 N Wallpaper/bigco...nstanz__Baden-.jpg\r"
-    ],
-    [
-      0.200087,
-      "194.92 MB O 194.59 MB C 183.49 MB D 343 N Wallpaper/bigco...op__Caledon__P.jpg\r"
-    ],
-    [
-      0.201257,
-      "204.71 MB O 204.38 MB C 191.68 MB D 361 N Wallpaper/bigco...izian_in_Jamni.jpg\r"
-    ],
-    [
-      0.213355,
-      "217.22 MB O 216.88 MB C 202.98 MB D 382 N Wallpaper/bigco...appadokien__T_.jpg\r"
-    ],
-    [
-      0.202274,
-      "230.56 MB O 230.16 MB C 212.45 MB D 404 N Wallpaper/bigco...eleiGetty_Imag.jpg\r"
-    ],
-    [
-      0.204836,
-      "242.95 MB O 242.53 MB C 224.34 MB D 426 N Wallpaper/bigco...g__Thailand___.jpg\r"
-    ],
-    [
-      0.205093,
-      "254.42 MB O 254.02 MB C 232.75 MB D 446 N Wallpaper/bigco...ame_Reserve__O.jpg\r"
-    ],
-    [
-      0.201488,
-      "265.77 MB O 265.39 MB C 242.76 MB D 466 N Wallpaper/bigco...e_Republik____.jpg\r"
-    ],
-    [
-      0.20036,
-      "278.64 MB O 278.26 MB C 254.62 MB D 488 N Wallpaper/bigco...ien____Patty_P.jpg\r"
-    ],
-    [
-      0.209301,
-      "288.82 MB O 288.45 MB C 264.81 MB D 505 N Wallpaper/bigco...Ruhpolding__Ch.jpg\r"
-    ],
-    [
-      0.214561,
-      "298.04 MB O 297.68 MB C 274.04 MB D 520 N Wallpaper/bigco...wo__Landkreis_.jpg\r"
-    ],
-    [
-      0.222111,
-      "311.03 MB O 310.66 MB C 287.02 MB D 543 N Wallpaper/bigco...a__Portugal___.jpg\r"
-    ],
-    [
-      0.204945,
-      "319.53 MB O 319.17 MB C 295.53 MB D 558 N Wallpaper/bigco...hinos__Hondura.jpg\r"
-    ],
-    [
-      0.213928,
-      "328.19 MB O 327.77 MB C 304.13 MB D 574 N Wallpaper/bigco...ndon__Gro_brit.jpg\r"
-    ],
-    [
-      0.206827,
-      "338.25 MB O 337.81 MB C 314.17 MB D 591 N Wallpaper/bigco...l_Forest__Bund.jpg\r"
-    ],
-    [
-      0.209094,
-      "347.40 MB O 346.96 MB C 323.32 MB D 606 N Wallpaper/bigco...tlantischen_Oz.jpg\r"
-    ],
-    [
-      0.200671,
-      "361.16 MB O 360.71 MB C 334.04 MB D 628 N Wallpaper/bigco...lpark__British.jpg\r"
-    ],
-    [
-      0.208778,
-      "375.20 MB O 374.77 MB C 348.09 MB D 650 N Wallpaper/bigco...swagen_beim_Ro.jpg\r"
-    ],
-    [
-      0.2023,
-      "385.94 MB O 385.47 MB C 358.79 MB D 669 N Wallpaper/bigco...-Bessin__Frank.jpg\r"
-    ],
-    [
-      0.201448,
-      "396.55 MB O 396.10 MB C 368.89 MB D 687 N Wallpaper/bigco...nian_Switzerla.jpg\r"
-    ],
-    [
-      0.200229,
-      "411.96 MB O 411.41 MB C 373.94 MB D 711 N Wallpaper/bigco...CREATISTAGetty.jpg\r"
-    ],
-    [
-      0.202083,
-      "420.92 MB O 420.38 MB C 382.91 MB D 727 N Wallpaper/bigco...LLCCorbisVCG_G.jpg\r"
-    ],
-    [
-      0.202677,
-      "430.76 MB O 430.21 MB C 392.74 MB D 745 N Wallpaper/bigco...r__Tansania___.jpg\r"
-    ],
-    [
-      0.206733,
-      "441.45 MB O 440.87 MB C 400.76 MB D 763 N Wallpaper/bigco...andenburg__Deu.jpg\r"
-    ],
-    [
-      0.205541,
-      "449.42 MB O 448.83 MB C 408.72 MB D 776 N Wallpaper/bigco...Wind_Cave_Nati.jpg\r"
-    ],
-    [
-      0.201764,
-      "458.56 MB O 457.97 MB C 417.20 MB D 792 N Wallpaper/bigco...dney_Harbour_B.jpg\r"
-    ],
-    [
-      0.206272,
-      "470.73 MB O 470.08 MB C 428.74 MB D 815 N Wallpaper/bigco...hland____Patri.jpg\r"
-    ],
-    [
-      0.210875,
-      "485.80 MB O 485.15 MB C 443.01 MB D 843 N Wallpaper/bigco...Hokkaido__Japa.jpg\r"
-    ],
-    [
-      0.227162,
-      "498.93 MB O 498.27 MB C 450.80 MB D 867 N Wallpaper/bigco...topher_Collins.jpg\r"
-    ],
-    [
-      0.206293,
-      "510.73 MB O 510.07 MB C 462.15 MB D 887 N Wallpaper/bigco...itzeinschlag_i.jpg\r"
-    ],
-    [
-      0.200265,
-      "520.54 MB O 519.86 MB C 471.39 MB D 903 N Wallpaper/bigco..._zwischen_Boli.jpg\r"
-    ],
-    [
-      0.204067,
-      "528.01 MB O 527.33 MB C 478.86 MB D 916 N Wallpaper/bigco...jall__Island__.jpg\r"
-    ],
-    [
-      0.209223,
-      "539.61 MB O 538.94 MB C 490.47 MB D 934 N Wallpaper/bigco..._amares__Provi.jpg\r"
-    ],
-    [
-      0.215843,
-      "551.16 MB O 550.49 MB C 501.50 MB D 952 N Wallpaper/bigco...tionalpark__Ut.jpg\r"
-    ],
-    [
-      0.212909,
-      "561.29 MB O 560.60 MB C 511.22 MB D 970 N Wallpaper/bigco..._Inseln__Niede.jpg\r"
-    ],
-    [
-      0.209655,
-      "571.59 MB O 570.86 MB C 520.92 MB D 989 N Wallpaper/bigco...rbeskopf__Huns.jpg\r"
-    ],
-    [
-      0.232431,
-      "582.52 MB O 581.80 MB C 525.99 MB D 1006 N Wallpaper/bigc...n__an_art_in 2.jpg\r"
-    ],
-    [
-      0.201199,
-      "593.36 MB O 592.12 MB C 536.31 MB D 1036 N Wallpaper/more/Green_Curves.jpg    \r"
-    ],
-    [
-      0.205747,
-      "604.80 MB O 603.52 MB C 547.71 MB D 1044 N Wallpaper/evenmore/ChipDE 06.jpg   \r"
-    ],
-    [
-      0.23016,
-      "Compacting segments   0%                                                      \r"
-    ],
-    [
-      0.174726,
-      "Compacting segments  50%                                                      \r"
-    ],
-    [
-      4.5e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.04695,
-      "Saving files cache                                                            \r"
-    ],
-    [
-      0.005688,
-      "Saving chunks cache                                                           \r"
-    ],
-    [
-      0.000299,
-      "Saving cache config                                                           \r"
-    ],
-    [
-      0.107527,
-      "                                                                              \r"
-    ],
-    [
-      3.7e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.000355,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      3.7e-05,
-      "Archive name: backup1\r\n"
-    ],
-    [
-      1.4e-05,
-      "Archive fingerprint: 9758c7db339a066360bffad17b2ffac4fb368c6722c0be3a47a7a9b631f06407\r\n"
-    ],
-    [
-      0.000106,
-      "Time (start): Fri, 2017-07-14 21:54:06\r\nTime (end):   Fri, 2017-07-14 21:54:17\r\n"
-    ],
-    [
-      3.9e-05,
-      "Duration: 11.40 seconds\r\n"
-    ],
-    [
-      3.4e-05,
-      "Number of files: 1050\r\n"
-    ],
-    [
-      7.2e-05,
-      "Utilization of maximum supported archive size: 0%\r\n------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      4.7e-05,
-      "                       Original size      Compressed size    Deduplicated size\r\n"
-    ],
-    [
-      1.1e-05,
-      "This archive:              618.96 MB            617.47 MB            561.67 MB\r\n"
-    ],
-    [
-      2.7e-05,
-      "All archives:              618.96 MB            617.47 MB            561.67 MB\r\n"
-    ],
-    [
-      2.4e-05,
-      "\r\n"
-    ],
-    [
-      2.3e-05,
-      "                       Unique chunks         Total chunks\r\n"
-    ],
-    [
-      1.3e-05,
-      "Chunk index:                     999                 1093\r\n"
-    ],
-    [
-      2.4e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      0.04885,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000195,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000196,
-      "\u001b[?2004h"
-    ],
-    [
-      1.403148,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.918581,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.361872,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12148,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.21559,
-      "\b\u001b[1mh\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.152309,
-      "\b\u001b[1ma\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.941741,
-      "\b\u001b[1mt\u001b[1m's nice, so far.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.005262,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.00039,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001061,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      8.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000287,
-      "\u001b[?2004h"
-    ],
-    [
-      2.564637,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.34769,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.160447,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mS\u001b[0m\u001b[39m"
-    ],
-    [
-      0.153165,
-      "\b\u001b[1mS\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.17514,
-      "\b\u001b[1mo\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.198658,
-      "\b\u001b[1m \u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.204631,
-      "\b\u001b[1ml\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.250815,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      1.190059,
-      "\b\u001b[1mt\u001b[1m's add a new file…\u001b[0m\u001b[39m"
-    ],
-    [
-      1.216941,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000401,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000756,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      2.1e-05,
-      "\u001b]1;~/Pictures\u0007"
-    ],
-    [
-      8.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000277,
-      "\u001b[?2004h"
-    ],
-    [
-      1.289557,
-      "\u001b[1m\u001b[31me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.216875,
-      "\b\u001b[1m\u001b[31me\u001b[1m\u001b[31mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184187,
-      "\b\b\u001b[1m\u001b[31me\u001b[1m\u001b[31mc\u001b[1m\u001b[31mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.177444,
-      "\b\b\b\u001b[0m\u001b[32me\u001b[0m\u001b[32mc\u001b[0m\u001b[32mh\u001b[32mo\u001b[39m"
-    ],
-    [
-      0.226152,
-      " "
-    ],
-    [
-      0.320216,
-      "\u001b[33m\"\u001b[39m"
-    ],
-    [
-      0.404454,
-      "\b\u001b[33m\"\u001b[33ma\u001b[39m"
-    ],
-    [
-      0.267657,
-      "\b\u001b[33ma\u001b[33md\u001b[39m"
-    ],
-    [
-      0.130258,
-      "\b\u001b[33md\u001b[33md\u001b[39m"
-    ],
-    [
-      1.613237,
-      "\b\u001b[33md\u001b[33me\u001b[39m"
-    ],
-    [
-      0.175381,
-      "\b\u001b[33me\u001b[33md\u001b[39m"
-    ],
-    [
-      0.404248,
-      "\b\u001b[33md\u001b[33m \u001b[39m"
-    ],
-    [
-      0.669276,
-      "\b\u001b[33m \u001b[33mn\u001b[39m"
-    ],
-    [
-      0.128663,
-      "\b\u001b[33mn\u001b[33me\u001b[39m"
-    ],
-    [
-      0.132483,
-      "\b\u001b[33me\u001b[33mw\u001b[39m"
-    ],
-    [
-      0.175823,
-      "\b\u001b[33mw\u001b[33m \u001b[39m"
-    ],
-    [
-      0.220023,
-      "\b\u001b[33m \u001b[33mn\u001b[39m"
-    ],
-    [
-      0.156931,
-      "\b\u001b[33mn\u001b[33mi\u001b[39m"
-    ],
-    [
-      0.10604,
-      "\b\u001b[33mi\u001b[33mc\u001b[39m"
-    ],
-    [
-      0.166585,
-      "\b\u001b[33mc\u001b[33me\u001b[39m"
-    ],
-    [
-      0.306911,
-      "\b\u001b[33me\u001b[33m \u001b[39m"
-    ],
-    [
-      0.228895,
-      "\b\u001b[33m \u001b[33mf\u001b[39m"
-    ],
-    [
-      0.160772,
-      "\b\u001b[33mf\u001b[33mi\u001b[39m"
-    ],
-    [
-      0.144448,
-      "\b\u001b[33mi\u001b[33ml\u001b[39m"
-    ],
-    [
-      0.125193,
-      "\b\u001b[33ml\u001b[33me\u001b[39m"
-    ],
-    [
-      0.828758,
-      "\b\u001b[33me\u001b[33m\"\u001b[39m"
-    ],
-    [
-      0.566156,
-      " "
-    ],
-    [
-      0.349791,
-      ">"
-    ],
-    [
-      0.577663,
-      " "
-    ],
-    [
-      0.28936,
-      "\u001b[4mW\u001b[24m"
-    ],
-    [
-      0.157708,
-      "\b\u001b[4mW\u001b[4ma\u001b[24m"
-    ],
-    [
-      0.226616,
-      "\b\u001b[4ma\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.106124,
-      "\b\u001b[4ml\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.099397,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.00361,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mecho\u001b[39m \u001b[33m\"added new nice file\"\u001b[39m > \u001b[4mWallpaper\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.822747,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003743,
-      "\r\r\u001b[40C\u001b[0m\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.00018,
-      "\r\r\n\u001b[J"
-    ],
-    [
-      5.1e-05,
-      "\u001b[38;5;33m2048example\u001b[0m/    \u001b[38;5;13mdeer.jpg\u001b[0m        \u001b[38;5;33mmore\u001b[0m/                         \r\n\u001b[J\u001b[38;5;33mbigcollection\u001b[0m/  \u001b[J\u001b[38;5;33mevenmore\u001b[0m/       \u001b[J                            \u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mecho\u001b[39m \u001b[33m\"added new nice file\"\u001b[39m > \u001b[4mWallpaper/\u001b[24m\u001b[K"
-    ],
-    [
-      1.173525,
-      "\u001b[10D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr\u001b[24m/n"
-    ],
-    [
-      0.118482,
-      "e"
-    ],
-    [
-      0.130187,
-      "w"
-    ],
-    [
-      0.499912,
-      "f"
-    ],
-    [
-      0.161863,
-      "i"
-    ],
-    [
-      0.13679,
-      "l"
-    ],
-    [
-      0.093681,
-      "e"
-    ],
-    [
-      0.261183,
-      "."
-    ],
-    [
-      0.312651,
-      "t"
-    ],
-    [
-      0.10665,
-      "x"
-    ],
-    [
-      0.131562,
-      "t"
-    ],
-    [
-      0.79879,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001397,
-      "\u001b[?2004l\r\r\n\u001b[J"
-    ],
-    [
-      0.000679,
-      "\u001b]2;echo \"added new nice file\" > Wallpaper/newfile.txt\u0007\u001b]1;echo\u0007"
-    ],
-    [
-      0.000151,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000183,
-      "\u001b[?2004h"
-    ],
-    [
-      2.785656,
-      "\u001b[32mecho\u001b[39m \u001b[33m\"added new nice file\"\u001b[39m > \u001b[4mWallpaper/newfile.txt\u001b[24m"
-    ],
-    [
-      0.206019,
-      "\u001b[50D\u001b[1m#\u001b[1m \u001b[1mS\u001b[1mo\u001b[1m \u001b[1ml\u001b[1me\u001b[1mt\u001b[1m'\u001b[1ms\u001b[1m \u001b[1ma\u001b[1md\u001b[1md\u001b[1m \u001b[1ma\u001b[1m \u001b[1mn\u001b[1me\u001b[1mw\u001b[1m \u001b[1mf\u001b[1mi\u001b[1ml\u001b[1me\u001b[1m…\u001b[0m\u001b[39m   \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24m \u001b[24D"
-    ],
-    [
-      0.251309,
-      "\u001b[24D\u001b[1mT\u001b[1mh\u001b[1ma\u001b[1mt\u001b[1m'\u001b[1ms\u001b[1m \u001b[1mn\u001b[1mi\u001b[1mc\u001b[1me\u001b[1m,\u001b[1m \u001b[1ms\u001b[1mo\u001b[1m \u001b[1mf\u001b[1ma\u001b[1mr\u001b[1m.\u001b[0m\u001b[39m\u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \b\b\b\b"
-    ],
-    [
-      0.372268,
-      "\u001b[22D\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[0m\u001b[32mg\u001b[39m\u001b[0m\u001b[39m \u001b[0m\u001b[39mc\u001b[0m\u001b[39mr\u001b[0m\u001b[39me\u001b[0m\u001b[39ma\u001b[0m\u001b[39mt\u001b[0m\u001b[39me\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39m-\u001b[0m\u001b[39ms\u001b[0m\u001b[39mt\u001b[0m\u001b[39ma\u001b[0m\u001b[39mt\u001b[0m\u001b[39ms\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39m-progress --compression lz4 /media/backup/borgdemo::backup1 \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      0.686798,
-      "\b"
-    ],
-    [
-      0.49974,
-      "\b"
-    ],
-    [
-      0.029256,
-      "\b"
-    ],
-    [
-      0.030383,
-      "\b"
-    ],
-    [
-      0.030965,
-      "\b"
-    ],
-    [
-      0.02928,
-      "\b"
-    ],
-    [
-      0.030139,
-      "\b"
-    ],
-    [
-      0.029254,
-      "\b"
-    ],
-    [
-      0.03083,
-      "\b"
-    ],
-    [
-      0.030284,
-      "\b"
-    ],
-    [
-      0.030187,
-      "\b"
-    ],
-    [
-      0.030317,
-      "\b"
-    ],
-    [
-      0.439014,
-      "\u001b[1C"
-    ],
-    [
-      0.357869,
-      "\u001b[P\u001b[10C \u001b[11D"
-    ],
-    [
-      0.141225,
-      "2\u001b[24m \u001b[4mW\u001b[4ma\u001b[4ml\u001b[4ml\u001b[4mp\u001b[4ma\u001b[4mp\u001b[4me\u001b[4mr\u001b[24m\u001b[10D"
-    ],
-    [
-      0.615794,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001653,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000779,
-      "\u001b]2;borg create --stats --progress --compression lz4  Wallpaper\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.627474,
-      "Enter passphrase for key /media/backup/borgdemo: "
-    ],
-    [
-      3.666123,
-      "\r\n"
-    ],
-    [
-      0.128711,
-      "0 B O 0 B C 0 B D 0 N Wallpaper                                               \r"
-    ],
-    [
-      0.006399,
-      "Initializing cache transaction: Reading config                                \r"
-    ],
-    [
-      0.000208,
-      "Initializing cache transaction: Reading chunks                                \r"
-    ],
-    [
-      0.000253,
-      "Initializing cache transaction: Reading files                                 \r"
-    ],
-    [
-      0.000269,
-      "                                                                              \r"
-    ],
-    [
-      0.247567,
-      "584.80 MB O 584.09 MB C 65 B D 1011 N Wallpaper/newfile.txt                   \r"
-    ],
-    [
-      0.264517,
-      "Compacting segments   0%                                                      \r"
-    ],
-    [
-      0.000942,
-      "Compacting segments  50%                                                      \r"
-    ],
-    [
-      4e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.0606,
-      "Saving files cache                                                            \r"
-    ],
-    [
-      0.005405,
-      "Saving chunks cache                                                           \r"
-    ],
-    [
-      0.000411,
-      "Saving cache config                                                           \r"
-    ],
-    [
-      0.079766,
-      "                                                                              \r"
-    ],
-    [
-      4.7e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.000375,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      2.4e-05,
-      "Archive name: backup2\r\n"
-    ],
-    [
-      2.7e-05,
-      "Archive fingerprint: 5aaf03d1c710cf774f9c9ff1c6317b621c14e519c6bac459f6d64b31e3bbd200\r\n"
-    ],
-    [
-      0.000102,
-      "Time (start): Fri, 2017-07-14 21:54:56\r\n"
-    ],
-    [
-      2.1e-05,
-      "Time (end):   Fri, 2017-07-14 21:54:56\r\nDuration: 0.33 seconds\r\n"
-    ],
-    [
-      7.4e-05,
-      "Number of files: 1051\r\n"
-    ],
-    [
-      8.3e-05,
-      "Utilization of maximum supported archive size: 0%\r\n------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      7e-06,
-      "                       Original size      Compressed size    Deduplicated size\r\n"
-    ],
-    [
-      2.8e-05,
-      "This archive:              618.96 MB            617.47 MB            106.70 kB\r\n"
-    ],
-    [
-      2.2e-05,
-      "All archives:                1.24 GB              1.23 GB            561.77 MB\r\n"
-    ],
-    [
-      5.3e-05,
-      "\r\n"
-    ],
-    [
-      7e-06,
-      "                       Unique chunks         Total chunks\r\n"
-    ],
-    [
-      2.2e-05,
-      "Chunk index:                    1002                 2187\r\n"
-    ],
-    [
-      2.3e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      0.046167,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      8.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000212,
-      "\u001b[?2004h"
-    ],
-    [
-      1.922718,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.225243,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.166756,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mW\u001b[0m\u001b[39m"
-    ],
-    [
-      0.162323,
-      "\b\u001b[1mW\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.097757,
-      "\b\u001b[1mo\u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.265877,
-      "\b\u001b[1mw\u001b[1m, this was a lot faster!\u001b[0m\u001b[39m"
-    ],
-    [
-      0.789811,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000392,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000754,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      7.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000273,
-      "\u001b[?2004h"
-    ],
-    [
-      1.15181,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.234049,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.209548,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.168421,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.232312,
-      "\b\u001b[1mo\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.201133,
-      "\b\u001b[1mt\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.338758,
-      "\b\u001b[1mi\u001b[1mce the \"Deduplicated size\" in \"This archive\"?\u001b[0m\u001b[39m"
-    ],
-    [
-      2.236964,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000951,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001084,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      9.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000505,
-      "\u001b[?2004h"
-    ],
-    [
-      2.51909,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.240091,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.216793,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mB\u001b[0m\u001b[39m"
-    ],
-    [
-      0.192027,
-      "\b\u001b[1mB\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.138706,
-      "\b\u001b[1mo\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.129501,
-      "\b\u001b[1mr\u001b[1mg\u001b[0m\u001b[39m"
-    ],
-    [
-      0.536844,
-      "\b\u001b[1mg\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.143314,
-      "\b\u001b[1m \u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.138384,
-      "\b\u001b[1mr\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.197658,
-      "\b\u001b[1me\u001b[1mcognized that most files did not change and deduplicated them.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.432604,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000397,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00069,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      6.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000319,
-      "\u001b[?2004h"
-    ],
-    [
-      1.153873,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000537,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000623,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000101,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000108,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000309,
-      "\u001b[?2004h"
-    ],
-    [
-      0.447325,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.257975,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.210602,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mB\u001b[0m\u001b[39m"
-    ],
-    [
-      0.182148,
-      "\b\u001b[1mB\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.159923,
-      "\b\u001b[1mu\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.165905,
-      "\b\u001b[1mt\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.175925,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.116184,
-      "\b\u001b[1mw\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.125029,
-      "\b\u001b[1mh\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.110311,
-      "\b\u001b[1ma\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.26718,
-      "\b\u001b[1mt\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.393846,
-      "\b\u001b[1m \u001b[1mhappens, when we move a dir and create a new backup?\u001b[0m\u001b[39m"
-    ],
-    [
-      1.840157,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000398,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000678,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000105,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000102,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000242,
-      "\u001b[?2004h"
-    ],
-    [
-      1.044202,
-      "\u001b[1m\u001b[31mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.167573,
-      "\b\u001b[0m\u001b[32mm\u001b[32mv\u001b[39m"
-    ],
-    [
-      0.203794,
-      " "
-    ],
-    [
-      0.199502,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.002962,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mmv\u001b[39m \u001b[4mWallpaper\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.399299,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.004451,
-      "\r\r\u001b[14C\u001b[0m\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.000168,
-      "\r\r\n\u001b[J"
-    ],
-    [
-      3.2e-05,
-      "\u001b[38;5;33m2048example\u001b[0m/    \u001b[38;5;13mdeer.jpg\u001b[0m        \u001b[38;5;33mmore\u001b[0m/                         \r\n\u001b[J\u001b[38;5;33mbigcollection\u001b[0m/  \u001b[J\u001b[38;5;33mevenmore\u001b[0m/       \u001b[Jnewfile.txt     \u001b[J              \u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m \u001b[4mWallpaper/\u001b[24m\u001b[K"
-    ],
-    [
-      0.416097,
-      "\u001b[?7l"
-    ],
-    [
-      1.3e-05,
-      "\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.002339,
-      "\u001b[10D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr\u001b[24m/2048example\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000184,
-      "\r\r\n"
-    ],
-    [
-      0.000156,
-      "\u001b[7m2048example/  \u001b[0m  \u001b[38;5;13mdeer.jpg\u001b[0m        \u001b[38;5;33mmore\u001b[0m/                         \u001b[K\r\n\u001b[J\u001b[38;5;33mbigcollection\u001b[0m/  \u001b[J\u001b[38;5;33mevenmore\u001b[0m/       \u001b[Jnewfile.txt     \u001b[J              \u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m Wallpaper/2048example\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.23342,
-      "\r\r\n"
-    ],
-    [
-      1.4e-05,
-      "\u001b[7m2048example/  \u001b[0m  \r\u001b[7m2048example/  \u001b[0m  \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m Wallpaper/2048example\u001b[1m/\u001b[0m\u001b[K\u001b[12Dbigcollecti\u001b[0mon\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000154,
-      "\r\r\n"
-    ],
-    [
-      2.5e-05,
-      "\u001b[38;5;33m2048example\u001b[0m/    \r\u001b[1B\u001b[7mbigcollection/\u001b[0m  \r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m Wallpaper/bigcollection\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.378809,
-      "\r\r\n\u001b[J\u001b[A\u001b[29C"
-    ],
-    [
-      0.002159,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m\u001b[K\u001b[1C"
-    ],
-    [
-      0.35586,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.007824,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m \u001b[4mWallpaper\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.248908,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.002608,
-      "\r\r\u001b[38C\u001b[0m\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.000171,
-      "\r\r\n\u001b[J"
-    ],
-    [
-      5.4e-05,
-      "\u001b[38;5;33m2048example\u001b[0m/    \u001b[38;5;13mdeer.jpg\u001b[0m        \u001b[38;5;33mmore\u001b[0m/                         \r\n\u001b[J\u001b[38;5;33mbigcollection\u001b[0m/  \u001b[J\u001b[38;5;33mevenmore\u001b[0m/       \u001b[Jnewfile.txt     \u001b[J              \u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m \u001b[4mWallpaper/\u001b[24m\u001b[K"
-    ],
-    [
-      0.248788,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.004567,
-      "\u001b[10D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr\u001b[24m/2048example\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000182,
-      "\r\r\n"
-    ],
-    [
-      9.1e-05,
-      "\u001b[7m2048example/  \u001b[0m  \u001b[38;5;13mdeer.jpg\u001b[0m        \u001b[38;5;33mmore\u001b[0m/                         \u001b[K\r\n\u001b[J\u001b[38;5;33mbigcollection\u001b[0m/  \u001b[J\u001b[38;5;33mevenmore\u001b[0m/       \u001b[Jnewfile.txt     \u001b[J              \u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m Wallpaper/2048example\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.24704,
-      "\r\r\n"
-    ],
-    [
-      3.2e-05,
-      "\u001b[7m2048example/  \u001b[0m  \r\u001b[7m2048example/  \u001b[0m  \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m Wallpaper/2048example\u001b[1m/\u001b[0m\u001b[K\u001b[12Dbigcollecti\u001b[0mon\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000389,
-      "\r\r\n"
-    ],
-    [
-      3e-05,
-      "\u001b[38;5;33m2048example\u001b[0m/    \r\u001b[1B\u001b[7mbigcollection/\u001b[0m  \r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m Wallpaper/bigcollection\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.595335,
-      "\r\r\n\u001b[J\u001b[A\u001b[53C"
-    ],
-    [
-      0.003755,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mmv\u001b[39m \u001b[4mWallpaper/bigcollection\u001b[24m \u001b[4mWallpaper/bigcollection\u001b[24m\u001b[K\u001b[1C"
-    ],
-    [
-      0.271014,
-      "\b"
-    ],
-    [
-      0.554135,
-      "\u001b[23D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr\u001b[24m/\u001b[24mb\u001b[24mi\u001b[24mg\u001b[24mc\u001b[24mo\u001b[24ml\u001b[24ml\u001b[24me\u001b[24mc\u001b[24mt\u001b[24mi\u001b[24mo\u001b[24mn_"
-    ],
-    [
-      0.317529,
-      "N"
-    ],
-    [
-      0.104435,
-      "E"
-    ],
-    [
-      0.175308,
-      "W"
-    ],
-    [
-      0.956051,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001192,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000754,
-      "\u001b]2;mv -i Wallpaper/bigcollection Wallpaper/bigcollection_NEW\u0007\u001b]1;mv\u0007"
-    ],
-    [
-      0.001182,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      9.8e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.7e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000188,
-      "\u001b[?2004h"
-    ],
-    [
-      1.857261,
-      "\u001b[32mmv\u001b[39m Wallpaper/bigcollection \u001b[4mWallpaper/bigcollection_NEW\u001b[24m"
-    ],
-    [
-      0.208181,
-      "\u001b[54D\u001b[1m#\u001b[1m \u001b[1mB\u001b[1mu\u001b[1mt\u001b[1m \u001b[1mw\u001b[1mh\u001b[1ma\u001b[1mt\u001b[1m \u001b[1mh\u001b[1ma\u001b[1mp\u001b[1mp\u001b[1me\u001b[1mn\u001b[1ms\u001b[1m,\u001b[1m \u001b[1mw\u001b[1mh\u001b[1me\u001b[1mn\u001b[1m \u001b[1mw\u001b[1me\u001b[24m\u001b[1m \u001b[24m\u001b[1mm\u001b[24m\u001b[1mo\u001b[24m\u001b[1mv\u001b[24m\u001b[1me\u001b[24m\u001b[1m \u001b[24m\u001b[1ma\u001b[24m\u001b[1m \u001b[24m\u001b[1md\u001b[24m\u001b[1mi\u001b[24m\u001b[1mr\u001b[24m\u001b[1m \u001b[24m\u001b[1ma\u001b[24m\u001b[1mn\u001b[24m\u001b[1md\u001b[24m\u001b[1m \u001b[24m\u001b[1mc\u001b[24m\u001b[1mr\u001b[24m\u001b[1me\u001b[24m\u001b[1ma\u001b[24m\u001b[1mt\u001b[24m\u001b[1me\u001b[24m\u001b[1m \u001b[24m\u001b[1ma\u001b[24m\u001b[1m \u001b[24m\u001b[1mn\u001b[24m\u001b[1me\u001b[1mw backup?\u001b[0m\u001b[39m"
-    ],
-    [
-      0.2399,
-      "\u001b[60D\u001b[1mo\u001b[1mr\u001b[1mg\u001b[1m \u001b[1mr\u001b[1me\u001b[1mc\u001b[1mo\u001b[1mg\u001b[1mn\u001b[1mi\u001b[1mz\u001b[1me\u001b[1md\u001b[1m \u001b[1mt\u001b[1mh\u001b[1ma\u001b[1mt\u001b[1m \u001b[1mm\u001b[1mo\u001b[1ms\u001b[1mt\u001b[1m \u001b[1mf\u001b[1mi\u001b[1ml\u001b[1me\u001b[1ms\u001b[1m \u001b[1md\u001b[1mi\u001b[1md\u001b[1m \u001b[1mn\u001b[1mo\u001b[1mt\u001b[1m \u001b[1mc\u001b[1mh\u001b[1ma\u001b[1mn\u001b[1mg\u001b[1me\u001b[1m \u001b[1ma\u001b[1mn\u001b[1md\u001b[1m \u001b[1md\u001b[1me\u001b[1md\u001b[1mu\u001b[1mp\u001b[1ml\u001b[1mi\u001b[1mc\u001b[1ma\u001b[1mt\u001b[1med them.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.227963,
-      "\u001b[69D\u001b[1mN\u001b[1mo\u001b[1mt\u001b[1mi\u001b[1mc\u001b[1me\u001b[1m \u001b[1mt\u001b[1mh\u001b[1me\u001b[1m \u001b[1m\"\u001b[1mD\u001b[2C\u001b[0m\u001b[39m\u001b[39P\u001b[10C\u001b[1ms\u001b[1mi\u001b[1mz\u001b[1me\u001b[1m\"\u001b[1m in \"This archive\"?\u001b[0m\u001b[39m                    \u001b[20D"
-    ],
-    [
-      0.344233,
-      "\u001b[49D\u001b[1mW\u001b[1mo\u001b[1mw\u001b[1m,\u001b[1m \u001b[1mt\u001b[1mh\u001b[1mi\u001b[1ms\u001b[1m \u001b[1mw\u001b[1ma\u001b[1ms\u001b[1m \u001b[1ma\u001b[1m \u001b[1ml\u001b[1mo\u001b[1mt\u001b[1m \u001b[1mf\u001b[1ma\u001b[1ms\u001b[1mt\u001b[1me\u001b[1mr\u001b[1m!\u001b[0m\u001b[39m\u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[0m\u001b[39m \u001b[22D"
-    ],
-    [
-      0.396096,
-      "\u001b[29D\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[0m\u001b[32mg\u001b[39m\u001b[0m\u001b[39m \u001b[0m\u001b[39mc\u001b[0m\u001b[39mr\u001b[0m\u001b[39me\u001b[0m\u001b[39ma\u001b[0m\u001b[39mt\u001b[0m\u001b[39me\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39m-\u001b[0m\u001b[39ms\u001b[0m\u001b[39mt\u001b[0m\u001b[39ma\u001b[0m\u001b[39mt\u001b[0m\u001b[39ms\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39m-\u001b[0m\u001b[39mp\u001b[0m\u001b[39mr\u001b[0m\u001b[39mo\u001b[0m\u001b[39mg\u001b[0m\u001b[39mr\u001b[0m\u001b[39me\u001b[0m\u001b[39mss --compression lz4 /media/backup/borgdemo::backup2 \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      0.854343,
-      "\b"
-    ],
-    [
-      0.192067,
-      "\b"
-    ],
-    [
-      0.161921,
-      "\b"
-    ],
-    [
-      0.152949,
-      "\b"
-    ],
-    [
-      0.158914,
-      "\b"
-    ],
-    [
-      0.150013,
-      "\b"
-    ],
-    [
-      0.168061,
-      "\b"
-    ],
-    [
-      0.170964,
-      "\b"
-    ],
-    [
-      0.156237,
-      "\b"
-    ],
-    [
-      0.161813,
-      "\b"
-    ],
-    [
-      0.698972,
-      "\b\u001b[P\u001b[10C \u001b[11D"
-    ],
-    [
-      0.185005,
-      "3\u001b[24m \u001b[4mW\u001b[4ma\u001b[4ml\u001b[4ml\u001b[4mp\u001b[4ma\u001b[4mp\u001b[4me\u001b[4mr\u001b[24m\u001b[10D"
-    ],
-    [
-      0.670037,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.002029,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000793,
-      "\u001b]2;borg create --stats --progress --compression lz4  Wallpaper\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.621587,
-      "Enter passphrase for key /media/backup/borgdemo: "
-    ],
-    [
-      5.034162,
-      "\r\n"
-    ],
-    [
-      0.136527,
-      "0 B O 0 B C 0 B D 0 N Wallpaper                                               \r"
-    ],
-    [
-      0.028491,
-      "Initializing cache transaction: Reading config                                \r"
-    ],
-    [
-      0.000245,
-      "Initializing cache transaction: Reading chunks                                \r"
-    ],
-    [
-      0.000278,
-      "Initializing cache transaction: Reading files                                 \r"
-    ],
-    [
-      0.000296,
-      "                                                                              \r"
-    ],
-    [
-      0.173817,
-      "10.07 MB O 10.04 MB C 0 B D 17 N Wallpaper/bigcollec...rland__England____A.jpg\r"
-    ],
-    [
-      0.20311,
-      "29.10 MB O 29.05 MB C 0 B D 50 N Wallpaper/bigcollec...Creek_Redwoods_Stat.jpg\r"
-    ],
-    [
-      0.202422,
-      "47.67 MB O 47.62 MB C 0 B D 83 N Wallpaper/bigcollec...rson-Wildschutzgebi.jpg\r"
-    ],
-    [
-      0.216811,
-      "64.30 MB O 64.19 MB C 0 B D 112 N Wallpaper/bigcollec..._Planten_un_Blomen.jpg\r"
-    ],
-    [
-      0.214409,
-      "80.89 MB O 80.75 MB C 0 B D 140 N Wallpaper/bigcollec...g__Cologne__German.jpg\r"
-    ],
-    [
-      0.202244,
-      "100.45 MB O 100.26 MB C 0 B D 173 N Wallpaper/bigcolle..._Menorca__Spanien.jpg\r"
-    ],
-    [
-      0.202027,
-      "116.80 MB O 116.61 MB C 0 B D 202 N Wallpaper/bigcolle...artenkirchen__Bay.jpg\r"
-    ],
-    [
-      0.202003,
-      "130.38 MB O 130.15 MB C 0 B D 227 N Wallpaper/bigcolle..._zur_Felsenkirche.jpg\r"
-    ],
-    [
-      0.234918,
-      "143.32 MB O 143.09 MB C 0 B D 251 N Wallpaper/bigcolle...land__Antarktis__.jpg\r"
-    ],
-    [
-      0.204976,
-      "156.31 MB O 156.07 MB C 0 B D 275 N Wallpaper/bigcolle...-Stadion__Rio_de_.jpg\r"
-    ],
-    [
-      0.205408,
-      "173.36 MB O 173.09 MB C 0 B D 304 N Wallpaper/bigcolle...lpark__Alaska__US.jpg\r"
-    ],
-    [
-      0.221776,
-      "183.65 MB O 183.35 MB C 0 B D 322 N Wallpaper/bigcolle...lmeer____Pasquale.jpg\r"
-    ],
-    [
-      0.201052,
-      "195.95 MB O 195.63 MB C 0 B D 345 N Wallpaper/bigcolle...Schutzgebiet_Mary.jpg\r"
-    ],
-    [
-      0.240687,
-      "217.22 MB O 216.88 MB C 0 B D 382 N Wallpaper/bigcolle...__Kappadokien__T_.jpg\r"
-    ],
-    [
-      0.20767,
-      "233.09 MB O 232.68 MB C 0 B D 409 N Wallpaper/bigcolle...epublic_ImagesShu.jpg\r"
-    ],
-    [
-      0.210433,
-      "250.21 MB O 249.81 MB C 0 B D 439 N Wallpaper/bigcolle...ter__Pr_fektur_Fu.jpg\r"
-    ],
-    [
-      0.200954,
-      "268.90 MB O 268.51 MB C 0 B D 472 N Wallpaper/bigcolle...uth_Carolina__USA.jpg\r"
-    ],
-    [
-      0.212828,
-      "286.72 MB O 286.35 MB C 0 B D 502 N Wallpaper/bigcolle...l_Park__Cobham__E.jpg\r"
-    ],
-    [
-      0.206527,
-      "296.84 MB O 296.47 MB C 0 B D 518 N Wallpaper/bigcolle...entAlamy______Bin.jpg\r"
-    ],
-    [
-      0.205003,
-      "310.38 MB O 310.00 MB C 0 B D 542 N Wallpaper/bigcolle...ationalpark__Flor.jpg\r"
-    ],
-    [
-      0.209538,
-      "320.38 MB O 320.03 MB C 0 B D 559 N Wallpaper/bigcolle...ma__Bahamas____Ji.jpg\r"
-    ],
-    [
-      0.201896,
-      "331.76 MB O 331.35 MB C 0 B D 580 N Wallpaper/bigcolle...rd_Bay__Eyre-Halb.jpg\r"
-    ],
-    [
-      0.207585,
-      "347.40 MB O 346.96 MB C 0 B D 606 N Wallpaper/bigcolle...s_Atlantischen_Oz.jpg\r"
-    ],
-    [
-      0.200781,
-      "369.05 MB O 368.62 MB C 0 B D 640 N Wallpaper/bigcolle...ankreich____John_.jpg\r"
-    ],
-    [
-      0.202326,
-      "379.22 MB O 378.78 MB C 0 B D 657 N Wallpaper/bigcolle...chtanemone__Insel.jpg\r"
-    ],
-    [
-      0.211929,
-      "389.83 MB O 389.36 MB C 0 B D 676 N Wallpaper/bigcolle...ugal____Mikael_Sv.jpg\r"
-    ],
-    [
-      0.219553,
-      "402.12 MB O 401.68 MB C 0 B D 695 N Wallpaper/bigcolle...rk_Sarek__Schwede.jpg\r"
-    ],
-    [
-      0.20375,
-      "416.03 MB O 415.48 MB C 0 B D 718 N Wallpaper/bigcolle...em_taubenetzten_G.jpg\r"
-    ],
-    [
-      0.201474,
-      "428.93 MB O 428.38 MB C 0 B D 742 N Wallpaper/bigcolle...Francisco_Bay__Ka.jpg\r"
-    ],
-    [
-      0.200248,
-      "437.92 MB O 437.35 MB C 0 B D 756 N Wallpaper/bigcolle..._der_N_he_von_Tro.jpg\r"
-    ],
-    [
-      0.215254,
-      "446.04 MB O 445.46 MB C 0 B D 770 N Wallpaper/bigcolle...enver__Colorado__.jpg\r"
-    ],
-    [
-      0.202133,
-      "455.95 MB O 455.36 MB C 0 B D 787 N Wallpaper/bigcolle..._Son_Doong-H_hle_.jpg\r"
-    ],
-    [
-      0.208499,
-      "471.36 MB O 470.71 MB C 0 B D 816 N Wallpaper/bigcolle...ly_National_Monum.jpg\r"
-    ],
-    [
-      0.205116,
-      "491.46 MB O 490.81 MB C 0 B D 853 N Wallpaper/bigcolle...ted_during_the_ 1.jpg\r"
-    ],
-    [
-      0.220215,
-      "510.73 MB O 510.07 MB C 0 B D 887 N Wallpaper/bigcolle..._Blitzeinschlag_i.jpg\r"
-    ],
-    [
-      0.201825,
-      "522.32 MB O 521.65 MB C 0 B D 906 N Wallpaper/bigcolle...vador__Santiago__.jpg\r"
-    ],
-    [
-      0.202937,
-      "534.02 MB O 533.34 MB C 0 B D 925 N Wallpaper/bigcolle...doah_National_Par.jpg\r"
-    ],
-    [
-      0.202635,
-      "550.50 MB O 549.83 MB C 0 B D 951 N Wallpaper/bigcolle...liffs_National_Mo.jpg\r"
-    ],
-    [
-      0.202296,
-      "564.18 MB O 563.47 MB C 0 B D 976 N Wallpaper/bigcolle...n_in_Aktion____Va.jpg\r"
-    ],
-    [
-      0.203791,
-      "576.43 MB O 575.71 MB C 0 B D 996 N Wallpaper/bigcolle...______WRIGHTSuper.jpg\r"
-    ],
-    [
-      0.439796,
-      "Compacting segments   0%                                                      \r"
-    ],
-    [
-      0.000919,
-      "Compacting segments  50%                                                      \r"
-    ],
-    [
-      3.7e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.040817,
-      "Saving files cache                                                            \r"
-    ],
-    [
-      0.010023,
-      "Saving chunks cache                                                           \r"
-    ],
-    [
-      0.000278,
-      "Saving cache config                                                           \r"
-    ],
-    [
-      0.093829,
-      "                                                                              \r"
-    ],
-    [
-      1.6e-05,
-      "                                                                              \r"
-    ],
-    [
-      0.000308,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      9e-06,
-      "Archive name: backup3\r\n"
-    ],
-    [
-      3.8e-05,
-      "Archive fingerprint: 36cd8fdf9b8b2e3bbb3fc2bb600acd48609efaf3a0880f900e0701a47ff69d4d\r\n"
-    ],
-    [
-      2e-05,
-      "Time (start): Fri, 2017-07-14 21:55:37\r\n"
-    ],
-    [
-      2.4e-05,
-      "Time (end):   Fri, 2017-07-14 21:55:46\r\n"
-    ],
-    [
-      2.2e-05,
-      "Duration: 8.58 seconds\r\n"
-    ],
-    [
-      2.6e-05,
-      "Number of files: 1051\r\n"
-    ],
-    [
-      2.6e-05,
-      "Utilization of maximum supported archive size: 0%\r\n"
-    ],
-    [
-      2.1e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      2.6e-05,
-      "                       Original size      Compressed size    Deduplicated size\r\n"
-    ],
-    [
-      2.4e-05,
-      "This archive:              618.96 MB            617.47 MB            107.55 kB\r\n"
-    ],
-    [
-      2.1e-05,
-      "All archives:                1.86 GB              1.85 GB            561.88 MB\r\n"
-    ],
-    [
-      2.5e-05,
-      "\r\n"
-    ],
-    [
-      3.9e-05,
-      "                       Unique chunks         Total chunks\r\n"
-    ],
-    [
-      1.1e-05,
-      "Chunk index:                    1006                 3283\r\n"
-    ],
-    [
-      4.8e-05,
-      "------------------------------------------------------------------------------\r\n"
-    ],
-    [
-      0.048607,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      1.9e-05,
-      "\u001b]1;~/Pictures\u0007"
-    ],
-    [
-      7.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00017,
-      "\u001b[?2004h"
-    ],
-    [
-      1.509372,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.261334,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.25826,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mS\u001b[0m\u001b[39m"
-    ],
-    [
-      0.162616,
-      "\b\u001b[1mS\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.27891,
-      "\b\u001b[1mt\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.174723,
-      "\b\u001b[1mi\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.124142,
-      "\b\u001b[1ml\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      1.012371,
-      "\b\u001b[1ml\u001b[1m quite fast…\u001b[0m\u001b[39m"
-    ],
-    [
-      0.74493,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000416,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000686,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      6e-06,
-      "\u001b]1;~/Pictures\u0007"
-    ],
-    [
-      8.8e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000111,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000271,
-      "\u001b[?2004h"
-    ],
-    [
-      2.038818,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.861519,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      2.235116,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mB\u001b[0m\u001b[39m"
-    ],
-    [
-      0.20981,
-      "\b\u001b[1mB\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.216676,
-      "\b\u001b[1mu\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.72822,
-      "\b\u001b[1mt\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      1.094756,
-      "\b\u001b[1m \u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.315528,
-      "\b\u001b[1mw\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.23713,
-      "\b\u001b[1mh\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.286805,
-      "\b\u001b[1me\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.638764,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.81778,
-      "\b\u001b[1m \u001b[1my\u001b[0m\u001b[39m"
-    ],
-    [
-      0.245269,
-      "\b\u001b[1my\u001b[1mou look at the \"deduplicated file size\" again, you see that borg\u001b[1m \u001b[1malso recognized that only the dir and not the files changed in this backup.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.34618,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000453,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000631,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.00011,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000113,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000262,
-      "\u001b[?2004h"
-    ],
-    [
-      3.418707,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.275819,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.2004,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.172829,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.308378,
-      "\b\u001b[1mo\u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.703684,
-      "\b\u001b[1mw\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.8183,
-      "\b\u001b[1m \u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.193322,
-      "\b\u001b[1ml\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.18438,
-      "\b\u001b[1me\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.389996,
-      "\b\u001b[1mt\u001b[1m's look into a repo.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.857879,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000349,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000564,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      2.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000246,
-      "\u001b[?2004h"
-    ],
-    [
-      1.60039,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.177554,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.117613,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12982,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.145309,
-      " "
-    ],
-    [
-      0.256078,
-      "l"
-    ],
-    [
-      0.145029,
-      "i"
-    ],
-    [
-      0.100415,
-      "s"
-    ],
-    [
-      0.137667,
-      "t"
-    ],
-    [
-      0.172051,
-      " "
-    ],
-    [
-      0.490083,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.190449,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.216676,
-      "\b\u001b[4mm\u001b[4me\u001b[24m"
-    ],
-    [
-      0.174909,
-      "\b\u001b[4me\u001b[4md\u001b[24m"
-    ],
-    [
-      0.242368,
-      "\u001b[?7l\u001b[31m......\u001b[39m"
-    ],
-    [
-      3.2e-05,
-      "\u001b[?7h"
-    ],
-    [
-      0.00599,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list \u001b[4m/media\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.345758,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003294,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list \u001b[4m/media/backup\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.253376,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003389,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list \u001b[4m/media/backup/borgdemo\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      1.036958,
-      "\b\b\u001b[4mo\u001b[24m\u001b[0m\u001b[24m \b"
-    ],
-    [
-      2.6e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000854,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000717,
-      "\u001b]2;borg list /media/backup/borgdemo\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.624291,
-      "Enter passphrase for key /media/backup/borgdemo: "
-    ],
-    [
-      2.363577,
-      "\r\n"
-    ],
-    [
-      0.158203,
-      "backup1                              Fri, 2017-07-14 21:54:06 [9758c7db339a066360bffad17b2ffac4fb368c6722c0be3a47a7a9b631f06407]\r\nbackup2                              Fri, 2017-07-14 21:54:56 [5aaf03d1c710cf774f9c9ff1c6317b621c14e519c6bac459f6d64b31e3bbd200]\r\nbackup3                              Fri, 2017-07-14 21:55:37 [36cd8fdf9b8b2e3bbb3fc2bb600acd48609efaf3a0880f900e0701a47ff69d4d]\r\n"
-    ],
-    [
-      0.044143,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.4e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000207,
-      "\u001b[?2004h"
-    ],
-    [
-      5.582312,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.371134,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.184918,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mY\u001b[0m\u001b[39m"
-    ],
-    [
-      0.177123,
-      "\b\u001b[1mY\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.148041,
-      "\b\u001b[1mo\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.461676,
-      "\b\u001b[1mu\u001b[1m'\u001b[0m\u001b[39m"
-    ],
-    [
-      0.668888,
-      "\b\u001b[1m'\u001b[1mll see a list of all backups.\u001b[0m\u001b[39m"
-    ],
-    [
-      0.876235,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000363,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001075,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      8.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000297,
-      "\u001b[?2004h"
-    ],
-    [
-      2.475491,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.382591,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.23474,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mY\u001b[0m\u001b[39m"
-    ],
-    [
-      0.210269,
-      "\b\u001b[1mY\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.196151,
-      "\b\u001b[1mo\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.460253,
-      "\b\u001b[1mu\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.305764,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184098,
-      "\b\u001b[1mc\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.212534,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.305097,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.163485,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.194803,
-      "\b\u001b[1ma\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.282791,
-      "\b\u001b[1ml\u001b[1mso use the same command to look into an archive. But we better f\u001b[1mi\u001b[1mlter the output here:\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.679252,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000434,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000646,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000107,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000302,
-      "\u001b[?2004h"
-    ],
-    [
-      1.162094,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184756,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.114887,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.143983,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.230507,
-      " "
-    ],
-    [
-      0.414382,
-      "l"
-    ],
-    [
-      0.153591,
-      "i"
-    ],
-    [
-      0.044178,
-      "s"
-    ],
-    [
-      0.236299,
-      "t"
-    ],
-    [
-      0.330148,
-      " "
-    ],
-    [
-      0.70018,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.193582,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.172118,
-      "\b\u001b[4mm\u001b[4me\u001b[24m"
-    ],
-    [
-      0.134283,
-      "\b\u001b[4me\u001b[4md\u001b[24m"
-    ],
-    [
-      0.250757,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.006227,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list \u001b[4m/media\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.374078,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003992,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list \u001b[4m/media/backup\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.2609,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003434,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list \u001b[4m/media/backup/borgdemo\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.237963,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003371,
-      "\r\r\u001b[34C\u001b[0m\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.000178,
-      "\r\r\n\u001b[J"
-    ],
-    [
-      4.2e-05,
-      "\u001b[0mREADME        \u001b[38;5;33mdata\u001b[0m/         index.14      nonce                     \r\n\u001b[Jconfig        \u001b[Jhints.14      \u001b[Jintegrity.14  \u001b[J                        \u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mborg\u001b[39m list \u001b[4m/media/backup/borgdemo/\u001b[24m\u001b[K"
-    ],
-    [
-      0.833604,
-      "\b\b\u001b[4mo\u001b[24m\u001b[24m \b"
-    ],
-    [
-      1.042199,
-      "\u001b[22D\u001b[24m/\u001b[24mm\u001b[24me\u001b[24md\u001b[24mi\u001b[24ma\u001b[24m/\u001b[24mb\u001b[24ma\u001b[24mc\u001b[24mk\u001b[24mu\u001b[24mp\u001b[24m/\u001b[24mb\u001b[24mo\u001b[24mr\u001b[24mg\u001b[24md\u001b[24me\u001b[24mm\u001b[24mo:"
-    ],
-    [
-      0.139477,
-      ":"
-    ],
-    [
-      0.711096,
-      "b"
-    ],
-    [
-      0.099664,
-      "a"
-    ],
-    [
-      0.149912,
-      "c"
-    ],
-    [
-      0.16888,
-      "k"
-    ],
-    [
-      0.923931,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.005451,
-      "\r\r\r\r\n\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m list /media/backup/borgdemo::back\u001b[K"
-    ],
-    [
-      0.885297,
-      "u"
-    ],
-    [
-      0.29853,
-      "p"
-    ],
-    [
-      0.456244,
-      "3"
-    ],
-    [
-      1.061844,
-      " "
-    ],
-    [
-      0.589511,
-      "|"
-    ],
-    [
-      0.527539,
-      " "
-    ],
-    [
-      0.343662,
-      "\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.117117,
-      "\b\u001b[32mg\u001b[32mr\u001b[39m"
-    ],
-    [
-      0.124331,
-      "\b\b\u001b[1m\u001b[31mg\u001b[1m\u001b[31mr\u001b[1m\u001b[31me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.726149,
-      "\b\b\b\u001b[0m\u001b[32mg\u001b[0m\u001b[32mr\u001b[0m\u001b[32me\u001b[32mp\u001b[39m"
-    ],
-    [
-      0.198601,
-      " "
-    ],
-    [
-      0.476336,
-      "\u001b[33m'\u001b[39m"
-    ],
-    [
-      0.392009,
-      "\b\u001b[33m'\u001b[33md\u001b[39m"
-    ],
-    [
-      0.627529,
-      "\b\u001b[33md\u001b[33me\u001b[39m"
-    ],
-    [
-      0.142332,
-      "\b\u001b[33me\u001b[33me\u001b[39m"
-    ],
-    [
-      0.322681,
-      "\b\u001b[33me\u001b[33mr\u001b[39m"
-    ],
-    [
-      0.916328,
-      "\b\u001b[33mr\u001b[33m.\u001b[39m"
-    ],
-    [
-      0.50653,
-      "\b\u001b[33m.\u001b[33mj\u001b[39m"
-    ],
-    [
-      0.242318,
-      "\b\u001b[33mj\u001b[33mp\u001b[39m"
-    ],
-    [
-      0.272214,
-      "\b\u001b[33mp\u001b[33mg\u001b[39m"
-    ],
-    [
-      0.581098,
-      "\b\u001b[33mg\u001b[33m'\u001b[39m"
-    ],
-    [
-      2.559186,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001382,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000773,
-      "\u001b]2;borg list /media/backup/borgdemo::backup3 | grep --color 'deer.jpg'\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.628501,
-      "Enter passphrase for key /media/backup/borgdemo: "
-    ],
-    [
-      2.584332,
-      "\r\n"
-    ],
-    [
-      0.141205,
-      "-rw-rw-r-- rugk   rugk    3781749 Fri, 2017-07-14 17:01:45 Wallpaper/\u001b[01;31m\u001b[Kdeer.jpg\u001b[m\u001b[K\r\n"
-    ],
-    [
-      0.054041,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000135,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      2.7e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00017,
-      "\u001b[?2004h"
-    ],
-    [
-      2.222435,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.269828,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.211035,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mO\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184712,
-      "\b\u001b[1mO\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.374912,
-      "\b\u001b[1mh\u001b[1m, we found our picture. Now extract it:\u001b[0m\u001b[39m"
-    ],
-    [
-      1.545747,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000418,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00063,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      3.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000135,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000463,
-      "\u001b[?2004h"
-    ],
-    [
-      1.638625,
-      "\u001b[1m\u001b[31mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.156977,
-      "\b\u001b[0m\u001b[32mm\u001b[32mv\u001b[39m"
-    ],
-    [
-      0.220013,
-      " "
-    ],
-    [
-      0.151118,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.002944,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mmv\u001b[39m \u001b[4mWallpaper\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.668654,
-      "\b\b\u001b[4mr\u001b[24m\u001b[0m\u001b[24m "
-    ],
-    [
-      0.297169,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.005693,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mmv\u001b[39m \u001b[4mWallpaper\u001b[24m \u001b[4mWallpaper\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.672973,
-      "\b\b\u001b[4mr\u001b[24m\u001b[0m\u001b[24m \b"
-    ],
-    [
-      0.263416,
-      "\u001b[9D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr."
-    ],
-    [
-      0.334671,
-      "o"
-    ],
-    [
-      0.19768,
-      "r"
-    ],
-    [
-      0.142283,
-      "i"
-    ],
-    [
-      0.17833,
-      "g"
-    ],
-    [
-      0.688576,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001806,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000954,
-      "\u001b]2;mv -i Wallpaper Wallpaper.orig\u0007\u001b]1;mv\u0007"
-    ],
-    [
-      0.002076,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000153,
-      "\u001b[?2004h"
-    ],
-    [
-      1.864942,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.18048,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.143872,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.161829,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.170439,
-      " "
-    ],
-    [
-      0.248909,
-      "c"
-    ],
-    [
-      0.365319,
-      "\b \b"
-    ],
-    [
-      0.142233,
-      "e"
-    ],
-    [
-      0.157272,
-      "x"
-    ],
-    [
-      0.166861,
-      "t"
-    ],
-    [
-      0.115114,
-      "r"
-    ],
-    [
-      0.103674,
-      "a"
-    ],
-    [
-      0.102162,
-      "c"
-    ],
-    [
-      0.163264,
-      "t"
-    ],
-    [
-      0.308166,
-      " "
-    ],
-    [
-      1.386497,
-      "\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.183134,
-      "\b\u001b[4m/\u001b[4mm\u001b[24m"
-    ],
-    [
-      0.115533,
-      "\b\u001b[4mm\u001b[4me\u001b[24m"
-    ],
-    [
-      0.12416,
-      "\b\u001b[4me\u001b[4md\u001b[24m"
-    ],
-    [
-      0.206989,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003179,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m extract \u001b[4m/media\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.241808,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003324,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m extract \u001b[4m/media/backup\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.193552,
-      "\u001b[?7l"
-    ],
-    [
-      2.6e-05,
-      "\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003368,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mborg\u001b[39m extract \u001b[4m/media/backup/borgdemo\u001b[1m\u001b[4m/\u001b[0m\u001b[24m\u001b[K"
-    ],
-    [
-      0.700774,
-      "\b\b\u001b[4mo\u001b[24m\u001b[0m\u001b[24m \b"
-    ],
-    [
-      1.151074,
-      "\u001b[22D\u001b[24m/\u001b[24mm\u001b[24me\u001b[24md\u001b[24mi\u001b[24ma\u001b[24m/\u001b[24mb\u001b[24ma\u001b[24mc\u001b[24mk\u001b[24mu\u001b[24mp\u001b[24m/\u001b[24mb\u001b[24mo\u001b[24mr\u001b[24mg\u001b[24md\u001b[24me\u001b[24mm\u001b[24mo:"
-    ],
-    [
-      0.146222,
-      ":"
-    ],
-    [
-      0.579644,
-      "b"
-    ],
-    [
-      0.102789,
-      "a"
-    ],
-    [
-      0.178851,
-      "c"
-    ],
-    [
-      0.133936,
-      "k"
-    ],
-    [
-      0.124089,
-      "u"
-    ],
-    [
-      0.229823,
-      "p"
-    ],
-    [
-      0.174738,
-      "3"
-    ],
-    [
-      0.306821,
-      " "
-    ],
-    [
-      4.287483,
-      "\u001b[45D\u001b[39mb\u001b[39mo\u001b[39mr\u001b[39mg\u001b[41C\u001b[7mWallpaper/deer.jpg\u001b[27m"
-    ],
-    [
-      1.718396,
-      "\u001b[63D\u001b[32mb\u001b[32mo\u001b[32mr\u001b[32mg\u001b[39m\u001b[41C\u001b[27mW\u001b[27ma\u001b[27ml\u001b[27ml\u001b[27mp\u001b[27ma\u001b[27mp\u001b[27me\u001b[27mr\u001b[27m/\u001b[27md\u001b[27me\u001b[27me\u001b[27mr\u001b[27m.\u001b[27mj\u001b[27mp\u001b[27mg"
-    ],
-    [
-      6.4e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001749,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000991,
-      "\u001b]2;borg extract /media/backup/borgdemo::backup3 Wallpaper/deer.jpg\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.633044,
-      "Enter passphrase for key /media/backup/borgdemo: "
-    ],
-    [
-      2.659432,
-      "\r\n"
-    ],
-    [
-      0.198939,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000134,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      7.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000169,
-      "\u001b[?2004h"
-    ],
-    [
-      4.506682,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.287992,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.13604,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132241,
-      "\b\u001b[1mA\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.115152,
-      "\b\u001b[1mn\u001b[1md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.190449,
-      "\b\u001b[1md\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.168765,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.248816,
-      "\b\u001b[1mc\u001b[1mheck that it's the same:\u001b[0m\u001b[39m"
-    ],
-    [
-      1.093037,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000401,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000745,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      7.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.0001,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000321,
-      "\u001b[?2004h"
-    ],
-    [
-      1.350298,
-      "\u001b[32md\u001b[39m"
-    ],
-    [
-      0.181769,
-      "\b\u001b[1m\u001b[31md\u001b[1m\u001b[31mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.148155,
-      "\b\b\u001b[1m\u001b[31md\u001b[1m\u001b[31mi\u001b[1m\u001b[31mf\u001b[0m\u001b[39m"
-    ],
-    [
-      0.13874,
-      "\b\b\b\u001b[0m\u001b[32md\u001b[0m\u001b[32mi\u001b[0m\u001b[32mf\u001b[32mf\u001b[39m"
-    ],
-    [
-      0.321772,
-      " "
-    ],
-    [
-      0.410311,
-      "-"
-    ],
-    [
-      0.160707,
-      "s"
-    ],
-    [
-      0.223167,
-      " "
-    ],
-    [
-      0.856546,
-      "\u001b[4mW\u001b[24m"
-    ],
-    [
-      0.184551,
-      "\b\u001b[4mW\u001b[4ma\u001b[24m"
-    ],
-    [
-      0.211734,
-      "\b\u001b[4ma\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.115481,
-      "\b\u001b[4ml\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.13804,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.007132,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      0.620064,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.004082,
-      "\r\r\u001b[19C"
-    ],
-    [
-      0.000148,
-      "\r\r\n\u001b[J\u001b[J\u001b[38;5;33mWallpaper\u001b[0m/       \u001b[J\u001b[38;5;33mWallpaper.orig\u001b[0m/\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      0.83944,
-      "\u001b[?7l"
-    ],
-    [
-      2.4e-05,
-      "\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.003487,
-      "\u001b[9D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000166,
-      "\r\r\n\u001b[J\u001b[7mWallpaper/     \u001b[0m  \u001b[J\u001b[38;5;33mWallpaper.orig\u001b[0m/\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mdiff\u001b[39m -s Wallpaper\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.488495,
-      "\r\r\n"
-    ],
-    [
-      1.6e-05,
-      "\u001b[7mWallpaper/     \u001b[0m  \r\u001b[7mWallpaper/     \u001b[0m  \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mdiff\u001b[39m -s Wallpaper\u001b[1m/\u001b[0m\u001b[K\r\r\n\u001b[J\u001b[A\u001b[20C"
-    ],
-    [
-      0.001959,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper\u001b[24m\u001b[K\u001b[1C"
-    ],
-    [
-      0.285593,
-      "\b"
-    ],
-    [
-      0.303988,
-      "\b\u001b[4mr\u001b[4m/\u001b[24m"
-    ],
-    [
-      0.798187,
-      "\b\u001b[4m/\u001b[4md\u001b[24m"
-    ],
-    [
-      0.241007,
-      "\b\u001b[4md\u001b[4me\u001b[24m"
-    ],
-    [
-      0.21286,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.00579,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m\u001b[1m \u001b[0m\u001b[K"
-    ],
-    [
-      1.289271,
-      "\b\u001b[0m \u001b[4mW\u001b[24m"
-    ],
-    [
-      0.148557,
-      "\b\u001b[4mW\u001b[4ma\u001b[24m"
-    ],
-    [
-      0.16621,
-      "\b\u001b[4ma\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.097599,
-      "\b\u001b[4ml\u001b[4ml\u001b[24m"
-    ],
-    [
-      0.111176,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.005059,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      0.431538,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.005176,
-      "\r\r\u001b[38C"
-    ],
-    [
-      0.000155,
-      "\r\r\n\u001b[J\u001b[J\u001b[38;5;33mWallpaper\u001b[0m/       \u001b[J\u001b[38;5;33mWallpaper.orig\u001b[0m/\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m \u001b[4mWallpaper\u001b[24m\u001b[K"
-    ],
-    [
-      0.389092,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.004561,
-      "\u001b[9D\u001b[24mW\u001b[24ma\u001b[24ml\u001b[24ml\u001b[24mp\u001b[24ma\u001b[24mp\u001b[24me\u001b[24mr\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000155,
-      "\r\r\n\u001b[J\u001b[7mWallpaper/     \u001b[0m  \u001b[J\u001b[38;5;33mWallpaper.orig\u001b[0m/\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C"
-    ],
-    [
-      1.3e-05,
-      "\u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m Wallpaper\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.260844,
-      "\r\r\n"
-    ],
-    [
-      3.6e-05,
-      "\u001b[7mWallpaper/     \u001b[0m  \r\u001b[7mWallpaper/     \u001b[0m  \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m Wallpaper\u001b[1m/\u001b[0m\u001b[K\b\u001b[0m.orig\u001b[1m/\u001b[0m"
-    ],
-    [
-      0.000163,
-      "\r\r\n\u001b[17C\u001b[7mWallpaper.orig/\u001b[0m\r\u001b[38;5;33mWallpaper\u001b[0m/       \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m Wallpaper.orig\u001b[1m/\u001b[0m\u001b[K"
-    ],
-    [
-      0.598634,
-      "\r\r\n\u001b[J\u001b[A\u001b[44C"
-    ],
-    [
-      0.002461,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m \u001b[4mWallpaper.orig\u001b[24m\u001b[K\u001b[1C"
-    ],
-    [
-      0.275896,
-      "\b"
-    ],
-    [
-      0.321512,
-      "\b\u001b[4mg\u001b[4m/\u001b[24m"
-    ],
-    [
-      1.499007,
-      "\b\u001b[4m/\u001b[4md\u001b[24m"
-    ],
-    [
-      0.165243,
-      "\b\u001b[4md\u001b[4me\u001b[24m"
-    ],
-    [
-      0.260397,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.005274,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mdiff\u001b[39m -s \u001b[4mWallpaper/deer.jpg\u001b[24m \u001b[4mWallpaper.orig/deer.jpg\u001b[24m\u001b[1m \u001b[0m\u001b[K"
-    ],
-    [
-      1.658125,
-      "\b\u001b[0m \b"
-    ],
-    [
-      1.5e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001138,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000783,
-      "\u001b]2;diff -s Wallpaper/deer.jpg Wallpaper.orig/deer.jpg\u0007\u001b]1;diff\u0007"
-    ],
-    [
-      0.057035,
-      "Files Wallpaper/deer.jpg and Wallpaper.orig/deer.jpg are identical\r\n"
-    ],
-    [
-      0.000183,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000114,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000199,
-      "\u001b[?2004h"
-    ],
-    [
-      3.579542,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.624347,
-      "\b\u001b[0m\u001b[39m \b"
-    ],
-    [
-      0.353186,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000351,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.0006,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      2.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.00013,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000185,
-      "\u001b[?2004h"
-    ],
-    [
-      0.726522,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.358332,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.183839,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mA\u001b[0m\u001b[39m"
-    ],
-    [
-      0.150451,
-      "\b\u001b[1mA\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.128839,
-      "\b\u001b[1mn\u001b[1md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.583652,
-      "\b\u001b[1md\u001b[1m,\u001b[0m\u001b[39m"
-    ],
-    [
-      0.152149,
-      "\b\u001b[1m,\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.240696,
-      "\b\u001b[1m \u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.130032,
-      "\b\u001b[1mo\u001b[1mf\u001b[0m\u001b[39m"
-    ],
-    [
-      0.306901,
-      "\b\u001b[1mf\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.181176,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.271007,
-      "\b\u001b[1mc\u001b[1mourse, we can also create remote repos via ssh when borg is setup\u001b[1m \u001b[1mthere. This command creates a new remote repo in a subdirectory called \"demo\"\u001b[1m:\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.040444,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000423,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000711,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      6.8e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000297,
-      "\u001b[?2004h"
-    ],
-    [
-      1.613372,
-      "\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.204618,
-      "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.121257,
-      "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31mo\u001b[1m\u001b[31mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.228506,
-      "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32mo\u001b[0m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.469213,
-      " "
-    ],
-    [
-      0.23811,
-      "i"
-    ],
-    [
-      0.139149,
-      "n"
-    ],
-    [
-      0.157285,
-      "i"
-    ],
-    [
-      0.219101,
-      "t"
-    ],
-    [
-      0.389153,
-      " "
-    ],
-    [
-      0.633813,
-      "-"
-    ],
-    [
-      0.102895,
-      "-"
-    ],
-    [
-      0.267338,
-      "e"
-    ],
-    [
-      0.244036,
-      "n"
-    ],
-    [
-      0.303722,
-      "c"
-    ],
-    [
-      0.117325,
-      "r"
-    ],
-    [
-      0.112606,
-      "y"
-    ],
-    [
-      0.250891,
-      "p"
-    ],
-    [
-      0.258828,
-      "t"
-    ],
-    [
-      0.276877,
-      "i"
-    ],
-    [
-      0.131491,
-      "o"
-    ],
-    [
-      0.206852,
-      "n"
-    ],
-    [
-      0.966102,
-      "="
-    ],
-    [
-      0.388021,
-      "r"
-    ],
-    [
-      0.146133,
-      "e"
-    ],
-    [
-      0.176939,
-      "p"
-    ],
-    [
-      0.139187,
-      "o"
-    ],
-    [
-      0.273188,
-      "k"
-    ],
-    [
-      0.172429,
-      "e"
-    ],
-    [
-      0.306306,
-      "y"
-    ],
-    [
-      0.851125,
-      " "
-    ],
-    [
-      0.868971,
-      "b"
-    ],
-    [
-      0.261136,
-      "o"
-    ],
-    [
-      0.12143,
-      "r"
-    ],
-    [
-      0.15507,
-      "g"
-    ],
-    [
-      0.186684,
-      "d"
-    ],
-    [
-      0.141974,
-      "e"
-    ],
-    [
-      0.13004,
-      "m"
-    ],
-    [
-      0.172673,
-      "o"
-    ],
-    [
-      1.041475,
-      "@"
-    ],
-    [
-      0.536019,
-      "r"
-    ],
-    [
-      0.02293,
-      "e"
-    ],
-    [
-      0.223755,
-      "m"
-    ],
-    [
-      0.152859,
-      "o"
-    ],
-    [
-      0.222368,
-      "t"
-    ],
-    [
-      0.095106,
-      "e"
-    ],
-    [
-      0.33914,
-      "s"
-    ],
-    [
-      0.213902,
-      "e"
-    ],
-    [
-      0.136448,
-      "r"
-    ],
-    [
-      0.196228,
-      "v"
-    ],
-    [
-      0.171447,
-      "e"
-    ],
-    [
-      0.154296,
-      "r"
-    ],
-    [
-      1.151168,
-      "."
-    ],
-    [
-      0.198973,
-      "e"
-    ],
-    [
-      0.195428,
-      "x"
-    ],
-    [
-      0.163512,
-      "a"
-    ],
-    [
-      0.157805,
-      "m"
-    ],
-    [
-      0.174865,
-      "p"
-    ],
-    [
-      0.103133,
-      "l"
-    ],
-    [
-      0.145276,
-      "e"
-    ],
-    [
-      2.109373,
-      ":"
-    ],
-    [
-      0.494126,
-      "."
-    ],
-    [
-      0.315325,
-      "/"
-    ],
-    [
-      0.182218,
-      "d"
-    ],
-    [
-      0.138815,
-      "e"
-    ],
-    [
-      0.143066,
-      "m"
-    ],
-    [
-      0.17136,
-      "o"
-    ],
-    [
-      1.831712,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001025,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000824,
-      "\u001b]2;borg init --encryption=repokey borgdemo@remoteserver.example:./demo\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      6.069586,
-      "Enter new passphrase: "
-    ],
-    [
-      2.598936,
-      "\r\n"
-    ],
-    [
-      0.000189,
-      "Enter same passphrase again: "
-    ],
-    [
-      2.044707,
-      "\r\n"
-    ],
-    [
-      0.000198,
-      "Do you want your passphrase to be displayed for verification? [yN]: "
-    ],
-    [
-      1.415539,
-      "\r\n"
-    ],
-    [
-      1.950077,
-      "\r\nBy default repositories initialized with this version will produce security\r\nerrors if written to with an older version (up to and including Borg 1.0.8).\r\n\r\nIf you want to use these older versions, you can disable the check by running:\r\nborg upgrade --disable-tam 'ssh://borgdemo@remoteserver.example/./demo'\r\n\r\nSee https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications.\r\n"
-    ],
-    [
-      0.548386,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      9.5e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000105,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000221,
-      "\u001b[?2004h"
-    ],
-    [
-      0.82377,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.662248,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.610999,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mE\u001b[0m\u001b[39m"
-    ],
-    [
-      0.267513,
-      "\b\u001b[1mE\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.185698,
-      "\b\u001b[1ma\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.161855,
-      "\b\u001b[1ms\u001b[1my\u001b[0m\u001b[39m"
-    ],
-    [
-      0.46273,
-      "\b\u001b[1my\u001b[1m, isn't it? That's all you need to know for basic usage.\u001b[0m\u001b[39m"
-    ],
-    [
-      1.861984,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001044,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001525,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      6.3e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000316,
-      "\u001b[?2004h"
-    ],
-    [
-      1.009133,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.240205,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.217287,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mI\u001b[0m\u001b[39m"
-    ],
-    [
-      0.163888,
-      "\b\u001b[1mI\u001b[1mf\u001b[0m\u001b[39m"
-    ],
-    [
-      0.349458,
-      "\b\u001b[1mf\u001b[1m you want to see more, have a look at the screencast showing the \"advanc\u001b[1me\u001b[1md usage\".\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      2.780664,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000734,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000812,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      4.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000113,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000299,
-      "\u001b[?2004h"
-    ],
-    [
-      1.119856,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.281915,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.244389,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mI\u001b[0m\u001b[39m"
-    ],
-    [
-      0.143064,
-      "\b\u001b[1mI\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.171731,
-      "\b\u001b[1mn\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.139438,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.388834,
-      "\b\u001b[1ma\u001b[1mny case, enjoy using borg!\u001b[0m\u001b[39m"
-    ],
-    [
-      1.502218,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000883,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000735,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      9.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000113,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000498,
-      "\u001b[?2004h"
-    ],
-    [
-      1.273251,
-      "\u001b[?2004l\r\r\n"
-    ]
-  ]
-}
diff --git a/docs/misc/asciinema/basic.sh b/docs/misc/asciinema/basic.sh
deleted file mode 100644
index 743a506d..00000000
--- a/docs/misc/asciinema/basic.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-# Here you'll see some basic commands to start working with borg.
-# Note: This teaser screencast was made with borg version 1.1.0 – older or newer borg versions may behave differently.
-# But let's start.
-
-# First of all, you can always get help:
-borg help
-# These are a lot of commands, so better we start with a few:
-# Let's create a repo on an external drive…
-borg init --encryption=repokey /media/backup/borgdemo
-# This uses the repokey encryption. You may look at "borg help init" or the online doc at https://borgbackup.readthedocs.io/ for other modes.
-
-# So now, let's create our first (compressed) backup.
-borg create --stats --progress --compression lz4 /media/backup/borgdemo::backup1 Wallpaper
-
-# That's nice, so far.
-# So let's add a new file…
-echo "new nice file" > Wallpaper/newfile.txt
-
-<up>
-borg create --stats --progress --compression lz4 /media/backup/borgdemo::backup2 Wallpaper
-
-# Wow, this was a lot faster!
-# Notice the "Deduplicated size" for "This archive"!
-# Borg recognized that most files did not change and deduplicated them.
-
-# But what happens, when we move a dir and create a new backup?
-mv …
-
-borg create --stats --progress --compression lz4 /media/backup/borgdemo::backup3 Wallpaper
-
-# Still quite fast…
-# But when you look at the "deduplicated file size" again, you see that borg also recognized that only the dir and not the files changed in this backup.
-
-# Now lets look into a repo.
-borg list /media/backup/borgdemo
-
-# You'll see a list of all backups.
-# You can also use the same command to look into an archive. But we better filter the output here:
-borg list /media/backup/borgdemo::backup3 | grep 'deer.jpg'
-
-# Oh, we found our picture. Now extract it…
-mv Wallpaper Wallpaper.orig
-borg extract /media/backup/borgdemo::backup3 <copy>
-
-# And check that it's the same:
-diff -s Wallpaper/deer.jpg Wallpaper.orig/deer.jpg
-
-# And, of course, we can also create remote repos via ssh when borg is setup there. This command creates a new remote repo in a subdirectory called "demo":
-borg init --encryption=repokey borgdemo@remoteserver.example:./demo
-
-# Easy, isn't it? That's all you need to know for basic usage.
-# If you want to see more, have a look at the screencast showing the "advanced usage".
-# In any case, enjoy using borg!
diff --git a/docs/misc/asciinema/install.json b/docs/misc/asciinema/install.json
deleted file mode 100644
index 477b1ef2..00000000
--- a/docs/misc/asciinema/install.json
+++ /dev/null
@@ -1,1354 +0,0 @@
-{
-  "version": 1,
-  "width": 78,
-  "height": 25,
-  "duration": 140.275038,
-  "command": null,
-  "title": null,
-  "env": {
-    "TERM": "xterm-256color",
-    "SHELL": "/bin/zsh"
-  },
-  "stdout": [
-    [
-      9.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000108,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000182,
-      "\u001b[?2004h"
-    ],
-    [
-      0.45774,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.31515,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.220208,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.121752,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.142781,
-      "\b\u001b[1mh\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.117367,
-      "\b\u001b[1mi\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.255471,
-      "\b\u001b[1ms\u001b[1m asciinema will show you the installation of borg as a standalone bina\u001b[1mr\u001b[1my. Usually you only need this if you want to have an up-to-date version of bo\u001b[1mr\u001b[1mg or no package is available for your distro/OS.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      0.563803,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000412,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000823,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5.9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.2e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.00027,
-      "\u001b[?2004h"
-    ],
-    [
-      2.191111,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.301924,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.21419,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mF\u001b[0m\u001b[39m"
-    ],
-    [
-      0.117654,
-      "\b\u001b[1mF\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.198616,
-      "\b\u001b[1mi\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.101113,
-      "\b\u001b[1mr\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.107485,
-      "\b\u001b[1ms\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.357443,
-      "\b\u001b[1mt\u001b[1m, we need to download the version, we'd like to install…\u001b[0m\u001b[39m"
-    ],
-    [
-      0.516614,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000826,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000757,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      4.4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000134,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000598,
-      "\u001b[?2004h"
-    ],
-    [
-      1.411874,
-      "\u001b[32mw\u001b[39m"
-    ],
-    [
-      0.119593,
-      "\b\u001b[1m\u001b[31mw\u001b[1m\u001b[31mg\u001b[0m\u001b[39m"
-    ],
-    [
-      0.13329,
-      "\b\b\u001b[1m\u001b[31mw\u001b[1m\u001b[31mg\u001b[1m\u001b[31me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.127861,
-      "\b\b\b\u001b[0m\u001b[32mw\u001b[0m\u001b[32mg\u001b[0m\u001b[32me\u001b[32mt\u001b[39m"
-    ],
-    [
-      0.324708,
-      " -q --show-progress https://github.com/borgbackup/borg/releases/download/1.1.0b6/borg-linux64\u001b[K"
-    ],
-    [
-      0.797801,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000964,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000631,
-      "\u001b]2;wget -q --show-progress \u0007\u001b]1;wget\u0007"
-    ],
-    [
-      1.306534,
-      "\rborg-linux64          0%[                  ]       0  --.-KB/s               "
-    ],
-    [
-      0.23185,
-      "\rborg-linux64          0%[                  ]  24.58K   106KB/s               "
-    ],
-    [
-      0.341907,
-      "\rborg-linux64          0%[                  ]  92.58K   161KB/s               "
-    ],
-    [
-      0.230021,
-      "\rborg-linux64          1%[                  ] 160.58K   200KB/s               "
-    ],
-    [
-      0.22577,
-      "\rborg-linux64          1%[                  ] 211.58K   206KB/s               "
-    ],
-    [
-      0.229246,
-      "\rborg-linux64          2%[                  ] 279.58K   222KB/s               "
-    ],
-    [
-      0.347713,
-      "\rborg-linux64          2%[                  ] 347.58K   216KB/s               "
-    ],
-    [
-      0.224636,
-      "\rborg-linux64         98%[================> ]  12.41M   404KB/s    eta 2s     "
-    ],
-    [
-      0.205977,
-      "\rborg-linux64         99%[================> ]  12.50M   401KB/s    eta 0s     "
-    ],
-    [
-      0.137036,
-      "\rborg-linux64        100%[=================>]  12.56M   417KB/s    in 39s     \r\n"
-    ],
-    [
-      0.000872,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000103,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      0.000117,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000208,
-      "\u001b[?2004h"
-    ],
-    [
-      2.118269,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.266901,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.142975,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.074155,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.167144,
-      "\b\u001b[1mn\u001b[1md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.2241,
-      "\b\u001b[1md\u001b[1m do not forget the GPG signature…!\u001b[0m\u001b[39m"
-    ],
-    [
-      0.596854,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000696,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000691,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      8.2e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000286,
-      "\u001b[?2004h"
-    ],
-    [
-      1.51737,
-      "\u001b[1m# and do not forget the GPG signature…!\u001b[0m\u001b[39m"
-    ],
-    [
-      0.314759,
-      "\u001b[39D\u001b[0m\u001b[32mw\u001b[0m\u001b[32mg\u001b[0m\u001b[32me\u001b[0m\u001b[32mt\u001b[39m\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39mq\u001b[0m\u001b[39m \u001b[0m\u001b[39m-\u001b[0m\u001b[39m-\u001b[0m\u001b[39ms\u001b[0m\u001b[39mh\u001b[0m\u001b[39mo\u001b[0m\u001b[39mw\u001b[0m\u001b[39m-\u001b[0m\u001b[39mp\u001b[0m\u001b[39mr\u001b[0m\u001b[39mo\u001b[0m\u001b[39mg\u001b[0m\u001b[39mr\u001b[0m\u001b[39me\u001b[0m\u001b[39ms\u001b[0m\u001b[39ms\u001b[0m\u001b[39m \u001b[0m\u001b[39mh\u001b[0m\u001b[39mt\u001b[0m\u001b[39mt\u001b[0m\u001b[39mp\u001b[0m\u001b[39ms\u001b[0m\u001b[39m:\u001b[0m\u001b[39m/\u001b[0m\u001b[39m/\u001b[0m\u001b[39mg\u001b[0m\u001b[39mi\u001b[0m\u001b[39mt\u001b[0m\u001b[39mh\u001b[0m\u001b[39mu\u001b[0m\u001b[39mb\u001b[0m\u001b[39m.com/borgbackup/borg/releases/download/1.1.0b6/borg-linux64\u001b[K"
-    ],
-    [
-      1.043903,
-      "."
-    ],
-    [
-      0.207322,
-      "a"
-    ],
-    [
-      0.16952,
-      "s"
-    ],
-    [
-      0.19625,
-      "c"
-    ],
-    [
-      0.359073,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001424,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000717,
-      "\u001b]2;wget -q --show-progress \u0007\u001b]1;wget\u0007"
-    ],
-    [
-      1.236785,
-      "\rborg-linux64.asc      0%[                  ]       0  --.-KB/s               "
-    ],
-    [
-      1.8e-05,
-      "\rborg-linux64.asc    100%[=================>]     819  --.-KB/s    in 0s      \r\n"
-    ],
-    [
-      0.00093,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      7.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      8.7e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000183,
-      "\u001b[?2004h"
-    ],
-    [
-      3.234458,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      1.023301,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.331266,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mI\u001b[0m\u001b[39m"
-    ],
-    [
-      0.166799,
-      "\b\u001b[1mI\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.34554,
-      "\b\u001b[1mn\u001b[1m this case, we have already imported the public key of a borg developer.\u001b[1m \u001b[1mSo we only need to verify it:\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.499971,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001069,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000922,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000159,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      3.1e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000451,
-      "\u001b[?2004h"
-    ],
-    [
-      2.31724,
-      "\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.151243,
-      "\b\u001b[32mg\u001b[32mp\u001b[39m"
-    ],
-    [
-      0.074305,
-      "\b\b\u001b[32mg\u001b[32mp\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.315686,
-      " "
-    ],
-    [
-      0.345624,
-      "-"
-    ],
-    [
-      0.100203,
-      "-"
-    ],
-    [
-      0.291673,
-      "v"
-    ],
-    [
-      0.11497,
-      "e"
-    ],
-    [
-      0.183055,
-      "r"
-    ],
-    [
-      0.146521,
-      "i"
-    ],
-    [
-      0.11872,
-      "f"
-    ],
-    [
-      0.309865,
-      "y"
-    ],
-    [
-      0.346758,
-      " "
-    ],
-    [
-      0.264902,
-      "\u001b[4mb\u001b[24m"
-    ],
-    [
-      0.307683,
-      "\u001b[?7l"
-    ],
-    [
-      2.1e-05,
-      "\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.011212,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mgpg\u001b[39m --verify \u001b[4mborg-linux64\u001b[24m\u001b[K"
-    ],
-    [
-      0.577848,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.015636,
-      "\r\r\u001b[27C"
-    ],
-    [
-      0.000193,
-      "\r\r\n\u001b[J"
-    ],
-    [
-      2e-05,
-      "\u001b[J\u001b[0mborg-linux64      \u001b[Jborg-linux64.asc\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mgpg\u001b[39m --verify \u001b[4mborg-linux64\u001b[24m\u001b[K"
-    ],
-    [
-      0.626316,
-      "\u001b[?7l\u001b[31m......\u001b[39m\u001b[?7h"
-    ],
-    [
-      0.012642,
-      "\u001b[12D\u001b[24mb\u001b[24mo\u001b[24mr\u001b[24mg\u001b[24m-\u001b[24ml\u001b[24mi\u001b[24mn\u001b[24mu\u001b[24mx\u001b[24m6\u001b[24m4"
-    ],
-    [
-      0.000154,
-      "\r\r\n"
-    ],
-    [
-      1.8e-05,
-      "\u001b[J\u001b[7mborg-linux64    \u001b[0m  \u001b[Jborg-linux64.asc\u001b[J\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mgpg\u001b[39m --verify borg-linux64\u001b[K"
-    ],
-    [
-      0.189964,
-      "\r\r\n"
-    ],
-    [
-      1.7e-05,
-      "\u001b[7mborg-linux64    \u001b[0m  \r\u001b[7mborg-linux64    \u001b[0m  \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mgpg\u001b[39m --verify borg-linux64\u001b[K.asc"
-    ],
-    [
-      0.000225,
-      "\r\r\n"
-    ],
-    [
-      1.9e-05,
-      "\u001b[18C\u001b[7mborg-linux64.asc\u001b[0m\rborg-linux64      \r\u001b[A\u001b[0m\u001b[27m\u001b[24m\r\u001b[2C\u001b[32mgpg\u001b[39m --verify borg-linux64.asc\u001b[K"
-    ],
-    [
-      0.866638,
-      "\r\r\n\u001b[J\u001b[A\u001b[31C\u001b[1m \u001b[0m"
-    ],
-    [
-      0.001241,
-      "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[32mgpg\u001b[39m --verify \u001b[4mborg-linux64.asc\u001b[24m\u001b[1m \u001b[0m\u001b[K"
-    ],
-    [
-      0.654098,
-      "\b\u001b[0m \b"
-    ],
-    [
-      2.7e-05,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001361,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000737,
-      "\u001b]2;gpg --verify borg-linux64.asc\u0007"
-    ],
-    [
-      2.6e-05,
-      "\u001b]1;gpg\u0007"
-    ],
-    [
-      0.002478,
-      "gpg: assuming signed data in `borg-linux64'\r\n"
-    ],
-    [
-      0.082679,
-      "gpg: Signature made Sun Jun 18 16:54:19 2017 CEST\r\ngpg:                using RSA key 0x243ACFA951F78E01\r\n"
-    ],
-    [
-      0.003947,
-      "gpg: Good signature from \"Thomas Waldmann <tw@waldmann-edv.de>\" [ultimate]\r\ngpg:                 aka \"Thomas Waldmann <tw-public@gmx.de>\" [ultimate]\r\ngpg:                 aka \"Thomas Waldmann <twaldmann@thinkmo.de>\" [ultimate]\r\n"
-    ],
-    [
-      2.1e-05,
-      "gpg:                 aka \"Thomas Waldmann <thomas.j.waldmann@gmail.com>\""
-    ],
-    [
-      1.5e-05,
-      " [ultimate]\r\n"
-    ],
-    [
-      0.001743,
-      "Primary key fingerprint: 6D5B EF9A DD20 7580 5747  B70F 9F88 FB52 FAF7 B393\r\n     Subkey fingerprint: 2F81 AFFB AB04 E11F E8EE  65D4 243A CFA9 51F7 8E01\r\n"
-    ],
-    [
-      0.000384,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000155,
-      "\u001b[?2004h"
-    ],
-    [
-      4.627219,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.225001,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.213579,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mO\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132218,
-      "\b\u001b[1mO\u001b[1mk\u001b[0m\u001b[39m"
-    ],
-    [
-      0.061577,
-      "\b\u001b[1mk\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.154786,
-      "\b\u001b[1ma\u001b[1my\u001b[0m\u001b[39m"
-    ],
-    [
-      0.172921,
-      "\b\u001b[1my\u001b[1m,\u001b[0m\u001b[39m"
-    ],
-    [
-      0.648978,
-      "\b\u001b[1m,\u001b[1m the binary is valid!\u001b[0m\u001b[39m"
-    ],
-    [
-      0.822303,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000388,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000681,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000113,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      4.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000252,
-      "\u001b[?2004h"
-    ],
-    [
-      2.048081,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.243659,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.174242,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.131485,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.109555,
-      "\b\u001b[1mo\u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.128309,
-      "\b\u001b[1mw\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.163064,
-      "\b\u001b[1m \u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.138953,
-      "\b\u001b[1mi\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.050135,
-      "\b\u001b[1mn\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.095385,
-      "\b\u001b[1ms\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.114692,
-      "\b\u001b[1mt\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.155821,
-      "\b\u001b[1ma\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.118297,
-      "\b\u001b[1ml\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.165834,
-      "\b\u001b[1ml\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.231866,
-      "\b\u001b[1m \u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.159893,
-      "\b\u001b[1mi\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.289328,
-      "\b\u001b[1mt\u001b[1m:\u001b[0m\u001b[39m"
-    ],
-    [
-      2.713706,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000362,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000674,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      9e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000272,
-      "\u001b[?2004h"
-    ],
-    [
-      1.703796,
-      "\u001b[1m\u001b[31ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12754,
-      "\b\u001b[0m\u001b[32ms\u001b[32mu\u001b[39m"
-    ],
-    [
-      0.149508,
-      "\b\b\u001b[1m\u001b[31ms\u001b[1m\u001b[31mu\u001b[1m\u001b[31md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.121616,
-      "\b\b\b\u001b[0m\u001b[4m\u001b[32ms\u001b[0m\u001b[4m\u001b[32mu\u001b[0m\u001b[4m\u001b[32md\u001b[4m\u001b[32mo\u001b[24m\u001b[39m"
-    ],
-    [
-      0.321903,
-      " \u001b[32mcp\u001b[39m \u001b[4mborg-linux64\u001b[24m \u001b[4m/usr/local/bin/borg\u001b[24m"
-    ],
-    [
-      2.352378,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.001087,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00091,
-      "\u001b]2;sudo cp borg-linux64 /usr/local/bin/borg\u0007\u001b]1;cp\u0007"
-    ],
-    [
-      0.013652,
-      "[sudo] password for rugk: "
-    ],
-    [
-      2.992379,
-      "\r\n"
-    ],
-    [
-      0.031173,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      4e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.3e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000214,
-      "\u001b[?2004h"
-    ],
-    [
-      5.400881,
-      "\u001b[1m\u001b[31ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.138474,
-      "\b\u001b[0m\u001b[32ms\u001b[32mu\u001b[39m"
-    ],
-    [
-      0.114266,
-      "\b\b\u001b[1m\u001b[31ms\u001b[1m\u001b[31mu\u001b[1m\u001b[31md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.098068,
-      "\b\b\b\u001b[0m\u001b[4m\u001b[32ms\u001b[0m\u001b[4m\u001b[32mu\u001b[0m\u001b[4m\u001b[32md\u001b[4m\u001b[32mo\u001b[24m\u001b[39m"
-    ],
-    [
-      0.16926,
-      " "
-    ],
-    [
-      0.188874,
-      "\u001b[32mcp\u001b[39m \u001b[4mborg-linux64\u001b[24m \u001b[4m/usr/local/bin/borg\u001b[24m"
-    ],
-    [
-      0.413244,
-      "\u001b[34D\u001b[32mh\u001b[32mo\u001b[24m\u001b[32mw\u001b[24m\u001b[32mn\u001b[39m\u001b[24m \u001b[24mr\u001b[24mo\u001b[24mo\u001b[24mt\u001b[24m:\u001b[24mr\u001b[24mo\u001b[24mo\u001b[24mt\u001b[20C"
-    ],
-    [
-      1.397429,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.00132,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.00075,
-      "\u001b]2;sudo chown root:root /usr/local/bin/borg\u0007\u001b]1;chown\u0007"
-    ],
-    [
-      0.010539,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000284,
-      "\u001b[?2004h"
-    ],
-    [
-      2.229436,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.213191,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.099902,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.069437,
-      "\b\u001b[1ma\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.106463,
-      "\b\u001b[1mn\u001b[1md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.080598,
-      "\b\u001b[1md\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.172381,
-      "\b\u001b[1m \u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.096638,
-      "\b\u001b[1mm\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.078606,
-      "\b\u001b[1ma\u001b[1mk\u001b[0m\u001b[39m"
-    ],
-    [
-      0.106382,
-      "\b\u001b[1mk\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.110174,
-      "\b\u001b[1me\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.216964,
-      "\b\u001b[1m \u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.183739,
-      "\b\u001b[1mi\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.150872,
-      "\b\u001b[1mt\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.188901,
-      "\b\u001b[1m \u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.099651,
-      "\b\u001b[1me\u001b[1mx\u001b[0m\u001b[39m"
-    ],
-    [
-      0.1893,
-      "\b\u001b[1mx\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.187999,
-      "\b\u001b[1me\u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.128262,
-      "\b\u001b[1mc\u001b[1mu\u001b[0m\u001b[39m"
-    ],
-    [
-      0.144851,
-      "\b\u001b[1mu\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.091175,
-      "\b\u001b[1mt\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.135575,
-      "\b\u001b[1ma\u001b[1mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.18045,
-      "\b\u001b[1mb\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.110687,
-      "\b\u001b[1ml\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.360861,
-      "\b\u001b[1me\u001b[1m…\u001b[0m\u001b[39m"
-    ],
-    [
-      0.69896,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000433,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000544,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      5.1e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000306,
-      "\u001b[?2004h"
-    ],
-    [
-      1.028139,
-      "\u001b[1m\u001b[31ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136555,
-      "\b\u001b[0m\u001b[32ms\u001b[32mu\u001b[39m"
-    ],
-    [
-      0.115701,
-      "\b\b\u001b[1m\u001b[31ms\u001b[1m\u001b[31mu\u001b[1m\u001b[31md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.151048,
-      "\b\b\b\u001b[0m\u001b[4m\u001b[32ms\u001b[0m\u001b[4m\u001b[32mu\u001b[0m\u001b[4m\u001b[32md\u001b[4m\u001b[32mo\u001b[24m\u001b[39m"
-    ],
-    [
-      0.276036,
-      " \u001b[32mchown\u001b[39m root:root \u001b[4m/usr/local/bin/borg\u001b[24m"
-    ],
-    [
-      0.284509,
-      "\u001b[34D\u001b[32mp\u001b[39m\u001b[39m \u001b[39m\u001b[4mb\u001b[39m\u001b[4mo\u001b[4mr\u001b[4mg\u001b[4m-\u001b[4ml\u001b[4mi\u001b[4mn\u001b[4mu\u001b[4mx\u001b[4m6\u001b[4m4\u001b[24m\u001b[20C"
-    ],
-    [
-      0.422112,
-      "\u001b[34D\u001b[32mh\u001b[32mo\u001b[24m\u001b[32mw\u001b[24m\u001b[32mn\u001b[39m\u001b[24m \u001b[24mr\u001b[24mo\u001b[24mo\u001b[24mt\u001b[24m:\u001b[24mr\u001b[24mo\u001b[24mo\u001b[24mt\u001b[20C"
-    ],
-    [
-      0.616462,
-      "\u001b[33D\u001b[32mm\u001b[32mo\u001b[32md\u001b[39m 755\u001b[6P\u001b[20C      \b\b\b\b\b\b"
-    ],
-    [
-      1.090337,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.00101,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000655,
-      "\u001b]2;sudo chmod 755 /usr/local/bin/borg\u0007"
-    ],
-    [
-      1.8e-05,
-      "\u001b]1;chmod\u0007"
-    ],
-    [
-      0.009932,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000124,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      5.9e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000237,
-      "\u001b[?2004h"
-    ],
-    [
-      3.613554,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.305561,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.451533,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mN\u001b[0m\u001b[39m"
-    ],
-    [
-      0.199295,
-      "\b\u001b[1mN\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.134017,
-      "\b\u001b[1mo\u001b[1mw\u001b[0m\u001b[39m"
-    ],
-    [
-      0.232574,
-      "\b\u001b[1mw\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.283449,
-      "\b\u001b[1m \u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.156927,
-      "\b\u001b[1mc\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.100718,
-      "\b\u001b[1mh\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145048,
-      "\b\u001b[1me\u001b[1mc\u001b[0m\u001b[39m"
-    ],
-    [
-      0.238223,
-      "\b\u001b[1mc\u001b[1mk\u001b[0m\u001b[39m"
-    ],
-    [
-      0.145393,
-      "\b\u001b[1mk\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.195514,
-      "\b\u001b[1m \u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.190153,
-      "\b\u001b[1mi\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      1.202922,
-      "\b\u001b[1mt\u001b[1m:\u001b[0m\u001b[39m"
-    ],
-    [
-      0.17572,
-      "\b\u001b[1m:\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.209752,
-      "\b\u001b[1m \u001b[1m(\u001b[0m\u001b[39m"
-    ],
-    [
-      0.266264,
-      "\b\u001b[1m(\u001b[1mp\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136174,
-      "\b\u001b[1mp\u001b[1mo\u001b[0m\u001b[39m"
-    ],
-    [
-      0.136549,
-      "\b\u001b[1mo\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.157321,
-      "\b\u001b[1ms\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.134812,
-      "\b\u001b[1ms\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.177707,
-      "\b\u001b[1mi\u001b[1mb\u001b[0m\u001b[39m"
-    ],
-    [
-      0.184458,
-      "\b\u001b[1mb\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.104718,
-      "\b\u001b[1ml\u001b[1my\u001b[0m\u001b[39m"
-    ],
-    [
-      0.132476,
-      "\b\u001b[1my\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.14269,
-      "\b\u001b[1m \u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.109627,
-      "\b\u001b[1mn\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.150487,
-      "\b\u001b[1me\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.202663,
-      "\b\u001b[1me\u001b[1md\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12975,
-      "\b\u001b[1md\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.095469,
-      "\b\u001b[1ms\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.160511,
-      "\b\u001b[1m \u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.149495,
-      "\b\u001b[1ma\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.189727,
-      "\b\u001b[1m \u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.098768,
-      "\b\u001b[1mt\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.125099,
-      "\b\u001b[1me\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.077112,
-      "\b\u001b[1mr\u001b[1mm\u001b[0m\u001b[39m"
-    ],
-    [
-      0.147886,
-      "\b\u001b[1mm\u001b[1mi\u001b[0m\u001b[39m"
-    ],
-    [
-      0.124366,
-      "\b\u001b[1mi\u001b[1mn\u001b[0m\u001b[39m"
-    ],
-    [
-      0.088118,
-      "\b\u001b[1mn\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.116281,
-      "\b\u001b[1ma\u001b[1ml\u001b[0m\u001b[39m"
-    ],
-    [
-      0.146487,
-      "\b\u001b[1ml\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.156764,
-      "\b\u001b[1m \u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.195688,
-      "\b\u001b[1mr\u001b[1me\u001b[0m\u001b[39m"
-    ],
-    [
-      0.40621,
-      "\b\u001b[1me\u001b[1ms\u001b[0m\u001b[39m"
-    ],
-    [
-      0.263813,
-      "\b\u001b[1ms\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.087475,
-      "\b\u001b[1mt\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.090176,
-      "\b\u001b[1ma\u001b[1mr\u001b[0m\u001b[39m"
-    ],
-    [
-      0.12059,
-      "\b\u001b[1mr\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.232423,
-      "\b\u001b[1mt\u001b[1m)\u001b[0m\u001b[39m"
-    ],
-    [
-      1.383975,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000692,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.001339,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000147,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.6e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000558,
-      "\u001b[?2004h"
-    ],
-    [
-      1.045406,
-      "\u001b[4mb\u001b[24m"
-    ],
-    [
-      0.163217,
-      "\b\u001b[4mb\u001b[4mo\u001b[24m"
-    ],
-    [
-      0.131464,
-      "\b\b\u001b[4mb\u001b[4mo\u001b[4mr\u001b[24m"
-    ],
-    [
-      0.103279,
-      "\b\b\b\u001b[24m\u001b[32mb\u001b[24m\u001b[32mo\u001b[24m\u001b[32mr\u001b[32mg\u001b[39m"
-    ],
-    [
-      0.181118,
-      " "
-    ],
-    [
-      0.440449,
-      "-"
-    ],
-    [
-      0.186299,
-      "V"
-    ],
-    [
-      0.522054,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000643,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000967,
-      "\u001b]2;borg -V\u0007\u001b]1;borg\u0007"
-    ],
-    [
-      0.426128,
-      "borg 1.1.0b6\r\n"
-    ],
-    [
-      0.040916,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      0.000101,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.5e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000176,
-      "\u001b[?2004h"
-    ],
-    [
-      1.92655,
-      "\u001b[1m#\u001b[0m\u001b[39m"
-    ],
-    [
-      0.247681,
-      "\b\u001b[1m#\u001b[1m \u001b[0m\u001b[39m"
-    ],
-    [
-      0.233391,
-      "\b\b\u001b[1m#\u001b[1m \u001b[1mT\u001b[0m\u001b[39m"
-    ],
-    [
-      0.127191,
-      "\b\u001b[1mT\u001b[1mh\u001b[0m\u001b[39m"
-    ],
-    [
-      0.023053,
-      "\b\u001b[1mh\u001b[1ma\u001b[0m\u001b[39m"
-    ],
-    [
-      0.155649,
-      "\b\u001b[1ma\u001b[1mt\u001b[0m\u001b[39m"
-    ],
-    [
-      0.3483,
-      "\b\u001b[1mt\u001b[1m's it! Check out the other screencasts to see how to actually use borg\u001b[1mb\u001b[1mackup.\u001b[0m\u001b[39m\u001b[K"
-    ],
-    [
-      1.701253,
-      "\u001b[?1l\u001b>"
-    ],
-    [
-      0.000707,
-      "\u001b[?2004l\r\r\n"
-    ],
-    [
-      0.000682,
-      "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                             \r \r"
-    ],
-    [
-      1.1e-05,
-      "\u001b]1;..lder/borgdemo\u0007"
-    ],
-    [
-      5.7e-05,
-      "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J$ \u001b[K"
-    ],
-    [
-      6.8e-05,
-      "\u001b[?1h\u001b="
-    ],
-    [
-      0.000284,
-      "\u001b[?2004h"
-    ],
-    [
-      1.579085,
-      "\u001b[?2004l\r\r\n"
-    ]
-  ]
-}
diff --git a/docs/misc/asciinema/install.sh b/docs/misc/asciinema/install.sh
deleted file mode 100644
index 3ade47c8..00000000
--- a/docs/misc/asciinema/install.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-# This asciinema will show you the installation of borg as a standalone binary. Usually you only need this if you want to have an up-to-date version of borg or no package is available for your distro/OS.
-
-# First, we need to download the version, we'd like to install…
-wget -q --show-progress https://github.com/borgbackup/borg/releases/download/1.1.0b6/borg-linux64
-# and do not forget the GPG signature…!
-wget -q --show-progress https://github.com/borgbackup/borg/releases/download/1.1.0b6/borg-linux64.asc
-
-# In this case, we have already imported the public key of a borg developer. So we only need to verify it:
-gpg --verify borg-linux64.asc
-# Okay, the binary is valid!
-
-# Now install it:
-sudo cp borg-linux64 /usr/local/bin/borg
-sudo chown root:root /usr/local/bin/borg
-# and make it executable…
-sudo chmod 755 /usr/local/bin/borg
-
-# Now check it: (possibly needs a terminal restart)
-borg -V
-
-# That's it! Check out the other screencasts to see how to actually use borgbackup.
diff --git a/docs/misc/asciinema/install_and_basics.json b/docs/misc/asciinema/install_and_basics.json
new file mode 100644
index 00000000..a50eb35f
--- /dev/null
+++ b/docs/misc/asciinema/install_and_basics.json
@@ -0,0 +1,5550 @@
+{
+  "version": 1,
+  "width": 80,
+  "height": 24,
+  "duration": 332.0,
+  "command": "/bin/bash",
+  "title": "borgbackup - installation and basic usage",
+  "env": {
+    "TERM": "xterm",
+    "SHELL": "/bin/bash"
+  },
+  "stdout": [
+    [
+      0.083341,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.349103,
+      "#"
+    ],
+    [
+      0.338948,
+      " "
+    ],
+    [
+      0.185424,
+      "b"
+    ],
+    [
+      0.142971,
+      "o"
+    ],
+    [
+      0.091227,
+      "r"
+    ],
+    [
+      0.092867,
+      "g"
+    ],
+    [
+      0.222552,
+      "b"
+    ],
+    [
+      0.114706,
+      "a"
+    ],
+    [
+      0.125044,
+      "c"
+    ],
+    [
+      0.144755,
+      "k"
+    ],
+    [
+      0.241044,
+      "u"
+    ],
+    [
+      0.243681,
+      "p"
+    ],
+    [
+      0.265888,
+      " "
+    ],
+    [
+      0.345247,
+      "-"
+    ],
+    [
+      0.251918,
+      " "
+    ],
+    [
+      0.233420,
+      "i"
+    ],
+    [
+      0.078609,
+      "n"
+    ],
+    [
+      0.076809,
+      "s"
+    ],
+    [
+      0.070225,
+      "t"
+    ],
+    [
+      0.148413,
+      "a"
+    ],
+    [
+      0.077403,
+      "l"
+    ],
+    [
+      0.139884,
+      "l"
+    ],
+    [
+      0.084807,
+      "a"
+    ],
+    [
+      0.138823,
+      "t"
+    ],
+    [
+      0.068185,
+      "i"
+    ],
+    [
+      0.170422,
+      "o"
+    ],
+    [
+      0.161091,
+      "n"
+    ],
+    [
+      0.169247,
+      " "
+    ],
+    [
+      0.110722,
+      "a"
+    ],
+    [
+      0.113785,
+      "n"
+    ],
+    [
+      0.397895,
+      "d"
+    ],
+    [
+      0.305048,
+      " "
+    ],
+    [
+      0.211476,
+      "b"
+    ],
+    [
+      0.109865,
+      "a"
+    ],
+    [
+      0.230634,
+      "s"
+    ],
+    [
+      0.277915,
+      "i"
+    ],
+    [
+      0.206167,
+      "c"
+    ],
+    [
+      0.145265,
+      " "
+    ],
+    [
+      0.219619,
+      "u"
+    ],
+    [
+      0.139989,
+      "s"
+    ],
+    [
+      0.180240,
+      "a"
+    ],
+    [
+      0.200391,
+      "g"
+    ],
+    [
+      0.116961,
+      "e"
+    ],
+    [
+      0.172074,
+      "\r\n"
+    ],
+    [
+      0.000449,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.620909,
+      "#"
+    ],
+    [
+      0.217833,
+      " "
+    ],
+    [
+      0.592920,
+      "I"
+    ],
+    [
+      0.166726,
+      " "
+    ],
+    [
+      0.161953,
+      "h"
+    ],
+    [
+      0.072501,
+      "a"
+    ],
+    [
+      0.170951,
+      "v"
+    ],
+    [
+      0.154067,
+      "e"
+    ],
+    [
+      0.110535,
+      " "
+    ],
+    [
+      0.155235,
+      "a"
+    ],
+    [
+      0.130825,
+      "l"
+    ],
+    [
+      0.111834,
+      "r"
+    ],
+    [
+      0.142378,
+      "e"
+    ],
+    [
+      0.165867,
+      "a"
+    ],
+    [
+      0.062556,
+      "d"
+    ],
+    [
+      0.091778,
+      "y"
+    ],
+    [
+      0.216280,
+      " "
+    ],
+    [
+      0.169501,
+      "d"
+    ],
+    [
+      0.198240,
+      "o"
+    ],
+    [
+      0.092373,
+      "w"
+    ],
+    [
+      0.143405,
+      "n"
+    ],
+    [
+      0.207324,
+      "l"
+    ],
+    [
+      0.164248,
+      "o"
+    ],
+    [
+      0.088481,
+      "a"
+    ],
+    [
+      0.129191,
+      "d"
+    ],
+    [
+      0.179234,
+      "e"
+    ],
+    [
+      0.189248,
+      "d"
+    ],
+    [
+      0.145203,
+      " "
+    ],
+    [
+      0.221625,
+      "t"
+    ],
+    [
+      0.100064,
+      "h"
+    ],
+    [
+      0.133349,
+      "e"
+    ],
+    [
+      0.066501,
+      " "
+    ],
+    [
+      0.187004,
+      "f"
+    ],
+    [
+      0.142461,
+      "i"
+    ],
+    [
+      0.204723,
+      "l"
+    ],
+    [
+      0.068716,
+      "e"
+    ],
+    [
+      0.237576,
+      "s"
+    ],
+    [
+      0.128085,
+      ":"
+    ],
+    [
+      0.242282,
+      "\r\n"
+    ],
+    [
+      0.000327,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      1.796834,
+      "l"
+    ],
+    [
+      0.092545,
+      "s"
+    ],
+    [
+      0.210322,
+      " "
+    ],
+    [
+      0.189710,
+      "-"
+    ],
+    [
+      0.215532,
+      "l"
+    ],
+    [
+      0.852863,
+      "\r\n"
+    ],
+    [
+      0.002104,
+      "total 10620\r\n"
+    ],
+    [
+      0.000040,
+      "-rw-rw-r-- 1 tw tw 10869049 Oct 24 22:11 borg-linux64"
+    ],
+    [
+      0.000007,
+      "\r\n"
+    ],
+    [
+      0.000019,
+      "-rw-rw-r-- 1 tw tw      819 Oct 24 22:11 borg-linux64.asc\r\n"
+    ],
+    [
+      0.000431,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.513172,
+      "#"
+    ],
+    [
+      0.284059,
+      " "
+    ],
+    [
+      0.330931,
+      "b"
+    ],
+    [
+      0.118806,
+      "i"
+    ],
+    [
+      0.100553,
+      "n"
+    ],
+    [
+      0.259930,
+      "a"
+    ],
+    [
+      0.106715,
+      "r"
+    ],
+    [
+      0.276545,
+      "y"
+    ],
+    [
+      0.126132,
+      " "
+    ],
+    [
+      0.379724,
+      "+"
+    ],
+    [
+      0.199249,
+      " "
+    ],
+    [
+      0.295913,
+      "G"
+    ],
+    [
+      0.108970,
+      "P"
+    ],
+    [
+      0.080480,
+      "G"
+    ],
+    [
+      0.349293,
+      " "
+    ],
+    [
+      0.236785,
+      "s"
+    ],
+    [
+      0.105197,
+      "i"
+    ],
+    [
+      0.289951,
+      "g"
+    ],
+    [
+      0.351385,
+      "n"
+    ],
+    [
+      0.282003,
+      "a"
+    ],
+    [
+      0.206591,
+      "t"
+    ],
+    [
+      0.163963,
+      "u"
+    ],
+    [
+      0.082416,
+      "r"
+    ],
+    [
+      0.125432,
+      "e"
+    ],
+    [
+      0.369988,
+      "\r\n"
+    ],
+    [
+      0.000341,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.889617,
+      "#"
+    ],
+    [
+      0.226974,
+      " "
+    ],
+    [
+      0.218497,
+      "l"
+    ],
+    [
+      0.134545,
+      "e"
+    ],
+    [
+      0.103159,
+      "t"
+    ],
+    [
+      0.711682,
+      "'"
+    ],
+    [
+      0.185463,
+      "s"
+    ],
+    [
+      0.162130,
+      " "
+    ],
+    [
+      0.166049,
+      "v"
+    ],
+    [
+      0.183069,
+      "e"
+    ],
+    [
+      0.099764,
+      "r"
+    ],
+    [
+      0.234211,
+      "i"
+    ],
+    [
+      0.854328,
+      "f"
+    ],
+    [
+      0.203758,
+      "y"
+    ],
+    [
+      0.166681,
+      " "
+    ],
+    [
+      0.216715,
+      "t"
+    ],
+    [
+      0.560064,
+      "h"
+    ],
+    [
+      0.151837,
+      "a"
+    ],
+    [
+      0.194509,
+      "t"
+    ],
+    [
+      0.119665,
+      " "
+    ],
+    [
+      0.141089,
+      "t"
+    ],
+    [
+      0.096803,
+      "h"
+    ],
+    [
+      0.104718,
+      "e"
+    ],
+    [
+      0.106761,
+      " "
+    ],
+    [
+      0.229401,
+      "b"
+    ],
+    [
+      0.213802,
+      "i"
+    ],
+    [
+      0.075481,
+      "n"
+    ],
+    [
+      0.138720,
+      "a"
+    ],
+    [
+      0.062411,
+      "r"
+    ],
+    [
+      0.292719,
+      "y"
+    ],
+    [
+      0.482737,
+      " "
+    ],
+    [
+      0.211595,
+      "i"
+    ],
+    [
+      0.110964,
+      "s"
+    ],
+    [
+      0.102100,
+      " "
+    ],
+    [
+      0.143380,
+      "v"
+    ],
+    [
+      0.189214,
+      "a"
+    ],
+    [
+      0.099337,
+      "l"
+    ],
+    [
+      0.172757,
+      "i"
+    ],
+    [
+      0.082456,
+      "d"
+    ],
+    [
+      0.177514,
+      ":"
+    ],
+    [
+      0.622492,
+      "\r\n"
+    ],
+    [
+      0.000313,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      2.000000,
+      "g"
+    ],
+    [
+      0.261924,
+      "p"
+    ],
+    [
+      0.108570,
+      "g"
+    ],
+    [
+      0.247315,
+      " "
+    ],
+    [
+      0.277162,
+      "-"
+    ],
+    [
+      0.141397,
+      "-"
+    ],
+    [
+      0.143255,
+      "v"
+    ],
+    [
+      0.162858,
+      "e"
+    ],
+    [
+      0.040051,
+      "r"
+    ],
+    [
+      0.105941,
+      "i"
+    ],
+    [
+      0.144872,
+      "f"
+    ],
+    [
+      0.306497,
+      "y"
+    ],
+    [
+      0.468271,
+      " "
+    ],
+    [
+      2.000000,
+      "b"
+    ],
+    [
+      0.119390,
+      "o"
+    ],
+    [
+      0.463137,
+      "\u0007"
+    ],
+    [
+      0.000095,
+      "rg-linux64"
+    ],
+    [
+      0.341519,
+      "."
+    ],
+    [
+      0.146977,
+      "asc "
+    ],
+    [
+      0.186292,
+      "\r\n"
+    ],
+    [
+      0.100648,
+      "gpg: Signature made Wed 07 Oct 2015 02:41:38 PM CEST\r\n"
+    ],
+    [
+      0.000011,
+      "gpg:                using RSA key 243ACFA951F78E01\r\n"
+    ],
+    [
+      0.006906,
+      "gpg: Good signature from \"Thomas Waldmann \u003ctw@waldmann-edv.de\u003e\""
+    ],
+    [
+      0.000033,
+      "\r\ngpg:                 aka \"Thomas Waldmann \u003ctw-public@gmx.de\u003e\"\r\ngpg:                 aka \"Thomas Waldmann \u003ctwaldmann@thinkmo.de\u003e\"\r\n"
+    ],
+    [
+      0.000018,
+      "gpg:                 aka \"Thomas Waldmann \u003cthomas.j.waldmann@gmail.com\u003e\"\r\n"
+    ],
+    [
+      0.003077,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      2.000000,
+      "#"
+    ],
+    [
+      0.241501,
+      " "
+    ],
+    [
+      0.186571,
+      "e"
+    ],
+    [
+      0.214388,
+      "v"
+    ],
+    [
+      0.157101,
+      "e"
+    ],
+    [
+      0.042348,
+      "r"
+    ],
+    [
+      0.253261,
+      "y"
+    ],
+    [
+      0.254356,
+      "t"
+    ],
+    [
+      0.094622,
+      "h"
+    ],
+    [
+      0.213972,
+      "i"
+    ],
+    [
+      0.084853,
+      "n"
+    ],
+    [
+      0.084920,
+      "g"
+    ],
+    [
+      0.178519,
+      " "
+    ],
+    [
+      0.256151,
+      "o"
+    ],
+    [
+      0.217918,
+      "k"
+    ],
+    [
+      0.153899,
+      "!"
+    ],
+    [
+      0.246211,
+      "\r\n"
+    ],
+    [
+      0.000330,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      2.000000,
+      "#"
+    ],
+    [
+      0.288008,
+      " "
+    ],
+    [
+      0.232836,
+      "i"
+    ],
+    [
+      0.055326,
+      "n"
+    ],
+    [
+      0.142978,
+      "s"
+    ],
+    [
+      0.080599,
+      "t"
+    ],
+    [
+      0.139018,
+      "a"
+    ],
+    [
+      0.111052,
+      "l"
+    ],
+    [
+      0.132419,
+      "l"
+    ],
+    [
+      0.169037,
+      " "
+    ],
+    [
+      0.117036,
+      "t"
+    ],
+    [
+      0.092749,
+      "h"
+    ],
+    [
+      0.124768,
+      "e"
+    ],
+    [
+      0.088888,
+      " "
+    ],
+    [
+      0.184118,
+      "b"
+    ],
+    [
+      0.182336,
+      "i"
+    ],
+    [
+      0.075466,
+      "n"
+    ],
+    [
+      0.085516,
+      "a"
+    ],
+    [
+      0.060363,
+      "r"
+    ],
+    [
+      0.843225,
+      "y"
+    ],
+    [
+      0.209758,
+      " "
+    ],
+    [
+      0.168892,
+      "a"
+    ],
+    [
+      0.151126,
+      "s"
+    ],
+    [
+      0.127487,
+      " "
+    ],
+    [
+      0.300923,
+      "\""
+    ],
+    [
+      0.217060,
+      "b"
+    ],
+    [
+      0.221579,
+      "o"
+    ],
+    [
+      0.047775,
+      "r"
+    ],
+    [
+      0.107202,
+      "g"
+    ],
+    [
+      0.438939,
+      "\""
+    ],
+    [
+      0.253153,
+      ":"
+    ],
+    [
+      0.617823,
+      "\r\n"
+    ],
+    [
+      0.000326,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.816740,
+      "c"
+    ],
+    [
+      0.168734,
+      "p"
+    ],
+    [
+      0.230846,
+      " "
+    ],
+    [
+      0.299588,
+      "b"
+    ],
+    [
+      0.121082,
+      "o"
+    ],
+    [
+      0.214148,
+      "\u0007"
+    ],
+    [
+      0.000011,
+      "rg-linux64"
+    ],
+    [
+      0.331736,
+      " "
+    ],
+    [
+      0.812264,
+      "~"
+    ],
+    [
+      0.518926,
+      "/"
+    ],
+    [
+      0.233797,
+      "b"
+    ],
+    [
+      0.214141,
+      "i"
+    ],
+    [
+      0.098062,
+      "n"
+    ],
+    [
+      0.607725,
+      "/"
+    ],
+    [
+      0.566434,
+      "b"
+    ],
+    [
+      0.145886,
+      "o"
+    ],
+    [
+      0.113081,
+      "r"
+    ],
+    [
+      0.068870,
+      "g"
+    ],
+    [
+      0.851794,
+      "\r\n"
+    ],
+    [
+      0.012632,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      2.000000,
+      "#"
+    ],
+    [
+      0.269926,
+      " "
+    ],
+    [
+      0.208575,
+      "m"
+    ],
+    [
+      0.135192,
+      "a"
+    ],
+    [
+      0.119543,
+      "k"
+    ],
+    [
+      0.080873,
+      "e"
+    ],
+    [
+      0.156871,
+      " "
+    ],
+    [
+      0.197124,
+      "i"
+    ],
+    [
+      0.078784,
+      "t"
+    ],
+    [
+      0.142373,
+      " "
+    ],
+    [
+      0.189080,
+      "e"
+    ],
+    [
+      0.232597,
+      "x"
+    ],
+    [
+      0.170105,
+      "e"
+    ],
+    [
+      0.132039,
+      "c"
+    ],
+    [
+      0.230568,
+      "u"
+    ],
+    [
+      0.086573,
+      "t"
+    ],
+    [
+      0.255047,
+      "a"
+    ],
+    [
+      0.231478,
+      "b"
+    ],
+    [
+      0.283723,
+      "l"
+    ],
+    [
+      0.112987,
+      "e"
+    ],
+    [
+      0.518611,
+      ":"
+    ],
+    [
+      0.459423,
+      "\r\n"
+    ],
+    [
+      0.000822,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.353739,
+      "c"
+    ],
+    [
+      0.114161,
+      "h"
+    ],
+    [
+      0.268562,
+      "m"
+    ],
+    [
+      0.179085,
+      "o"
+    ],
+    [
+      0.145360,
+      "d"
+    ],
+    [
+      0.075599,
+      " "
+    ],
+    [
+      0.773964,
+      "+"
+    ],
+    [
+      0.113699,
+      "x"
+    ],
+    [
+      0.187579,
+      " "
+    ],
+    [
+      0.381391,
+      "~"
+    ],
+    [
+      0.512520,
+      "/"
+    ],
+    [
+      0.231090,
+      "b"
+    ],
+    [
+      0.197636,
+      "i"
+    ],
+    [
+      0.101238,
+      "n"
+    ],
+    [
+      0.341295,
+      "/"
+    ],
+    [
+      0.306047,
+      "b"
+    ],
+    [
+      0.106898,
+      "o"
+    ],
+    [
+      0.233773,
+      "rg "
+    ],
+    [
+      0.519336,
+      "\r\n"
+    ],
+    [
+      0.001408,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      2.000000,
+      "#"
+    ],
+    [
+      0.247104,
+      " "
+    ],
+    [
+      0.218717,
+      "i"
+    ],
+    [
+      0.067769,
+      "n"
+    ],
+    [
+      0.139583,
+      "s"
+    ],
+    [
+      0.092034,
+      "t"
+    ],
+    [
+      0.152729,
+      "a"
+    ],
+    [
+      0.083844,
+      "l"
+    ],
+    [
+      0.145806,
+      "l"
+    ],
+    [
+      0.120879,
+      "a"
+    ],
+    [
+      0.164967,
+      "t"
+    ],
+    [
+      0.065308,
+      "i"
+    ],
+    [
+      0.816983,
+      "o"
+    ],
+    [
+      0.231669,
+      "n"
+    ],
+    [
+      0.185168,
+      " "
+    ],
+    [
+      0.125214,
+      "d"
+    ],
+    [
+      0.112630,
+      "o"
+    ],
+    [
+      0.068650,
+      "n"
+    ],
+    [
+      0.108386,
+      "e"
+    ],
+    [
+      0.563031,
+      "!"
+    ],
+    [
+      2.000000,
+      "\r\n"
+    ],
+    [
+      0.000365,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.347093,
+      "#"
+    ],
+    [
+      0.262764,
+      " "
+    ],
+    [
+      0.191568,
+      "l"
+    ],
+    [
+      0.086614,
+      "e"
+    ],
+    [
+      0.110365,
+      "t"
+    ],
+    [
+      0.707057,
+      "'"
+    ],
+    [
+      0.220060,
+      "s"
+    ],
+    [
+      0.181690,
+      " "
+    ],
+    [
+      0.128039,
+      "c"
+    ],
+    [
+      0.176264,
+      "r"
+    ],
+    [
+      0.171208,
+      "e"
+    ],
+    [
+      0.199371,
+      "a"
+    ],
+    [
+      0.161622,
+      "t"
+    ],
+    [
+      0.145989,
+      "e"
+    ],
+    [
+      0.187920,
+      " "
+    ],
+    [
+      0.734653,
+      "a"
+    ],
+    [
+      0.185812,
+      " "
+    ],
+    [
+      0.270851,
+      "r"
+    ],
+    [
+      0.120000,
+      "e"
+    ],
+    [
+      0.161097,
+      "p"
+    ],
+    [
+      0.179813,
+      "o"
+    ],
+    [
+      0.170557,
+      "s"
+    ],
+    [
+      0.145457,
+      "i"
+    ],
+    [
+      0.165200,
+      "t"
+    ],
+    [
+      0.135578,
+      "o"
+    ],
+    [
+      0.130363,
+      "r"
+    ],
+    [
+      0.461631,
+      "y"
+    ],
+    [
+      0.303047,
+      ":"
+    ],
+    [
+      0.955198,
+      "\r\n"
+    ],
+    [
+      0.000300,
+      "\u001b]0;tw@tux: ~/borg/demo/download\u0007tw@tux:~/borg/demo/download$ "
+    ],
+    [
+      0.301237,
+      "c"
+    ],
+    [
+      0.084267,
+      "d"
+    ],
+    [
+      0.155241,
+      " "
+    ],
+    [
+      0.813751,
+      "."
+    ],
+    [
+      0.157147,
+      "."
+    ],
+    [
+      0.573720,
+      "\r\n"
+    ],
+    [
+      0.000508,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.225463,
+      "b"
+    ],
+    [
+      0.274841,
+      "o"
+    ],
+    [
+      0.125292,
+      "r"
+    ],
+    [
+      0.083313,
+      "g"
+    ],
+    [
+      0.088596,
+      " "
+    ],
+    [
+      0.231502,
+      "i"
+    ],
+    [
+      0.062726,
+      "n"
+    ],
+    [
+      0.144877,
+      "i"
+    ],
+    [
+      0.112508,
+      "t"
+    ],
+    [
+      0.313489,
+      " "
+    ],
+    [
+      0.298944,
+      "r"
+    ],
+    [
+      0.216556,
+      "e"
+    ],
+    [
+      0.180484,
+      "p"
+    ],
+    [
+      0.204141,
+      "o"
+    ],
+    [
+      0.682782,
+      "\r\n"
+    ],
+    [
+      0.352828,
+      "Initializing repository at \"repo\"\r\n"
+    ],
+    [
+      0.001407,
+      "Encryption NOT enabled.\r\nUse the \"--encryption=repokey|keyfile|passphrase\" to enable encryption."
+    ],
+    [
+      0.000009,
+      "\r\n"
+    ],
+    [
+      0.008492,
+      "Synchronizing chunks cache..."
+    ],
+    [
+      0.000009,
+      "\r\n"
+    ],
+    [
+      0.000030,
+      "Archives: 0, w/ cached Idx: 0, w/ outdated Idx: 0, w/o cached Idx: 0."
+    ],
+    [
+      0.000004,
+      "\r\n"
+    ],
+    [
+      0.000024,
+      "Done."
+    ],
+    [
+      0.000004,
+      "\r\n"
+    ],
+    [
+      0.027827,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.988184,
+      "#"
+    ],
+    [
+      0.248844,
+      " "
+    ],
+    [
+      0.199486,
+      "l"
+    ],
+    [
+      0.104455,
+      "e"
+    ],
+    [
+      0.127960,
+      "t"
+    ],
+    [
+      0.484976,
+      "'"
+    ],
+    [
+      0.186103,
+      "s"
+    ],
+    [
+      0.151763,
+      " "
+    ],
+    [
+      0.177456,
+      "c"
+    ],
+    [
+      0.178972,
+      "r"
+    ],
+    [
+      0.183533,
+      "e"
+    ],
+    [
+      0.192725,
+      "a"
+    ],
+    [
+      0.146352,
+      "t"
+    ],
+    [
+      0.156199,
+      "e"
+    ],
+    [
+      0.232699,
+      " "
+    ],
+    [
+      0.513490,
+      "o"
+    ],
+    [
+      0.229828,
+      "u"
+    ],
+    [
+      0.104744,
+      "r"
+    ],
+    [
+      0.115068,
+      " "
+    ],
+    [
+      0.201439,
+      "f"
+    ],
+    [
+      0.333315,
+      "i"
+    ],
+    [
+      0.209070,
+      "r"
+    ],
+    [
+      0.259194,
+      "s"
+    ],
+    [
+      0.076346,
+      "t"
+    ],
+    [
+      0.125673,
+      " "
+    ],
+    [
+      0.198575,
+      "b"
+    ],
+    [
+      0.089009,
+      "a"
+    ],
+    [
+      0.238307,
+      "c"
+    ],
+    [
+      0.105568,
+      "k"
+    ],
+    [
+      0.254971,
+      "u"
+    ],
+    [
+      0.318094,
+      "p"
+    ],
+    [
+      0.690770,
+      ":"
+    ],
+    [
+      0.580155,
+      "\r\n"
+    ],
+    [
+      0.000308,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.603046,
+      "b"
+    ],
+    [
+      0.104492,
+      "o"
+    ],
+    [
+      0.148182,
+      "r"
+    ],
+    [
+      0.087024,
+      "g"
+    ],
+    [
+      0.176897,
+      " "
+    ],
+    [
+      0.183168,
+      "c"
+    ],
+    [
+      0.185325,
+      "r"
+    ],
+    [
+      0.183347,
+      "e"
+    ],
+    [
+      0.182868,
+      "a"
+    ],
+    [
+      0.170600,
+      "t"
+    ],
+    [
+      0.137005,
+      "e"
+    ],
+    [
+      0.164357,
+      " "
+    ],
+    [
+      0.427028,
+      "-"
+    ],
+    [
+      0.147791,
+      "-"
+    ],
+    [
+      0.440101,
+      "s"
+    ],
+    [
+      0.177193,
+      "t"
+    ],
+    [
+      0.203817,
+      "a"
+    ],
+    [
+      0.217150,
+      "t"
+    ],
+    [
+      0.229771,
+      "s"
+    ],
+    [
+      0.191220,
+      " "
+    ],
+    [
+      0.269939,
+      "-"
+    ],
+    [
+      0.145163,
+      "-"
+    ],
+    [
+      0.450053,
+      "p"
+    ],
+    [
+      0.165194,
+      "r"
+    ],
+    [
+      0.044264,
+      "o"
+    ],
+    [
+      0.204568,
+      "g"
+    ],
+    [
+      0.104759,
+      "r"
+    ],
+    [
+      0.213137,
+      "e"
+    ],
+    [
+      0.216596,
+      "s"
+    ],
+    [
+      0.163238,
+      "s"
+    ],
+    [
+      0.241084,
+      " "
+    ],
+    [
+      0.300727,
+      "-"
+    ],
+    [
+      0.149156,
+      "-"
+    ],
+    [
+      0.259608,
+      "c"
+    ],
+    [
+      0.120930,
+      "o"
+    ],
+    [
+      0.098838,
+      "m"
+    ],
+    [
+      0.234615,
+      "p"
+    ],
+    [
+      0.084600,
+      "r"
+    ],
+    [
+      0.166072,
+      "e"
+    ],
+    [
+      0.185576,
+      "s"
+    ],
+    [
+      0.159984,
+      "s"
+    ],
+    [
+      0.122793,
+      "i"
+    ],
+    [
+      0.180423,
+      "o"
+    ],
+    [
+      0.196311,
+      "n"
+    ],
+    [
+      0.181682,
+      " "
+    ],
+    [
+      0.242129,
+      "l"
+    ],
+    [
+      0.842020,
+      "z"
+    ],
+    [
+      0.707941,
+      "4"
+    ],
+    [
+      0.180354,
+      " "
+    ],
+    [
+      0.419080,
+      "r"
+    ],
+    [
+      0.189076,
+      "e"
+    ],
+    [
+      0.172527,
+      "p"
+    ],
+    [
+      0.154922,
+      "o"
+    ],
+    [
+      0.728059,
+      ":"
+    ],
+    [
+      0.147089,
+      ":"
+    ],
+    [
+      0.396117,
+      "b"
+    ],
+    [
+      0.090233,
+      "a"
+    ],
+    [
+      0.199537,
+      "c"
+    ],
+    [
+      0.084686,
+      "k"
+    ],
+    [
+      0.278049,
+      "u \r"
+    ],
+    [
+      0.268438,
+      "p"
+    ],
+    [
+      0.491592,
+      "1"
+    ],
+    [
+      0.508588,
+      " "
+    ],
+    [
+      0.174143,
+      "d"
+    ],
+    [
+      0.175430,
+      "a"
+    ],
+    [
+      0.166841,
+      "t"
+    ],
+    [
+      0.127029,
+      "a"
+    ],
+    [
+      0.380593,
+      "\r\n"
+    ],
+    [
+      0.557518,
+      "  2.68 MB O   1.25 MB C   1.25 MB D data/linux-4.1.8/Doc...ia/v4l/func-read.xml\r"
+    ],
+    [
+      0.200102,
+      "  5.37 MB O   2.46 MB C   2.46 MB D data/linux-4.1.8/Documentation/backlight   \r"
+    ],
+    [
+      0.200342,
+      "  6.99 MB O   3.36 MB C   3.36 MB D data/linux-4.1.8/Doc...rm_big_little_dt.txt\r"
+    ],
+    [
+      0.200137,
+      "  7.83 MB O   3.87 MB C   3.87 MB D data/linux-4.1.8/Doc...s/mtd/atmel-nand.txt\r"
+    ],
+    [
+      0.200271,
+      "  8.77 MB O   4.41 MB C   4.41 MB D data/linux-4.1.8/Doc...ngs/soc/fsl/qman.txt\r"
+    ],
+    [
+      0.200577,
+      "  9.99 MB O   5.12 MB C   5.12 MB D data/linux-4.1.8/Doc...ching/cachefiles.txt\r"
+    ],
+    [
+      0.200033,
+      " 12.11 MB O   6.34 MB C   6.33 MB D data/linux-4.1.8/Doc...infiniband/ipoib.txt\r"
+    ],
+    [
+      0.200272,
+      " 15.27 MB O   8.08 MB C   8.08 MB D data/linux-4.1.8/Doc.../networking/team.txt\r"
+    ],
+    [
+      0.200072,
+      " 18.22 MB O   9.72 MB C   9.71 MB D data/linux-4.1.8/Doc...tation/sysctl/vm.txt\r"
+    ],
+    [
+      0.202107,
+      " 21.05 MB O  11.22 MB C  11.21 MB D data/linux-4.1.8/MAINTAINERS               \r"
+    ],
+    [
+      0.200251,
+      " 23.04 MB O  12.20 MB C  12.20 MB D data/linux-4.1.8/arc...de/uapi/asm/unistd.h\r"
+    ],
+    [
+      0.200450,
+      " 25.45 MB O  13.17 MB C  13.17 MB D data/linux-4.1.8/arc.../boot/dts/imx23.dtsi\r"
+    ],
+    [
+      0.200093,
+      " 27.65 MB O  14.01 MB C  14.00 MB D data/linux-4.1.8/arc...omap3-overo-tobi.dts\r"
+    ],
+    [
+      0.200314,
+      " 30.26 MB O  14.89 MB C  14.89 MB D data/linux-4.1.8/arc...ot/dts/tps65910.dtsi\r"
+    ],
+    [
+      0.200003,
+      " 31.90 MB O  15.63 MB C  15.63 MB D data/linux-4.1.8/arc...include/asm/probes.h\r"
+    ],
+    [
+      0.200493,
+      " 34.66 MB O  16.84 MB C  16.83 MB D data/linux-4.1.8/arc...i/include/mach/psc.h\r"
+    ],
+    [
+      0.200675,
+      " 36.62 MB O  17.70 MB C  17.70 MB D data/linux-4.1.8/arc...mach-ixp4xx/common.c\r"
+    ],
+    [
+      0.200307,
+      " 38.40 MB O  18.54 MB C  18.53 MB D data/linux-4.1.8/arch/arm/mach-omap2/cm.h  \r"
+    ],
+    [
+      0.200254,
+      " 41.29 MB O  19.63 MB C  19.63 MB D data/linux-4.1.8/arch/arm/mach-pxa/idp.c   \r"
+    ],
+    [
+      0.219493,
+      " 43.57 MB O  20.67 MB C  20.66 MB D data/linux-4.1.8/arc...bile/clock-r8a7778.c\r"
+    ],
+    [
+      0.200451,
+      " 45.55 MB O  21.59 MB C  21.59 MB D data/linux-4.1.8/arc...m/plat-samsung/adc.c\r"
+    ],
+    [
+      0.200370,
+      " 47.50 MB O  22.51 MB C  22.51 MB D data/linux-4.1.8/arch/arm64/lib/memmove.S  \r"
+    ],
+    [
+      0.200686,
+      " 49.21 MB O  23.33 MB C  23.32 MB D data/linux-4.1.8/arc...ckfin/kernel/trace.c\r"
+    ],
+    [
+      0.200393,
+      " 53.22 MB O  24.51 MB C  24.50 MB D data/linux-4.1.8/arch/c6x/include/asm/soc.h\r"
+    ],
+    [
+      0.200371,
+      " 56.19 MB O  25.50 MB C  25.49 MB D data/linux-4.1.8/arc...op/iop_sw_cpu_defs.h\r"
+    ],
+    [
+      0.200450,
+      " 57.84 MB O  26.17 MB C  26.14 MB D data/linux-4.1.8/arc...include/asm/vm_mmu.h\r"
+    ],
+    [
+      0.200573,
+      " 60.21 MB O  27.27 MB C  27.25 MB D data/linux-4.1.8/arch/ia64/kernel/time.c   \r"
+    ],
+    [
+      0.200222,
+      " 62.31 MB O  28.18 MB C  28.15 MB D data/linux-4.1.8/arc.../coldfire/sltimers.c\r"
+    ],
+    [
+      0.200756,
+      " 67.09 MB O  29.98 MB C  29.90 MB D data/linux-4.1.8/arc...8k/include/asm/tlb.h\r"
+    ],
+    [
+      0.200716,
+      " 68.75 MB O  30.80 MB C  30.72 MB D data/linux-4.1.8/arc...ude/uapi/asm/fcntl.h\r"
+    ],
+    [
+      0.200734,
+      " 70.69 MB O  31.67 MB C  31.59 MB D data/linux-4.1.8/arc...figs/malta_defconfig\r"
+    ],
+    [
+      0.200198,
+      " 72.12 MB O  32.34 MB C  32.26 MB D data/linux-4.1.8/arc...de/asm/mc146818rtc.h\r"
+    ],
+    [
+      0.200446,
+      " 76.01 MB O  33.45 MB C  33.37 MB D data/linux-4.1.8/arch/mips/jazz/jazzdma.c  \r"
+    ],
+    [
+      0.200111,
+      " 78.19 MB O  34.46 MB C  34.38 MB D data/linux-4.1.8/arc...tlogic/common/time.c\r"
+    ],
+    [
+      0.200191,
+      " 79.84 MB O  35.30 MB C  35.21 MB D data/linux-4.1.8/arc...de/uapi/asm/msgbuf.h\r"
+    ],
+    [
+      0.200421,
+      " 81.35 MB O  36.07 MB C  35.99 MB D data/linux-4.1.8/arc...sc/include/asm/rtc.h\r"
+    ],
+    [
+      0.200090,
+      " 83.49 MB O  37.03 MB C  36.95 MB D data/linux-4.1.8/arc...fsl/qoriq-dma-1.dtsi\r"
+    ],
+    [
+      0.200331,
+      " 85.13 MB O  37.80 MB C  37.72 MB D data/linux-4.1.8/arc...pc836x_rdk_defconfig\r"
+    ],
+    [
+      0.200114,
+      " 87.04 MB O  38.71 MB C  38.63 MB D data/linux-4.1.8/arc...ude/uapi/asm/nvram.h\r"
+    ],
+    [
+      0.200280,
+      " 90.24 MB O  40.19 MB C  40.11 MB D data/linux-4.1.8/arc...pc/math-emu/mtfsfi.c\r"
+    ],
+    [
+      0.216796,
+      " 92.68 MB O  41.41 MB C  41.33 MB D data/linux-4.1.8/arc...rms/powermac/nvram.c\r"
+    ],
+    [
+      0.200198,
+      " 95.32 MB O  42.60 MB C  42.52 MB D data/linux-4.1.8/arc...nclude/asm/pgtable.h\r"
+    ],
+    [
+      0.200304,
+      " 97.31 MB O  43.50 MB C  43.42 MB D data/linux-4.1.8/arc...mach-dreamcast/irq.c\r"
+    ],
+    [
+      0.200328,
+      " 99.46 MB O  44.41 MB C  44.33 MB D data/linux-4.1.8/arc...artner-jet-setup.txt\r"
+    ],
+    [
+      0.200102,
+      "101.28 MB O  45.25 MB C  45.16 MB D data/linux-4.1.8/arc...rc/include/asm/ecc.h\r"
+    ],
+    [
+      0.200253,
+      "103.53 MB O  46.27 MB C  46.19 MB D data/linux-4.1.8/arc.../kernel/una_asm_64.S\r"
+    ],
+    [
+      0.200503,
+      "105.76 MB O  47.32 MB C  47.23 MB D data/linux-4.1.8/arch/tile/kernel/reboot.c \r"
+    ],
+    [
+      0.201177,
+      "107.64 MB O  48.27 MB C  48.18 MB D data/linux-4.1.8/arc...t/compressed/eboot.c\r"
+    ],
+    [
+      0.200192,
+      "109.82 MB O  49.22 MB C  49.13 MB D data/linux-4.1.8/arc...clude/asm/spinlock.h\r"
+    ],
+    [
+      0.200851,
+      "112.71 MB O  50.56 MB C  50.48 MB D data/linux-4.1.8/arch/x86/kernel/ptrace.c  \r"
+    ],
+    [
+      0.200195,
+      "115.71 MB O  51.96 MB C  51.87 MB D data/linux-4.1.8/arc...s/platform_emc1403.c\r"
+    ],
+    [
+      0.200306,
+      "117.28 MB O  52.79 MB C  52.70 MB D data/linux-4.1.8/arc...nclude/variant/tie.h\r"
+    ],
+    [
+      0.204475,
+      "122.68 MB O  55.35 MB C  55.26 MB D data/linux-4.1.8/fir...x-e1-6.2.9.0.fw.ihex\r"
+    ],
+    [
+      0.199974,
+      "127.39 MB O  58.15 MB C  57.97 MB D data/linux-4.1.8/fs/afs/fsclient.c         \r"
+    ],
+    [
+      0.201254,
+      "132.58 MB O  60.42 MB C  60.24 MB D data/linux-4.1.8/fs/cifs/cifssmb.c         \r"
+    ],
+    [
+      0.216710,
+      "136.76 MB O  62.28 MB C  62.10 MB D data/linux-4.1.8/fs/ext4/inline.c          \r"
+    ],
+    [
+      0.200891,
+      "140.78 MB O  64.15 MB C  63.97 MB D data/linux-4.1.8/fs/jbd2/commit.c          \r"
+    ],
+    [
+      0.199883,
+      "144.88 MB O  65.98 MB C  65.80 MB D data/linux-4.1.8/fs/nfs/objlayout          \r"
+    ],
+    [
+      0.201488,
+      "150.31 MB O  67.96 MB C  67.78 MB D data/linux-4.1.8/fs/...fy/dnotify/dnotify.c\r"
+    ],
+    [
+      0.205472,
+      "154.72 MB O  69.97 MB C  69.79 MB D data/linux-4.1.8/fs/quota/dquot.c          \r"
+    ],
+    [
+      0.200493,
+      "159.06 MB O  71.91 MB C  71.73 MB D data/linux-4.1.8/fs/...xfs/xfs_inode_fork.h\r"
+    ],
+    [
+      0.200000,
+      "161.54 MB O  73.09 MB C  72.91 MB D data/linux-4.1.8/inc.../crypto/public_key.h\r"
+    ],
+    [
+      0.205041,
+      "164.32 MB O  74.28 MB C  74.09 MB D data/linux-4.1.8/inc...inux/cgroup_subsys.h\r"
+    ],
+    [
+      0.200371,
+      "166.33 MB O  75.23 MB C  75.05 MB D data/linux-4.1.8/include/linux/if_team.h   \r"
+    ],
+    [
+      0.200340,
+      "168.82 MB O  76.24 MB C  76.06 MB D data/linux-4.1.8/inc.../mfd/pcf50633/gpio.h\r"
+    ],
+    [
+      0.200162,
+      "171.65 MB O  77.36 MB C  77.17 MB D data/linux-4.1.8/include/linux/phy.h       \r"
+    ],
+    [
+      0.200385,
+      "172.84 MB O  77.97 MB C  77.79 MB D data/linux-4.1.8/include/linux/scc.h       \r"
+    ],
+    [
+      0.200918,
+      "174.87 MB O  78.94 MB C  78.76 MB D data/linux-4.1.8/include/linux/wait.h      \r"
+    ],
+    [
+      0.200117,
+      "177.06 MB O  80.01 MB C  79.83 MB D data/linux-4.1.8/inc...er/nfnetlink_queue.h\r"
+    ],
+    [
+      0.200254,
+      "179.53 MB O  81.13 MB C  80.95 MB D data/linux-4.1.8/inc...e/events/intel-sst.h\r"
+    ],
+    [
+      0.200176,
+      "181.40 MB O  82.05 MB C  81.86 MB D data/linux-4.1.8/include/uapi/linux/mpls.h \r"
+    ],
+    [
+      0.200438,
+      "183.11 MB O  82.88 MB C  82.70 MB D data/linux-4.1.8/inc...api/scsi/fc/fc_els.h\r"
+    ],
+    [
+      0.200226,
+      "186.12 MB O  84.31 MB C  84.12 MB D data/linux-4.1.8/kernel/jump_label.c       \r"
+    ],
+    [
+      0.200138,
+      "190.76 MB O  86.46 MB C  86.28 MB D data/linux-4.1.8/lib/Kconfig.debug         \r"
+    ],
+    [
+      0.200958,
+      "194.21 MB O  87.82 MB C  87.64 MB D data/linux-4.1.8/mm/memblock.c             \r"
+    ],
+    [
+      0.200544,
+      "198.19 MB O  89.69 MB C  89.51 MB D data/linux-4.1.8/net/bluetooth/ecc.c       \r"
+    ],
+    [
+      0.200232,
+      "202.28 MB O  91.52 MB C  91.34 MB D data/linux-4.1.8/net/hsr/hsr_slave.c       \r"
+    ],
+    [
+      0.200153,
+      "206.23 MB O  93.40 MB C  93.22 MB D data/linux-4.1.8/net/ipx/af_ipx.c          \r"
+    ],
+    [
+      0.200526,
+      "210.30 MB O  95.08 MB C  94.89 MB D data/linux-4.1.8/net...ter/ipvs/ip_vs_ftp.c\r"
+    ],
+    [
+      0.200433,
+      "213.29 MB O  96.37 MB C  96.19 MB D data/linux-4.1.8/net/phonet/af_phonet.c    \r"
+    ],
+    [
+      0.200669,
+      "217.21 MB O  98.21 MB C  98.03 MB D data/linux-4.1.8/net.../svc_rdma_recvfrom.c\r"
+    ],
+    [
+      0.200014,
+      "220.20 MB O  99.53 MB C  99.35 MB D data/linux-4.1.8/scr...e/free/iounmap.cocci\r"
+    ],
+    [
+      0.200446,
+      "222.94 MB O 100.82 MB C 100.64 MB D data/linux-4.1.8/security/selinux/Makefile \r"
+    ],
+    [
+      0.214711,
+      "226.41 MB O 102.23 MB C 102.05 MB D data/linux-4.1.8/sou...seq/seq_midi_event.c\r"
+    ],
+    [
+      0.202631,
+      "228.96 MB O 103.31 MB C 103.13 MB D data/linux-4.1.8/sound/mips/ad1843.c       \r"
+    ],
+    [
+      0.200095,
+      "232.28 MB O 104.65 MB C 104.47 MB D data/linux-4.1.8/sound/pci/ctxfi/Makefile  \r"
+    ],
+    [
+      0.200726,
+      "236.33 MB O 106.24 MB C 106.06 MB D data/linux-4.1.8/sound/pci/nm256/Makefile  \r"
+    ],
+    [
+      0.199902,
+      "239.73 MB O 107.58 MB C 107.40 MB D data/linux-4.1.8/sou.../codecs/cs4271-spi.c\r"
+    ],
+    [
+      0.200592,
+      "244.29 MB O 109.08 MB C 108.90 MB D data/linux-4.1.8/sound/soc/codecs/wm8940.c \r"
+    ],
+    [
+      0.200357,
+      "247.98 MB O 110.35 MB C 110.17 MB D data/linux-4.1.8/sou...oc/omap/omap-mcpdm.c\r"
+    ],
+    [
+      0.200901,
+      "250.64 MB O 111.50 MB C 111.32 MB D data/linux-4.1.8/sound/usb/mixer_scarlett.c\r"
+    ],
+    [
+      0.200535,
+      "252.14 MB O 112.20 MB C 112.01 MB D data/linux-4.1.8/tools/perf/builtin-kvm.c  \r"
+    ],
+    [
+      0.200239,
+      "254.11 MB O 113.07 MB C 112.88 MB D data/linux-4.1.8/tools/perf/util/record.c  \r"
+    ],
+    [
+      0.200233,
+      "255.70 MB O 113.82 MB C 113.64 MB D data/linux-4.1.8/too...re/bin/configinit.sh\r"
+    ],
+    [
+      0.395702,
+      "                                                                               \r------------------------------------------------------------------------------\r\nArchive name: backup1\r\nArchive fingerprint: b3104802be9faa610f281619c69e4d3e672df2ce97528a35d83f15080d02ed86\r\nStart time: Sat Oct 24 22:27:24 2015\r\nEnd time: Sat Oct 24 22:27:43 2015\r\nDuration: 19.32 seconds\r\nNumber of files: 31557\r\n\r\n                       Original size      Compressed size    Deduplicated size\r\nThis archive:              257.06 MB            114.44 MB            114.26 MB\r\nAll archives:              257.06 MB            114.44 MB            114.26 MB\r\n\r\n                       Unique chunks         Total chunks\r\nChunk index:                   33731                34030\r\n------------------------------------------------------------------------------\r\n"
+    ],
+    [
+      0.046138,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      1.000000,
+      "#"
+    ],
+    [
+      0.564664,
+      " "
+    ],
+    [
+      0.313339,
+      "c"
+    ],
+    [
+      0.492152,
+      "h"
+    ],
+    [
+      0.479518,
+      "a"
+    ],
+    [
+      0.536708,
+      "n"
+    ],
+    [
+      0.134006,
+      "g"
+    ],
+    [
+      0.147326,
+      "e"
+    ],
+    [
+      0.068957,
+      " "
+    ],
+    [
+      0.179678,
+      "s"
+    ],
+    [
+      0.096249,
+      "o"
+    ],
+    [
+      0.081003,
+      "m"
+    ],
+    [
+      0.124342,
+      "e"
+    ],
+    [
+      0.117830,
+      " "
+    ],
+    [
+      0.138019,
+      "d"
+    ],
+    [
+      0.137898,
+      "a"
+    ],
+    [
+      0.199628,
+      "t"
+    ],
+    [
+      0.104935,
+      "a"
+    ],
+    [
+      0.150868,
+      " "
+    ],
+    [
+      0.144877,
+      "s"
+    ],
+    [
+      0.126816,
+      "l"
+    ],
+    [
+      0.178466,
+      "i"
+    ],
+    [
+      0.113395,
+      "g"
+    ],
+    [
+      0.101022,
+      "h"
+    ],
+    [
+      0.102395,
+      "t"
+    ],
+    [
+      0.311498,
+      "l"
+    ],
+    [
+      0.366608,
+      "y"
+    ],
+    [
+      0.657991,
+      ":"
+    ],
+    [
+      0.423140,
+      "\r\n"
+    ],
+    [
+      0.000708,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      2.000000,
+      "e"
+    ],
+    [
+      0.000021,
+      "c"
+    ],
+    [
+      0.000024,
+      "h"
+    ],
+    [
+      0.000029,
+      "o"
+    ],
+    [
+      0.000018,
+      " "
+    ],
+    [
+      0.000025,
+      "\""
+    ],
+    [
+      0.000025,
+      "s"
+    ],
+    [
+      0.000026,
+      "o"
+    ],
+    [
+      0.000070,
+      "me "
+    ],
+    [
+      0.000022,
+      "m"
+    ],
+    [
+      0.000028,
+      "o"
+    ],
+    [
+      0.000027,
+      "r"
+    ],
+    [
+      0.000026,
+      "e"
+    ],
+    [
+      0.000029,
+      " "
+    ],
+    [
+      0.000028,
+      "d"
+    ],
+    [
+      0.000028,
+      "a"
+    ],
+    [
+      0.000028,
+      "t"
+    ],
+    [
+      0.000026,
+      "a"
+    ],
+    [
+      0.000033,
+      "\""
+    ],
+    [
+      0.000028,
+      " "
+    ],
+    [
+      0.000059,
+      "\u003e"
+    ],
+    [
+      0.000045,
+      " "
+    ],
+    [
+      0.000020,
+      "d"
+    ],
+    [
+      0.000040,
+      "a"
+    ],
+    [
+      0.000035,
+      "t"
+    ],
+    [
+      0.000039,
+      "a"
+    ],
+    [
+      0.000034,
+      "/"
+    ],
+    [
+      0.000034,
+      "o"
+    ],
+    [
+      0.000034,
+      "n"
+    ],
+    [
+      0.000037,
+      "e"
+    ],
+    [
+      0.000036,
+      "_"
+    ],
+    [
+      0.000037,
+      "f"
+    ],
+    [
+      0.000037,
+      "i"
+    ],
+    [
+      0.000717,
+      "le_more\r\n"
+    ],
+    [
+      0.000181,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      2.000000,
+      "#"
+    ],
+    [
+      0.266289,
+      " "
+    ],
+    [
+      0.194686,
+      "n"
+    ],
+    [
+      0.157296,
+      "o"
+    ],
+    [
+      0.084026,
+      "w"
+    ],
+    [
+      0.092729,
+      " "
+    ],
+    [
+      0.148154,
+      "c"
+    ],
+    [
+      0.169136,
+      "r"
+    ],
+    [
+      0.214327,
+      "e"
+    ],
+    [
+      0.180678,
+      "a"
+    ],
+    [
+      0.161652,
+      "t"
+    ],
+    [
+      0.128260,
+      "e"
+    ],
+    [
+      0.158131,
+      " "
+    ],
+    [
+      0.118838,
+      "a"
+    ],
+    [
+      0.120885,
+      " "
+    ],
+    [
+      0.797511,
+      "s"
+    ],
+    [
+      0.200585,
+      "e"
+    ],
+    [
+      0.171811,
+      "c"
+    ],
+    [
+      0.106721,
+      "o"
+    ],
+    [
+      0.153298,
+      "n"
+    ],
+    [
+      0.052244,
+      "d"
+    ],
+    [
+      0.149675,
+      " "
+    ],
+    [
+      0.183517,
+      "b"
+    ],
+    [
+      0.076768,
+      "a"
+    ],
+    [
+      0.189428,
+      "c"
+    ],
+    [
+      0.088431,
+      "k"
+    ],
+    [
+      0.229617,
+      "u"
+    ],
+    [
+      0.272021,
+      "p"
+    ],
+    [
+      0.965855,
+      ":"
+    ],
+    [
+      0.674517,
+      "\r\n"
+    ],
+    [
+      0.000322,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.946131,
+      "b"
+    ],
+    [
+      0.111159,
+      "o"
+    ],
+    [
+      0.094622,
+      "r"
+    ],
+    [
+      0.085288,
+      "g"
+    ],
+    [
+      0.165429,
+      " "
+    ],
+    [
+      0.936087,
+      "c"
+    ],
+    [
+      0.192608,
+      "r"
+    ],
+    [
+      0.187511,
+      "e"
+    ],
+    [
+      0.173135,
+      "a"
+    ],
+    [
+      0.179441,
+      "t"
+    ],
+    [
+      0.125923,
+      "e"
+    ],
+    [
+      0.164920,
+      " "
+    ],
+    [
+      0.737259,
+      "-"
+    ],
+    [
+      0.185417,
+      "-"
+    ],
+    [
+      0.233405,
+      "s"
+    ],
+    [
+      0.152945,
+      "t"
+    ],
+    [
+      0.181548,
+      "a"
+    ],
+    [
+      0.330237,
+      "t"
+    ],
+    [
+      0.735524,
+      "s"
+    ],
+    [
+      0.179019,
+      " "
+    ],
+    [
+      0.245324,
+      "-"
+    ],
+    [
+      0.142362,
+      "-"
+    ],
+    [
+      0.233989,
+      "p"
+    ],
+    [
+      0.153782,
+      "r"
+    ],
+    [
+      0.064431,
+      "o"
+    ],
+    [
+      0.104827,
+      "g"
+    ],
+    [
+      0.090533,
+      "r"
+    ],
+    [
+      0.168129,
+      "e"
+    ],
+    [
+      0.206325,
+      "s"
+    ],
+    [
+      0.157551,
+      "s"
+    ],
+    [
+      0.383630,
+      " "
+    ],
+    [
+      0.759364,
+      "r"
+    ],
+    [
+      0.199262,
+      "e"
+    ],
+    [
+      0.139781,
+      "p"
+    ],
+    [
+      0.151367,
+      "o"
+    ],
+    [
+      0.720350,
+      ":"
+    ],
+    [
+      0.144801,
+      ":"
+    ],
+    [
+      0.532566,
+      "b"
+    ],
+    [
+      0.226514,
+      "a"
+    ],
+    [
+      0.209449,
+      "c"
+    ],
+    [
+      0.142062,
+      "k"
+    ],
+    [
+      0.300090,
+      "u"
+    ],
+    [
+      0.262794,
+      "p"
+    ],
+    [
+      0.218785,
+      "2"
+    ],
+    [
+      0.249599,
+      " "
+    ],
+    [
+      0.187125,
+      "d"
+    ],
+    [
+      0.157741,
+      "a"
+    ],
+    [
+      0.175739,
+      "t"
+    ],
+    [
+      0.139896,
+      "a"
+    ],
+    [
+      0.795560,
+      "\r\n"
+    ],
+    [
+      0.571808,
+      "  6.50 MB O   3.09 MB C       0 B D data/linux-4.1.8/Doc...ngs/arm/armadeus.txt\r"
+    ],
+    [
+      0.200103,
+      " 11.82 MB O   6.17 MB C       0 B D data/linux-4.1.8/Documentation/hwmon/w83795\r"
+    ],
+    [
+      0.200121,
+      " 27.38 MB O  13.89 MB C       0 B D data/linux-4.1.8/arc...ot/dts/nspire-cx.dts\r"
+    ],
+    [
+      0.200110,
+      " 39.92 MB O  19.04 MB C       0 B D data/linux-4.1.8/arc...omap2/opp2430_data.c\r"
+    ],
+    [
+      0.200088,
+      " 52.28 MB O  24.23 MB C       0 B D data/linux-4.1.8/arc...fin/mach-bf561/smp.c\r"
+    ],
+    [
+      0.200078,
+      " 67.02 MB O  29.94 MB C       0 B D data/linux-4.1.8/arc...8k/include/asm/pci.h\r"
+    ],
+    [
+      0.200116,
+      " 78.29 MB O  34.52 MB C       0 B D data/linux-4.1.8/arc...etlogic/xlr/wakeup.c\r"
+    ],
+    [
+      0.200081,
+      " 90.07 MB O  40.11 MB C       0 B D data/linux-4.1.8/arc...eature-fixups-test.S\r"
+    ],
+    [
+      0.200092,
+      "101.15 MB O  45.19 MB C       0 B D data/linux-4.1.8/arc...rc/crypto/sha1_asm.S\r"
+    ],
+    [
+      0.200078,
+      "115.05 MB O  51.63 MB C       0 B D data/linux-4.1.8/arc...6/mm/kasan_init_64.c\r"
+    ],
+    [
+      0.200062,
+      "147.39 MB O  66.98 MB C       0 B D data/linux-4.1.8/fs/nls/nls_cp864.c        \r"
+    ],
+    [
+      0.200117,
+      "169.16 MB O  76.38 MB C       0 B D data/linux-4.1.8/inc.../mfd/twl4030-audio.h\r"
+    ],
+    [
+      0.200074,
+      "181.43 MB O  82.06 MB C       0 B D data/linux-4.1.8/include/uapi/linux/mtio.h \r"
+    ],
+    [
+      0.200131,
+      "209.10 MB O  94.58 MB C       0 B D data/linux-4.1.8/net/mac80211/scan.c       \r"
+    ],
+    [
+      0.200079,
+      "234.87 MB O 105.68 MB C       0 B D data/linux-4.1.8/sou...i/hda/patch_si3054.c\r"
+    ],
+    [
+      0.200110,
+      "255.66 MB O 113.80 MB C       0 B D data/linux-4.1.8/too...ves/asm/asm-compat.h\r"
+    ],
+    [
+      0.201350,
+      "                                                                               \r------------------------------------------------------------------------------\r\nArchive name: backup2\r\nArchive fingerprint: 5737afe8ad2cda7667973b7f2e1d83f097ef3117b5753a38ba7664b616fbdc5a\r\nStart time: Sat Oct 24 22:28:24 2015\r\nEnd time: Sat Oct 24 22:28:27 2015\r\nDuration: 3.41 seconds\r\nNumber of files: 31557\r\n"
+    ],
+    [
+      0.001858,
+      "\r\n                       Original size      Compressed size    Deduplicated size\r\nThis archive:              257.06 MB            114.47 MB             45.19 kB\r\nAll archives:              514.12 MB            228.92 MB            114.31 MB\r\n\r\n                       Unique chunks         Total chunks\r\nChunk index:                   33733                68060\r\n------------------------------------------------------------------------------\r\n"
+    ],
+    [
+      0.033369,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      1.013315,
+      "#"
+    ],
+    [
+      0.482095,
+      " "
+    ],
+    [
+      0.319571,
+      "w"
+    ],
+    [
+      0.140740,
+      "o"
+    ],
+    [
+      0.090380,
+      "w"
+    ],
+    [
+      0.304400,
+      ","
+    ],
+    [
+      0.137310,
+      " "
+    ],
+    [
+      0.662280,
+      "t"
+    ],
+    [
+      0.162678,
+      "h"
+    ],
+    [
+      0.114083,
+      "a"
+    ],
+    [
+      0.077660,
+      "t"
+    ],
+    [
+      0.120839,
+      " "
+    ],
+    [
+      0.207626,
+      "w"
+    ],
+    [
+      0.195480,
+      "a"
+    ],
+    [
+      0.060188,
+      "s"
+    ],
+    [
+      0.149129,
+      " "
+    ],
+    [
+      0.094522,
+      "a"
+    ],
+    [
+      0.098801,
+      " "
+    ],
+    [
+      0.266235,
+      "l"
+    ],
+    [
+      0.184774,
+      "o"
+    ],
+    [
+      0.255040,
+      "t"
+    ],
+    [
+      0.170498,
+      " "
+    ],
+    [
+      0.201599,
+      "f"
+    ],
+    [
+      0.189774,
+      "a"
+    ],
+    [
+      0.229140,
+      "s"
+    ],
+    [
+      0.275243,
+      "t"
+    ],
+    [
+      0.177347,
+      "e"
+    ],
+    [
+      0.090806,
+      "r"
+    ],
+    [
+      0.204494,
+      "!"
+    ],
+    [
+      0.479851,
+      "\r\n"
+    ],
+    [
+      0.000316,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.734961,
+      "#"
+    ],
+    [
+      0.300000,
+      " "
+    ],
+    [
+      0.300000,
+      "n"
+    ],
+    [
+      0.199297,
+      "o"
+    ],
+    [
+      0.148047,
+      "t"
+    ],
+    [
+      0.071101,
+      "i"
+    ],
+    [
+      0.185554,
+      "c"
+    ],
+    [
+      0.395933,
+      "e"
+    ],
+    [
+      0.180285,
+      " "
+    ],
+    [
+      0.199321,
+      "t"
+    ],
+    [
+      0.094767,
+      "h"
+    ],
+    [
+      0.166966,
+      "a"
+    ],
+    [
+      0.102814,
+      "t"
+    ],
+    [
+      0.415016,
+      " "
+    ],
+    [
+      0.286089,
+      "\""
+    ],
+    [
+      0.795323,
+      "D"
+    ],
+    [
+      0.180152,
+      "e"
+    ],
+    [
+      0.311214,
+      "d"
+    ],
+    [
+      0.214812,
+      "u"
+    ],
+    [
+      0.251616,
+      "p"
+    ],
+    [
+      0.203533,
+      "l"
+    ],
+    [
+      0.187084,
+      "i"
+    ],
+    [
+      0.124066,
+      "c"
+    ],
+    [
+      0.158062,
+      "a"
+    ],
+    [
+      0.260540,
+      "t"
+    ],
+    [
+      0.136405,
+      "e"
+    ],
+    [
+      0.278039,
+      "d"
+    ],
+    [
+      0.323148,
+      " "
+    ],
+    [
+      0.172337,
+      "s"
+    ],
+    [
+      0.074541,
+      "i"
+    ],
+    [
+      0.269245,
+      "z"
+    ],
+    [
+      0.123599,
+      "e"
+    ],
+    [
+      0.533647,
+      "\""
+    ],
+    [
+      0.234738,
+      " "
+    ],
+    [
+      0.150720,
+      "f"
+    ],
+    [
+      0.144329,
+      "o"
+    ],
+    [
+      0.086533,
+      "r"
+    ],
+    [
+      0.159717,
+      " "
+    ],
+    [
+      0.274291,
+      "\""
+    ],
+    [
+      0.471163,
+      "T"
+    ],
+    [
+      0.162135,
+      "h"
+    ],
+    [
+      0.233501,
+      "i"
+    ],
+    [
+      0.134923,
+      "s"
+    ],
+    [
+      0.190779,
+      " "
+    ],
+    [
+      0.307322,
+      "a"
+    ],
+    [
+      0.153882,
+      "r"
+    ],
+    [
+      0.246471,
+      "c"
+    ],
+    [
+      0.110018,
+      "h"
+    ],
+    [
+      0.259798,
+      "i"
+    ],
+    [
+      0.132853,
+      "v"
+    ],
+    [
+      0.171373,
+      "e"
+    ],
+    [
+      0.560405,
+      "\""
+    ],
+    [
+      0.609162,
+      "!"
+    ],
+    [
+      0.559020,
+      "\r\n"
+    ],
+    [
+      0.000296,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.941369,
+      "#"
+    ],
+    [
+      0.254237,
+      " "
+    ],
+    [
+      0.176998,
+      "b"
+    ],
+    [
+      0.124943,
+      "o"
+    ],
+    [
+      0.097140,
+      "r"
+    ],
+    [
+      0.057513,
+      "g"
+    ],
+    [
+      0.232990,
+      " "
+    ],
+    [
+      0.549539,
+      "r"
+    ],
+    [
+      0.112992,
+      "e"
+    ],
+    [
+      0.240733,
+      "c"
+    ],
+    [
+      0.164146,
+      "o"
+    ],
+    [
+      0.209755,
+      "g"
+    ],
+    [
+      0.145638,
+      "n"
+    ],
+    [
+      0.151826,
+      "i"
+    ],
+    [
+      0.471625,
+      "z"
+    ],
+    [
+      0.759625,
+      "e"
+    ],
+    [
+      0.229566,
+      "d"
+    ],
+    [
+      0.254596,
+      " "
+    ],
+    [
+      0.209452,
+      "t"
+    ],
+    [
+      0.088606,
+      "h"
+    ],
+    [
+      0.155981,
+      "a"
+    ],
+    [
+      0.086797,
+      "t"
+    ],
+    [
+      0.098574,
+      " "
+    ],
+    [
+      0.243290,
+      "m"
+    ],
+    [
+      0.120288,
+      "o"
+    ],
+    [
+      0.092890,
+      "s"
+    ],
+    [
+      0.058823,
+      "t"
+    ],
+    [
+      0.125344,
+      " "
+    ],
+    [
+      0.211464,
+      "f"
+    ],
+    [
+      0.086483,
+      "i"
+    ],
+    [
+      0.213685,
+      "l"
+    ],
+    [
+      0.096764,
+      "e"
+    ],
+    [
+      0.176075,
+      "s"
+    ],
+    [
+      0.122962,
+      " "
+    ],
+    [
+      0.174342,
+      "d"
+    ],
+    [
+      0.103474,
+      "i"
+    ],
+    [
+      0.089744,
+      "d"
+    ],
+    [
+      0.181539,
+      " "
+    ],
+    [
+      0.461771,
+      "n"
+    ],
+    [
+      0.219395,
+      "o"
+    ],
+    [
+      0.095042,
+      "t"
+    ],
+    [
+      0.119662,
+      " "
+    ],
+    [
+      0.156060,
+      "c"
+    ],
+    [
+      0.116988,
+      "h"
+    ],
+    [
+      0.118775,
+      "a"
+    ],
+    [
+      0.126173,
+      "n"
+    ],
+    [
+      0.118518,
+      "g"
+    ],
+    [
+      0.109977,
+      "e"
+    ],
+    [
+      0.167095,
+      " "
+    ],
+    [
+      0.208137,
+      "a"
+    ],
+    [
+      0.155464,
+      "n"
+    ],
+    [
+      0.074939,
+      "d"
+    ],
+    [
+      0.616534,
+      "\r\n"
+    ],
+    [
+      0.000405,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.836535,
+      "#"
+    ],
+    [
+      0.248630,
+      " "
+    ],
+    [
+      0.211525,
+      "d"
+    ],
+    [
+      0.171252,
+      "e"
+    ],
+    [
+      0.244098,
+      "d"
+    ],
+    [
+      0.121718,
+      "u"
+    ],
+    [
+      0.219002,
+      "p"
+    ],
+    [
+      0.197839,
+      "l"
+    ],
+    [
+      0.161081,
+      "i"
+    ],
+    [
+      0.112763,
+      "c"
+    ],
+    [
+      0.154565,
+      "a"
+    ],
+    [
+      0.230427,
+      "t"
+    ],
+    [
+      0.180004,
+      "e"
+    ],
+    [
+      0.182279,
+      "d"
+    ],
+    [
+      0.201281,
+      " "
+    ],
+    [
+      0.202485,
+      "t"
+    ],
+    [
+      0.078397,
+      "h"
+    ],
+    [
+      0.178577,
+      "e"
+    ],
+    [
+      0.150264,
+      "m"
+    ],
+    [
+      0.482274,
+      "."
+    ],
+    [
+      0.300000,
+      "\r\n"
+    ],
+    [
+      0.000265,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.287124,
+      "#"
+    ],
+    [
+      0.314208,
+      " "
+    ],
+    [
+      0.219731,
+      "n"
+    ],
+    [
+      0.176210,
+      "o"
+    ],
+    [
+      0.108529,
+      "w"
+    ],
+    [
+      0.224056,
+      ","
+    ],
+    [
+      0.210976,
+      " "
+    ],
+    [
+      0.190508,
+      "l"
+    ],
+    [
+      0.098452,
+      "e"
+    ],
+    [
+      0.101431,
+      "t"
+    ],
+    [
+      0.855722,
+      "'"
+    ],
+    [
+      0.220403,
+      "s"
+    ],
+    [
+      0.229447,
+      " "
+    ],
+    [
+      0.134839,
+      "e"
+    ],
+    [
+      0.241915,
+      "x"
+    ],
+    [
+      0.217004,
+      "t"
+    ],
+    [
+      0.183774,
+      "r"
+    ],
+    [
+      0.231721,
+      "a"
+    ],
+    [
+      0.221361,
+      "c"
+    ],
+    [
+      0.436221,
+      "t"
+    ],
+    [
+      0.097256,
+      " "
+    ],
+    [
+      0.163933,
+      "a"
+    ],
+    [
+      0.099964,
+      " "
+    ],
+    [
+      0.216806,
+      "b"
+    ],
+    [
+      0.086493,
+      "a"
+    ],
+    [
+      0.211732,
+      "c"
+    ],
+    [
+      0.139016,
+      "k"
+    ],
+    [
+      0.379423,
+      "u"
+    ],
+    [
+      0.250049,
+      "p"
+    ],
+    [
+      0.717916,
+      ":"
+    ],
+    [
+      0.307136,
+      "\r\n"
+    ],
+    [
+      0.000301,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.967533,
+      "m"
+    ],
+    [
+      0.103707,
+      "v"
+    ],
+    [
+      0.407957,
+      " "
+    ],
+    [
+      0.177312,
+      "d"
+    ],
+    [
+      0.166158,
+      "a"
+    ],
+    [
+      0.242593,
+      "t"
+    ],
+    [
+      0.090471,
+      "a"
+    ],
+    [
+      0.699594,
+      " "
+    ],
+    [
+      0.273219,
+      "d"
+    ],
+    [
+      0.170371,
+      "a"
+    ],
+    [
+      0.169331,
+      "t"
+    ],
+    [
+      0.126739,
+      "a"
+    ],
+    [
+      0.288488,
+      "."
+    ],
+    [
+      0.305856,
+      "o"
+    ],
+    [
+      0.135252,
+      "r"
+    ],
+    [
+      0.152717,
+      "i"
+    ],
+    [
+      0.090343,
+      "g"
+    ],
+    [
+      0.312536,
+      "\r\n"
+    ],
+    [
+      0.002579,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.944876,
+      "b"
+    ],
+    [
+      0.149049,
+      "o"
+    ],
+    [
+      0.114834,
+      "r"
+    ],
+    [
+      0.074682,
+      "g"
+    ],
+    [
+      0.129000,
+      " "
+    ],
+    [
+      0.129618,
+      "e"
+    ],
+    [
+      0.261479,
+      "x"
+    ],
+    [
+      0.203937,
+      "t"
+    ],
+    [
+      0.196213,
+      "r"
+    ],
+    [
+      0.193561,
+      "a"
+    ],
+    [
+      0.215314,
+      "c"
+    ],
+    [
+      0.236817,
+      "t"
+    ],
+    [
+      0.188232,
+      " "
+    ],
+    [
+      0.177286,
+      "r"
+    ],
+    [
+      0.200598,
+      "e"
+    ],
+    [
+      0.105866,
+      "p"
+    ],
+    [
+      0.173864,
+      "o"
+    ],
+    [
+      0.388954,
+      ":"
+    ],
+    [
+      0.144865,
+      ":"
+    ],
+    [
+      0.347420,
+      "b"
+    ],
+    [
+      0.105814,
+      "a"
+    ],
+    [
+      0.198728,
+      "c"
+    ],
+    [
+      0.096349,
+      "k"
+    ],
+    [
+      0.261559,
+      "u"
+    ],
+    [
+      0.241998,
+      "p"
+    ],
+    [
+      0.240033,
+      "2"
+    ],
+    [
+      0.981903,
+      "\r\n"
+    ],
+    [
+      2.000000,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.937291,
+      "#"
+    ],
+    [
+      0.994897,
+      " "
+    ],
+    [
+      0.151752,
+      "c"
+    ],
+    [
+      0.096956,
+      "h"
+    ],
+    [
+      0.337975,
+      "e"
+    ],
+    [
+      0.207037,
+      "c"
+    ],
+    [
+      0.177028,
+      "k"
+    ],
+    [
+      0.740370,
+      " "
+    ],
+    [
+      0.330206,
+      "i"
+    ],
+    [
+      0.177976,
+      "f"
+    ],
+    [
+      0.218757,
+      " "
+    ],
+    [
+      0.329345,
+      "o"
+    ],
+    [
+      0.098735,
+      "r"
+    ],
+    [
+      0.098576,
+      "i"
+    ],
+    [
+      0.103157,
+      "g"
+    ],
+    [
+      0.107275,
+      "i"
+    ],
+    [
+      0.117332,
+      "n"
+    ],
+    [
+      0.194072,
+      "a"
+    ],
+    [
+      0.211456,
+      "l"
+    ],
+    [
+      0.197712,
+      " "
+    ],
+    [
+      0.189172,
+      "d"
+    ],
+    [
+      0.163930,
+      "a"
+    ],
+    [
+      0.188334,
+      "t"
+    ],
+    [
+      0.165129,
+      "a"
+    ],
+    [
+      0.220652,
+      " "
+    ],
+    [
+      0.224411,
+      "a"
+    ],
+    [
+      0.136137,
+      "n"
+    ],
+    [
+      0.155260,
+      "d"
+    ],
+    [
+      0.074238,
+      " "
+    ],
+    [
+      0.104154,
+      "r"
+    ],
+    [
+      0.690499,
+      "e"
+    ],
+    [
+      0.193678,
+      "s"
+    ],
+    [
+      0.165163,
+      "t"
+    ],
+    [
+      0.165594,
+      "o"
+    ],
+    [
+      0.111779,
+      "r"
+    ],
+    [
+      0.135625,
+      "e"
+    ],
+    [
+      0.202851,
+      "d"
+    ],
+    [
+      0.096040,
+      " "
+    ],
+    [
+      0.165090,
+      "d"
+    ],
+    [
+      0.155594,
+      "a"
+    ],
+    [
+      0.220606,
+      "t"
+    ],
+    [
+      0.163143,
+      "a"
+    ],
+    [
+      0.174099,
+      " "
+    ],
+    [
+      0.209780,
+      "d"
+    ],
+    [
+      0.166062,
+      "i"
+    ],
+    [
+      0.084688,
+      "f"
+    ],
+    [
+      0.140851,
+      "f"
+    ],
+    [
+      0.204458,
+      "e"
+    ],
+    [
+      0.088661,
+      "r"
+    ],
+    [
+      0.334162,
+      "s"
+    ],
+    [
+      0.904233,
+      ":"
+    ],
+    [
+      0.590489,
+      "\r\n"
+    ],
+    [
+      0.000283,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.503183,
+      "d"
+    ],
+    [
+      0.082614,
+      "i"
+    ],
+    [
+      0.216272,
+      "f"
+    ],
+    [
+      0.123813,
+      "f"
+    ],
+    [
+      0.183603,
+      " "
+    ],
+    [
+      0.302144,
+      "-"
+    ],
+    [
+      0.150946,
+      "r"
+    ],
+    [
+      0.152436,
+      " "
+    ],
+    [
+      2.000000,
+      "d"
+    ],
+    [
+      0.196047,
+      "a"
+    ],
+    [
+      0.206372,
+      "t"
+    ],
+    [
+      0.146051,
+      "a"
+    ],
+    [
+      0.326306,
+      "."
+    ],
+    [
+      0.363408,
+      "o"
+    ],
+    [
+      0.269988,
+      "rig/"
+    ],
+    [
+      0.776581,
+      " "
+    ],
+    [
+      0.137720,
+      "d"
+    ],
+    [
+      0.156080,
+      "a"
+    ],
+    [
+      0.242275,
+      "\u0007"
+    ],
+    [
+      0.000020,
+      "ta"
+    ],
+    [
+      0.872887,
+      "/"
+    ],
+    [
+      0.273993,
+      "\r\n"
+    ],
+    [
+      2.000000,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.488581,
+      "#"
+    ],
+    [
+      0.234021,
+      " "
+    ],
+    [
+      0.380938,
+      "n"
+    ],
+    [
+      0.240685,
+      "o"
+    ],
+    [
+      0.204436,
+      " "
+    ],
+    [
+      0.390794,
+      "o"
+    ],
+    [
+      0.225563,
+      "u"
+    ],
+    [
+      0.167295,
+      "t"
+    ],
+    [
+      0.140625,
+      "p"
+    ],
+    [
+      0.183668,
+      "u"
+    ],
+    [
+      0.106161,
+      "t"
+    ],
+    [
+      0.132063,
+      " "
+    ],
+    [
+      0.204757,
+      "m"
+    ],
+    [
+      0.082693,
+      "e"
+    ],
+    [
+      0.216428,
+      "a"
+    ],
+    [
+      0.121584,
+      "n"
+    ],
+    [
+      0.127398,
+      "s"
+    ],
+    [
+      0.264644,
+      " "
+    ],
+    [
+      0.201524,
+      "i"
+    ],
+    [
+      0.110738,
+      "t"
+    ],
+    [
+      0.120653,
+      " "
+    ],
+    [
+      0.311187,
+      "d"
+    ],
+    [
+      0.119826,
+      "o"
+    ],
+    [
+      0.082654,
+      "e"
+    ],
+    [
+      0.182518,
+      "s"
+    ],
+    [
+      0.096372,
+      " "
+    ],
+    [
+      0.192821,
+      "n"
+    ],
+    [
+      0.193829,
+      "o"
+    ],
+    [
+      0.065739,
+      "t"
+    ],
+    [
+      0.678808,
+      "."
+    ],
+    [
+      0.246797,
+      " "
+    ],
+    [
+      0.520369,
+      "f"
+    ],
+    [
+      0.058288,
+      "i"
+    ],
+    [
+      0.064783,
+      "n"
+    ],
+    [
+      0.104851,
+      "e"
+    ],
+    [
+      0.292910,
+      "."
+    ],
+    [
+      0.174086,
+      " "
+    ],
+    [
+      0.226556,
+      ":"
+    ],
+    [
+      0.249808,
+      ")"
+    ],
+    [
+      2.000000,
+      "\r\n"
+    ],
+    [
+      0.000261,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.477759,
+      "#"
+    ],
+    [
+      0.223699,
+      " "
+    ],
+    [
+      0.237979,
+      "l"
+    ],
+    [
+      0.152769,
+      "i"
+    ],
+    [
+      0.135150,
+      "s"
+    ],
+    [
+      0.068576,
+      "t"
+    ],
+    [
+      0.100516,
+      "i"
+    ],
+    [
+      0.078648,
+      "n"
+    ],
+    [
+      0.099435,
+      "g"
+    ],
+    [
+      0.157388,
+      " "
+    ],
+    [
+      0.115327,
+      "t"
+    ],
+    [
+      0.133738,
+      "h"
+    ],
+    [
+      0.135662,
+      "e"
+    ],
+    [
+      0.100677,
+      " "
+    ],
+    [
+      0.180392,
+      "r"
+    ],
+    [
+      0.190922,
+      "e"
+    ],
+    [
+      0.093920,
+      "p"
+    ],
+    [
+      0.173588,
+      "o"
+    ],
+    [
+      0.193023,
+      " "
+    ],
+    [
+      0.206907,
+      "c"
+    ],
+    [
+      0.106376,
+      "o"
+    ],
+    [
+      0.175291,
+      "n"
+    ],
+    [
+      0.080726,
+      "t"
+    ],
+    [
+      0.179258,
+      "e"
+    ],
+    [
+      0.101491,
+      "n"
+    ],
+    [
+      0.096807,
+      "t"
+    ],
+    [
+      0.211455,
+      "s"
+    ],
+    [
+      0.508210,
+      ":"
+    ],
+    [
+      0.373837,
+      "\r\n"
+    ],
+    [
+      0.000249,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.559782,
+      "b"
+    ],
+    [
+      0.116587,
+      "o"
+    ],
+    [
+      0.139513,
+      "r"
+    ],
+    [
+      0.072751,
+      "g"
+    ],
+    [
+      0.103968,
+      " "
+    ],
+    [
+      0.984928,
+      "l"
+    ],
+    [
+      0.173603,
+      "i"
+    ],
+    [
+      0.112444,
+      "s"
+    ],
+    [
+      0.066704,
+      "t"
+    ],
+    [
+      0.114771,
+      " "
+    ],
+    [
+      0.263745,
+      "r"
+    ],
+    [
+      0.113121,
+      "e"
+    ],
+    [
+      0.126283,
+      "p"
+    ],
+    [
+      0.187453,
+      "o"
+    ],
+    [
+      0.409044,
+      "\r\n"
+    ],
+    [
+      0.360675,
+      "backup1                              Sat Oct 24 22:27:43 2015"
+    ],
+    [
+      0.000011,
+      "\r\n"
+    ],
+    [
+      0.000006,
+      "backup2                              Sat Oct 24 22:28:27 2015"
+    ],
+    [
+      0.000005,
+      "\r\n"
+    ],
+    [
+      0.027766,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.637813,
+      "#"
+    ],
+    [
+      0.257629,
+      " "
+    ],
+    [
+      0.231710,
+      "l"
+    ],
+    [
+      0.213387,
+      "i"
+    ],
+    [
+      0.132149,
+      "s"
+    ],
+    [
+      0.244957,
+      "t"
+    ],
+    [
+      0.180264,
+      "i"
+    ],
+    [
+      0.082882,
+      "n"
+    ],
+    [
+      0.142810,
+      "g"
+    ],
+    [
+      0.134815,
+      " "
+    ],
+    [
+      0.167455,
+      "s"
+    ],
+    [
+      0.114155,
+      "o"
+    ],
+    [
+      0.106847,
+      "m"
+    ],
+    [
+      0.070629,
+      "e"
+    ],
+    [
+      0.507340,
+      " "
+    ],
+    [
+      0.234237,
+      "b"
+    ],
+    [
+      0.070181,
+      "a"
+    ],
+    [
+      0.220534,
+      "c"
+    ],
+    [
+      0.092316,
+      "k"
+    ],
+    [
+      0.257003,
+      "u"
+    ],
+    [
+      0.233598,
+      "p"
+    ],
+    [
+      0.201484,
+      " "
+    ],
+    [
+      0.124810,
+      "a"
+    ],
+    [
+      0.084732,
+      "r"
+    ],
+    [
+      0.249719,
+      "c"
+    ],
+    [
+      0.119605,
+      "h"
+    ],
+    [
+      0.203875,
+      "i"
+    ],
+    [
+      0.076269,
+      "v"
+    ],
+    [
+      0.174299,
+      "e"
+    ],
+    [
+      0.109711,
+      " "
+    ],
+    [
+      0.238294,
+      "c"
+    ],
+    [
+      0.102351,
+      "o"
+    ],
+    [
+      0.155761,
+      "n"
+    ],
+    [
+      0.060278,
+      "t"
+    ],
+    [
+      0.179564,
+      "e"
+    ],
+    [
+      0.112342,
+      "n"
+    ],
+    [
+      0.078100,
+      "t"
+    ],
+    [
+      0.190203,
+      "s"
+    ],
+    [
+      0.865560,
+      " "
+    ],
+    [
+      0.297799,
+      "("
+    ],
+    [
+      0.225741,
+      "s"
+    ],
+    [
+      0.080329,
+      "h"
+    ],
+    [
+      0.233668,
+      "o"
+    ],
+    [
+      0.127773,
+      "r"
+    ],
+    [
+      0.190065,
+      "t"
+    ],
+    [
+      0.187679,
+      "e"
+    ],
+    [
+      0.147219,
+      "n"
+    ],
+    [
+      0.064472,
+      "e"
+    ],
+    [
+      0.188512,
+      "d"
+    ],
+    [
+      0.459222,
+      ")"
+    ],
+    [
+      0.723165,
+      ":"
+    ],
+    [
+      0.645995,
+      "\r\n"
+    ],
+    [
+      0.000096,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.446688,
+      "b"
+    ],
+    [
+      0.145841,
+      "o"
+    ],
+    [
+      0.105605,
+      "r"
+    ],
+    [
+      0.088953,
+      "g"
+    ],
+    [
+      0.120803,
+      " "
+    ],
+    [
+      0.227780,
+      "l"
+    ],
+    [
+      0.175052,
+      "i"
+    ],
+    [
+      0.106579,
+      "s"
+    ],
+    [
+      0.058441,
+      "t"
+    ],
+    [
+      0.093196,
+      " "
+    ],
+    [
+      0.172940,
+      "r"
+    ],
+    [
+      0.134731,
+      "e"
+    ],
+    [
+      0.119062,
+      "p"
+    ],
+    [
+      0.183075,
+      "o"
+    ],
+    [
+      0.388321,
+      ":"
+    ],
+    [
+      0.140589,
+      ":"
+    ],
+    [
+      0.324109,
+      "b"
+    ],
+    [
+      0.058606,
+      "a"
+    ],
+    [
+      0.205450,
+      "c"
+    ],
+    [
+      0.105362,
+      "k"
+    ],
+    [
+      0.235009,
+      "u"
+    ],
+    [
+      0.243485,
+      "p"
+    ],
+    [
+      0.485432,
+      "2"
+    ],
+    [
+      0.148177,
+      " "
+    ],
+    [
+      0.632383,
+      "|"
+    ],
+    [
+      0.389914,
+      " "
+    ],
+    [
+      0.174128,
+      "t"
+    ],
+    [
+      0.201473,
+      "a"
+    ],
+    [
+      0.116517,
+      "i"
+    ],
+    [
+      0.225072,
+      "l"
+    ],
+    [
+      0.699624,
+      "\r\n"
+    ],
+    [
+      2.000000,
+      "-rw-rw-r-- tw     tw         5516 Jul 21 19:10 data/linux-4.1.8/virt/kvm/async_pf.c\r\n"
+    ],
+    [
+      0.000019,
+      "-rw-rw-r-- tw     tw         1120 Jul 21 19:10 data/linux-4.1.8/virt/kvm/async_pf.h\r\n-rw-rw-r-- tw     tw         4215 Jul 21 19:10 data/linux-4.1.8/virt/kvm/coalesced_mmio.c\r\n-rw-rw-r-- tw     tw          915 Jul 21 19:10 data/linux-4.1.8/virt/kvm/coalesced_mmio.h\r\n-rw-rw-r-- tw     tw        22879 Jul 21 19:10 data/linux-4.1.8/virt/kvm/eventfd.c\r\n-rw-rw-r-- tw     tw         5563 Jul 21 19:10 data/linux-4.1.8/virt/kvm/irqchip.c\r\n-rw-rw-r-- tw     tw        79385 Jul 21 19:10 data/linux-4.1.8/virt/kvm/kvm_main.c\r\n"
+    ],
+    [
+      0.000011,
+      "-rw-rw-r-- tw     tw         6132 Jul 21 19:10 data/linux-4.1.8/virt/kvm/vfio.c\r\n-rw-rw-r-- tw     tw          250 Jul 21 19:10 data/linux-4.1.8/virt/kvm/vfio.h\r\n"
+    ],
+    [
+      0.000009,
+      "-rw-rw-r-- tw     tw           15 Oct 24 22:28 data/one_file_more\r\n"
+    ],
+    [
+      0.000389,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      1.000000,
+      "#"
+    ],
+    [
+      0.337351,
+      " "
+    ],
+    [
+      0.147170,
+      "e"
+    ],
+    [
+      0.235736,
+      "a"
+    ],
+    [
+      0.251314,
+      "s"
+    ],
+    [
+      0.471185,
+      "y"
+    ],
+    [
+      0.277723,
+      ","
+    ],
+    [
+      0.204225,
+      " "
+    ],
+    [
+      0.182231,
+      "i"
+    ],
+    [
+      0.174424,
+      "s"
+    ],
+    [
+      0.074677,
+      "n"
+    ],
+    [
+      0.786274,
+      "'"
+    ],
+    [
+      0.264836,
+      "t"
+    ],
+    [
+      0.330352,
+      " "
+    ],
+    [
+      0.266876,
+      "i"
+    ],
+    [
+      0.112564,
+      "t"
+    ],
+    [
+      0.897299,
+      "?"
+    ],
+    [
+      0.623501,
+      " "
+    ],
+    [
+      0.656625,
+      "t"
+    ],
+    [
+      0.115934,
+      "h"
+    ],
+    [
+      0.625213,
+      "a"
+    ],
+    [
+      0.588409,
+      "t"
+    ],
+    [
+      0.160071,
+      " "
+    ],
+    [
+      0.830693,
+      "i"
+    ],
+    [
+      0.163118,
+      "s"
+    ],
+    [
+      0.075663,
+      " "
+    ],
+    [
+      0.186138,
+      "a"
+    ],
+    [
+      0.109916,
+      "l"
+    ],
+    [
+      0.137005,
+      "l"
+    ],
+    [
+      0.171009,
+      " "
+    ],
+    [
+      0.153348,
+      "y"
+    ],
+    [
+      0.132919,
+      "o"
+    ],
+    [
+      0.568100,
+      "u"
+    ],
+    [
+      0.211350,
+      " "
+    ],
+    [
+      0.195450,
+      "n"
+    ],
+    [
+      0.257974,
+      "e"
+    ],
+    [
+      0.185529,
+      "e"
+    ],
+    [
+      0.265130,
+      "d"
+    ],
+    [
+      0.129116,
+      " "
+    ],
+    [
+      0.169264,
+      "t"
+    ],
+    [
+      0.148964,
+      "o"
+    ],
+    [
+      0.437043,
+      " "
+    ],
+    [
+      0.431197,
+      "k"
+    ],
+    [
+      0.219557,
+      "n"
+    ],
+    [
+      0.257996,
+      "o"
+    ],
+    [
+      0.158826,
+      "w"
+    ],
+    [
+      0.406870,
+      " "
+    ],
+    [
+      0.659664,
+      "f"
+    ],
+    [
+      0.130963,
+      "o"
+    ],
+    [
+      0.125395,
+      "r"
+    ],
+    [
+      0.613713,
+      " "
+    ],
+    [
+      0.646957,
+      "b"
+    ],
+    [
+      0.154695,
+      "a"
+    ],
+    [
+      0.259741,
+      "s"
+    ],
+    [
+      0.156692,
+      "i"
+    ],
+    [
+      0.124345,
+      "c"
+    ],
+    [
+      0.513209,
+      "\r\n"
+    ],
+    [
+      0.000296,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.965828,
+      "#"
+    ],
+    [
+      0.232285,
+      " "
+    ],
+    [
+      0.266818,
+      "u"
+    ],
+    [
+      0.132723,
+      "s"
+    ],
+    [
+      0.216208,
+      "a"
+    ],
+    [
+      0.206362,
+      "g"
+    ],
+    [
+      0.142608,
+      "e"
+    ],
+    [
+      2.000000,
+      "."
+    ],
+    [
+      0.238868,
+      " "
+    ],
+    [
+      0.302986,
+      "i"
+    ],
+    [
+      0.196338,
+      "f"
+    ],
+    [
+      0.092936,
+      " "
+    ],
+    [
+      0.197594,
+      "y"
+    ],
+    [
+      0.122297,
+      "o"
+    ],
+    [
+      0.175360,
+      "u"
+    ],
+    [
+      0.145063,
+      " "
+    ],
+    [
+      0.313719,
+      "l"
+    ],
+    [
+      0.169678,
+      "i"
+    ],
+    [
+      0.185628,
+      "k"
+    ],
+    [
+      0.120660,
+      "e"
+    ],
+    [
+      0.078389,
+      " "
+    ],
+    [
+      0.648628,
+      "#"
+    ],
+    [
+      0.337514,
+      "b"
+    ],
+    [
+      0.108598,
+      "o"
+    ],
+    [
+      0.123792,
+      "r"
+    ],
+    [
+      0.136099,
+      "g"
+    ],
+    [
+      0.235539,
+      "b"
+    ],
+    [
+      0.091671,
+      "a"
+    ],
+    [
+      0.208697,
+      "c"
+    ],
+    [
+      0.100567,
+      "k"
+    ],
+    [
+      0.227477,
+      "u"
+    ],
+    [
+      0.236900,
+      "p"
+    ],
+    [
+      0.302154,
+      ","
+    ],
+    [
+      0.207291,
+      " "
+    ],
+    [
+      0.205656,
+      "s"
+    ],
+    [
+      0.123737,
+      "p"
+    ],
+    [
+      0.142016,
+      "r"
+    ],
+    [
+      0.197260,
+      "e"
+    ],
+    [
+      0.197471,
+      "a"
+    ],
+    [
+      0.104498,
+      "d"
+    ],
+    [
+      0.163267,
+      " "
+    ],
+    [
+      0.178420,
+      "t"
+    ],
+    [
+      0.091669,
+      "h"
+    ],
+    [
+      0.107735,
+      "e"
+    ],
+    [
+      0.102742,
+      " "
+    ],
+    [
+      0.211413,
+      "w"
+    ],
+    [
+      0.124959,
+      "o"
+    ],
+    [
+      0.105787,
+      "r"
+    ],
+    [
+      0.231403,
+      "d"
+    ],
+    [
+      0.299061,
+      "!"
+    ],
+    [
+      2.000000,
+      "\r\n"
+    ],
+    [
+      0.000307,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.304768,
+      "#"
+    ],
+    [
+      0.229433,
+      " "
+    ],
+    [
+      0.647220,
+      "t"
+    ],
+    [
+      0.070692,
+      "h"
+    ],
+    [
+      0.349432,
+      "a"
+    ],
+    [
+      0.112924,
+      "n"
+    ],
+    [
+      0.207031,
+      "k"
+    ],
+    [
+      0.567641,
+      "s"
+    ],
+    [
+      0.121708,
+      " "
+    ],
+    [
+      0.135723,
+      "f"
+    ],
+    [
+      0.139102,
+      "o"
+    ],
+    [
+      0.060453,
+      "r"
+    ],
+    [
+      0.152408,
+      " "
+    ],
+    [
+      0.116234,
+      "v"
+    ],
+    [
+      0.142885,
+      "i"
+    ],
+    [
+      0.106596,
+      "e"
+    ],
+    [
+      0.231115,
+      "w"
+    ],
+    [
+      0.416046,
+      "i"
+    ],
+    [
+      0.086563,
+      "n"
+    ],
+    [
+      0.144009,
+      "g"
+    ],
+    [
+      0.725139,
+      "!"
+    ],
+    [
+      0.299810,
+      "\r\n"
+    ],
+    [
+      0.000250,
+      "\u001b]0;tw@tux: ~/borg/demo\u0007tw@tux:~/borg/demo$ "
+    ],
+    [
+      0.710767,
+      "exit"
+    ],
+    [
+      0.000006,
+      "\r\n"
+    ]
+  ]
+}
diff --git a/docs/misc/asciinema/install_and_basics.txt b/docs/misc/asciinema/install_and_basics.txt
new file mode 100644
index 00000000..135db170
--- /dev/null
+++ b/docs/misc/asciinema/install_and_basics.txt
@@ -0,0 +1,51 @@
+# borgbackup - installation and basic usage
+
+# I have already downloaded the binary release from github:
+ls -l
+# binary file + GPG signature
+
+# verifying whether the binary is valid:
+gpg --verify borg-linux64.asc borg-linux64
+
+# install it as "borg":
+cp borg-linux64 ~/bin/borg
+
+# making it executable:
+chmod +x ~/bin/borg
+
+# yay, installation done! let's make backups!
+
+# creating a repository:
+borg init repo
+
+# creating our first backup with stuff from "data" directory:
+borg create --stats --progress --compression lz4 repo::backup1 data
+
+# changing the data slightly:
+echo "some more data" > data/one_file_more
+
+# creating another backup:
+borg create --stats --progress repo::backup2 data
+
+# that was much faster! it recognized/deduplicated unchanged files.
+# see the "Deduplicated size" column for "This archive"! :)
+
+# extracting a backup archive:
+mv data data.orig
+borg extract repo::backup2
+
+# checking if restored data differs from original data:
+diff -r data.orig data
+
+# no, it doesn't! :)
+
+# listing the repo contents:
+borg list repo
+
+# listing the backup2 archive contents (shortened):
+borg list repo::backup2 | tail
+
+# easy, isn't it?
+
+# if you like #borgbackup, spread the word!
+
diff --git a/src/borg/archiver.py b/src/borg/archiver.py
index 80fd7887..7a535cef 100644
--- a/src/borg/archiver.py
+++ b/src/borg/archiver.py
@@ -45,14 +45,14 @@
 from .helpers import EXIT_SUCCESS, EXIT_WARNING, EXIT_ERROR
 from .helpers import Error, NoManifestError, set_ec
 from .helpers import positive_int_validator, location_validator, archivename_validator, ChunkerParams
-from .helpers import PrefixSpec, SortBySpec
+from .helpers import PrefixSpec, SortBySpec, HUMAN_SORT_KEYS
 from .helpers import BaseFormatter, ItemFormatter, ArchiveFormatter
 from .helpers import format_timedelta, format_file_size, parse_file_size, format_archive
 from .helpers import safe_encode, remove_surrogates, bin_to_hex, prepare_dump_dict
 from .helpers import interval, prune_within, prune_split
 from .helpers import timestamp
 from .helpers import get_cache_dir
-from .helpers import Manifest, AI_HUMAN_SORT_KEYS
+from .helpers import Manifest
 from .helpers import hardlinkable
 from .helpers import StableDict
 from .helpers import check_python, check_extension_modules
@@ -2400,7 +2400,7 @@ def define_archive_filters_group(subparser, *, sort_by=True, first_last=True):
                 filters_group.add_argument('--sort-by', metavar='KEYS', dest='sort_by',
                                            type=SortBySpec, default=sort_by_default,
                                            help='Comma-separated list of sorting keys; valid keys are: {}; default is: {}'
-                                           .format(', '.join(AI_HUMAN_SORT_KEYS), sort_by_default))
+                                           .format(', '.join(HUMAN_SORT_KEYS), sort_by_default))
 
             if first_last:
                 group = filters_group.add_mutually_exclusive_group()
diff --git a/src/borg/fuse.py b/src/borg/fuse.py
index 129e3b20..7868eb37 100644
--- a/src/borg/fuse.py
+++ b/src/borg/fuse.py
@@ -22,7 +22,6 @@
 from .helpers import daemonize, hardlinkable, signal_handler, format_file_size
 from .item import Item
 from .lrucache import LRUCache
-from .remote import RemoteRepository
 
 # Does this version of llfuse support ns precision?
 have_fuse_xtime_ns = hasattr(llfuse.EntryAttributes, 'st_mtime_ns')
@@ -286,10 +285,7 @@ def mount(self, mountpoint, mount_options, foreground=False):
         self._create_filesystem()
         llfuse.init(self, mountpoint, options)
         if not foreground:
-            old_id, new_id = daemonize()
-            if not isinstance(self.repository_uncached, RemoteRepository):
-                # local repo and the locking process' PID just changed, migrate it:
-                self.repository_uncached.migrate_lock(old_id, new_id)
+            daemonize()
 
         # If the file system crashes, we do not want to umount because in that
         # case the mountpoint suddenly appears to become empty. This can have
diff --git a/src/borg/helpers.py b/src/borg/helpers.py
new file mode 100644
index 00000000..d5a803db
--- /dev/null
+++ b/src/borg/helpers.py
@@ -0,0 +1,2224 @@
+import argparse
+import contextlib
+import collections
+import enum
+import grp
+import hashlib
+import logging
+import io
+import json
+import os
+import os.path
+import platform
+import pwd
+import re
+import shlex
+import signal
+import socket
+import stat
+import subprocess
+import sys
+import textwrap
+import threading
+import time
+import uuid
+from binascii import hexlify
+from collections import namedtuple, deque, abc, Counter
+from datetime import datetime, timezone, timedelta
+from functools import partial, lru_cache
+from itertools import islice
+from operator import attrgetter
+from string import Formatter
+from shutil import get_terminal_size
+
+import msgpack
+import msgpack.fallback
+
+from .logger import create_logger
+logger = create_logger()
+
+import borg.crypto.low_level
+from . import __version__ as borg_version
+from . import __version_tuple__ as borg_version_tuple
+from . import chunker
+from . import hashindex
+from . import shellpattern
+from .constants import *  # NOQA
+
+
+'''
+The global exit_code variable is used so that modules other than archiver can increase the program exit code if a
+warning or error occurred during their operation. This is different from archiver.exit_code, which is only accessible
+from the archiver object.
+'''
+exit_code = EXIT_SUCCESS
+
+
+def set_ec(ec):
+    '''
+    Sets the exit code of the program, if an exit code higher or equal than this is set, this does nothing. This
+    makes EXIT_ERROR override EXIT_WARNING, etc..
+
+    ec: exit code to set
+    '''
+    global exit_code
+    exit_code = max(exit_code, ec)
+    return exit_code
+
+
+class Error(Exception):
+    """Error base class"""
+
+    # if we raise such an Error and it is only catched by the uppermost
+    # exception handler (that exits short after with the given exit_code),
+    # it is always a (fatal and abrupt) EXIT_ERROR, never just a warning.
+    exit_code = EXIT_ERROR
+    # show a traceback?
+    traceback = False
+
+    def __init__(self, *args):
+        super().__init__(*args)
+        self.args = args
+
+    def get_message(self):
+        return type(self).__doc__.format(*self.args)
+
+    __str__ = get_message
+
+
+class ErrorWithTraceback(Error):
+    """like Error, but show a traceback also"""
+    traceback = True
+
+
+class IntegrityError(ErrorWithTraceback, borg.crypto.low_level.IntegrityError):
+    """Data integrity error: {}"""
+
+
+class DecompressionError(IntegrityError):
+    """Decompression error: {}"""
+
+
+class ExtensionModuleError(Error):
+    """The Borg binary extension modules do not seem to be properly installed"""
+
+
+class NoManifestError(Error):
+    """Repository has no manifest."""
+
+
+class PlaceholderError(Error):
+    """Formatting Error: "{}".format({}): {}({})"""
+
+
+class InvalidPlaceholder(PlaceholderError):
+    """Invalid placeholder "{}" in string: {}"""
+
+
+class PythonLibcTooOld(Error):
+    """FATAL: this Python was compiled for a too old (g)libc and misses required functionality."""
+
+
+def check_python():
+    required_funcs = {os.stat, os.utime, os.chown}
+    if not os.supports_follow_symlinks.issuperset(required_funcs):
+        raise PythonLibcTooOld
+
+
+class MandatoryFeatureUnsupported(Error):
+    """Unsupported repository feature(s) {}. A newer version of borg is required to access this repository."""
+
+
+def check_extension_modules():
+    from . import platform, compress, item
+    if hashindex.API_VERSION != '1.1_07':
+        raise ExtensionModuleError
+    if chunker.API_VERSION != '1.1_01':
+        raise ExtensionModuleError
+    if compress.API_VERSION != '1.1_03':
+        raise ExtensionModuleError
+    if borg.crypto.low_level.API_VERSION != '1.1_02':
+        raise ExtensionModuleError
+    if platform.API_VERSION != platform.OS_API_VERSION != '1.1_01':
+        raise ExtensionModuleError
+    if item.API_VERSION != '1.1_03':
+        raise ExtensionModuleError
+
+
+def get_limited_unpacker(kind):
+    """return a limited Unpacker because we should not trust msgpack data received from remote"""
+    args = dict(use_list=False,  # return tuples, not lists
+                max_bin_len=0,  # not used
+                max_ext_len=0,  # not used
+                max_buffer_size=3 * max(BUFSIZE, MAX_OBJECT_SIZE),
+                max_str_len=MAX_OBJECT_SIZE,  # a chunk or other repo object
+                )
+    if kind == 'server':
+        args.update(dict(max_array_len=100,  # misc. cmd tuples
+                         max_map_len=100,  # misc. cmd dicts
+                         ))
+    elif kind == 'client':
+        args.update(dict(max_array_len=LIST_SCAN_LIMIT,  # result list from repo.list() / .scan()
+                         max_map_len=100,  # misc. result dicts
+                         ))
+    elif kind == 'manifest':
+        args.update(dict(use_list=True,  # default value
+                         max_array_len=100,  # ITEM_KEYS ~= 22
+                         max_map_len=MAX_ARCHIVES,  # list of archives
+                         max_str_len=255,  # archive name
+                         object_hook=StableDict,
+                         unicode_errors='surrogateescape',
+                         ))
+    elif kind == 'key':
+        args.update(dict(use_list=True,  # default value
+                         max_array_len=0,  # not used
+                         max_map_len=10,  # EncryptedKey dict
+                         max_str_len=4000,  # inner key data
+                         object_hook=StableDict,
+                         unicode_errors='surrogateescape',
+                         ))
+    else:
+        raise ValueError('kind must be "server", "client", "manifest" or "key"')
+    return msgpack.Unpacker(**args)
+
+
+ArchiveInfo = namedtuple('ArchiveInfo', 'name id ts')
+
+
+class Archives(abc.MutableMapping):
+    """
+    Nice wrapper around the archives dict, making sure only valid types/values get in
+    and we can deal with str keys (and it internally encodes to byte keys) and either
+    str timestamps or datetime timestamps.
+    """
+    def __init__(self):
+        # key: encoded archive name, value: dict(b'id': bytes_id, b'time': bytes_iso_ts)
+        self._archives = {}
+
+    def __len__(self):
+        return len(self._archives)
+
+    def __iter__(self):
+        return iter(safe_decode(name) for name in self._archives)
+
+    def __getitem__(self, name):
+        assert isinstance(name, str)
+        _name = safe_encode(name)
+        values = self._archives.get(_name)
+        if values is None:
+            raise KeyError
+        ts = parse_timestamp(values[b'time'].decode('utf-8'))
+        return ArchiveInfo(name=name, id=values[b'id'], ts=ts)
+
+    def __setitem__(self, name, info):
+        assert isinstance(name, str)
+        name = safe_encode(name)
+        assert isinstance(info, tuple)
+        id, ts = info
+        assert isinstance(id, bytes)
+        if isinstance(ts, datetime):
+            ts = ts.replace(tzinfo=None).isoformat()
+        assert isinstance(ts, str)
+        ts = ts.encode()
+        self._archives[name] = {b'id': id, b'time': ts}
+
+    def __delitem__(self, name):
+        assert isinstance(name, str)
+        name = safe_encode(name)
+        del self._archives[name]
+
+    def list(self, *, glob=None, match_end=r'\Z', sort_by=(), first=None, last=None, reverse=False):
+        """
+        Return list of ArchiveInfo instances according to the parameters.
+
+        First match *glob* (considering *match_end*), then *sort_by*.
+        Apply *first* and *last* filters, and then possibly *reverse* the list.
+
+        *sort_by* is a list of sort keys applied in reverse order.
+        """
+        if isinstance(sort_by, (str, bytes)):
+            raise TypeError('sort_by must be a sequence of str')
+        regex = re.compile(shellpattern.translate(glob or '*', match_end=match_end))
+        archives = [x for x in self.values() if regex.match(x.name) is not None]
+        for sortkey in reversed(sort_by):
+            archives.sort(key=attrgetter(sortkey))
+        if first:
+            archives = archives[:first]
+        elif last:
+            archives = archives[max(len(archives) - last, 0):]
+        if reverse:
+            archives.reverse()
+        return archives
+
+    def list_considering(self, args):
+        """
+        get a list of archives, considering --first/last/prefix/glob-archives/sort cmdline args
+        """
+        if args.location.archive:
+            raise Error('The options --first, --last, --prefix and --glob-archives can only be used on repository targets.')
+        if args.prefix:
+            args.glob_archives = args.prefix + '*'
+        return self.list(sort_by=args.sort_by.split(','), glob=args.glob_archives, first=args.first, last=args.last)
+
+    def set_raw_dict(self, d):
+        """set the dict we get from the msgpack unpacker"""
+        for k, v in d.items():
+            assert isinstance(k, bytes)
+            assert isinstance(v, dict) and b'id' in v and b'time' in v
+            self._archives[k] = v
+
+    def get_raw_dict(self):
+        """get the dict we can give to the msgpack packer"""
+        return self._archives
+
+
+class Manifest:
+
+    @enum.unique
+    class Operation(enum.Enum):
+        # The comments here only roughly describe the scope of each feature. In the end, additions need to be
+        # based on potential problems older clients could produce when accessing newer repositories and the
+        # tradeofs of locking version out or still allowing access. As all older versions and their exact
+        # behaviours are known when introducing new features sometimes this might not match the general descriptions
+        # below.
+
+        # The READ operation describes which features are needed to safely list and extract the archives in the
+        # repository.
+        READ = 'read'
+        # The CHECK operation is for all operations that need either to understand every detail
+        # of the repository (for consistency checks and repairs) or are seldom used functions that just
+        # should use the most restrictive feature set because more fine grained compatibility tracking is
+        # not needed.
+        CHECK = 'check'
+        # The WRITE operation is for adding archives. Features here ensure that older clients don't add archives
+        # in an old format, or is used to lock out clients that for other reasons can no longer safely add new
+        # archives.
+        WRITE = 'write'
+        # The DELETE operation is for all operations (like archive deletion) that need a 100% correct reference
+        # count and the need to be able to find all (directly and indirectly) referenced chunks of a given archive.
+        DELETE = 'delete'
+
+    NO_OPERATION_CHECK = tuple()
+
+    SUPPORTED_REPO_FEATURES = frozenset([])
+
+    MANIFEST_ID = b'\0' * 32
+
+    def __init__(self, key, repository, item_keys=None):
+        self.archives = Archives()
+        self.config = {}
+        self.key = key
+        self.repository = repository
+        self.item_keys = frozenset(item_keys) if item_keys is not None else ITEM_KEYS
+        self.tam_verified = False
+        self.timestamp = None
+
+    @property
+    def id_str(self):
+        return bin_to_hex(self.id)
+
+    @property
+    def last_timestamp(self):
+        return datetime.strptime(self.timestamp, "%Y-%m-%dT%H:%M:%S.%f")
+
+    @classmethod
+    def load(cls, repository, operations, key=None, force_tam_not_required=False):
+        from .item import ManifestItem
+        from .crypto.key import key_factory, tam_required_file, tam_required
+        from .repository import Repository
+        try:
+            cdata = repository.get(cls.MANIFEST_ID)
+        except Repository.ObjectNotFound:
+            raise NoManifestError
+        if not key:
+            key = key_factory(repository, cdata)
+        manifest = cls(key, repository)
+        data = key.decrypt(None, cdata)
+        manifest_dict, manifest.tam_verified = key.unpack_and_verify_manifest(data, force_tam_not_required=force_tam_not_required)
+        m = ManifestItem(internal_dict=manifest_dict)
+        manifest.id = key.id_hash(data)
+        if m.get('version') not in (1, 2):
+            raise ValueError('Invalid manifest version')
+        manifest.archives.set_raw_dict(m.archives)
+        manifest.timestamp = m.get('timestamp')
+        manifest.config = m.config
+        # valid item keys are whatever is known in the repo or every key we know
+        manifest.item_keys = ITEM_KEYS | frozenset(key.decode() for key in m.get('item_keys', []))
+
+        if manifest.tam_verified:
+            manifest_required = manifest.config.get(b'tam_required', False)
+            security_required = tam_required(repository)
+            if manifest_required and not security_required:
+                logger.debug('Manifest is TAM verified and says TAM is required, updating security database...')
+                file = tam_required_file(repository)
+                open(file, 'w').close()
+            if not manifest_required and security_required:
+                logger.debug('Manifest is TAM verified and says TAM is *not* required, updating security database...')
+                os.unlink(tam_required_file(repository))
+        manifest.check_repository_compatibility(operations)
+        return manifest, key
+
+    def check_repository_compatibility(self, operations):
+        for operation in operations:
+            assert isinstance(operation, self.Operation)
+            feature_flags = self.config.get(b'feature_flags', None)
+            if feature_flags is None:
+                return
+            if operation.value.encode() not in feature_flags:
+                continue
+            requirements = feature_flags[operation.value.encode()]
+            if b'mandatory' in requirements:
+                unsupported = set(requirements[b'mandatory']) - self.SUPPORTED_REPO_FEATURES
+                if unsupported:
+                    raise MandatoryFeatureUnsupported([f.decode() for f in unsupported])
+
+    def get_all_mandatory_features(self):
+        result = {}
+        feature_flags = self.config.get(b'feature_flags', None)
+        if feature_flags is None:
+            return result
+
+        for operation, requirements in feature_flags.items():
+            if b'mandatory' in requirements:
+                result[operation.decode()] = set([feature.decode() for feature in requirements[b'mandatory']])
+        return result
+
+    def write(self):
+        from .item import ManifestItem
+        if self.key.tam_required:
+            self.config[b'tam_required'] = True
+        # self.timestamp needs to be strictly monotonically increasing. Clocks often are not set correctly
+        if self.timestamp is None:
+            self.timestamp = datetime.utcnow().isoformat()
+        else:
+            prev_ts = self.last_timestamp
+            incremented = (prev_ts + timedelta(microseconds=1)).isoformat()
+            self.timestamp = max(incremented, datetime.utcnow().isoformat())
+        # include checks for limits as enforced by limited unpacker (used by load())
+        assert len(self.archives) <= MAX_ARCHIVES
+        assert all(len(name) <= 255 for name in self.archives)
+        assert len(self.item_keys) <= 100
+        manifest = ManifestItem(
+            version=1,
+            archives=StableDict(self.archives.get_raw_dict()),
+            timestamp=self.timestamp,
+            config=StableDict(self.config),
+            item_keys=tuple(sorted(self.item_keys)),
+        )
+        self.tam_verified = True
+        data = self.key.pack_and_authenticate_metadata(manifest.as_dict())
+        self.id = self.key.id_hash(data)
+        self.repository.put(self.MANIFEST_ID, self.key.encrypt(data))
+
+
+def positive_int_validator(value):
+    """argparse type for positive integers"""
+    int_value = int(value)
+    if int_value <= 0:
+        raise argparse.ArgumentTypeError('A positive integer is required: %s' % value)
+    return int_value
+
+
+def interval(s):
+    """Convert a string representing a valid interval to a number of hours."""
+    multiplier = {'H': 1, 'd': 24, 'w': 24 * 7, 'm': 24 * 31, 'y': 24 * 365}
+
+    if s.endswith(tuple(multiplier.keys())):
+        number = s[:-1]
+        suffix = s[-1]
+    else:
+        # range suffixes in ascending multiplier order
+        ranges = [k for k, v in sorted(multiplier.items(), key=lambda t: t[1])]
+        raise argparse.ArgumentTypeError(
+            'Unexpected interval time unit "%s": expected one of %r' % (s[-1], ranges))
+
+    try:
+        hours = int(number) * multiplier[suffix]
+    except ValueError:
+        hours = -1
+
+    if hours <= 0:
+        raise argparse.ArgumentTypeError(
+            'Unexpected interval number "%s": expected an integer greater than 0' % number)
+
+    return hours
+
+
+def prune_within(archives, hours):
+    target = datetime.now(timezone.utc) - timedelta(seconds=hours * 3600)
+    return [a for a in archives if a.ts > target]
+
+
+def prune_split(archives, pattern, n, skip=[]):
+    last = None
+    keep = []
+    if n == 0:
+        return keep
+    for a in sorted(archives, key=attrgetter('ts'), reverse=True):
+        period = to_localtime(a.ts).strftime(pattern)
+        if period != last:
+            last = period
+            if a not in skip:
+                keep.append(a)
+                if len(keep) == n:
+                    break
+    return keep
+
+
+def get_home_dir():
+    """Get user's home directory while preferring a possibly set HOME
+    environment variable
+    """
+    # os.path.expanduser() behaves differently for '~' and '~someuser' as
+    # parameters: when called with an explicit username, the possibly set
+    # environment variable HOME is no longer respected. So we have to check if
+    # it is set and only expand the user's home directory if HOME is unset.
+    if os.environ.get('HOME', ''):
+        return os.environ.get('HOME')
+    else:
+        return os.path.expanduser('~%s' % os.environ.get('USER', ''))
+
+
+def get_keys_dir():
+    """Determine where to repository keys and cache"""
+
+    xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config'))
+    keys_dir = os.environ.get('BORG_KEYS_DIR', os.path.join(xdg_config, 'borg', 'keys'))
+    if not os.path.exists(keys_dir):
+        os.makedirs(keys_dir)
+        os.chmod(keys_dir, stat.S_IRWXU)
+    return keys_dir
+
+
+def get_security_dir(repository_id=None):
+    """Determine where to store local security information."""
+    xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config'))
+    security_dir = os.environ.get('BORG_SECURITY_DIR', os.path.join(xdg_config, 'borg', 'security'))
+    if repository_id:
+        security_dir = os.path.join(security_dir, repository_id)
+    if not os.path.exists(security_dir):
+        os.makedirs(security_dir)
+        os.chmod(security_dir, stat.S_IRWXU)
+    return security_dir
+
+
+def get_cache_dir():
+    """Determine where to repository keys and cache"""
+    xdg_cache = os.environ.get('XDG_CACHE_HOME', os.path.join(get_home_dir(), '.cache'))
+    cache_dir = os.environ.get('BORG_CACHE_DIR', os.path.join(xdg_cache, 'borg'))
+    if not os.path.exists(cache_dir):
+        os.makedirs(cache_dir)
+        os.chmod(cache_dir, stat.S_IRWXU)
+        with open(os.path.join(cache_dir, CACHE_TAG_NAME), 'wb') as fd:
+            fd.write(CACHE_TAG_CONTENTS)
+            fd.write(textwrap.dedent("""
+                # This file is a cache directory tag created by Borg.
+                # For information about cache directory tags, see:
+                #       http://www.brynosaurus.com/cachedir/
+                """).encode('ascii'))
+    return cache_dir
+
+
+def to_localtime(ts):
+    """Convert datetime object from UTC to local time zone"""
+    return datetime(*time.localtime((ts - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds())[:6])
+
+
+def parse_timestamp(timestamp):
+    """Parse a ISO 8601 timestamp string"""
+    if '.' in timestamp:  # microseconds might not be present
+        return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S.%f').replace(tzinfo=timezone.utc)
+    else:
+        return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc)
+
+
+def timestamp(s):
+    """Convert a --timestamp=s argument to a datetime object"""
+    try:
+        # is it pointing to a file / directory?
+        ts = safe_s(os.stat(s).st_mtime)
+        return datetime.utcfromtimestamp(ts)
+    except OSError:
+        # didn't work, try parsing as timestamp. UTC, no TZ, no microsecs support.
+        for format in ('%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S+00:00',
+                       '%Y-%m-%dT%H:%M:%S', '%Y-%m-%d %H:%M:%S',
+                       '%Y-%m-%dT%H:%M', '%Y-%m-%d %H:%M',
+                       '%Y-%m-%d', '%Y-%j',
+                       ):
+            try:
+                return datetime.strptime(s, format)
+            except ValueError:
+                continue
+        raise ValueError
+
+
+def ChunkerParams(s):
+    if s.strip().lower() == "default":
+        return CHUNKER_PARAMS
+    chunk_min, chunk_max, chunk_mask, window_size = s.split(',')
+    if int(chunk_max) > 23:
+        raise ValueError('max. chunk size exponent must not be more than 23 (2^23 = 8MiB max. chunk size)')
+    return int(chunk_min), int(chunk_max), int(chunk_mask), int(window_size)
+
+
+def dir_is_cachedir(path):
+    """Determines whether the specified path is a cache directory (and
+    therefore should potentially be excluded from the backup) according to
+    the CACHEDIR.TAG protocol
+    (http://www.brynosaurus.com/cachedir/spec.html).
+    """
+
+    tag_path = os.path.join(path, CACHE_TAG_NAME)
+    try:
+        if os.path.exists(tag_path):
+            with open(tag_path, 'rb') as tag_file:
+                tag_data = tag_file.read(len(CACHE_TAG_CONTENTS))
+                if tag_data == CACHE_TAG_CONTENTS:
+                    return True
+    except OSError:
+        pass
+    return False
+
+
+def dir_is_tagged(path, exclude_caches, exclude_if_present):
+    """Determines whether the specified path is excluded by being a cache
+    directory or containing user-specified tag files/directories. Returns a
+    list of the paths of the tag files/directories (either CACHEDIR.TAG or the
+    matching user-specified files/directories).
+    """
+    tag_paths = []
+    if exclude_caches and dir_is_cachedir(path):
+        tag_paths.append(os.path.join(path, CACHE_TAG_NAME))
+    if exclude_if_present is not None:
+        for tag in exclude_if_present:
+            tag_path = os.path.join(path, tag)
+            if os.path.exists(tag_path):
+                tag_paths.append(tag_path)
+    return tag_paths
+
+
+def partial_format(format, mapping):
+    """
+    Apply format.format_map(mapping) while preserving unknown keys
+
+    Does not support attribute access, indexing and ![rsa] conversions
+    """
+    for key, value in mapping.items():
+        key = re.escape(key)
+        format = re.sub(r'(?<!\{)((\{%s\})|(\{%s:[^\}]*\}))' % (key, key),
+                        lambda match: match.group(1).format_map(mapping),
+                        format)
+    return format
+
+
+class DatetimeWrapper:
+    def __init__(self, dt):
+        self.dt = dt
+
+    def __format__(self, format_spec):
+        if format_spec == '':
+            format_spec = '%Y-%m-%dT%H:%M:%S'
+        return self.dt.__format__(format_spec)
+
+
+def format_line(format, data):
+    for _, key, _, conversion in Formatter().parse(format):
+        if not key:
+            continue
+        if conversion or key not in data:
+            raise InvalidPlaceholder(key, format)
+    try:
+        return format.format_map(data)
+    except Exception as e:
+        raise PlaceholderError(format, data, e.__class__.__name__, str(e))
+
+
+def replace_placeholders(text):
+    """Replace placeholders in text with their values."""
+    current_time = datetime.now()
+    data = {
+        'pid': os.getpid(),
+        'fqdn': socket.getfqdn(),
+        'hostname': socket.gethostname(),
+        'now': DatetimeWrapper(current_time.now()),
+        'utcnow': DatetimeWrapper(current_time.utcnow()),
+        'user': uid2user(os.getuid(), os.getuid()),
+        'uuid4': str(uuid.uuid4()),
+        'borgversion': borg_version,
+        'borgmajor': '%d' % borg_version_tuple[:1],
+        'borgminor': '%d.%d' % borg_version_tuple[:2],
+        'borgpatch': '%d.%d.%d' % borg_version_tuple[:3],
+    }
+    return format_line(text, data)
+
+
+PrefixSpec = replace_placeholders
+
+
+HUMAN_SORT_KEYS = ['timestamp'] + list(ArchiveInfo._fields)
+HUMAN_SORT_KEYS.remove('ts')
+
+
+def SortBySpec(text):
+    for token in text.split(','):
+        if token not in HUMAN_SORT_KEYS:
+            raise ValueError('Invalid sort key: %s' % token)
+    return text.replace('timestamp', 'ts')
+
+
+# Not too rarely, we get crappy timestamps from the fs, that overflow some computations.
+# As they are crap anyway (valid filesystem timestamps always refer to the past up to
+# the present, but never to the future), nothing is lost if we just clamp them to the
+# maximum value we can support.
+# As long as people are using borg on 32bit platforms to access borg archives, we must
+# keep this value True. But we can expect that we can stop supporting 32bit platforms
+# well before coming close to the year 2038, so this will never be a practical problem.
+SUPPORT_32BIT_PLATFORMS = True  # set this to False before y2038.
+
+if SUPPORT_32BIT_PLATFORMS:
+    # second timestamps will fit into a signed int32 (platform time_t limit).
+    # nanosecond timestamps thus will naturally fit into a signed int64.
+    # subtract last 48h to avoid any issues that could be caused by tz calculations.
+    # this is in the year 2038, so it is also less than y9999 (which is a datetime internal limit).
+    # msgpack can pack up to uint64.
+    MAX_S = 2**31-1 - 48*3600
+    MAX_NS = MAX_S * 1000000000
+else:
+    # nanosecond timestamps will fit into a signed int64.
+    # subtract last 48h to avoid any issues that could be caused by tz calculations.
+    # this is in the year 2262, so it is also less than y9999 (which is a datetime internal limit).
+    # round down to 1e9 multiple, so MAX_NS corresponds precisely to a integer MAX_S.
+    # msgpack can pack up to uint64.
+    MAX_NS = (2**63-1 - 48*3600*1000000000) // 1000000000 * 1000000000
+    MAX_S = MAX_NS // 1000000000
+
+
+def safe_s(ts):
+    if 0 <= ts <= MAX_S:
+        return ts
+    elif ts < 0:
+        return 0
+    else:
+        return MAX_S
+
+
+def safe_ns(ts):
+    if 0 <= ts <= MAX_NS:
+        return ts
+    elif ts < 0:
+        return 0
+    else:
+        return MAX_NS
+
+
+def safe_timestamp(item_timestamp_ns):
+    t_ns = safe_ns(item_timestamp_ns)
+    return datetime.fromtimestamp(t_ns / 1e9)
+
+
+def format_time(t):
+    """use ISO-8601 date and time format
+    """
+    return t.strftime('%a, %Y-%m-%d %H:%M:%S')
+
+
+def format_timedelta(td):
+    """Format timedelta in a human friendly format
+    """
+    ts = td.total_seconds()
+    s = ts % 60
+    m = int(ts / 60) % 60
+    h = int(ts / 3600) % 24
+    txt = '%.2f seconds' % s
+    if m:
+        txt = '%d minutes %s' % (m, txt)
+    if h:
+        txt = '%d hours %s' % (h, txt)
+    if td.days:
+        txt = '%d days %s' % (td.days, txt)
+    return txt
+
+
+def format_file_size(v, precision=2, sign=False):
+    """Format file size into a human friendly format
+    """
+    return sizeof_fmt_decimal(v, suffix='B', sep=' ', precision=precision, sign=sign)
+
+
+class FileSize(int):
+    def __format__(self, format_spec):
+        return format_file_size(int(self)).__format__(format_spec)
+
+
+def parse_file_size(s):
+    """Return int from file size (1234, 55G, 1.7T)."""
+    if not s:
+        return int(s)  # will raise
+    suffix = s[-1]
+    power = 1000
+    try:
+        factor = {
+            'K': power,
+            'M': power**2,
+            'G': power**3,
+            'T': power**4,
+            'P': power**5,
+        }[suffix]
+        s = s[:-1]
+    except KeyError:
+        factor = 1
+    return int(float(s) * factor)
+
+
+def sizeof_fmt(num, suffix='B', units=None, power=None, sep='', precision=2, sign=False):
+    prefix = '+' if sign and num > 0 else ''
+
+    for unit in units[:-1]:
+        if abs(round(num, precision)) < power:
+            if isinstance(num, int):
+                return "{}{}{}{}{}".format(prefix, num, sep, unit, suffix)
+            else:
+                return "{}{:3.{}f}{}{}{}".format(prefix, num, precision, sep, unit, suffix)
+        num /= float(power)
+    return "{}{:.{}f}{}{}{}".format(prefix, num, precision, sep, units[-1], suffix)
+
+
+def sizeof_fmt_iec(num, suffix='B', sep='', precision=2, sign=False):
+    return sizeof_fmt(num, suffix=suffix, sep=sep, precision=precision, sign=sign,
+                      units=['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'], power=1024)
+
+
+def sizeof_fmt_decimal(num, suffix='B', sep='', precision=2, sign=False):
+    return sizeof_fmt(num, suffix=suffix, sep=sep, precision=precision, sign=sign,
+                      units=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'], power=1000)
+
+
+def format_archive(archive):
+    return '%-36s %s [%s]' % (
+        archive.name,
+        format_time(to_localtime(archive.ts)),
+        bin_to_hex(archive.id),
+    )
+
+
+class Buffer:
+    """
+    provide a thread-local buffer
+    """
+
+    class MemoryLimitExceeded(Error, OSError):
+        """Requested buffer size {} is above the limit of {}."""
+
+    def __init__(self, allocator, size=4096, limit=None):
+        """
+        Initialize the buffer: use allocator(size) call to allocate a buffer.
+        Optionally, set the upper <limit> for the buffer size.
+        """
+        assert callable(allocator), 'must give alloc(size) function as first param'
+        assert limit is None or size <= limit, 'initial size must be <= limit'
+        self._thread_local = threading.local()
+        self.allocator = allocator
+        self.limit = limit
+        self.resize(size, init=True)
+
+    def __len__(self):
+        return len(self._thread_local.buffer)
+
+    def resize(self, size, init=False):
+        """
+        resize the buffer - to avoid frequent reallocation, we usually always grow (if needed).
+        giving init=True it is possible to first-time initialize or shrink the buffer.
+        if a buffer size beyond the limit is requested, raise Buffer.MemoryLimitExceeded (OSError).
+        """
+        size = int(size)
+        if self.limit is not None and size > self.limit:
+            raise Buffer.MemoryLimitExceeded(size, self.limit)
+        if init or len(self) < size:
+            self._thread_local.buffer = self.allocator(size)
+
+    def get(self, size=None, init=False):
+        """
+        return a buffer of at least the requested size (None: any current size).
+        init=True can be given to trigger shrinking of the buffer to the given size.
+        """
+        if size is not None:
+            self.resize(size, init)
+        return self._thread_local.buffer
+
+
+@lru_cache(maxsize=None)
+def uid2user(uid, default=None):
+    try:
+        return pwd.getpwuid(uid).pw_name
+    except KeyError:
+        return default
+
+
+@lru_cache(maxsize=None)
+def user2uid(user, default=None):
+    try:
+        return user and pwd.getpwnam(user).pw_uid
+    except KeyError:
+        return default
+
+
+@lru_cache(maxsize=None)
+def gid2group(gid, default=None):
+    try:
+        return grp.getgrgid(gid).gr_name
+    except KeyError:
+        return default
+
+
+@lru_cache(maxsize=None)
+def group2gid(group, default=None):
+    try:
+        return group and grp.getgrnam(group).gr_gid
+    except KeyError:
+        return default
+
+
+def posix_acl_use_stored_uid_gid(acl):
+    """Replace the user/group field with the stored uid/gid
+    """
+    entries = []
+    for entry in safe_decode(acl).split('\n'):
+        if entry:
+            fields = entry.split(':')
+            if len(fields) == 4:
+                entries.append(':'.join([fields[0], fields[3], fields[2]]))
+            else:
+                entries.append(entry)
+    return safe_encode('\n'.join(entries))
+
+
+def safe_decode(s, coding='utf-8', errors='surrogateescape'):
+    """decode bytes to str, with round-tripping "invalid" bytes"""
+    if s is None:
+        return None
+    return s.decode(coding, errors)
+
+
+def safe_encode(s, coding='utf-8', errors='surrogateescape'):
+    """encode str to bytes, with round-tripping "invalid" bytes"""
+    if s is None:
+        return None
+    return s.encode(coding, errors)
+
+
+def bin_to_hex(binary):
+    return hexlify(binary).decode('ascii')
+
+
+def parse_stringified_list(s):
+    l = re.split(" *, *", s)
+    return [item for item in l if item != '']
+
+
+class Location:
+    """Object representing a repository / archive location
+    """
+    proto = user = _host = port = path = archive = None
+
+    # user must not contain "@", ":" or "/".
+    # Quoting adduser error message:
+    # "To avoid problems, the username should consist only of letters, digits,
+    # underscores, periods, at signs and dashes, and not start with a dash
+    # (as defined by IEEE Std 1003.1-2001)."
+    # We use "@" as separator between username and hostname, so we must
+    # disallow it within the pure username part.
+    optional_user_re = r"""
+        (?:(?P<user>[^@:/]+)@)?
+    """
+
+    # path must not contain :: (it ends at :: or string end), but may contain single colons.
+    # to avoid ambiguities with other regexes, it must also not start with ":" nor with "//" nor with "ssh://".
+    scp_path_re = r"""
+        (?!(:|//|ssh://))                                   # not starting with ":" or // or ssh://
+        (?P<path>([^:]|(:(?!:)))+)                          # any chars, but no "::"
+        """
+
+    # file_path must not contain :: (it ends at :: or string end), but may contain single colons.
+    # it must start with a / and that slash is part of the path.
+    file_path_re = r"""
+        (?P<path>(([^/]*)/([^:]|(:(?!:)))+))                # start opt. servername, then /, then any chars, but no "::"
+        """
+
+    # abs_path must not contain :: (it ends at :: or string end), but may contain single colons.
+    # it must start with a / and that slash is part of the path.
+    abs_path_re = r"""
+        (?P<path>(/([^:]|(:(?!:)))+))                       # start with /, then any chars, but no "::"
+        """
+
+    # optional ::archive_name at the end, archive name must not contain "/".
+    # borg mount's FUSE filesystem creates one level of directories from
+    # the archive names and of course "/" is not valid in a directory name.
+    optional_archive_re = r"""
+        (?:
+            ::                                              # "::" as separator
+            (?P<archive>[^/]+)                              # archive name must not contain "/"
+        )?$"""                                              # must match until the end
+
+    # regexes for misc. kinds of supported location specifiers:
+    ssh_re = re.compile(r"""
+        (?P<proto>ssh)://                                   # ssh://
+        """ + optional_user_re + r"""                       # user@  (optional)
+        (?P<host>([^:/]+|\[[0-9a-fA-F:.]+\]))(?::(?P<port>\d+))?  # host or host:port or [ipv6] or [ipv6]:port
+        """ + abs_path_re + optional_archive_re, re.VERBOSE)  # path or path::archive
+
+    file_re = re.compile(r"""
+        (?P<proto>file)://                                  # file://
+        """ + file_path_re + optional_archive_re, re.VERBOSE)  # servername/path, path or path::archive
+
+    # note: scp_re is also use for local paths
+    scp_re = re.compile(r"""
+        (
+            """ + optional_user_re + r"""                   # user@  (optional)
+            (?P<host>([^:/]+|\[[0-9a-fA-F:.]+\])):          # host: (don't match / or [ipv6] in host to disambiguate from file:)
+        )?                                                  # user@host: part is optional
+        """ + scp_path_re + optional_archive_re, re.VERBOSE)  # path with optional archive
+
+    # get the repo from BORG_REPO env and the optional archive from param.
+    # if the syntax requires giving REPOSITORY (see "borg mount"),
+    # use "::" to let it use the env var.
+    # if REPOSITORY argument is optional, it'll automatically use the env.
+    env_re = re.compile(r"""                                # the repo part is fetched from BORG_REPO
+        (?:::$)                                             # just "::" is ok (when a pos. arg is required, no archive)
+        |                                                   # or
+        """ + optional_archive_re, re.VERBOSE)              # archive name (optional, may be empty)
+
+    def __init__(self, text=''):
+        self.orig = text
+        if not self.parse(self.orig):
+            raise ValueError('Location: parse failed: %s' % self.orig)
+
+    def parse(self, text):
+        text = replace_placeholders(text)
+        valid = self._parse(text)
+        if valid:
+            return True
+        m = self.env_re.match(text)
+        if not m:
+            return False
+        repo = os.environ.get('BORG_REPO')
+        if repo is None:
+            return False
+        valid = self._parse(repo)
+        if not valid:
+            return False
+        self.archive = m.group('archive')
+        return True
+
+    def _parse(self, text):
+        def normpath_special(p):
+            # avoid that normpath strips away our relative path hack and even makes p absolute
+            relative = p.startswith('/./')
+            p = os.path.normpath(p)
+            return ('/.' + p) if relative else p
+
+        m = self.ssh_re.match(text)
+        if m:
+            self.proto = m.group('proto')
+            self.user = m.group('user')
+            self._host = m.group('host')
+            self.port = m.group('port') and int(m.group('port')) or None
+            self.path = normpath_special(m.group('path'))
+            self.archive = m.group('archive')
+            return True
+        m = self.file_re.match(text)
+        if m:
+            self.proto = m.group('proto')
+            self.path = normpath_special(m.group('path'))
+            self.archive = m.group('archive')
+            return True
+        m = self.scp_re.match(text)
+        if m:
+            self.user = m.group('user')
+            self._host = m.group('host')
+            self.path = normpath_special(m.group('path'))
+            self.archive = m.group('archive')
+            self.proto = self._host and 'ssh' or 'file'
+            return True
+        return False
+
+    def __str__(self):
+        items = [
+            'proto=%r' % self.proto,
+            'user=%r' % self.user,
+            'host=%r' % self.host,
+            'port=%r' % self.port,
+            'path=%r' % self.path,
+            'archive=%r' % self.archive,
+        ]
+        return ', '.join(items)
+
+    def to_key_filename(self):
+        name = re.sub('[^\w]', '_', self.path).strip('_')
+        if self.proto != 'file':
+            name = re.sub('[^\w]', '_', self.host) + '__' + name
+        if len(name) > 100:
+            # Limit file names to some reasonable length. Most file systems
+            # limit them to 255 [unit of choice]; due to variations in unicode
+            # handling we truncate to 100 *characters*.
+            name = name[:100]
+        return os.path.join(get_keys_dir(), name)
+
+    def __repr__(self):
+        return "Location(%s)" % self
+
+    @property
+    def host(self):
+        # strip square brackets used for IPv6 addrs
+        if self._host is not None:
+            return self._host.lstrip('[').rstrip(']')
+
+    def canonical_path(self):
+        if self.proto == 'file':
+            return self.path
+        else:
+            if self.path and self.path.startswith('~'):
+                path = '/' + self.path  # /~/x = path x relative to home dir
+            elif self.path and not self.path.startswith('/'):
+                path = '/./' + self.path  # /./x = path x relative to cwd
+            else:
+                path = self.path
+            return 'ssh://{}{}{}{}'.format('{}@'.format(self.user) if self.user else '',
+                                           self._host,  # needed for ipv6 addrs
+                                           ':{}'.format(self.port) if self.port else '',
+                                           path)
+
+
+def location_validator(archive=None):
+    def validator(text):
+        try:
+            loc = Location(text)
+        except ValueError:
+            raise argparse.ArgumentTypeError('Invalid location format: "%s"' % text) from None
+        if archive is True and not loc.archive:
+            raise argparse.ArgumentTypeError('"%s": No archive specified' % text)
+        elif archive is False and loc.archive:
+            raise argparse.ArgumentTypeError('"%s" No archive can be specified' % text)
+        return loc
+    return validator
+
+
+def archivename_validator():
+    def validator(text):
+        if '/' in text or '::' in text or not text:
+            raise argparse.ArgumentTypeError('Invalid repository name: "%s"' % text)
+        return text
+    return validator
+
+
+def decode_dict(d, keys, encoding='utf-8', errors='surrogateescape'):
+    for key in keys:
+        if isinstance(d.get(key), bytes):
+            d[key] = d[key].decode(encoding, errors)
+    return d
+
+
+def prepare_dump_dict(d):
+    def decode_bytes(value):
+        # this should somehow be reversible later, but usual strings should
+        # look nice and chunk ids should mostly show in hex. Use a special
+        # inband signaling character (ASCII DEL) to distinguish between
+        # decoded and hex mode.
+        if not value.startswith(b'\x7f'):
+            try:
+                value = value.decode()
+                return value
+            except UnicodeDecodeError:
+                pass
+        return '\u007f' + bin_to_hex(value)
+
+    def decode_tuple(t):
+        res = []
+        for value in t:
+            if isinstance(value, dict):
+                value = decode(value)
+            elif isinstance(value, tuple) or isinstance(value, list):
+                value = decode_tuple(value)
+            elif isinstance(value, bytes):
+                value = decode_bytes(value)
+            res.append(value)
+        return res
+
+    def decode(d):
+        res = collections.OrderedDict()
+        for key, value in d.items():
+            if isinstance(value, dict):
+                value = decode(value)
+            elif isinstance(value, (tuple, list)):
+                value = decode_tuple(value)
+            elif isinstance(value, bytes):
+                value = decode_bytes(value)
+            if isinstance(key, bytes):
+                key = key.decode()
+            res[key] = value
+        return res
+
+    return decode(d)
+
+
+def remove_surrogates(s, errors='replace'):
+    """Replace surrogates generated by fsdecode with '?'
+    """
+    return s.encode('utf-8', errors).decode('utf-8')
+
+
+_safe_re = re.compile(r'^((\.\.)?/+)+')
+
+
+def make_path_safe(path):
+    """Make path safe by making it relative and local
+    """
+    return _safe_re.sub('', path) or '.'
+
+
+def daemonize():
+    """Detach process from controlling terminal and run in background
+    """
+    pid = os.fork()
+    if pid:
+        os._exit(0)
+    os.setsid()
+    pid = os.fork()
+    if pid:
+        os._exit(0)
+    os.chdir('/')
+    os.close(0)
+    os.close(1)
+    os.close(2)
+    fd = os.open(os.devnull, os.O_RDWR)
+    os.dup2(fd, 0)
+    os.dup2(fd, 1)
+    os.dup2(fd, 2)
+
+
+class StableDict(dict):
+    """A dict subclass with stable items() ordering"""
+    def items(self):
+        return sorted(super().items())
+
+
+def bigint_to_int(mtime):
+    """Convert bytearray to int
+    """
+    if isinstance(mtime, bytes):
+        return int.from_bytes(mtime, 'little', signed=True)
+    return mtime
+
+
+def int_to_bigint(value):
+    """Convert integers larger than 64 bits to bytearray
+
+    Smaller integers are left alone
+    """
+    if value.bit_length() > 63:
+        return value.to_bytes((value.bit_length() + 9) // 8, 'little', signed=True)
+    return value
+
+
+def is_slow_msgpack():
+    return msgpack.Packer is msgpack.fallback.Packer
+
+
+FALSISH = ('No', 'NO', 'no', 'N', 'n', '0', )
+TRUISH = ('Yes', 'YES', 'yes', 'Y', 'y', '1', )
+DEFAULTISH = ('Default', 'DEFAULT', 'default', 'D', 'd', '', )
+
+
+def yes(msg=None, false_msg=None, true_msg=None, default_msg=None,
+        retry_msg=None, invalid_msg=None, env_msg='{} (from {})',
+        falsish=FALSISH, truish=TRUISH, defaultish=DEFAULTISH,
+        default=False, retry=True, env_var_override=None, ofile=None, input=input, prompt=True,
+        msgid=None):
+    """Output <msg> (usually a question) and let user input an answer.
+    Qualifies the answer according to falsish, truish and defaultish as True, False or <default>.
+    If it didn't qualify and retry is False (no retries wanted), return the default [which
+    defaults to False]. If retry is True let user retry answering until answer is qualified.
+
+    If env_var_override is given and this var is present in the environment, do not ask
+    the user, but just use the env var contents as answer as if it was typed in.
+    Otherwise read input from stdin and proceed as normal.
+    If EOF is received instead an input or an invalid input without retry possibility,
+    return default.
+
+    :param msg: introducing message to output on ofile, no \n is added [None]
+    :param retry_msg: retry message to output on ofile, no \n is added [None]
+    :param false_msg: message to output before returning False [None]
+    :param true_msg: message to output before returning True [None]
+    :param default_msg: message to output before returning a <default> [None]
+    :param invalid_msg: message to output after a invalid answer was given [None]
+    :param env_msg: message to output when using input from env_var_override ['{} (from {})'],
+           needs to have 2 placeholders for answer and env var name
+    :param falsish: sequence of answers qualifying as False
+    :param truish: sequence of answers qualifying as True
+    :param defaultish: sequence of answers qualifying as <default>
+    :param default: default return value (defaultish answer was given or no-answer condition) [False]
+    :param retry: if True and input is incorrect, retry. Otherwise return default. [True]
+    :param env_var_override: environment variable name [None]
+    :param ofile: output stream [sys.stderr]
+    :param input: input function [input from builtins]
+    :return: boolean answer value, True or False
+    """
+    def output(msg, msg_type, is_prompt=False, **kwargs):
+        json_output = getattr(logging.getLogger('borg'), 'json', False)
+        if json_output:
+            kwargs.update(dict(
+                type='question_%s' % msg_type,
+                msgid=msgid,
+                message=msg,
+            ))
+            print(json.dumps(kwargs), file=sys.stderr)
+        else:
+            if is_prompt:
+                print(msg, file=ofile, end='', flush=True)
+            else:
+                print(msg, file=ofile)
+
+    msgid = msgid or env_var_override
+    # note: we do not assign sys.stderr as default above, so it is
+    # really evaluated NOW,  not at function definition time.
+    if ofile is None:
+        ofile = sys.stderr
+    if default not in (True, False):
+        raise ValueError("invalid default value, must be True or False")
+    if msg:
+        output(msg, 'prompt', is_prompt=True)
+    while True:
+        answer = None
+        if env_var_override:
+            answer = os.environ.get(env_var_override)
+            if answer is not None and env_msg:
+                output(env_msg.format(answer, env_var_override), 'env_answer', env_var=env_var_override)
+        if answer is None:
+            if not prompt:
+                return default
+            try:
+                answer = input()
+            except EOFError:
+                # avoid defaultish[0], defaultish could be empty
+                answer = truish[0] if default else falsish[0]
+        if answer in defaultish:
+            if default_msg:
+                output(default_msg, 'accepted_default')
+            return default
+        if answer in truish:
+            if true_msg:
+                output(true_msg, 'accepted_true')
+            return True
+        if answer in falsish:
+            if false_msg:
+                output(false_msg, 'accepted_false')
+            return False
+        # if we get here, the answer was invalid
+        if invalid_msg:
+            output(invalid_msg, 'invalid_answer')
+        if not retry:
+            return default
+        if retry_msg:
+            output(retry_msg, 'prompt_retry', is_prompt=True)
+        # in case we used an environment variable and it gave an invalid answer, do not use it again:
+        env_var_override = None
+
+
+def hostname_is_unique():
+    return yes(env_var_override='BORG_HOSTNAME_IS_UNIQUE', prompt=False, env_msg=None, default=True)
+
+
+def ellipsis_truncate(msg, space):
+    """
+    shorten a long string by adding ellipsis between it and return it, example:
+    this_is_a_very_long_string -------> this_is..._string
+    """
+    from .platform import swidth
+    ellipsis_width = swidth('...')
+    msg_width = swidth(msg)
+    if space < 8:
+        # if there is very little space, just show ...
+        return '...' + ' ' * (space - ellipsis_width)
+    if space < ellipsis_width + msg_width:
+        return '%s...%s' % (swidth_slice(msg, space // 2 - ellipsis_width),
+                            swidth_slice(msg, -space // 2))
+    return msg + ' ' * (space - msg_width)
+
+
+class ProgressIndicatorBase:
+    LOGGER = 'borg.output.progress'
+    JSON_TYPE = None
+    json = False
+
+    operation_id_counter = 0
+
+    @classmethod
+    def operation_id(cls):
+        """Unique number, can be used by receiving applications to distinguish different operations."""
+        cls.operation_id_counter += 1
+        return cls.operation_id_counter
+
+    def __init__(self, msgid=None):
+        self.handler = None
+        self.logger = logging.getLogger(self.LOGGER)
+        self.id = self.operation_id()
+        self.msgid = msgid
+
+        # If there are no handlers, set one up explicitly because the
+        # terminator and propagation needs to be set.  If there are,
+        # they must have been set up by BORG_LOGGING_CONF: skip setup.
+        if not self.logger.handlers:
+            self.handler = logging.StreamHandler(stream=sys.stderr)
+            self.handler.setLevel(logging.INFO)
+            logger = logging.getLogger('borg')
+            # Some special attributes on the borg logger, created by setup_logging
+            # But also be able to work without that
+            try:
+                formatter = logger.formatter
+                terminator = '\n' if logger.json else '\r'
+                self.json = logger.json
+            except AttributeError:
+                terminator = '\r'
+            else:
+                self.handler.setFormatter(formatter)
+            self.handler.terminator = terminator
+
+            self.logger.addHandler(self.handler)
+            if self.logger.level == logging.NOTSET:
+                self.logger.setLevel(logging.WARN)
+            self.logger.propagate = False
+
+        # If --progress is not set then the progress logger level will be WARN
+        # due to setup_implied_logging (it may be NOTSET with a logging config file,
+        # but the interactions there are generally unclear), so self.emit becomes
+        # False, which is correct.
+        # If --progress is set then the level will be INFO as per setup_implied_logging;
+        # note that this is always the case for serve processes due to a "args.progress |= is_serve".
+        # In this case self.emit is True.
+        self.emit = self.logger.getEffectiveLevel() == logging.INFO
+
+    def __del__(self):
+        if self.handler is not None:
+            self.logger.removeHandler(self.handler)
+            self.handler.close()
+
+    def output_json(self, *, finished=False, **kwargs):
+        assert self.json
+        if not self.emit:
+            return
+        kwargs.update(dict(
+            operation=self.id,
+            msgid=self.msgid,
+            type=self.JSON_TYPE,
+            finished=finished,
+            time=time.time(),
+        ))
+        print(json.dumps(kwargs), file=sys.stderr)
+
+    def finish(self):
+        if self.json:
+            self.output_json(finished=True)
+        else:
+            self.output('')
+
+
+def justify_to_terminal_size(message):
+    terminal_space = get_terminal_size(fallback=(-1, -1))[0]
+    # justify only if we are outputting to a terminal
+    if terminal_space != -1:
+        return message.ljust(terminal_space)
+    return message
+
+
+class ProgressIndicatorMessage(ProgressIndicatorBase):
+    JSON_TYPE = 'progress_message'
+
+    def output(self, msg):
+        if self.json:
+            self.output_json(message=msg)
+        else:
+            self.logger.info(justify_to_terminal_size(msg))
+
+
+class ProgressIndicatorPercent(ProgressIndicatorBase):
+    JSON_TYPE = 'progress_percent'
+
+    def __init__(self, total=0, step=5, start=0, msg="%3.0f%%", msgid=None):
+        """
+        Percentage-based progress indicator
+
+        :param total: total amount of items
+        :param step: step size in percent
+        :param start: at which percent value to start
+        :param msg: output message, must contain one %f placeholder for the percentage
+        """
+        self.counter = 0  # 0 .. (total-1)
+        self.total = total
+        self.trigger_at = start  # output next percentage value when reaching (at least) this
+        self.step = step
+        self.msg = msg
+
+        super().__init__(msgid=msgid)
+
+    def progress(self, current=None, increase=1):
+        if current is not None:
+            self.counter = current
+        pct = self.counter * 100 / self.total
+        self.counter += increase
+        if pct >= self.trigger_at:
+            self.trigger_at += self.step
+            return pct
+
+    def show(self, current=None, increase=1, info=None):
+        """
+        Show and output the progress message
+
+        :param current: set the current percentage [None]
+        :param increase: increase the current percentage [None]
+        :param info: array of strings to be formatted with msg [None]
+        """
+        pct = self.progress(current, increase)
+        if pct is not None:
+            # truncate the last argument, if no space is available
+            if info is not None:
+                if not self.json:
+                    # no need to truncate if we're not outputing to a terminal
+                    terminal_space = get_terminal_size(fallback=(-1, -1))[0]
+                    if terminal_space != -1:
+                        space = terminal_space - len(self.msg % tuple([pct] + info[:-1] + ['']))
+                        info[-1] = ellipsis_truncate(info[-1], space)
+                return self.output(self.msg % tuple([pct] + info), justify=False, info=info)
+
+            return self.output(self.msg % pct)
+
+    def output(self, message, justify=True, info=None):
+        if self.json:
+            self.output_json(message=message, current=self.counter, total=self.total, info=info)
+        else:
+            if justify:
+                message = justify_to_terminal_size(message)
+            self.logger.info(message)
+
+
+class ProgressIndicatorEndless:
+    def __init__(self, step=10, file=None):
+        """
+        Progress indicator (long row of dots)
+
+        :param step: every Nth call, call the func
+        :param file: output file, default: sys.stderr
+        """
+        self.counter = 0  # call counter
+        self.triggered = 0  # increases 1 per trigger event
+        self.step = step  # trigger every <step> calls
+        if file is None:
+            file = sys.stderr
+        self.file = file
+
+    def progress(self):
+        self.counter += 1
+        trigger = self.counter % self.step == 0
+        if trigger:
+            self.triggered += 1
+        return trigger
+
+    def show(self):
+        trigger = self.progress()
+        if trigger:
+            return self.output(self.triggered)
+
+    def output(self, triggered):
+        print('.', end='', file=self.file, flush=True)
+
+    def finish(self):
+        print(file=self.file)
+
+
+def sysinfo():
+    info = []
+    info.append('Platform: %s' % (' '.join(platform.uname()), ))
+    if sys.platform.startswith('linux'):
+        info.append('Linux: %s %s %s' % platform.linux_distribution())
+    info.append('Borg: %s  Python: %s %s' % (borg_version, platform.python_implementation(), platform.python_version()))
+    info.append('PID: %d  CWD: %s' % (os.getpid(), os.getcwd()))
+    info.append('sys.argv: %r' % sys.argv)
+    info.append('SSH_ORIGINAL_COMMAND: %r' % os.environ.get('SSH_ORIGINAL_COMMAND'))
+    info.append('')
+    return '\n'.join(info)
+
+
+def log_multi(*msgs, level=logging.INFO, logger=logger):
+    """
+    log multiple lines of text, each line by a separate logging call for cosmetic reasons
+
+    each positional argument may be a single or multiple lines (separated by newlines) of text.
+    """
+    lines = []
+    for msg in msgs:
+        lines.extend(msg.splitlines())
+    for line in lines:
+        logger.log(level, line)
+
+
+class BaseFormatter:
+    FIXED_KEYS = {
+        # Formatting aids
+        'LF': '\n',
+        'SPACE': ' ',
+        'TAB': '\t',
+        'CR': '\r',
+        'NUL': '\0',
+        'NEWLINE': os.linesep,
+        'NL': os.linesep,
+    }
+
+    def get_item_data(self, item):
+        raise NotImplementedError
+
+    def format_item(self, item):
+        return self.format.format_map(self.get_item_data(item))
+
+    @staticmethod
+    def keys_help():
+        return "- NEWLINE: OS dependent line separator\n" \
+               "- NL: alias of NEWLINE\n" \
+               "- NUL: NUL character for creating print0 / xargs -0 like output, see barchive/bpath\n" \
+               "- SPACE\n" \
+               "- TAB\n" \
+               "- CR\n" \
+               "- LF"
+
+
+class ArchiveFormatter(BaseFormatter):
+    KEY_DESCRIPTIONS = {
+        'name': 'archive name interpreted as text (might be missing non-text characters, see barchive)',
+        'archive': 'archive name interpreted as text (might be missing non-text characters, see barchive)',
+        'barchive': 'verbatim archive name, can contain any character except NUL',
+        'comment': 'archive comment interpreted as text (might be missing non-text characters, see bcomment)',
+        'bcomment': 'verbatim archive comment, can contain any character except NUL',
+        'time': 'time (start) of creation of the archive',
+        # *start* is the key used by borg-info for this timestamp, this makes the formats more compatible
+        'start': 'time (start) of creation of the archive',
+        'end': 'time (end) of creation of the archive',
+        'id': 'internal ID of the archive',
+    }
+    KEY_GROUPS = (
+        ('name', 'archive', 'barchive', 'comment', 'bcomment', 'id'),
+        ('time', 'start', 'end'),
+    )
+
+    @classmethod
+    def available_keys(cls):
+        fake_archive_info = ArchiveInfo('archivename', b'\1'*32, datetime(1970, 1, 1, tzinfo=timezone.utc))
+        formatter = cls('', None, None, None)
+        keys = []
+        keys.extend(formatter.call_keys.keys())
+        keys.extend(formatter.get_item_data(fake_archive_info).keys())
+        return keys
+
+    @classmethod
+    def keys_help(cls):
+        help = []
+        keys = cls.available_keys()
+        for key in cls.FIXED_KEYS:
+            keys.remove(key)
+
+        for group in cls.KEY_GROUPS:
+            for key in group:
+                keys.remove(key)
+                text = "- " + key
+                if key in cls.KEY_DESCRIPTIONS:
+                    text += ": " + cls.KEY_DESCRIPTIONS[key]
+                help.append(text)
+            help.append("")
+        assert not keys, str(keys)
+        return "\n".join(help)
+
+    def __init__(self, format, repository, manifest, key, *, json=False):
+        self.repository = repository
+        self.manifest = manifest
+        self.key = key
+        self.name = None
+        self.id = None
+        self._archive = None
+        self.json = json
+        static_keys = {}  # here could be stuff on repo level, above archive level
+        static_keys.update(self.FIXED_KEYS)
+        self.format = partial_format(format, static_keys)
+        self.format_keys = {f[1] for f in Formatter().parse(format)}
+        self.call_keys = {
+            'comment': partial(self.get_comment, rs=True),
+            'bcomment': partial(self.get_comment, rs=False),
+            'end': self.get_ts_end,
+        }
+        self.used_call_keys = set(self.call_keys) & self.format_keys
+        if self.json:
+            self.item_data = {}
+            self.format_item = self.format_item_json
+        else:
+            self.item_data = static_keys
+
+    def format_item_json(self, item):
+        return json.dumps(self.get_item_data(item)) + '\n'
+
+    def get_item_data(self, archive_info):
+        self.name = archive_info.name
+        self.id = archive_info.id
+        item_data = {}
+        item_data.update(self.item_data)
+        item_data.update({
+            'name': remove_surrogates(archive_info.name),
+            'archive': remove_surrogates(archive_info.name),
+            'barchive': archive_info.name,
+            'id': bin_to_hex(archive_info.id),
+            'time': format_time(to_localtime(archive_info.ts)),
+            'start': format_time(to_localtime(archive_info.ts)),
+        })
+        for key in self.used_call_keys:
+            item_data[key] = self.call_keys[key]()
+        return item_data
+
+    @property
+    def archive(self):
+        """lazy load / update loaded archive"""
+        if self._archive is None or self._archive.id != self.id:
+            from .archive import Archive
+            self._archive = Archive(self.repository, self.key, self.manifest, self.name)
+        return self._archive
+
+    def get_comment(self, rs):
+        return remove_surrogates(self.archive.comment) if rs else self.archive.comment
+
+    def get_ts_end(self):
+        return format_time(to_localtime(self.archive.ts_end))
+
+
+class ItemFormatter(BaseFormatter):
+    KEY_DESCRIPTIONS = {
+        'bpath': 'verbatim POSIX path, can contain any character except NUL',
+        'path': 'path interpreted as text (might be missing non-text characters, see bpath)',
+        'source': 'link target for links (identical to linktarget)',
+        'extra': 'prepends {source} with " -> " for soft links and " link to " for hard links',
+        'csize': 'compressed size',
+        'dsize': 'deduplicated size',
+        'dcsize': 'deduplicated compressed size',
+        'num_chunks': 'number of chunks in this file',
+        'unique_chunks': 'number of unique chunks in this file',
+        'health': 'either "healthy" (file ok) or "broken" (if file has all-zero replacement chunks)',
+    }
+    KEY_GROUPS = (
+        ('type', 'mode', 'uid', 'gid', 'user', 'group', 'path', 'bpath', 'source', 'linktarget', 'flags'),
+        ('size', 'csize', 'dsize', 'dcsize', 'num_chunks', 'unique_chunks'),
+        ('mtime', 'ctime', 'atime', 'isomtime', 'isoctime', 'isoatime'),
+        tuple(sorted(hashlib.algorithms_guaranteed)),
+        ('archiveid', 'archivename', 'extra'),
+        ('health', )
+    )
+
+    KEYS_REQUIRING_CACHE = (
+        'dsize', 'dcsize', 'unique_chunks',
+    )
+
+    @classmethod
+    def available_keys(cls):
+        class FakeArchive:
+            fpr = name = ""
+
+        from .item import Item
+        fake_item = Item(mode=0, path='', user='', group='', mtime=0, uid=0, gid=0)
+        formatter = cls(FakeArchive, "")
+        keys = []
+        keys.extend(formatter.call_keys.keys())
+        keys.extend(formatter.get_item_data(fake_item).keys())
+        return keys
+
+    @classmethod
+    def keys_help(cls):
+        help = []
+        keys = cls.available_keys()
+        for key in cls.FIXED_KEYS:
+            keys.remove(key)
+
+        for group in cls.KEY_GROUPS:
+            for key in group:
+                keys.remove(key)
+                text = "- " + key
+                if key in cls.KEY_DESCRIPTIONS:
+                    text += ": " + cls.KEY_DESCRIPTIONS[key]
+                help.append(text)
+            help.append("")
+        assert not keys, str(keys)
+        return "\n".join(help)
+
+    @classmethod
+    def format_needs_cache(cls, format):
+        format_keys = {f[1] for f in Formatter().parse(format)}
+        return any(key in cls.KEYS_REQUIRING_CACHE for key in format_keys)
+
+    def __init__(self, archive, format, *, json_lines=False):
+        self.archive = archive
+        self.json_lines = json_lines
+        static_keys = {
+            'archivename': archive.name,
+            'archiveid': archive.fpr,
+        }
+        static_keys.update(self.FIXED_KEYS)
+        self.format = partial_format(format, static_keys)
+        self.format_keys = {f[1] for f in Formatter().parse(format)}
+        self.call_keys = {
+            'size': self.calculate_size,
+            'csize': self.calculate_csize,
+            'dsize': partial(self.sum_unique_chunks_metadata, lambda chunk: chunk.size),
+            'dcsize': partial(self.sum_unique_chunks_metadata, lambda chunk: chunk.csize),
+            'num_chunks': self.calculate_num_chunks,
+            'unique_chunks': partial(self.sum_unique_chunks_metadata, lambda chunk: 1),
+            'isomtime': partial(self.format_time, 'mtime'),
+            'isoctime': partial(self.format_time, 'ctime'),
+            'isoatime': partial(self.format_time, 'atime'),
+            'mtime': partial(self.time, 'mtime'),
+            'ctime': partial(self.time, 'ctime'),
+            'atime': partial(self.time, 'atime'),
+        }
+        for hash_function in hashlib.algorithms_guaranteed:
+            self.add_key(hash_function, partial(self.hash_item, hash_function))
+        self.used_call_keys = set(self.call_keys) & self.format_keys
+        if self.json_lines:
+            self.item_data = {}
+            self.format_item = self.format_item_json
+        else:
+            self.item_data = static_keys
+
+    def format_item_json(self, item):
+        return json.dumps(self.get_item_data(item)) + '\n'
+
+    def add_key(self, key, callable_with_item):
+        self.call_keys[key] = callable_with_item
+        self.used_call_keys = set(self.call_keys) & self.format_keys
+
+    def get_item_data(self, item):
+        item_data = {}
+        item_data.update(self.item_data)
+        mode = stat.filemode(item.mode)
+        item_type = mode[0]
+
+        source = item.get('source', '')
+        extra = ''
+        if source:
+            source = remove_surrogates(source)
+            if item_type == 'l':
+                extra = ' -> %s' % source
+            else:
+                mode = 'h' + mode[1:]
+                extra = ' link to %s' % source
+        item_data['type'] = item_type
+        item_data['mode'] = mode
+        item_data['user'] = item.user or item.uid
+        item_data['group'] = item.group or item.gid
+        item_data['uid'] = item.uid
+        item_data['gid'] = item.gid
+        item_data['path'] = remove_surrogates(item.path)
+        if self.json_lines:
+            item_data['healthy'] = 'chunks_healthy' not in item
+        else:
+            item_data['bpath'] = item.path
+            item_data['extra'] = extra
+            item_data['health'] = 'broken' if 'chunks_healthy' in item else 'healthy'
+        item_data['source'] = source
+        item_data['linktarget'] = source
+        item_data['flags'] = item.get('bsdflags')
+        for key in self.used_call_keys:
+            item_data[key] = self.call_keys[key](item)
+        return item_data
+
+    def sum_unique_chunks_metadata(self, metadata_func, item):
+        """
+        sum unique chunks metadata, a unique chunk is a chunk which is referenced globally as often as it is in the
+        item
+
+        item: The item to sum its unique chunks' metadata
+        metadata_func: A function that takes a parameter of type ChunkIndexEntry and returns a number, used to return
+                       the metadata needed from the chunk
+        """
+        chunk_index = self.archive.cache.chunks
+        chunks = item.get('chunks', [])
+        chunks_counter = Counter(c.id for c in chunks)
+        return sum(metadata_func(c) for c in chunks if chunk_index[c.id].refcount == chunks_counter[c.id])
+
+    def calculate_num_chunks(self, item):
+        return len(item.get('chunks', []))
+
+    def calculate_size(self, item):
+        # note: does not support hardlink slaves, they will be size 0
+        return item.get_size(compressed=False)
+
+    def calculate_csize(self, item):
+        # note: does not support hardlink slaves, they will be csize 0
+        return item.get_size(compressed=True)
+
+    def hash_item(self, hash_function, item):
+        if 'chunks' not in item:
+            return ""
+        hash = hashlib.new(hash_function)
+        for data in self.archive.pipeline.fetch_many([c.id for c in item.chunks]):
+            hash.update(data)
+        return hash.hexdigest()
+
+    def format_time(self, key, item):
+        return format_time(safe_timestamp(item.get(key) or item.mtime))
+
+    def time(self, key, item):
+        return safe_timestamp(item.get(key) or item.mtime)
+
+
+class ChunkIteratorFileWrapper:
+    """File-like wrapper for chunk iterators"""
+
+    def __init__(self, chunk_iterator, read_callback=None):
+        """
+        *chunk_iterator* should be an iterator yielding bytes. These will be buffered
+        internally as necessary to satisfy .read() calls.
+
+        *read_callback* will be called with one argument, some byte string that has
+        just been read and will be subsequently returned to a caller of .read().
+        It can be used to update a progress display.
+        """
+        self.chunk_iterator = chunk_iterator
+        self.chunk_offset = 0
+        self.chunk = b''
+        self.exhausted = False
+        self.read_callback = read_callback
+
+    def _refill(self):
+        remaining = len(self.chunk) - self.chunk_offset
+        if not remaining:
+            try:
+                chunk = next(self.chunk_iterator)
+                self.chunk = memoryview(chunk)
+            except StopIteration:
+                self.exhausted = True
+                return 0  # EOF
+            self.chunk_offset = 0
+            remaining = len(self.chunk)
+        return remaining
+
+    def _read(self, nbytes):
+        if not nbytes:
+            return b''
+        remaining = self._refill()
+        will_read = min(remaining, nbytes)
+        self.chunk_offset += will_read
+        return self.chunk[self.chunk_offset - will_read:self.chunk_offset]
+
+    def read(self, nbytes):
+        parts = []
+        while nbytes and not self.exhausted:
+            read_data = self._read(nbytes)
+            nbytes -= len(read_data)
+            parts.append(read_data)
+            if self.read_callback:
+                self.read_callback(read_data)
+        return b''.join(parts)
+
+
+def open_item(archive, item):
+    """Return file-like object for archived item (with chunks)."""
+    chunk_iterator = archive.pipeline.fetch_many([c.id for c in item.chunks])
+    return ChunkIteratorFileWrapper(chunk_iterator)
+
+
+def file_status(mode):
+    if stat.S_ISREG(mode):
+        return 'A'
+    elif stat.S_ISDIR(mode):
+        return 'd'
+    elif stat.S_ISBLK(mode):
+        return 'b'
+    elif stat.S_ISCHR(mode):
+        return 'c'
+    elif stat.S_ISLNK(mode):
+        return 's'
+    elif stat.S_ISFIFO(mode):
+        return 'f'
+    return '?'
+
+
+def hardlinkable(mode):
+    """return True if we support hardlinked items of this type"""
+    return stat.S_ISREG(mode) or stat.S_ISBLK(mode) or stat.S_ISCHR(mode) or stat.S_ISFIFO(mode)
+
+
+def chunkit(it, size):
+    """
+    Chunk an iterator <it> into pieces of <size>.
+
+    >>> list(chunker('ABCDEFG', 3))
+    [['A', 'B', 'C'], ['D', 'E', 'F'], ['G']]
+    """
+    iterable = iter(it)
+    return iter(lambda: list(islice(iterable, size)), [])
+
+
+def consume(iterator, n=None):
+    """Advance the iterator n-steps ahead. If n is none, consume entirely."""
+    # Use functions that consume iterators at C speed.
+    if n is None:
+        # feed the entire iterator into a zero-length deque
+        deque(iterator, maxlen=0)
+    else:
+        # advance to the empty slice starting at position n
+        next(islice(iterator, n, n), None)
+
+
+def scandir_inorder(path='.'):
+    return sorted(os.scandir(path), key=lambda dirent: dirent.inode())
+
+
+def clean_lines(lines, lstrip=None, rstrip=None, remove_empty=True, remove_comments=True):
+    """
+    clean lines (usually read from a config file):
+
+    1. strip whitespace (left and right), 2. remove empty lines, 3. remove comments.
+
+    note: only "pure comment lines" are supported, no support for "trailing comments".
+
+    :param lines: input line iterator (e.g. list or open text file) that gives unclean input lines
+    :param lstrip: lstrip call arguments or False, if lstripping is not desired
+    :param rstrip: rstrip call arguments or False, if rstripping is not desired
+    :param remove_comments: remove comment lines (lines starting with "#")
+    :param remove_empty: remove empty lines
+    :return: yields processed lines
+    """
+    for line in lines:
+        if lstrip is not False:
+            line = line.lstrip(lstrip)
+        if rstrip is not False:
+            line = line.rstrip(rstrip)
+        if remove_empty and not line:
+            continue
+        if remove_comments and line.startswith('#'):
+            continue
+        yield line
+
+
+class ErrorIgnoringTextIOWrapper(io.TextIOWrapper):
+    def read(self, n):
+        if not self.closed:
+            try:
+                return super().read(n)
+            except BrokenPipeError:
+                try:
+                    super().close()
+                except OSError:
+                    pass
+        return ''
+
+    def write(self, s):
+        if not self.closed:
+            try:
+                return super().write(s)
+            except BrokenPipeError:
+                try:
+                    super().close()
+                except OSError:
+                    pass
+        return len(s)
+
+
+class SignalException(BaseException):
+    """base class for all signal-based exceptions"""
+
+
+class SigHup(SignalException):
+    """raised on SIGHUP signal"""
+
+
+class SigTerm(SignalException):
+    """raised on SIGTERM signal"""
+
+
+@contextlib.contextmanager
+def signal_handler(sig, handler):
+    """
+    when entering context, set up signal handler <handler> for signal <sig>.
+    when leaving context, restore original signal handler.
+
+    <sig> can bei either a str when giving a signal.SIGXXX attribute name (it
+    won't crash if the attribute name does not exist as some names are platform
+    specific) or a int, when giving a signal number.
+
+    <handler> is any handler value as accepted by the signal.signal(sig, handler).
+    """
+    if isinstance(sig, str):
+        sig = getattr(signal, sig, None)
+    if sig is not None:
+        orig_handler = signal.signal(sig, handler)
+    try:
+        yield
+    finally:
+        if sig is not None:
+            signal.signal(sig, orig_handler)
+
+
+def raising_signal_handler(exc_cls):
+    def handler(sig_no, frame):
+        # setting SIG_IGN avoids that an incoming second signal of this
+        # kind would raise a 2nd exception while we still process the
+        # exception handler for exc_cls for the 1st signal.
+        signal.signal(sig_no, signal.SIG_IGN)
+        raise exc_cls
+
+    return handler
+
+
+def swidth_slice(string, max_width):
+    """
+    Return a slice of *max_width* cells from *string*.
+
+    Negative *max_width* means from the end of string.
+
+    *max_width* is in units of character cells (or "columns").
+    Latin characters are usually one cell wide, many CJK characters are two cells wide.
+    """
+    from .platform import swidth
+    reverse = max_width < 0
+    max_width = abs(max_width)
+    if reverse:
+        string = reversed(string)
+    current_swidth = 0
+    result = []
+    for character in string:
+        current_swidth += swidth(character)
+        if current_swidth > max_width:
+            break
+        result.append(character)
+    if reverse:
+        result.reverse()
+    return ''.join(result)
+
+
+class BorgJsonEncoder(json.JSONEncoder):
+    def default(self, o):
+        from .repository import Repository
+        from .remote import RemoteRepository
+        from .archive import Archive
+        from .cache import LocalCache, AdHocCache
+        if isinstance(o, Repository) or isinstance(o, RemoteRepository):
+            return {
+                'id': bin_to_hex(o.id),
+                'location': o._location.canonical_path(),
+            }
+        if isinstance(o, Archive):
+            return o.info()
+        if isinstance(o, LocalCache):
+            return {
+                'path': o.path,
+                'stats': o.stats(),
+            }
+        if isinstance(o, AdHocCache):
+            return {
+                'stats': o.stats(),
+            }
+        return super().default(o)
+
+
+def basic_json_data(manifest, *, cache=None, extra=None):
+    key = manifest.key
+    data = extra or {}
+    data.update({
+        'repository': BorgJsonEncoder().default(manifest.repository),
+        'encryption': {
+            'mode': key.ARG_NAME,
+        },
+    })
+    data['repository']['last_modified'] = format_time(to_localtime(manifest.last_timestamp.replace(tzinfo=timezone.utc)))
+    if key.NAME.startswith('key file'):
+        data['encryption']['keyfile'] = key.find_key()
+    if cache:
+        data['cache'] = cache
+    return data
+
+
+def json_dump(obj):
+    """Dump using BorgJSONEncoder."""
+    return json.dumps(obj, sort_keys=True, indent=4, cls=BorgJsonEncoder)
+
+
+def json_print(obj):
+    print(json_dump(obj))
+
+
+def secure_erase(path):
+    """Attempt to securely erase a file by writing random data over it before deleting it."""
+    with open(path, 'r+b') as fd:
+        length = os.stat(fd.fileno()).st_size
+        fd.write(os.urandom(length))
+        fd.flush()
+        os.fsync(fd.fileno())
+    os.unlink(path)
+
+
+def truncate_and_unlink(path):
+    """
+    Truncate and then unlink *path*.
+
+    Do not create *path* if it does not exist.
+    Open *path* for truncation in r+b mode (=O_RDWR|O_BINARY).
+
+    Use this when deleting potentially large files when recovering
+    from a VFS error such as ENOSPC. It can help a full file system
+    recover. Refer to the "File system interaction" section
+    in repository.py for further explanations.
+    """
+    with open(path, 'r+b') as fd:
+        fd.truncate()
+    os.unlink(path)
+
+
+def popen_with_error_handling(cmd_line: str, log_prefix='', **kwargs):
+    """
+    Handle typical errors raised by subprocess.Popen. Return None if an error occurred,
+    otherwise return the Popen object.
+
+    *cmd_line* is split using shlex (e.g. 'gzip -9' => ['gzip', '-9']).
+
+    Log messages will be prefixed with *log_prefix*; if set, it should end with a space
+    (e.g. log_prefix='--some-option: ').
+
+    Does not change the exit code.
+    """
+    assert not kwargs.get('shell'), 'Sorry pal, shell mode is a no-no'
+    try:
+        command = shlex.split(cmd_line)
+        if not command:
+            raise ValueError('an empty command line is not permitted')
+    except ValueError as ve:
+        logger.error('%s%s', log_prefix, ve)
+        return
+    logger.debug('%scommand line: %s', log_prefix, command)
+    try:
+        return subprocess.Popen(command, **kwargs)
+    except FileNotFoundError:
+        logger.error('%sexecutable not found: %s', log_prefix, command[0])
+        return
+    except PermissionError:
+        logger.error('%spermission denied: %s', log_prefix, command[0])
+        return
+
+
+def dash_open(path, mode):
+    assert '+' not in mode  # the streams are either r or w, but never both
+    if path == '-':
+        stream = sys.stdin if 'r' in mode else sys.stdout
+        return stream.buffer if 'b' in mode else stream
+    else:
+        return open(path, mode)
+
+
+def is_terminal(fd=sys.stdout):
+    return hasattr(fd, 'isatty') and fd.isatty() and (sys.platform != 'win32' or 'ANSICON' in os.environ)
+
+
+def umount(mountpoint):
+    try:
+        return subprocess.call(['fusermount', '-u', mountpoint])
+    except FileNotFoundError:
+        return subprocess.call(['umount', mountpoint])
diff --git a/src/borg/helpers/__init__.py b/src/borg/helpers/__init__.py
deleted file mode 100644
index b1c875a4..00000000
--- a/src/borg/helpers/__init__.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-This package contains all sorts of small helper / utility functionality,
-that did not fit better elsewhere.
-
-Code used to be in borg/helpers.py but was split into the modules in this
-package, which are imported into here for compatibility.
-"""
-
-from .checks import *  # NOQA
-from .datastruct import *  # NOQA
-from .errors import *  # NOQA
-from .fs import *  # NOQA
-from .manifest import *  # NOQA
-from .misc import *  # NOQA
-from .msgpack import *  # NOQA
-from .parseformat import *  # NOQA
-from .process import *  # NOQA
-from .progress import *  # NOQA
-from .time import *  # NOQA
-from .usergroup import *  # NOQA
-from .yes import *  # NOQA
-
-"""
-The global exit_code variable is used so that modules other than archiver can increase the program exit code if a
-warning or error occurred during their operation. This is different from archiver.exit_code, which is only accessible
-from the archiver object.
-
-Note: keep this in helpers/__init__.py as the code expects to be able to assign to helpers.exit_code.
-"""
-exit_code = EXIT_SUCCESS
-
-
-def set_ec(ec):
-    """
-    Sets the exit code of the program, if an exit code higher or equal than this is set, this does nothing. This
-    makes EXIT_ERROR override EXIT_WARNING, etc..
-
-    ec: exit code to set
-    """
-    global exit_code
-    exit_code = max(exit_code, ec)
-    return exit_code
diff --git a/src/borg/helpers/checks.py b/src/borg/helpers/checks.py
deleted file mode 100644
index a226b228..00000000
--- a/src/borg/helpers/checks.py
+++ /dev/null
@@ -1,34 +0,0 @@
-import os
-
-from .errors import Error
-
-
-class PythonLibcTooOld(Error):
-    """FATAL: this Python was compiled for a too old (g)libc and misses required functionality."""
-
-
-def check_python():
-    required_funcs = {os.stat, os.utime, os.chown}
-    if not os.supports_follow_symlinks.issuperset(required_funcs):
-        raise PythonLibcTooOld
-
-
-class ExtensionModuleError(Error):
-    """The Borg binary extension modules do not seem to be properly installed."""
-
-
-def check_extension_modules():
-    import borg.crypto.low_level
-    from .. import platform, compress, item, chunker, hashindex
-    if hashindex.API_VERSION != '1.1_07':
-        raise ExtensionModuleError
-    if chunker.API_VERSION != '1.1_01':
-        raise ExtensionModuleError
-    if compress.API_VERSION != '1.1_03':
-        raise ExtensionModuleError
-    if borg.crypto.low_level.API_VERSION != '1.1_02':
-        raise ExtensionModuleError
-    if platform.API_VERSION != platform.OS_API_VERSION != '1.1_02':
-        raise ExtensionModuleError
-    if item.API_VERSION != '1.1_03':
-        raise ExtensionModuleError
diff --git a/src/borg/helpers/datastruct.py b/src/borg/helpers/datastruct.py
deleted file mode 100644
index 0b465ee5..00000000
--- a/src/borg/helpers/datastruct.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import threading
-from collections import namedtuple
-
-from .errors import Error
-
-
-class StableDict(dict):
-    """A dict subclass with stable items() ordering"""
-    def items(self):
-        return sorted(super().items())
-
-
-class Buffer:
-    """provide a thread-local buffer"""
-
-    class MemoryLimitExceeded(Error, OSError):
-        """Requested buffer size {} is above the limit of {}."""
-
-    def __init__(self, allocator, size=4096, limit=None):
-        """
-        Initialize the buffer: use allocator(size) call to allocate a buffer.
-        Optionally, set the upper <limit> for the buffer size.
-        """
-        assert callable(allocator), 'must give alloc(size) function as first param'
-        assert limit is None or size <= limit, 'initial size must be <= limit'
-        self._thread_local = threading.local()
-        self.allocator = allocator
-        self.limit = limit
-        self.resize(size, init=True)
-
-    def __len__(self):
-        return len(self._thread_local.buffer)
-
-    def resize(self, size, init=False):
-        """
-        resize the buffer - to avoid frequent reallocation, we usually always grow (if needed).
-        giving init=True it is possible to first-time initialize or shrink the buffer.
-        if a buffer size beyond the limit is requested, raise Buffer.MemoryLimitExceeded (OSError).
-        """
-        size = int(size)
-        if self.limit is not None and size > self.limit:
-            raise Buffer.MemoryLimitExceeded(size, self.limit)
-        if init or len(self) < size:
-            self._thread_local.buffer = self.allocator(size)
-
-    def get(self, size=None, init=False):
-        """
-        return a buffer of at least the requested size (None: any current size).
-        init=True can be given to trigger shrinking of the buffer to the given size.
-        """
-        if size is not None:
-            self.resize(size, init)
-        return self._thread_local.buffer
diff --git a/src/borg/helpers/errors.py b/src/borg/helpers/errors.py
deleted file mode 100644
index 80a47a9b..00000000
--- a/src/borg/helpers/errors.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from ..constants import *  # NOQA
-
-import borg.crypto.low_level
-
-
-class Error(Exception):
-    """Error base class"""
-
-    # if we raise such an Error and it is only catched by the uppermost
-    # exception handler (that exits short after with the given exit_code),
-    # it is always a (fatal and abrupt) EXIT_ERROR, never just a warning.
-    exit_code = EXIT_ERROR
-    # show a traceback?
-    traceback = False
-
-    def __init__(self, *args):
-        super().__init__(*args)
-        self.args = args
-
-    def get_message(self):
-        return type(self).__doc__.format(*self.args)
-
-    __str__ = get_message
-
-
-class ErrorWithTraceback(Error):
-    """like Error, but show a traceback also"""
-    traceback = True
-
-
-class IntegrityError(ErrorWithTraceback, borg.crypto.low_level.IntegrityError):
-    """Data integrity error: {}"""
-
-
-class DecompressionError(IntegrityError):
-    """Decompression error: {}"""
diff --git a/src/borg/helpers/fs.py b/src/borg/helpers/fs.py
deleted file mode 100644
index be05d0fa..00000000
--- a/src/borg/helpers/fs.py
+++ /dev/null
@@ -1,160 +0,0 @@
-import os
-import os.path
-import re
-import stat
-import subprocess
-import sys
-import textwrap
-
-from ..constants import *  # NOQA
-
-
-def get_home_dir():
-    """Get user's home directory while preferring a possibly set HOME
-    environment variable
-    """
-    # os.path.expanduser() behaves differently for '~' and '~someuser' as
-    # parameters: when called with an explicit username, the possibly set
-    # environment variable HOME is no longer respected. So we have to check if
-    # it is set and only expand the user's home directory if HOME is unset.
-    if os.environ.get('HOME', ''):
-        return os.environ.get('HOME')
-    else:
-        return os.path.expanduser('~%s' % os.environ.get('USER', ''))
-
-
-def get_keys_dir():
-    """Determine where to repository keys and cache"""
-
-    xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config'))
-    keys_dir = os.environ.get('BORG_KEYS_DIR', os.path.join(xdg_config, 'borg', 'keys'))
-    if not os.path.exists(keys_dir):
-        os.makedirs(keys_dir)
-        os.chmod(keys_dir, stat.S_IRWXU)
-    return keys_dir
-
-
-def get_security_dir(repository_id=None):
-    """Determine where to store local security information."""
-    xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config'))
-    security_dir = os.environ.get('BORG_SECURITY_DIR', os.path.join(xdg_config, 'borg', 'security'))
-    if repository_id:
-        security_dir = os.path.join(security_dir, repository_id)
-    if not os.path.exists(security_dir):
-        os.makedirs(security_dir)
-        os.chmod(security_dir, stat.S_IRWXU)
-    return security_dir
-
-
-def get_cache_dir():
-    """Determine where to repository keys and cache"""
-    xdg_cache = os.environ.get('XDG_CACHE_HOME', os.path.join(get_home_dir(), '.cache'))
-    cache_dir = os.environ.get('BORG_CACHE_DIR', os.path.join(xdg_cache, 'borg'))
-    if not os.path.exists(cache_dir):
-        os.makedirs(cache_dir)
-        os.chmod(cache_dir, stat.S_IRWXU)
-        with open(os.path.join(cache_dir, CACHE_TAG_NAME), 'wb') as fd:
-            fd.write(CACHE_TAG_CONTENTS)
-            fd.write(textwrap.dedent("""
-                # This file is a cache directory tag created by Borg.
-                # For information about cache directory tags, see:
-                #       http://www.brynosaurus.com/cachedir/
-                """).encode('ascii'))
-    return cache_dir
-
-
-def dir_is_cachedir(path):
-    """Determines whether the specified path is a cache directory (and
-    therefore should potentially be excluded from the backup) according to
-    the CACHEDIR.TAG protocol
-    (http://www.brynosaurus.com/cachedir/spec.html).
-    """
-
-    tag_path = os.path.join(path, CACHE_TAG_NAME)
-    try:
-        if os.path.exists(tag_path):
-            with open(tag_path, 'rb') as tag_file:
-                tag_data = tag_file.read(len(CACHE_TAG_CONTENTS))
-                if tag_data == CACHE_TAG_CONTENTS:
-                    return True
-    except OSError:
-        pass
-    return False
-
-
-def dir_is_tagged(path, exclude_caches, exclude_if_present):
-    """Determines whether the specified path is excluded by being a cache
-    directory or containing user-specified tag files/directories. Returns a
-    list of the paths of the tag files/directories (either CACHEDIR.TAG or the
-    matching user-specified files/directories).
-    """
-    tag_paths = []
-    if exclude_caches and dir_is_cachedir(path):
-        tag_paths.append(os.path.join(path, CACHE_TAG_NAME))
-    if exclude_if_present is not None:
-        for tag in exclude_if_present:
-            tag_path = os.path.join(path, tag)
-            if os.path.exists(tag_path):
-                tag_paths.append(tag_path)
-    return tag_paths
-
-
-_safe_re = re.compile(r'^((\.\.)?/+)+')
-
-
-def make_path_safe(path):
-    """Make path safe by making it relative and local
-    """
-    return _safe_re.sub('', path) or '.'
-
-
-def hardlinkable(mode):
-    """return True if we support hardlinked items of this type"""
-    return stat.S_ISREG(mode) or stat.S_ISBLK(mode) or stat.S_ISCHR(mode) or stat.S_ISFIFO(mode)
-
-
-def scandir_inorder(path='.'):
-    return sorted(os.scandir(path), key=lambda dirent: dirent.inode())
-
-
-def secure_erase(path):
-    """Attempt to securely erase a file by writing random data over it before deleting it."""
-    with open(path, 'r+b') as fd:
-        length = os.stat(fd.fileno()).st_size
-        fd.write(os.urandom(length))
-        fd.flush()
-        os.fsync(fd.fileno())
-    os.unlink(path)
-
-
-def truncate_and_unlink(path):
-    """
-    Truncate and then unlink *path*.
-
-    Do not create *path* if it does not exist.
-    Open *path* for truncation in r+b mode (=O_RDWR|O_BINARY).
-
-    Use this when deleting potentially large files when recovering
-    from a VFS error such as ENOSPC. It can help a full file system
-    recover. Refer to the "File system interaction" section
-    in repository.py for further explanations.
-    """
-    with open(path, 'r+b') as fd:
-        fd.truncate()
-    os.unlink(path)
-
-
-def dash_open(path, mode):
-    assert '+' not in mode  # the streams are either r or w, but never both
-    if path == '-':
-        stream = sys.stdin if 'r' in mode else sys.stdout
-        return stream.buffer if 'b' in mode else stream
-    else:
-        return open(path, mode)
-
-
-def umount(mountpoint):
-    try:
-        return subprocess.call(['fusermount', '-u', mountpoint])
-    except FileNotFoundError:
-        return subprocess.call(['umount', mountpoint])
diff --git a/src/borg/helpers/manifest.py b/src/borg/helpers/manifest.py
deleted file mode 100644
index e92672f4..00000000
--- a/src/borg/helpers/manifest.py
+++ /dev/null
@@ -1,258 +0,0 @@
-import enum
-import os
-import os.path
-import re
-from collections import abc, namedtuple
-from datetime import datetime, timedelta
-from operator import attrgetter
-
-from .errors import Error
-
-from ..logger import create_logger
-logger = create_logger()
-
-from .datastruct import StableDict
-from .parseformat import bin_to_hex, safe_encode, safe_decode
-from .time import parse_timestamp
-from .. import shellpattern
-from ..constants import *  # NOQA
-
-
-class NoManifestError(Error):
-    """Repository has no manifest."""
-
-
-class MandatoryFeatureUnsupported(Error):
-    """Unsupported repository feature(s) {}. A newer version of borg is required to access this repository."""
-
-
-ArchiveInfo = namedtuple('ArchiveInfo', 'name id ts')
-
-AI_HUMAN_SORT_KEYS = ['timestamp'] + list(ArchiveInfo._fields)
-AI_HUMAN_SORT_KEYS.remove('ts')
-
-
-class Archives(abc.MutableMapping):
-    """
-    Nice wrapper around the archives dict, making sure only valid types/values get in
-    and we can deal with str keys (and it internally encodes to byte keys) and either
-    str timestamps or datetime timestamps.
-    """
-    def __init__(self):
-        # key: encoded archive name, value: dict(b'id': bytes_id, b'time': bytes_iso_ts)
-        self._archives = {}
-
-    def __len__(self):
-        return len(self._archives)
-
-    def __iter__(self):
-        return iter(safe_decode(name) for name in self._archives)
-
-    def __getitem__(self, name):
-        assert isinstance(name, str)
-        _name = safe_encode(name)
-        values = self._archives.get(_name)
-        if values is None:
-            raise KeyError
-        ts = parse_timestamp(values[b'time'].decode('utf-8'))
-        return ArchiveInfo(name=name, id=values[b'id'], ts=ts)
-
-    def __setitem__(self, name, info):
-        assert isinstance(name, str)
-        name = safe_encode(name)
-        assert isinstance(info, tuple)
-        id, ts = info
-        assert isinstance(id, bytes)
-        if isinstance(ts, datetime):
-            ts = ts.replace(tzinfo=None).isoformat()
-        assert isinstance(ts, str)
-        ts = ts.encode()
-        self._archives[name] = {b'id': id, b'time': ts}
-
-    def __delitem__(self, name):
-        assert isinstance(name, str)
-        name = safe_encode(name)
-        del self._archives[name]
-
-    def list(self, *, glob=None, match_end=r'\Z', sort_by=(), first=None, last=None, reverse=False):
-        """
-        Return list of ArchiveInfo instances according to the parameters.
-
-        First match *glob* (considering *match_end*), then *sort_by*.
-        Apply *first* and *last* filters, and then possibly *reverse* the list.
-
-        *sort_by* is a list of sort keys applied in reverse order.
-        """
-        if isinstance(sort_by, (str, bytes)):
-            raise TypeError('sort_by must be a sequence of str')
-        regex = re.compile(shellpattern.translate(glob or '*', match_end=match_end))
-        archives = [x for x in self.values() if regex.match(x.name) is not None]
-        for sortkey in reversed(sort_by):
-            archives.sort(key=attrgetter(sortkey))
-        if first:
-            archives = archives[:first]
-        elif last:
-            archives = archives[max(len(archives) - last, 0):]
-        if reverse:
-            archives.reverse()
-        return archives
-
-    def list_considering(self, args):
-        """
-        get a list of archives, considering --first/last/prefix/glob-archives/sort cmdline args
-        """
-        if args.location.archive:
-            raise Error('The options --first, --last, --prefix and --glob-archives can only be used on repository targets.')
-        if args.prefix:
-            args.glob_archives = args.prefix + '*'
-        return self.list(sort_by=args.sort_by.split(','), glob=args.glob_archives, first=args.first, last=args.last)
-
-    def set_raw_dict(self, d):
-        """set the dict we get from the msgpack unpacker"""
-        for k, v in d.items():
-            assert isinstance(k, bytes)
-            assert isinstance(v, dict) and b'id' in v and b'time' in v
-            self._archives[k] = v
-
-    def get_raw_dict(self):
-        """get the dict we can give to the msgpack packer"""
-        return self._archives
-
-
-class Manifest:
-
-    @enum.unique
-    class Operation(enum.Enum):
-        # The comments here only roughly describe the scope of each feature. In the end, additions need to be
-        # based on potential problems older clients could produce when accessing newer repositories and the
-        # tradeofs of locking version out or still allowing access. As all older versions and their exact
-        # behaviours are known when introducing new features sometimes this might not match the general descriptions
-        # below.
-
-        # The READ operation describes which features are needed to safely list and extract the archives in the
-        # repository.
-        READ = 'read'
-        # The CHECK operation is for all operations that need either to understand every detail
-        # of the repository (for consistency checks and repairs) or are seldom used functions that just
-        # should use the most restrictive feature set because more fine grained compatibility tracking is
-        # not needed.
-        CHECK = 'check'
-        # The WRITE operation is for adding archives. Features here ensure that older clients don't add archives
-        # in an old format, or is used to lock out clients that for other reasons can no longer safely add new
-        # archives.
-        WRITE = 'write'
-        # The DELETE operation is for all operations (like archive deletion) that need a 100% correct reference
-        # count and the need to be able to find all (directly and indirectly) referenced chunks of a given archive.
-        DELETE = 'delete'
-
-    NO_OPERATION_CHECK = tuple()
-
-    SUPPORTED_REPO_FEATURES = frozenset([])
-
-    MANIFEST_ID = b'\0' * 32
-
-    def __init__(self, key, repository, item_keys=None):
-        self.archives = Archives()
-        self.config = {}
-        self.key = key
-        self.repository = repository
-        self.item_keys = frozenset(item_keys) if item_keys is not None else ITEM_KEYS
-        self.tam_verified = False
-        self.timestamp = None
-
-    @property
-    def id_str(self):
-        return bin_to_hex(self.id)
-
-    @property
-    def last_timestamp(self):
-        return datetime.strptime(self.timestamp, "%Y-%m-%dT%H:%M:%S.%f")
-
-    @classmethod
-    def load(cls, repository, operations, key=None, force_tam_not_required=False):
-        from ..item import ManifestItem
-        from ..crypto.key import key_factory, tam_required_file, tam_required
-        from ..repository import Repository
-        try:
-            cdata = repository.get(cls.MANIFEST_ID)
-        except Repository.ObjectNotFound:
-            raise NoManifestError
-        if not key:
-            key = key_factory(repository, cdata)
-        manifest = cls(key, repository)
-        data = key.decrypt(None, cdata)
-        manifest_dict, manifest.tam_verified = key.unpack_and_verify_manifest(data, force_tam_not_required=force_tam_not_required)
-        m = ManifestItem(internal_dict=manifest_dict)
-        manifest.id = key.id_hash(data)
-        if m.get('version') not in (1, 2):
-            raise ValueError('Invalid manifest version')
-        manifest.archives.set_raw_dict(m.archives)
-        manifest.timestamp = m.get('timestamp')
-        manifest.config = m.config
-        # valid item keys are whatever is known in the repo or every key we know
-        manifest.item_keys = ITEM_KEYS | frozenset(key.decode() for key in m.get('item_keys', []))
-
-        if manifest.tam_verified:
-            manifest_required = manifest.config.get(b'tam_required', False)
-            security_required = tam_required(repository)
-            if manifest_required and not security_required:
-                logger.debug('Manifest is TAM verified and says TAM is required, updating security database...')
-                file = tam_required_file(repository)
-                open(file, 'w').close()
-            if not manifest_required and security_required:
-                logger.debug('Manifest is TAM verified and says TAM is *not* required, updating security database...')
-                os.unlink(tam_required_file(repository))
-        manifest.check_repository_compatibility(operations)
-        return manifest, key
-
-    def check_repository_compatibility(self, operations):
-        for operation in operations:
-            assert isinstance(operation, self.Operation)
-            feature_flags = self.config.get(b'feature_flags', None)
-            if feature_flags is None:
-                return
-            if operation.value.encode() not in feature_flags:
-                continue
-            requirements = feature_flags[operation.value.encode()]
-            if b'mandatory' in requirements:
-                unsupported = set(requirements[b'mandatory']) - self.SUPPORTED_REPO_FEATURES
-                if unsupported:
-                    raise MandatoryFeatureUnsupported([f.decode() for f in unsupported])
-
-    def get_all_mandatory_features(self):
-        result = {}
-        feature_flags = self.config.get(b'feature_flags', None)
-        if feature_flags is None:
-            return result
-
-        for operation, requirements in feature_flags.items():
-            if b'mandatory' in requirements:
-                result[operation.decode()] = set([feature.decode() for feature in requirements[b'mandatory']])
-        return result
-
-    def write(self):
-        from ..item import ManifestItem
-        if self.key.tam_required:
-            self.config[b'tam_required'] = True
-        # self.timestamp needs to be strictly monotonically increasing. Clocks often are not set correctly
-        if self.timestamp is None:
-            self.timestamp = datetime.utcnow().isoformat()
-        else:
-            prev_ts = self.last_timestamp
-            incremented = (prev_ts + timedelta(microseconds=1)).isoformat()
-            self.timestamp = max(incremented, datetime.utcnow().isoformat())
-        # include checks for limits as enforced by limited unpacker (used by load())
-        assert len(self.archives) <= MAX_ARCHIVES
-        assert all(len(name) <= 255 for name in self.archives)
-        assert len(self.item_keys) <= 100
-        manifest = ManifestItem(
-            version=1,
-            archives=StableDict(self.archives.get_raw_dict()),
-            timestamp=self.timestamp,
-            config=StableDict(self.config),
-            item_keys=tuple(sorted(self.item_keys)),
-        )
-        self.tam_verified = True
-        data = self.key.pack_and_authenticate_metadata(manifest.as_dict())
-        self.id = self.key.id_hash(data)
-        self.repository.put(self.MANIFEST_ID, self.key.encrypt(data))
diff --git a/src/borg/helpers/misc.py b/src/borg/helpers/misc.py
deleted file mode 100644
index e33b46f0..00000000
--- a/src/borg/helpers/misc.py
+++ /dev/null
@@ -1,166 +0,0 @@
-import logging
-import io
-import os
-import os.path
-import platform
-import sys
-from collections import deque
-from datetime import datetime, timezone, timedelta
-from itertools import islice
-from operator import attrgetter
-
-from ..logger import create_logger
-logger = create_logger()
-
-from .time import to_localtime
-from .. import __version__ as borg_version
-from .. import chunker
-
-
-def prune_within(archives, hours):
-    target = datetime.now(timezone.utc) - timedelta(seconds=hours * 3600)
-    return [a for a in archives if a.ts > target]
-
-
-def prune_split(archives, pattern, n, skip=[]):
-    last = None
-    keep = []
-    if n == 0:
-        return keep
-    for a in sorted(archives, key=attrgetter('ts'), reverse=True):
-        period = to_localtime(a.ts).strftime(pattern)
-        if period != last:
-            last = period
-            if a not in skip:
-                keep.append(a)
-                if len(keep) == n:
-                    break
-    return keep
-
-
-def sysinfo():
-    info = []
-    info.append('Platform: %s' % (' '.join(platform.uname()), ))
-    if sys.platform.startswith('linux'):
-        info.append('Linux: %s %s %s' % platform.linux_distribution())
-    info.append('Borg: %s  Python: %s %s' % (borg_version, platform.python_implementation(), platform.python_version()))
-    info.append('PID: %d  CWD: %s' % (os.getpid(), os.getcwd()))
-    info.append('sys.argv: %r' % sys.argv)
-    info.append('SSH_ORIGINAL_COMMAND: %r' % os.environ.get('SSH_ORIGINAL_COMMAND'))
-    info.append('')
-    return '\n'.join(info)
-
-
-def log_multi(*msgs, level=logging.INFO, logger=logger):
-    """
-    log multiple lines of text, each line by a separate logging call for cosmetic reasons
-
-    each positional argument may be a single or multiple lines (separated by newlines) of text.
-    """
-    lines = []
-    for msg in msgs:
-        lines.extend(msg.splitlines())
-    for line in lines:
-        logger.log(level, line)
-
-
-class ChunkIteratorFileWrapper:
-    """File-like wrapper for chunk iterators"""
-
-    def __init__(self, chunk_iterator, read_callback=None):
-        """
-        *chunk_iterator* should be an iterator yielding bytes. These will be buffered
-        internally as necessary to satisfy .read() calls.
-
-        *read_callback* will be called with one argument, some byte string that has
-        just been read and will be subsequently returned to a caller of .read().
-        It can be used to update a progress display.
-        """
-        self.chunk_iterator = chunk_iterator
-        self.chunk_offset = 0
-        self.chunk = b''
-        self.exhausted = False
-        self.read_callback = read_callback
-
-    def _refill(self):
-        remaining = len(self.chunk) - self.chunk_offset
-        if not remaining:
-            try:
-                chunk = next(self.chunk_iterator)
-                self.chunk = memoryview(chunk)
-            except StopIteration:
-                self.exhausted = True
-                return 0  # EOF
-            self.chunk_offset = 0
-            remaining = len(self.chunk)
-        return remaining
-
-    def _read(self, nbytes):
-        if not nbytes:
-            return b''
-        remaining = self._refill()
-        will_read = min(remaining, nbytes)
-        self.chunk_offset += will_read
-        return self.chunk[self.chunk_offset - will_read:self.chunk_offset]
-
-    def read(self, nbytes):
-        parts = []
-        while nbytes and not self.exhausted:
-            read_data = self._read(nbytes)
-            nbytes -= len(read_data)
-            parts.append(read_data)
-            if self.read_callback:
-                self.read_callback(read_data)
-        return b''.join(parts)
-
-
-def open_item(archive, item):
-    """Return file-like object for archived item (with chunks)."""
-    chunk_iterator = archive.pipeline.fetch_many([c.id for c in item.chunks])
-    return ChunkIteratorFileWrapper(chunk_iterator)
-
-
-def chunkit(it, size):
-    """
-    Chunk an iterator <it> into pieces of <size>.
-
-    >>> list(chunker('ABCDEFG', 3))
-    [['A', 'B', 'C'], ['D', 'E', 'F'], ['G']]
-    """
-    iterable = iter(it)
-    return iter(lambda: list(islice(iterable, size)), [])
-
-
-def consume(iterator, n=None):
-    """Advance the iterator n-steps ahead. If n is none, consume entirely."""
-    # Use functions that consume iterators at C speed.
-    if n is None:
-        # feed the entire iterator into a zero-length deque
-        deque(iterator, maxlen=0)
-    else:
-        # advance to the empty slice starting at position n
-        next(islice(iterator, n, n), None)
-
-
-class ErrorIgnoringTextIOWrapper(io.TextIOWrapper):
-    def read(self, n):
-        if not self.closed:
-            try:
-                return super().read(n)
-            except BrokenPipeError:
-                try:
-                    super().close()
-                except OSError:
-                    pass
-        return ''
-
-    def write(self, s):
-        if not self.closed:
-            try:
-                return super().write(s)
-            except BrokenPipeError:
-                try:
-                    super().close()
-                except OSError:
-                    pass
-        return len(s)
diff --git a/src/borg/helpers/msgpack.py b/src/borg/helpers/msgpack.py
deleted file mode 100644
index 72bc1f45..00000000
--- a/src/borg/helpers/msgpack.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import msgpack
-import msgpack.fallback
-
-from .datastruct import StableDict
-from ..constants import *  # NOQA
-
-
-def is_slow_msgpack():
-    return msgpack.Packer is msgpack.fallback.Packer
-
-
-def get_limited_unpacker(kind):
-    """return a limited Unpacker because we should not trust msgpack data received from remote"""
-    args = dict(use_list=False,  # return tuples, not lists
-                max_bin_len=0,  # not used
-                max_ext_len=0,  # not used
-                max_buffer_size=3 * max(BUFSIZE, MAX_OBJECT_SIZE),
-                max_str_len=MAX_OBJECT_SIZE,  # a chunk or other repo object
-                )
-    if kind == 'server':
-        args.update(dict(max_array_len=100,  # misc. cmd tuples
-                         max_map_len=100,  # misc. cmd dicts
-                         ))
-    elif kind == 'client':
-        args.update(dict(max_array_len=LIST_SCAN_LIMIT,  # result list from repo.list() / .scan()
-                         max_map_len=100,  # misc. result dicts
-                         ))
-    elif kind == 'manifest':
-        args.update(dict(use_list=True,  # default value
-                         max_array_len=100,  # ITEM_KEYS ~= 22
-                         max_map_len=MAX_ARCHIVES,  # list of archives
-                         max_str_len=255,  # archive name
-                         object_hook=StableDict,
-                         unicode_errors='surrogateescape',
-                         ))
-    elif kind == 'key':
-        args.update(dict(use_list=True,  # default value
-                         max_array_len=0,  # not used
-                         max_map_len=10,  # EncryptedKey dict
-                         max_str_len=4000,  # inner key data
-                         object_hook=StableDict,
-                         unicode_errors='surrogateescape',
-                         ))
-    else:
-        raise ValueError('kind must be "server", "client", "manifest" or "key"')
-    return msgpack.Unpacker(**args)
-
-
-def bigint_to_int(mtime):
-    """Convert bytearray to int
-    """
-    if isinstance(mtime, bytes):
-        return int.from_bytes(mtime, 'little', signed=True)
-    return mtime
-
-
-def int_to_bigint(value):
-    """Convert integers larger than 64 bits to bytearray
-
-    Smaller integers are left alone
-    """
-    if value.bit_length() > 63:
-        return value.to_bytes((value.bit_length() + 9) // 8, 'little', signed=True)
-    return value
diff --git a/src/borg/helpers/parseformat.py b/src/borg/helpers/parseformat.py
deleted file mode 100644
index c8e65295..00000000
--- a/src/borg/helpers/parseformat.py
+++ /dev/null
@@ -1,959 +0,0 @@
-import argparse
-import hashlib
-import json
-import os
-import os.path
-import re
-import socket
-import stat
-import uuid
-from binascii import hexlify
-from collections import Counter, OrderedDict
-from datetime import datetime, timezone
-from functools import partial
-from string import Formatter
-
-from ..logger import create_logger
-logger = create_logger()
-
-from .errors import Error
-from .fs import get_keys_dir
-from .time import format_time, isoformat_time, to_localtime, safe_timestamp, safe_s
-from .usergroup import uid2user
-from .. import __version__ as borg_version
-from .. import __version_tuple__ as borg_version_tuple
-from ..constants import *  # NOQA
-
-
-def bin_to_hex(binary):
-    return hexlify(binary).decode('ascii')
-
-
-def safe_decode(s, coding='utf-8', errors='surrogateescape'):
-    """decode bytes to str, with round-tripping "invalid" bytes"""
-    if s is None:
-        return None
-    return s.decode(coding, errors)
-
-
-def safe_encode(s, coding='utf-8', errors='surrogateescape'):
-    """encode str to bytes, with round-tripping "invalid" bytes"""
-    if s is None:
-        return None
-    return s.encode(coding, errors)
-
-
-def remove_surrogates(s, errors='replace'):
-    """Replace surrogates generated by fsdecode with '?'"""
-    return s.encode('utf-8', errors).decode('utf-8')
-
-
-def decode_dict(d, keys, encoding='utf-8', errors='surrogateescape'):
-    for key in keys:
-        if isinstance(d.get(key), bytes):
-            d[key] = d[key].decode(encoding, errors)
-    return d
-
-
-def positive_int_validator(value):
-    """argparse type for positive integers"""
-    int_value = int(value)
-    if int_value <= 0:
-        raise argparse.ArgumentTypeError('A positive integer is required: %s' % value)
-    return int_value
-
-
-def interval(s):
-    """Convert a string representing a valid interval to a number of hours."""
-    multiplier = {'H': 1, 'd': 24, 'w': 24 * 7, 'm': 24 * 31, 'y': 24 * 365}
-
-    if s.endswith(tuple(multiplier.keys())):
-        number = s[:-1]
-        suffix = s[-1]
-    else:
-        # range suffixes in ascending multiplier order
-        ranges = [k for k, v in sorted(multiplier.items(), key=lambda t: t[1])]
-        raise argparse.ArgumentTypeError(
-            'Unexpected interval time unit "%s": expected one of %r' % (s[-1], ranges))
-
-    try:
-        hours = int(number) * multiplier[suffix]
-    except ValueError:
-        hours = -1
-
-    if hours <= 0:
-        raise argparse.ArgumentTypeError(
-            'Unexpected interval number "%s": expected an integer greater than 0' % number)
-
-    return hours
-
-
-def timestamp(s):
-    """Convert a --timestamp=s argument to a datetime object"""
-    try:
-        # is it pointing to a file / directory?
-        ts = safe_s(os.stat(s).st_mtime)
-        return datetime.utcfromtimestamp(ts)
-    except OSError:
-        # didn't work, try parsing as timestamp. UTC, no TZ, no microsecs support.
-        for format in ('%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S+00:00',
-                       '%Y-%m-%dT%H:%M:%S', '%Y-%m-%d %H:%M:%S',
-                       '%Y-%m-%dT%H:%M', '%Y-%m-%d %H:%M',
-                       '%Y-%m-%d', '%Y-%j',
-                       ):
-            try:
-                return datetime.strptime(s, format)
-            except ValueError:
-                continue
-        raise ValueError
-
-
-def ChunkerParams(s):
-    if s.strip().lower() == "default":
-        return CHUNKER_PARAMS
-    chunk_min, chunk_max, chunk_mask, window_size = s.split(',')
-    if int(chunk_max) > 23:
-        raise ValueError('max. chunk size exponent must not be more than 23 (2^23 = 8MiB max. chunk size)')
-    return int(chunk_min), int(chunk_max), int(chunk_mask), int(window_size)
-
-
-def partial_format(format, mapping):
-    """
-    Apply format.format_map(mapping) while preserving unknown keys
-
-    Does not support attribute access, indexing and ![rsa] conversions
-    """
-    for key, value in mapping.items():
-        key = re.escape(key)
-        format = re.sub(r'(?<!\{)((\{%s\})|(\{%s:[^\}]*\}))' % (key, key),
-                        lambda match: match.group(1).format_map(mapping),
-                        format)
-    return format
-
-
-class DatetimeWrapper:
-    def __init__(self, dt):
-        self.dt = dt
-
-    def __format__(self, format_spec):
-        if format_spec == '':
-            format_spec = '%Y-%m-%dT%H:%M:%S'
-        return self.dt.__format__(format_spec)
-
-
-class PlaceholderError(Error):
-    """Formatting Error: "{}".format({}): {}({})"""
-
-
-class InvalidPlaceholder(PlaceholderError):
-    """Invalid placeholder "{}" in string: {}"""
-
-
-def format_line(format, data):
-    for _, key, _, conversion in Formatter().parse(format):
-        if not key:
-            continue
-        if conversion or key not in data:
-            raise InvalidPlaceholder(key, format)
-    try:
-        return format.format_map(data)
-    except Exception as e:
-        raise PlaceholderError(format, data, e.__class__.__name__, str(e))
-
-
-def replace_placeholders(text):
-    """Replace placeholders in text with their values."""
-    current_time = datetime.now()
-    data = {
-        'pid': os.getpid(),
-        'fqdn': socket.getfqdn(),
-        'hostname': socket.gethostname(),
-        'now': DatetimeWrapper(current_time.now()),
-        'utcnow': DatetimeWrapper(current_time.utcnow()),
-        'user': uid2user(os.getuid(), os.getuid()),
-        'uuid4': str(uuid.uuid4()),
-        'borgversion': borg_version,
-        'borgmajor': '%d' % borg_version_tuple[:1],
-        'borgminor': '%d.%d' % borg_version_tuple[:2],
-        'borgpatch': '%d.%d.%d' % borg_version_tuple[:3],
-    }
-    return format_line(text, data)
-
-
-PrefixSpec = replace_placeholders
-
-
-def SortBySpec(text):
-    from .manifest import AI_HUMAN_SORT_KEYS
-    for token in text.split(','):
-        if token not in AI_HUMAN_SORT_KEYS:
-            raise ValueError('Invalid sort key: %s' % token)
-    return text.replace('timestamp', 'ts')
-
-
-def format_file_size(v, precision=2, sign=False):
-    """Format file size into a human friendly format
-    """
-    return sizeof_fmt_decimal(v, suffix='B', sep=' ', precision=precision, sign=sign)
-
-
-class FileSize(int):
-    def __format__(self, format_spec):
-        return format_file_size(int(self)).__format__(format_spec)
-
-
-def parse_file_size(s):
-    """Return int from file size (1234, 55G, 1.7T)."""
-    if not s:
-        return int(s)  # will raise
-    suffix = s[-1]
-    power = 1000
-    try:
-        factor = {
-            'K': power,
-            'M': power**2,
-            'G': power**3,
-            'T': power**4,
-            'P': power**5,
-        }[suffix]
-        s = s[:-1]
-    except KeyError:
-        factor = 1
-    return int(float(s) * factor)
-
-
-def sizeof_fmt(num, suffix='B', units=None, power=None, sep='', precision=2, sign=False):
-    prefix = '+' if sign and num > 0 else ''
-
-    for unit in units[:-1]:
-        if abs(round(num, precision)) < power:
-            if isinstance(num, int):
-                return "{}{}{}{}{}".format(prefix, num, sep, unit, suffix)
-            else:
-                return "{}{:3.{}f}{}{}{}".format(prefix, num, precision, sep, unit, suffix)
-        num /= float(power)
-    return "{}{:.{}f}{}{}{}".format(prefix, num, precision, sep, units[-1], suffix)
-
-
-def sizeof_fmt_iec(num, suffix='B', sep='', precision=2, sign=False):
-    return sizeof_fmt(num, suffix=suffix, sep=sep, precision=precision, sign=sign,
-                      units=['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'], power=1024)
-
-
-def sizeof_fmt_decimal(num, suffix='B', sep='', precision=2, sign=False):
-    return sizeof_fmt(num, suffix=suffix, sep=sep, precision=precision, sign=sign,
-                      units=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'], power=1000)
-
-
-def format_archive(archive):
-    return '%-36s %s [%s]' % (
-        archive.name,
-        format_time(to_localtime(archive.ts)),
-        bin_to_hex(archive.id),
-    )
-
-
-def parse_stringified_list(s):
-    l = re.split(" *, *", s)
-    return [item for item in l if item != '']
-
-
-class Location:
-    """Object representing a repository / archive location
-    """
-    proto = user = _host = port = path = archive = None
-
-    # user must not contain "@", ":" or "/".
-    # Quoting adduser error message:
-    # "To avoid problems, the username should consist only of letters, digits,
-    # underscores, periods, at signs and dashes, and not start with a dash
-    # (as defined by IEEE Std 1003.1-2001)."
-    # We use "@" as separator between username and hostname, so we must
-    # disallow it within the pure username part.
-    optional_user_re = r"""
-        (?:(?P<user>[^@:/]+)@)?
-    """
-
-    # path must not contain :: (it ends at :: or string end), but may contain single colons.
-    # to avoid ambiguities with other regexes, it must also not start with ":" nor with "//" nor with "ssh://".
-    scp_path_re = r"""
-        (?!(:|//|ssh://))                                   # not starting with ":" or // or ssh://
-        (?P<path>([^:]|(:(?!:)))+)                          # any chars, but no "::"
-        """
-
-    # file_path must not contain :: (it ends at :: or string end), but may contain single colons.
-    # it must start with a / and that slash is part of the path.
-    file_path_re = r"""
-        (?P<path>(([^/]*)/([^:]|(:(?!:)))+))                # start opt. servername, then /, then any chars, but no "::"
-        """
-
-    # abs_path must not contain :: (it ends at :: or string end), but may contain single colons.
-    # it must start with a / and that slash is part of the path.
-    abs_path_re = r"""
-        (?P<path>(/([^:]|(:(?!:)))+))                       # start with /, then any chars, but no "::"
-        """
-
-    # optional ::archive_name at the end, archive name must not contain "/".
-    # borg mount's FUSE filesystem creates one level of directories from
-    # the archive names and of course "/" is not valid in a directory name.
-    optional_archive_re = r"""
-        (?:
-            ::                                              # "::" as separator
-            (?P<archive>[^/]+)                              # archive name must not contain "/"
-        )?$"""                                              # must match until the end
-
-    # regexes for misc. kinds of supported location specifiers:
-    ssh_re = re.compile(r"""
-        (?P<proto>ssh)://                                   # ssh://
-        """ + optional_user_re + r"""                       # user@  (optional)
-        (?P<host>([^:/]+|\[[0-9a-fA-F:.]+\]))(?::(?P<port>\d+))?  # host or host:port or [ipv6] or [ipv6]:port
-        """ + abs_path_re + optional_archive_re, re.VERBOSE)  # path or path::archive
-
-    file_re = re.compile(r"""
-        (?P<proto>file)://                                  # file://
-        """ + file_path_re + optional_archive_re, re.VERBOSE)  # servername/path, path or path::archive
-
-    # note: scp_re is also use for local paths
-    scp_re = re.compile(r"""
-        (
-            """ + optional_user_re + r"""                   # user@  (optional)
-            (?P<host>([^:/]+|\[[0-9a-fA-F:.]+\])):          # host: (don't match / or [ipv6] in host to disambiguate from file:)
-        )?                                                  # user@host: part is optional
-        """ + scp_path_re + optional_archive_re, re.VERBOSE)  # path with optional archive
-
-    # get the repo from BORG_REPO env and the optional archive from param.
-    # if the syntax requires giving REPOSITORY (see "borg mount"),
-    # use "::" to let it use the env var.
-    # if REPOSITORY argument is optional, it'll automatically use the env.
-    env_re = re.compile(r"""                                # the repo part is fetched from BORG_REPO
-        (?:::$)                                             # just "::" is ok (when a pos. arg is required, no archive)
-        |                                                   # or
-        """ + optional_archive_re, re.VERBOSE)              # archive name (optional, may be empty)
-
-    def __init__(self, text=''):
-        self.orig = text
-        if not self.parse(self.orig):
-            raise ValueError('Location: parse failed: %s' % self.orig)
-
-    def parse(self, text):
-        text = replace_placeholders(text)
-        valid = self._parse(text)
-        if valid:
-            return True
-        m = self.env_re.match(text)
-        if not m:
-            return False
-        repo = os.environ.get('BORG_REPO')
-        if repo is None:
-            return False
-        valid = self._parse(repo)
-        if not valid:
-            return False
-        self.archive = m.group('archive')
-        return True
-
-    def _parse(self, text):
-        def normpath_special(p):
-            # avoid that normpath strips away our relative path hack and even makes p absolute
-            relative = p.startswith('/./')
-            p = os.path.normpath(p)
-            return ('/.' + p) if relative else p
-
-        m = self.ssh_re.match(text)
-        if m:
-            self.proto = m.group('proto')
-            self.user = m.group('user')
-            self._host = m.group('host')
-            self.port = m.group('port') and int(m.group('port')) or None
-            self.path = normpath_special(m.group('path'))
-            self.archive = m.group('archive')
-            return True
-        m = self.file_re.match(text)
-        if m:
-            self.proto = m.group('proto')
-            self.path = normpath_special(m.group('path'))
-            self.archive = m.group('archive')
-            return True
-        m = self.scp_re.match(text)
-        if m:
-            self.user = m.group('user')
-            self._host = m.group('host')
-            self.path = normpath_special(m.group('path'))
-            self.archive = m.group('archive')
-            self.proto = self._host and 'ssh' or 'file'
-            return True
-        return False
-
-    def __str__(self):
-        items = [
-            'proto=%r' % self.proto,
-            'user=%r' % self.user,
-            'host=%r' % self.host,
-            'port=%r' % self.port,
-            'path=%r' % self.path,
-            'archive=%r' % self.archive,
-        ]
-        return ', '.join(items)
-
-    def to_key_filename(self):
-        name = re.sub('[^\w]', '_', self.path).strip('_')
-        if self.proto != 'file':
-            name = re.sub('[^\w]', '_', self.host) + '__' + name
-        if len(name) > 100:
-            # Limit file names to some reasonable length. Most file systems
-            # limit them to 255 [unit of choice]; due to variations in unicode
-            # handling we truncate to 100 *characters*.
-            name = name[:100]
-        return os.path.join(get_keys_dir(), name)
-
-    def __repr__(self):
-        return "Location(%s)" % self
-
-    @property
-    def host(self):
-        # strip square brackets used for IPv6 addrs
-        if self._host is not None:
-            return self._host.lstrip('[').rstrip(']')
-
-    def canonical_path(self):
-        if self.proto == 'file':
-            return self.path
-        else:
-            if self.path and self.path.startswith('~'):
-                path = '/' + self.path  # /~/x = path x relative to home dir
-            elif self.path and not self.path.startswith('/'):
-                path = '/./' + self.path  # /./x = path x relative to cwd
-            else:
-                path = self.path
-            return 'ssh://{}{}{}{}'.format('{}@'.format(self.user) if self.user else '',
-                                           self._host,  # needed for ipv6 addrs
-                                           ':{}'.format(self.port) if self.port else '',
-                                           path)
-
-
-def location_validator(archive=None):
-    def validator(text):
-        try:
-            loc = Location(text)
-        except ValueError:
-            raise argparse.ArgumentTypeError('Invalid location format: "%s"' % text) from None
-        if archive is True and not loc.archive:
-            raise argparse.ArgumentTypeError('"%s": No archive specified' % text)
-        elif archive is False and loc.archive:
-            raise argparse.ArgumentTypeError('"%s" No archive can be specified' % text)
-        return loc
-    return validator
-
-
-def archivename_validator():
-    def validator(text):
-        if '/' in text or '::' in text or not text:
-            raise argparse.ArgumentTypeError('Invalid repository name: "%s"' % text)
-        return text
-    return validator
-
-
-class BaseFormatter:
-    FIXED_KEYS = {
-        # Formatting aids
-        'LF': '\n',
-        'SPACE': ' ',
-        'TAB': '\t',
-        'CR': '\r',
-        'NUL': '\0',
-        'NEWLINE': os.linesep,
-        'NL': os.linesep,
-    }
-
-    def get_item_data(self, item):
-        raise NotImplementedError
-
-    def format_item(self, item):
-        return self.format.format_map(self.get_item_data(item))
-
-    @staticmethod
-    def keys_help():
-        return "- NEWLINE: OS dependent line separator\n" \
-               "- NL: alias of NEWLINE\n" \
-               "- NUL: NUL character for creating print0 / xargs -0 like output, see barchive/bpath\n" \
-               "- SPACE\n" \
-               "- TAB\n" \
-               "- CR\n" \
-               "- LF"
-
-
-class ArchiveFormatter(BaseFormatter):
-    KEY_DESCRIPTIONS = {
-        'name': 'archive name interpreted as text (might be missing non-text characters, see barchive)',
-        'archive': 'archive name interpreted as text (might be missing non-text characters, see barchive)',
-        'barchive': 'verbatim archive name, can contain any character except NUL',
-        'comment': 'archive comment interpreted as text (might be missing non-text characters, see bcomment)',
-        'bcomment': 'verbatim archive comment, can contain any character except NUL',
-        'time': 'time (start) of creation of the archive',
-        # *start* is the key used by borg-info for this timestamp, this makes the formats more compatible
-        'start': 'time (start) of creation of the archive',
-        'end': 'time (end) of creation of the archive',
-        'id': 'internal ID of the archive',
-    }
-    KEY_GROUPS = (
-        ('name', 'archive', 'barchive', 'comment', 'bcomment', 'id'),
-        ('time', 'start', 'end'),
-    )
-
-    @classmethod
-    def available_keys(cls):
-        from .manifest import ArchiveInfo
-        fake_archive_info = ArchiveInfo('archivename', b'\1'*32, datetime(1970, 1, 1, tzinfo=timezone.utc))
-        formatter = cls('', None, None, None)
-        keys = []
-        keys.extend(formatter.call_keys.keys())
-        keys.extend(formatter.get_item_data(fake_archive_info).keys())
-        return keys
-
-    @classmethod
-    def keys_help(cls):
-        help = []
-        keys = cls.available_keys()
-        for key in cls.FIXED_KEYS:
-            keys.remove(key)
-
-        for group in cls.KEY_GROUPS:
-            for key in group:
-                keys.remove(key)
-                text = "- " + key
-                if key in cls.KEY_DESCRIPTIONS:
-                    text += ": " + cls.KEY_DESCRIPTIONS[key]
-                help.append(text)
-            help.append("")
-        assert not keys, str(keys)
-        return "\n".join(help)
-
-    def __init__(self, format, repository, manifest, key, *, json=False):
-        self.repository = repository
-        self.manifest = manifest
-        self.key = key
-        self.name = None
-        self.id = None
-        self._archive = None
-        self.json = json
-        static_keys = {}  # here could be stuff on repo level, above archive level
-        static_keys.update(self.FIXED_KEYS)
-        self.format = partial_format(format, static_keys)
-        self.format_keys = {f[1] for f in Formatter().parse(format)}
-        self.call_keys = {
-            'comment': partial(self.get_comment, rs=True),
-            'bcomment': partial(self.get_comment, rs=False),
-            'end': self.get_ts_end,
-        }
-        self.used_call_keys = set(self.call_keys) & self.format_keys
-        if self.json:
-            self.item_data = {}
-            self.format_item = self.format_item_json
-            self.format_time = self.format_time_json
-        else:
-            self.item_data = static_keys
-
-    def format_item_json(self, item):
-        return json.dumps(self.get_item_data(item)) + '\n'
-
-    def get_item_data(self, archive_info):
-        self.name = archive_info.name
-        self.id = archive_info.id
-        item_data = {}
-        item_data.update(self.item_data)
-        item_data.update({
-            'name': remove_surrogates(archive_info.name),
-            'archive': remove_surrogates(archive_info.name),
-            'barchive': archive_info.name,
-            'id': bin_to_hex(archive_info.id),
-            'time': self.format_time(archive_info.ts),
-            'start': self.format_time(archive_info.ts),
-        })
-        for key in self.used_call_keys:
-            item_data[key] = self.call_keys[key]()
-        return item_data
-
-    @property
-    def archive(self):
-        """lazy load / update loaded archive"""
-        if self._archive is None or self._archive.id != self.id:
-            from ..archive import Archive
-            self._archive = Archive(self.repository, self.key, self.manifest, self.name)
-        return self._archive
-
-    def get_comment(self, rs):
-        return remove_surrogates(self.archive.comment) if rs else self.archive.comment
-
-    def get_ts_end(self):
-        return self.format_time(self.archive.ts_end)
-
-    def format_time(self, ts):
-        t = to_localtime(ts)
-        return format_time(t)
-
-    def format_time_json(self, ts):
-        t = to_localtime(ts)
-        return isoformat_time(t)
-
-
-class ItemFormatter(BaseFormatter):
-    KEY_DESCRIPTIONS = {
-        'bpath': 'verbatim POSIX path, can contain any character except NUL',
-        'path': 'path interpreted as text (might be missing non-text characters, see bpath)',
-        'source': 'link target for links (identical to linktarget)',
-        'extra': 'prepends {source} with " -> " for soft links and " link to " for hard links',
-        'csize': 'compressed size',
-        'dsize': 'deduplicated size',
-        'dcsize': 'deduplicated compressed size',
-        'num_chunks': 'number of chunks in this file',
-        'unique_chunks': 'number of unique chunks in this file',
-        'health': 'either "healthy" (file ok) or "broken" (if file has all-zero replacement chunks)',
-    }
-    KEY_GROUPS = (
-        ('type', 'mode', 'uid', 'gid', 'user', 'group', 'path', 'bpath', 'source', 'linktarget', 'flags'),
-        ('size', 'csize', 'dsize', 'dcsize', 'num_chunks', 'unique_chunks'),
-        ('mtime', 'ctime', 'atime', 'isomtime', 'isoctime', 'isoatime'),
-        tuple(sorted(hashlib.algorithms_guaranteed)),
-        ('archiveid', 'archivename', 'extra'),
-        ('health', )
-    )
-
-    KEYS_REQUIRING_CACHE = (
-        'dsize', 'dcsize', 'unique_chunks',
-    )
-
-    @classmethod
-    def available_keys(cls):
-        class FakeArchive:
-            fpr = name = ""
-
-        from ..item import Item
-        fake_item = Item(mode=0, path='', user='', group='', mtime=0, uid=0, gid=0)
-        formatter = cls(FakeArchive, "")
-        keys = []
-        keys.extend(formatter.call_keys.keys())
-        keys.extend(formatter.get_item_data(fake_item).keys())
-        return keys
-
-    @classmethod
-    def keys_help(cls):
-        help = []
-        keys = cls.available_keys()
-        for key in cls.FIXED_KEYS:
-            keys.remove(key)
-
-        for group in cls.KEY_GROUPS:
-            for key in group:
-                keys.remove(key)
-                text = "- " + key
-                if key in cls.KEY_DESCRIPTIONS:
-                    text += ": " + cls.KEY_DESCRIPTIONS[key]
-                help.append(text)
-            help.append("")
-        assert not keys, str(keys)
-        return "\n".join(help)
-
-    @classmethod
-    def format_needs_cache(cls, format):
-        format_keys = {f[1] for f in Formatter().parse(format)}
-        return any(key in cls.KEYS_REQUIRING_CACHE for key in format_keys)
-
-    def __init__(self, archive, format, *, json_lines=False):
-        self.archive = archive
-        self.json_lines = json_lines
-        static_keys = {
-            'archivename': archive.name,
-            'archiveid': archive.fpr,
-        }
-        static_keys.update(self.FIXED_KEYS)
-        if self.json_lines:
-            self.item_data = {}
-            self.format_item = self.format_item_json
-            self.format_time = self.format_time_json
-        else:
-            self.item_data = static_keys
-        self.format = partial_format(format, static_keys)
-        self.format_keys = {f[1] for f in Formatter().parse(format)}
-        self.call_keys = {
-            'size': self.calculate_size,
-            'csize': self.calculate_csize,
-            'dsize': partial(self.sum_unique_chunks_metadata, lambda chunk: chunk.size),
-            'dcsize': partial(self.sum_unique_chunks_metadata, lambda chunk: chunk.csize),
-            'num_chunks': self.calculate_num_chunks,
-            'unique_chunks': partial(self.sum_unique_chunks_metadata, lambda chunk: 1),
-            'isomtime': partial(self.format_time, 'mtime'),
-            'isoctime': partial(self.format_time, 'ctime'),
-            'isoatime': partial(self.format_time, 'atime'),
-            'mtime': partial(self.time, 'mtime'),
-            'ctime': partial(self.time, 'ctime'),
-            'atime': partial(self.time, 'atime'),
-        }
-        for hash_function in hashlib.algorithms_guaranteed:
-            self.add_key(hash_function, partial(self.hash_item, hash_function))
-        self.used_call_keys = set(self.call_keys) & self.format_keys
-
-    def format_item_json(self, item):
-        return json.dumps(self.get_item_data(item)) + '\n'
-
-    def add_key(self, key, callable_with_item):
-        self.call_keys[key] = callable_with_item
-        self.used_call_keys = set(self.call_keys) & self.format_keys
-
-    def get_item_data(self, item):
-        item_data = {}
-        item_data.update(self.item_data)
-        mode = stat.filemode(item.mode)
-        item_type = mode[0]
-
-        source = item.get('source', '')
-        extra = ''
-        if source:
-            source = remove_surrogates(source)
-            if item_type == 'l':
-                extra = ' -> %s' % source
-            else:
-                mode = 'h' + mode[1:]
-                extra = ' link to %s' % source
-        item_data['type'] = item_type
-        item_data['mode'] = mode
-        item_data['user'] = item.user or item.uid
-        item_data['group'] = item.group or item.gid
-        item_data['uid'] = item.uid
-        item_data['gid'] = item.gid
-        item_data['path'] = remove_surrogates(item.path)
-        if self.json_lines:
-            item_data['healthy'] = 'chunks_healthy' not in item
-        else:
-            item_data['bpath'] = item.path
-            item_data['extra'] = extra
-            item_data['health'] = 'broken' if 'chunks_healthy' in item else 'healthy'
-        item_data['source'] = source
-        item_data['linktarget'] = source
-        item_data['flags'] = item.get('bsdflags')
-        for key in self.used_call_keys:
-            item_data[key] = self.call_keys[key](item)
-        return item_data
-
-    def sum_unique_chunks_metadata(self, metadata_func, item):
-        """
-        sum unique chunks metadata, a unique chunk is a chunk which is referenced globally as often as it is in the
-        item
-
-        item: The item to sum its unique chunks' metadata
-        metadata_func: A function that takes a parameter of type ChunkIndexEntry and returns a number, used to return
-                       the metadata needed from the chunk
-        """
-        chunk_index = self.archive.cache.chunks
-        chunks = item.get('chunks', [])
-        chunks_counter = Counter(c.id for c in chunks)
-        return sum(metadata_func(c) for c in chunks if chunk_index[c.id].refcount == chunks_counter[c.id])
-
-    def calculate_num_chunks(self, item):
-        return len(item.get('chunks', []))
-
-    def calculate_size(self, item):
-        # note: does not support hardlink slaves, they will be size 0
-        return item.get_size(compressed=False)
-
-    def calculate_csize(self, item):
-        # note: does not support hardlink slaves, they will be csize 0
-        return item.get_size(compressed=True)
-
-    def hash_item(self, hash_function, item):
-        if 'chunks' not in item:
-            return ""
-        hash = hashlib.new(hash_function)
-        for data in self.archive.pipeline.fetch_many([c.id for c in item.chunks]):
-            hash.update(data)
-        return hash.hexdigest()
-
-    def format_time(self, key, item):
-        t = self.time(key, item)
-        return format_time(t)
-
-    def format_time_json(self, key, item):
-        t = self.time(key, item)
-        return isoformat_time(t)
-
-    def time(self, key, item):
-        return safe_timestamp(item.get(key) or item.mtime)
-
-
-def file_status(mode):
-    if stat.S_ISREG(mode):
-        return 'A'
-    elif stat.S_ISDIR(mode):
-        return 'd'
-    elif stat.S_ISBLK(mode):
-        return 'b'
-    elif stat.S_ISCHR(mode):
-        return 'c'
-    elif stat.S_ISLNK(mode):
-        return 's'
-    elif stat.S_ISFIFO(mode):
-        return 'f'
-    return '?'
-
-
-def clean_lines(lines, lstrip=None, rstrip=None, remove_empty=True, remove_comments=True):
-    """
-    clean lines (usually read from a config file):
-
-    1. strip whitespace (left and right), 2. remove empty lines, 3. remove comments.
-
-    note: only "pure comment lines" are supported, no support for "trailing comments".
-
-    :param lines: input line iterator (e.g. list or open text file) that gives unclean input lines
-    :param lstrip: lstrip call arguments or False, if lstripping is not desired
-    :param rstrip: rstrip call arguments or False, if rstripping is not desired
-    :param remove_comments: remove comment lines (lines starting with "#")
-    :param remove_empty: remove empty lines
-    :return: yields processed lines
-    """
-    for line in lines:
-        if lstrip is not False:
-            line = line.lstrip(lstrip)
-        if rstrip is not False:
-            line = line.rstrip(rstrip)
-        if remove_empty and not line:
-            continue
-        if remove_comments and line.startswith('#'):
-            continue
-        yield line
-
-
-def swidth_slice(string, max_width):
-    """
-    Return a slice of *max_width* cells from *string*.
-
-    Negative *max_width* means from the end of string.
-
-    *max_width* is in units of character cells (or "columns").
-    Latin characters are usually one cell wide, many CJK characters are two cells wide.
-    """
-    from ..platform import swidth
-    reverse = max_width < 0
-    max_width = abs(max_width)
-    if reverse:
-        string = reversed(string)
-    current_swidth = 0
-    result = []
-    for character in string:
-        current_swidth += swidth(character)
-        if current_swidth > max_width:
-            break
-        result.append(character)
-    if reverse:
-        result.reverse()
-    return ''.join(result)
-
-
-def ellipsis_truncate(msg, space):
-    """
-    shorten a long string by adding ellipsis between it and return it, example:
-    this_is_a_very_long_string -------> this_is..._string
-    """
-    from ..platform import swidth
-    ellipsis_width = swidth('...')
-    msg_width = swidth(msg)
-    if space < 8:
-        # if there is very little space, just show ...
-        return '...' + ' ' * (space - ellipsis_width)
-    if space < ellipsis_width + msg_width:
-        return '%s...%s' % (swidth_slice(msg, space // 2 - ellipsis_width),
-                            swidth_slice(msg, -space // 2))
-    return msg + ' ' * (space - msg_width)
-
-
-class BorgJsonEncoder(json.JSONEncoder):
-    def default(self, o):
-        from ..repository import Repository
-        from ..remote import RemoteRepository
-        from ..archive import Archive
-        from ..cache import LocalCache, AdHocCache
-        if isinstance(o, Repository) or isinstance(o, RemoteRepository):
-            return {
-                'id': bin_to_hex(o.id),
-                'location': o._location.canonical_path(),
-            }
-        if isinstance(o, Archive):
-            return o.info()
-        if isinstance(o, LocalCache):
-            return {
-                'path': o.path,
-                'stats': o.stats(),
-            }
-        if isinstance(o, AdHocCache):
-            return {
-                'stats': o.stats(),
-            }
-        return super().default(o)
-
-
-def basic_json_data(manifest, *, cache=None, extra=None):
-    key = manifest.key
-    data = extra or {}
-    data.update({
-        'repository': BorgJsonEncoder().default(manifest.repository),
-        'encryption': {
-            'mode': key.ARG_NAME,
-        },
-    })
-    data['repository']['last_modified'] = isoformat_time(to_localtime(manifest.last_timestamp.replace(tzinfo=timezone.utc)))
-    if key.NAME.startswith('key file'):
-        data['encryption']['keyfile'] = key.find_key()
-    if cache:
-        data['cache'] = cache
-    return data
-
-
-def json_dump(obj):
-    """Dump using BorgJSONEncoder."""
-    return json.dumps(obj, sort_keys=True, indent=4, cls=BorgJsonEncoder)
-
-
-def json_print(obj):
-    print(json_dump(obj))
-
-
-def prepare_dump_dict(d):
-    def decode_bytes(value):
-        # this should somehow be reversible later, but usual strings should
-        # look nice and chunk ids should mostly show in hex. Use a special
-        # inband signaling character (ASCII DEL) to distinguish between
-        # decoded and hex mode.
-        if not value.startswith(b'\x7f'):
-            try:
-                value = value.decode()
-                return value
-            except UnicodeDecodeError:
-                pass
-        return '\u007f' + bin_to_hex(value)
-
-    def decode_tuple(t):
-        res = []
-        for value in t:
-            if isinstance(value, dict):
-                value = decode(value)
-            elif isinstance(value, tuple) or isinstance(value, list):
-                value = decode_tuple(value)
-            elif isinstance(value, bytes):
-                value = decode_bytes(value)
-            res.append(value)
-        return res
-
-    def decode(d):
-        res = OrderedDict()
-        for key, value in d.items():
-            if isinstance(value, dict):
-                value = decode(value)
-            elif isinstance(value, (tuple, list)):
-                value = decode_tuple(value)
-            elif isinstance(value, bytes):
-                value = decode_bytes(value)
-            if isinstance(key, bytes):
-                key = key.decode()
-            res[key] = value
-        return res
-
-    return decode(d)
diff --git a/src/borg/helpers/process.py b/src/borg/helpers/process.py
deleted file mode 100644
index 14209c5b..00000000
--- a/src/borg/helpers/process.py
+++ /dev/null
@@ -1,117 +0,0 @@
-import contextlib
-import os
-import os.path
-import shlex
-import signal
-import subprocess
-import sys
-
-from ..logger import create_logger
-logger = create_logger()
-
-
-def daemonize():
-    """Detach process from controlling terminal and run in background
-
-    Returns: old and new get_process_id tuples
-    """
-    from ..platform import get_process_id
-    old_id = get_process_id()
-    pid = os.fork()
-    if pid:
-        os._exit(0)
-    os.setsid()
-    pid = os.fork()
-    if pid:
-        os._exit(0)
-    os.chdir('/')
-    os.close(0)
-    os.close(1)
-    os.close(2)
-    fd = os.open(os.devnull, os.O_RDWR)
-    os.dup2(fd, 0)
-    os.dup2(fd, 1)
-    os.dup2(fd, 2)
-    new_id = get_process_id()
-    return old_id, new_id
-
-
-class SignalException(BaseException):
-    """base class for all signal-based exceptions"""
-
-
-class SigHup(SignalException):
-    """raised on SIGHUP signal"""
-
-
-class SigTerm(SignalException):
-    """raised on SIGTERM signal"""
-
-
-@contextlib.contextmanager
-def signal_handler(sig, handler):
-    """
-    when entering context, set up signal handler <handler> for signal <sig>.
-    when leaving context, restore original signal handler.
-
-    <sig> can bei either a str when giving a signal.SIGXXX attribute name (it
-    won't crash if the attribute name does not exist as some names are platform
-    specific) or a int, when giving a signal number.
-
-    <handler> is any handler value as accepted by the signal.signal(sig, handler).
-    """
-    if isinstance(sig, str):
-        sig = getattr(signal, sig, None)
-    if sig is not None:
-        orig_handler = signal.signal(sig, handler)
-    try:
-        yield
-    finally:
-        if sig is not None:
-            signal.signal(sig, orig_handler)
-
-
-def raising_signal_handler(exc_cls):
-    def handler(sig_no, frame):
-        # setting SIG_IGN avoids that an incoming second signal of this
-        # kind would raise a 2nd exception while we still process the
-        # exception handler for exc_cls for the 1st signal.
-        signal.signal(sig_no, signal.SIG_IGN)
-        raise exc_cls
-
-    return handler
-
-
-def popen_with_error_handling(cmd_line: str, log_prefix='', **kwargs):
-    """
-    Handle typical errors raised by subprocess.Popen. Return None if an error occurred,
-    otherwise return the Popen object.
-
-    *cmd_line* is split using shlex (e.g. 'gzip -9' => ['gzip', '-9']).
-
-    Log messages will be prefixed with *log_prefix*; if set, it should end with a space
-    (e.g. log_prefix='--some-option: ').
-
-    Does not change the exit code.
-    """
-    assert not kwargs.get('shell'), 'Sorry pal, shell mode is a no-no'
-    try:
-        command = shlex.split(cmd_line)
-        if not command:
-            raise ValueError('an empty command line is not permitted')
-    except ValueError as ve:
-        logger.error('%s%s', log_prefix, ve)
-        return
-    logger.debug('%scommand line: %s', log_prefix, command)
-    try:
-        return subprocess.Popen(command, **kwargs)
-    except FileNotFoundError:
-        logger.error('%sexecutable not found: %s', log_prefix, command[0])
-        return
-    except PermissionError:
-        logger.error('%spermission denied: %s', log_prefix, command[0])
-        return
-
-
-def is_terminal(fd=sys.stdout):
-    return hasattr(fd, 'isatty') and fd.isatty() and (sys.platform != 'win32' or 'ANSICON' in os.environ)
diff --git a/src/borg/helpers/progress.py b/src/borg/helpers/progress.py
deleted file mode 100644
index ed8e491a..00000000
--- a/src/borg/helpers/progress.py
+++ /dev/null
@@ -1,199 +0,0 @@
-import logging
-import json
-import sys
-import time
-from shutil import get_terminal_size
-
-from ..logger import create_logger
-logger = create_logger()
-
-from .parseformat import ellipsis_truncate
-
-
-def justify_to_terminal_size(message):
-    terminal_space = get_terminal_size(fallback=(-1, -1))[0]
-    # justify only if we are outputting to a terminal
-    if terminal_space != -1:
-        return message.ljust(terminal_space)
-    return message
-
-
-class ProgressIndicatorBase:
-    LOGGER = 'borg.output.progress'
-    JSON_TYPE = None
-    json = False
-
-    operation_id_counter = 0
-
-    @classmethod
-    def operation_id(cls):
-        """Unique number, can be used by receiving applications to distinguish different operations."""
-        cls.operation_id_counter += 1
-        return cls.operation_id_counter
-
-    def __init__(self, msgid=None):
-        self.handler = None
-        self.logger = logging.getLogger(self.LOGGER)
-        self.id = self.operation_id()
-        self.msgid = msgid
-
-        # If there are no handlers, set one up explicitly because the
-        # terminator and propagation needs to be set.  If there are,
-        # they must have been set up by BORG_LOGGING_CONF: skip setup.
-        if not self.logger.handlers:
-            self.handler = logging.StreamHandler(stream=sys.stderr)
-            self.handler.setLevel(logging.INFO)
-            logger = logging.getLogger('borg')
-            # Some special attributes on the borg logger, created by setup_logging
-            # But also be able to work without that
-            try:
-                formatter = logger.formatter
-                terminator = '\n' if logger.json else '\r'
-                self.json = logger.json
-            except AttributeError:
-                terminator = '\r'
-            else:
-                self.handler.setFormatter(formatter)
-            self.handler.terminator = terminator
-
-            self.logger.addHandler(self.handler)
-            if self.logger.level == logging.NOTSET:
-                self.logger.setLevel(logging.WARN)
-            self.logger.propagate = False
-
-        # If --progress is not set then the progress logger level will be WARN
-        # due to setup_implied_logging (it may be NOTSET with a logging config file,
-        # but the interactions there are generally unclear), so self.emit becomes
-        # False, which is correct.
-        # If --progress is set then the level will be INFO as per setup_implied_logging;
-        # note that this is always the case for serve processes due to a "args.progress |= is_serve".
-        # In this case self.emit is True.
-        self.emit = self.logger.getEffectiveLevel() == logging.INFO
-
-    def __del__(self):
-        if self.handler is not None:
-            self.logger.removeHandler(self.handler)
-            self.handler.close()
-
-    def output_json(self, *, finished=False, **kwargs):
-        assert self.json
-        if not self.emit:
-            return
-        kwargs.update(dict(
-            operation=self.id,
-            msgid=self.msgid,
-            type=self.JSON_TYPE,
-            finished=finished,
-            time=time.time(),
-        ))
-        print(json.dumps(kwargs), file=sys.stderr)
-
-    def finish(self):
-        if self.json:
-            self.output_json(finished=True)
-        else:
-            self.output('')
-
-
-class ProgressIndicatorMessage(ProgressIndicatorBase):
-    JSON_TYPE = 'progress_message'
-
-    def output(self, msg):
-        if self.json:
-            self.output_json(message=msg)
-        else:
-            self.logger.info(justify_to_terminal_size(msg))
-
-
-class ProgressIndicatorPercent(ProgressIndicatorBase):
-    JSON_TYPE = 'progress_percent'
-
-    def __init__(self, total=0, step=5, start=0, msg="%3.0f%%", msgid=None):
-        """
-        Percentage-based progress indicator
-
-        :param total: total amount of items
-        :param step: step size in percent
-        :param start: at which percent value to start
-        :param msg: output message, must contain one %f placeholder for the percentage
-        """
-        self.counter = 0  # 0 .. (total-1)
-        self.total = total
-        self.trigger_at = start  # output next percentage value when reaching (at least) this
-        self.step = step
-        self.msg = msg
-
-        super().__init__(msgid=msgid)
-
-    def progress(self, current=None, increase=1):
-        if current is not None:
-            self.counter = current
-        pct = self.counter * 100 / self.total
-        self.counter += increase
-        if pct >= self.trigger_at:
-            self.trigger_at += self.step
-            return pct
-
-    def show(self, current=None, increase=1, info=None):
-        """
-        Show and output the progress message
-
-        :param current: set the current percentage [None]
-        :param increase: increase the current percentage [None]
-        :param info: array of strings to be formatted with msg [None]
-        """
-        pct = self.progress(current, increase)
-        if pct is not None:
-            # truncate the last argument, if no space is available
-            if info is not None:
-                if not self.json:
-                    # no need to truncate if we're not outputing to a terminal
-                    terminal_space = get_terminal_size(fallback=(-1, -1))[0]
-                    if terminal_space != -1:
-                        space = terminal_space - len(self.msg % tuple([pct] + info[:-1] + ['']))
-                        info[-1] = ellipsis_truncate(info[-1], space)
-                return self.output(self.msg % tuple([pct] + info), justify=False, info=info)
-
-            return self.output(self.msg % pct)
-
-    def output(self, message, justify=True, info=None):
-        if self.json:
-            self.output_json(message=message, current=self.counter, total=self.total, info=info)
-        else:
-            if justify:
-                message = justify_to_terminal_size(message)
-            self.logger.info(message)
-
-
-class ProgressIndicatorEndless:
-    def __init__(self, step=10, file=None):
-        """
-        Progress indicator (long row of dots)
-
-        :param step: every Nth call, call the func
-        :param file: output file, default: sys.stderr
-        """
-        self.counter = 0  # call counter
-        self.triggered = 0  # increases 1 per trigger event
-        self.step = step  # trigger every <step> calls
-        if file is None:
-            file = sys.stderr
-        self.file = file
-
-    def progress(self):
-        self.counter += 1
-        trigger = self.counter % self.step == 0
-        if trigger:
-            self.triggered += 1
-        return trigger
-
-    def show(self):
-        trigger = self.progress()
-        if trigger:
-            return self.output(self.triggered)
-
-    def output(self, triggered):
-        print('.', end='', file=self.file, flush=True)
-
-    def finish(self):
-        print(file=self.file)
diff --git a/src/borg/helpers/time.py b/src/borg/helpers/time.py
deleted file mode 100644
index 7203ba2f..00000000
--- a/src/borg/helpers/time.py
+++ /dev/null
@@ -1,115 +0,0 @@
-import os
-import time
-from datetime import datetime, timezone
-
-
-def to_localtime(ts):
-    """Convert datetime object from UTC to local time zone"""
-    return datetime(*time.localtime((ts - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds())[:6])
-
-
-def parse_timestamp(timestamp):
-    """Parse a ISO 8601 timestamp string"""
-    if '.' in timestamp:  # microseconds might not be present
-        return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S.%f').replace(tzinfo=timezone.utc)
-    else:
-        return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc)
-
-
-def timestamp(s):
-    """Convert a --timestamp=s argument to a datetime object"""
-    try:
-        # is it pointing to a file / directory?
-        ts = safe_s(os.stat(s).st_mtime)
-        return datetime.utcfromtimestamp(ts)
-    except OSError:
-        # didn't work, try parsing as timestamp. UTC, no TZ, no microsecs support.
-        for format in ('%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S+00:00',
-                       '%Y-%m-%dT%H:%M:%S', '%Y-%m-%d %H:%M:%S',
-                       '%Y-%m-%dT%H:%M', '%Y-%m-%d %H:%M',
-                       '%Y-%m-%d', '%Y-%j',
-                       ):
-            try:
-                return datetime.strptime(s, format)
-            except ValueError:
-                continue
-        raise ValueError
-
-
-# Not too rarely, we get crappy timestamps from the fs, that overflow some computations.
-# As they are crap anyway (valid filesystem timestamps always refer to the past up to
-# the present, but never to the future), nothing is lost if we just clamp them to the
-# maximum value we can support.
-# As long as people are using borg on 32bit platforms to access borg archives, we must
-# keep this value True. But we can expect that we can stop supporting 32bit platforms
-# well before coming close to the year 2038, so this will never be a practical problem.
-SUPPORT_32BIT_PLATFORMS = True  # set this to False before y2038.
-
-if SUPPORT_32BIT_PLATFORMS:
-    # second timestamps will fit into a signed int32 (platform time_t limit).
-    # nanosecond timestamps thus will naturally fit into a signed int64.
-    # subtract last 48h to avoid any issues that could be caused by tz calculations.
-    # this is in the year 2038, so it is also less than y9999 (which is a datetime internal limit).
-    # msgpack can pack up to uint64.
-    MAX_S = 2**31-1 - 48*3600
-    MAX_NS = MAX_S * 1000000000
-else:
-    # nanosecond timestamps will fit into a signed int64.
-    # subtract last 48h to avoid any issues that could be caused by tz calculations.
-    # this is in the year 2262, so it is also less than y9999 (which is a datetime internal limit).
-    # round down to 1e9 multiple, so MAX_NS corresponds precisely to a integer MAX_S.
-    # msgpack can pack up to uint64.
-    MAX_NS = (2**63-1 - 48*3600*1000000000) // 1000000000 * 1000000000
-    MAX_S = MAX_NS // 1000000000
-
-
-def safe_s(ts):
-    if 0 <= ts <= MAX_S:
-        return ts
-    elif ts < 0:
-        return 0
-    else:
-        return MAX_S
-
-
-def safe_ns(ts):
-    if 0 <= ts <= MAX_NS:
-        return ts
-    elif ts < 0:
-        return 0
-    else:
-        return MAX_NS
-
-
-def safe_timestamp(item_timestamp_ns):
-    t_ns = safe_ns(item_timestamp_ns)
-    return datetime.fromtimestamp(t_ns / 1e9)
-
-
-def format_time(t):
-    """use ISO-8601-like date and time format (human readable, with wkday and blank date/time separator)
-    """
-    return t.strftime('%a, %Y-%m-%d %H:%M:%S')
-
-
-def isoformat_time(t):
-    """use ISO-8601 date and time format (machine readable, no wkday, no microseconds either)
-    """
-    return t.strftime('%Y-%m-%dT%H:%M:%S')  # note: first make all datetime objects tz aware before adding %z here.
-
-
-def format_timedelta(td):
-    """Format timedelta in a human friendly format
-    """
-    ts = td.total_seconds()
-    s = ts % 60
-    m = int(ts / 60) % 60
-    h = int(ts / 3600) % 24
-    txt = '%.2f seconds' % s
-    if m:
-        txt = '%d minutes %s' % (m, txt)
-    if h:
-        txt = '%d hours %s' % (h, txt)
-    if td.days:
-        txt = '%d days %s' % (td.days, txt)
-    return txt
diff --git a/src/borg/helpers/usergroup.py b/src/borg/helpers/usergroup.py
deleted file mode 100644
index fdb4677c..00000000
--- a/src/borg/helpers/usergroup.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import grp
-import pwd
-from functools import lru_cache
-
-
-@lru_cache(maxsize=None)
-def uid2user(uid, default=None):
-    try:
-        return pwd.getpwuid(uid).pw_name
-    except KeyError:
-        return default
-
-
-@lru_cache(maxsize=None)
-def user2uid(user, default=None):
-    try:
-        return user and pwd.getpwnam(user).pw_uid
-    except KeyError:
-        return default
-
-
-@lru_cache(maxsize=None)
-def gid2group(gid, default=None):
-    try:
-        return grp.getgrgid(gid).gr_name
-    except KeyError:
-        return default
-
-
-@lru_cache(maxsize=None)
-def group2gid(group, default=None):
-    try:
-        return group and grp.getgrnam(group).gr_gid
-    except KeyError:
-        return default
-
-
-def posix_acl_use_stored_uid_gid(acl):
-    """Replace the user/group field with the stored uid/gid
-    """
-    from .parseformat import safe_decode, safe_encode
-    entries = []
-    for entry in safe_decode(acl).split('\n'):
-        if entry:
-            fields = entry.split(':')
-            if len(fields) == 4:
-                entries.append(':'.join([fields[0], fields[3], fields[2]]))
-            else:
-                entries.append(entry)
-    return safe_encode('\n'.join(entries))
diff --git a/src/borg/helpers/yes.py b/src/borg/helpers/yes.py
deleted file mode 100644
index 91a9809a..00000000
--- a/src/borg/helpers/yes.py
+++ /dev/null
@@ -1,108 +0,0 @@
-import logging
-import json
-import os
-import os.path
-import sys
-
-FALSISH = ('No', 'NO', 'no', 'N', 'n', '0', )
-TRUISH = ('Yes', 'YES', 'yes', 'Y', 'y', '1', )
-DEFAULTISH = ('Default', 'DEFAULT', 'default', 'D', 'd', '', )
-
-
-def yes(msg=None, false_msg=None, true_msg=None, default_msg=None,
-        retry_msg=None, invalid_msg=None, env_msg='{} (from {})',
-        falsish=FALSISH, truish=TRUISH, defaultish=DEFAULTISH,
-        default=False, retry=True, env_var_override=None, ofile=None, input=input, prompt=True,
-        msgid=None):
-    """Output <msg> (usually a question) and let user input an answer.
-    Qualifies the answer according to falsish, truish and defaultish as True, False or <default>.
-    If it didn't qualify and retry is False (no retries wanted), return the default [which
-    defaults to False]. If retry is True let user retry answering until answer is qualified.
-
-    If env_var_override is given and this var is present in the environment, do not ask
-    the user, but just use the env var contents as answer as if it was typed in.
-    Otherwise read input from stdin and proceed as normal.
-    If EOF is received instead an input or an invalid input without retry possibility,
-    return default.
-
-    :param msg: introducing message to output on ofile, no \n is added [None]
-    :param retry_msg: retry message to output on ofile, no \n is added [None]
-    :param false_msg: message to output before returning False [None]
-    :param true_msg: message to output before returning True [None]
-    :param default_msg: message to output before returning a <default> [None]
-    :param invalid_msg: message to output after a invalid answer was given [None]
-    :param env_msg: message to output when using input from env_var_override ['{} (from {})'],
-           needs to have 2 placeholders for answer and env var name
-    :param falsish: sequence of answers qualifying as False
-    :param truish: sequence of answers qualifying as True
-    :param defaultish: sequence of answers qualifying as <default>
-    :param default: default return value (defaultish answer was given or no-answer condition) [False]
-    :param retry: if True and input is incorrect, retry. Otherwise return default. [True]
-    :param env_var_override: environment variable name [None]
-    :param ofile: output stream [sys.stderr]
-    :param input: input function [input from builtins]
-    :return: boolean answer value, True or False
-    """
-    def output(msg, msg_type, is_prompt=False, **kwargs):
-        json_output = getattr(logging.getLogger('borg'), 'json', False)
-        if json_output:
-            kwargs.update(dict(
-                type='question_%s' % msg_type,
-                msgid=msgid,
-                message=msg,
-            ))
-            print(json.dumps(kwargs), file=sys.stderr)
-        else:
-            if is_prompt:
-                print(msg, file=ofile, end='', flush=True)
-            else:
-                print(msg, file=ofile)
-
-    msgid = msgid or env_var_override
-    # note: we do not assign sys.stderr as default above, so it is
-    # really evaluated NOW,  not at function definition time.
-    if ofile is None:
-        ofile = sys.stderr
-    if default not in (True, False):
-        raise ValueError("invalid default value, must be True or False")
-    if msg:
-        output(msg, 'prompt', is_prompt=True)
-    while True:
-        answer = None
-        if env_var_override:
-            answer = os.environ.get(env_var_override)
-            if answer is not None and env_msg:
-                output(env_msg.format(answer, env_var_override), 'env_answer', env_var=env_var_override)
-        if answer is None:
-            if not prompt:
-                return default
-            try:
-                answer = input()
-            except EOFError:
-                # avoid defaultish[0], defaultish could be empty
-                answer = truish[0] if default else falsish[0]
-        if answer in defaultish:
-            if default_msg:
-                output(default_msg, 'accepted_default')
-            return default
-        if answer in truish:
-            if true_msg:
-                output(true_msg, 'accepted_true')
-            return True
-        if answer in falsish:
-            if false_msg:
-                output(false_msg, 'accepted_false')
-            return False
-        # if we get here, the answer was invalid
-        if invalid_msg:
-            output(invalid_msg, 'invalid_answer')
-        if not retry:
-            return default
-        if retry_msg:
-            output(retry_msg, 'prompt_retry', is_prompt=True)
-        # in case we used an environment variable and it gave an invalid answer, do not use it again:
-        env_var_override = None
-
-
-def hostname_is_unique():
-    return yes(env_var_override='BORG_HOSTNAME_IS_UNIQUE', prompt=False, env_msg=None, default=True)
diff --git a/src/borg/locking.py b/src/borg/locking.py
index 0fc09275..c3d69674 100644
--- a/src/borg/locking.py
+++ b/src/borg/locking.py
@@ -202,16 +202,6 @@ def break_lock(self):
                 os.unlink(os.path.join(self.path, name))
             os.rmdir(self.path)
 
-    def migrate_lock(self, old_id, new_id):
-        """migrate the lock ownership from old_id to new_id"""
-        assert self.id == old_id
-        new_unique_name = os.path.join(self.path, "%s.%d-%x" % new_id)
-        if self.is_locked() and self.by_me():
-            with open(new_unique_name, "wb"):
-                pass
-            os.unlink(self.unique_name)
-        self.id, self.unique_name = new_id, new_unique_name
-
 
 class LockRoster:
     """
@@ -281,25 +271,6 @@ def modify(self, key, op):
         roster[key] = list(list(e) for e in elements)
         self.save(roster)
 
-    def migrate_lock(self, key, old_id, new_id):
-        """migrate the lock ownership from old_id to new_id"""
-        assert self.id == old_id
-        # need to temporarily switch off stale lock killing as we want to
-        # rather migrate than kill them (at least the one made by old_id).
-        killing, self.kill_stale_locks = self.kill_stale_locks, False
-        try:
-            try:
-                self.modify(key, REMOVE)
-            except KeyError:
-                # entry was not there, so no need to add a new one, but still update our id
-                self.id = new_id
-            else:
-                # old entry removed, update our id and add a updated entry
-                self.id = new_id
-                self.modify(key, ADD)
-        finally:
-            self.kill_stale_locks = killing
-
 
 class Lock:
     """
@@ -402,14 +373,3 @@ def got_exclusive_lock(self):
     def break_lock(self):
         self._roster.remove()
         self._lock.break_lock()
-
-    def migrate_lock(self, old_id, new_id):
-        assert self.id == old_id
-        self.id = new_id
-        if self.is_exclusive:
-            self._lock.migrate_lock(old_id, new_id)
-            self._roster.migrate_lock(EXCLUSIVE, old_id, new_id)
-        else:
-            with self._lock:
-                self._lock.migrate_lock(old_id, new_id)
-                self._roster.migrate_lock(SHARED, old_id, new_id)
diff --git a/src/borg/platform/base.py b/src/borg/platform/base.py
index f56c03be..ba938e66 100644
--- a/src/borg/platform/base.py
+++ b/src/borg/platform/base.py
@@ -15,7 +15,7 @@
 are correctly composed into the base functionality.
 """
 
-API_VERSION = '1.1_02'
+API_VERSION = '1.1_01'
 
 fdatasync = getattr(os, 'fdatasync', os.fsync)
 
diff --git a/src/borg/platform/darwin.pyx b/src/borg/platform/darwin.pyx
index b7e439ab..f13b3662 100644
--- a/src/borg/platform/darwin.pyx
+++ b/src/borg/platform/darwin.pyx
@@ -4,7 +4,7 @@ from ..helpers import user2uid, group2gid
 from ..helpers import safe_decode, safe_encode
 from .posix import swidth
 
-API_VERSION = '1.1_02'
+API_VERSION = '1.1_01'
 
 cdef extern from "sys/acl.h":
     ctypedef struct _acl_t:
diff --git a/src/borg/platform/freebsd.pyx b/src/borg/platform/freebsd.pyx
index 3344de16..4b389821 100644
--- a/src/borg/platform/freebsd.pyx
+++ b/src/borg/platform/freebsd.pyx
@@ -4,7 +4,7 @@ from ..helpers import posix_acl_use_stored_uid_gid
 from ..helpers import safe_encode, safe_decode
 from .posix import swidth
 
-API_VERSION = '1.1_02'
+API_VERSION = '1.1_01'
 
 cdef extern from "errno.h":
     int errno
diff --git a/src/borg/platform/linux.pyx b/src/borg/platform/linux.pyx
index 7c3cf1b0..4352d864 100644
--- a/src/borg/platform/linux.pyx
+++ b/src/borg/platform/linux.pyx
@@ -13,7 +13,7 @@ from .posix import swidth
 from libc cimport errno
 from libc.stdint cimport int64_t
 
-API_VERSION = '1.1_02'
+API_VERSION = '1.1_01'
 
 cdef extern from "sys/types.h":
     int ACL_TYPE_ACCESS
diff --git a/src/borg/platform/posix.pyx b/src/borg/platform/posix.pyx
index 0144e1aa..b8689e2c 100644
--- a/src/borg/platform/posix.pyx
+++ b/src/borg/platform/posix.pyx
@@ -18,21 +18,23 @@ def swidth(s):
         return str_len
 
 
-# for performance reasons, only determine the hostname once.
+# only determine the PID and hostname once.
+# for FUSE mounts, we fork a child process that needs to release
+# the lock made by the parent, so it needs to use the same PID for that.
+_pid = os.getpid()
 # XXX this sometimes requires live internet access for issuing a DNS query in the background.
 _hostname = '%s@%s' % (socket.getfqdn(), uuid.getnode())
 
 
 def get_process_id():
     """
-    Return identification tuple (hostname, pid, thread_id) for 'us'.
-    This always returns the current pid, which might be different from before, e.g. if daemonize() was used.
+    Return identification tuple (hostname, pid, thread_id) for 'us'. If this is a FUSE process, then the PID will be
+    that of the parent, not the forked FUSE child.
 
     Note: Currently thread_id is *always* zero.
     """
     thread_id = 0
-    pid = os.getpid()
-    return _hostname, pid, thread_id
+    return _hostname, _pid, thread_id
 
 
 def process_alive(host, pid, thread):
diff --git a/src/borg/remote.py b/src/borg/remote.py
index 1cc455c2..3e0942dd 100644
--- a/src/borg/remote.py
+++ b/src/borg/remote.py
@@ -726,6 +726,11 @@ def handle_error(unpacked):
                     raise IntegrityError('(not available)')
                 else:
                     raise IntegrityError(args[0].decode())
+            elif error == 'AtticRepository':
+                if old_server:
+                    raise Repository.AtticRepository('(not available)')
+                else:
+                    raise Repository.AtticRepository(args[0].decode())
             elif error == 'PathNotAllowed':
                 if old_server:
                     raise PathNotAllowed('(unknown)')
diff --git a/src/borg/repository.py b/src/borg/repository.py
index a61e4e94..ab473483 100644
--- a/src/borg/repository.py
+++ b/src/borg/repository.py
@@ -30,6 +30,8 @@
 
 MAGIC = b'BORG_SEG'
 MAGIC_LEN = len(MAGIC)
+ATTIC_MAGIC = b'ATTICSEG'
+assert len(ATTIC_MAGIC) == MAGIC_LEN
 TAG_PUT = 0
 TAG_DELETE = 1
 TAG_COMMIT = 2
@@ -116,6 +118,9 @@ class AlreadyExists(Error):
     class InvalidRepository(Error):
         """{} is not a valid repository. Check repo config."""
 
+    class AtticRepository(Error):
+        """Attic repository detected. Please run "borg upgrade {}"."""
+
     class CheckNeeded(ErrorWithTraceback):
         """Inconsistency detected. Please run "borg check {}"."""
 
@@ -134,7 +139,7 @@ class StorageQuotaExceeded(Error):
         """The storage quota ({}) has been exceeded ({}). Try deleting some archives."""
 
     def __init__(self, path, create=False, exclusive=False, lock_wait=None, lock=True,
-                 append_only=False, storage_quota=None):
+                 append_only=False, storage_quota=None, check_segment_magic=True):
         self.path = os.path.abspath(path)
         self._location = Location('file://%s' % self.path)
         self.io = None  # type: LoggedIO
@@ -154,6 +159,7 @@ def __init__(self, path, create=False, exclusive=False, lock_wait=None, lock=Tru
         self.storage_quota = storage_quota
         self.storage_quota_use = 0
         self.transaction_doomed = None
+        self.check_segment_magic = check_segment_magic
 
     def __del__(self):
         if self.lock:
@@ -346,11 +352,6 @@ def get_transaction_id(self):
     def break_lock(self):
         Lock(os.path.join(self.path, 'lock')).break_lock()
 
-    def migrate_lock(self, old_id, new_id):
-        # note: only needed for local repos
-        if self.lock is not None:
-            self.lock.migrate_lock(old_id, new_id)
-
     def open(self, path, exclusive, lock_wait=None, lock=True):
         self.path = path
         if not os.path.isdir(path):
@@ -375,6 +376,12 @@ def open(self, path, exclusive, lock_wait=None, lock=True):
             self.storage_quota = self.config.getint('repository', 'storage_quota', fallback=0)
         self.id = unhexlify(self.config.get('repository', 'id').strip())
         self.io = LoggedIO(self.path, self.max_segment_size, self.segments_per_dir)
+        if self.check_segment_magic:
+            # read a segment and check whether we are dealing with a non-upgraded Attic repository
+            segment = self.io.get_latest_segment()
+            if segment is not None and self.io.get_segment_magic(segment) == ATTIC_MAGIC:
+                self.close()
+                raise self.AtticRepository(path)
 
     def close(self):
         if self.lock:
@@ -1250,6 +1257,11 @@ def segment_exists(self, segment):
     def segment_size(self, segment):
         return os.path.getsize(self.segment_filename(segment))
 
+    def get_segment_magic(self, segment):
+        fd = self.get_fd(segment)
+        fd.seek(0)
+        return fd.read(MAGIC_LEN)
+
     def iter_objects(self, segment, offset=0, include_data=False, read_data=True):
         """
         Return object iterator for *segment*.
diff --git a/src/borg/upgrader.py b/src/borg/upgrader.py
index 0b92ce8e..1044f649 100644
--- a/src/borg/upgrader.py
+++ b/src/borg/upgrader.py
@@ -19,6 +19,7 @@
 class AtticRepositoryUpgrader(Repository):
     def __init__(self, *args, **kw):
         kw['lock'] = False  # do not create borg lock files (now) in attic repo
+        kw['check_segment_magic'] = False  # skip the Attic check when upgrading
         super().__init__(*args, **kw)
 
     def upgrade(self, dryrun=True, inplace=False, progress=False):


Test patch:
diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py
index 0eaea5e7..ac7eacf5 100644
--- a/src/borg/testsuite/archiver.py
+++ b/src/borg/testsuite/archiver.py
@@ -55,13 +55,12 @@
 from . import BaseTestCase, changedir, environment_variable, no_selinux
 from . import are_symlinks_supported, are_hardlinks_supported, are_fifos_supported, is_utime_fully_supported
 from .platform import fakeroot_detected
+from .upgrader import attic_repo
 from . import key
 
 
 src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
 
-ISO_FORMAT = '%Y-%m-%dT%H:%M:%S'
-
 
 def exec_cmd(*args, archiver=None, fork=False, exe=None, input=b'', binary_output=False, **kw):
     if fork:
@@ -1306,7 +1305,6 @@ def test_info_json(self):
         repository = info_repo['repository']
         assert len(repository['id']) == 64
         assert 'last_modified' in repository
-        assert datetime.strptime(repository['last_modified'], ISO_FORMAT)  # must not raise
         assert info_repo['encryption']['mode'] == 'repokey'
         assert 'keyfile' not in info_repo['encryption']
         cache = info_repo['cache']
@@ -1849,11 +1847,9 @@ def test_list_json(self):
         list_repo = json.loads(self.cmd('list', '--json', self.repository_location))
         repository = list_repo['repository']
         assert len(repository['id']) == 64
-        assert datetime.strptime(repository['last_modified'], ISO_FORMAT)  # must not raise
+        assert 'last_modified' in repository
         assert list_repo['encryption']['mode'] == 'repokey'
         assert 'keyfile' not in list_repo['encryption']
-        archive0 = list_repo['archives'][0]
-        assert datetime.strptime(archive0['time'], ISO_FORMAT)  # must not raise
 
         list_archive = self.cmd('list', '--json-lines', self.repository_location + '::test')
         items = [json.loads(s) for s in list_archive.splitlines()]
@@ -1861,7 +1857,6 @@ def test_list_json(self):
         file1 = items[1]
         assert file1['path'] == 'input/file1'
         assert file1['size'] == 81920
-        assert datetime.strptime(file1['isomtime'], ISO_FORMAT)  # must not raise
 
         list_archive = self.cmd('list', '--json-lines', '--format={sha256}', self.repository_location + '::test')
         items = [json.loads(s) for s in list_archive.splitlines()]
@@ -2731,6 +2726,27 @@ def test_extract_hardlinks(self):
             assert os.stat('input/dir1/aaaa').st_nlink == 2
             assert os.stat('input/dir1/source2').st_nlink == 2
 
+    def test_detect_attic_repo(self):
+        path = attic_repo(self.repository_path)
+        cmds = [
+            ['create', path + '::test', self.tmpdir],
+            ['extract', path + '::test'],
+            ['check', path],
+            ['rename', path + '::test', 'newname'],
+            ['list', path],
+            ['delete', path],
+            ['prune', path],
+            ['info', path + '::test'],
+            ['mount', path, self.tmpdir],
+            ['key', 'export', path, 'exported'],
+            ['key', 'import', path, 'import'],
+            ['change-passphrase', path],
+            ['break-lock', path],
+        ]
+        for args in cmds:
+            output = self.cmd(*args, fork=True, exit_code=2)
+            assert 'Attic repository detected.' in output
+
 
 @unittest.skipUnless('binary' in BORG_EXES, 'no borg.exe available')
 class ArchiverTestCaseBinary(ArchiverTestCase):
diff --git a/src/borg/testsuite/locking.py b/src/borg/testsuite/locking.py
index 64a79281..fe8676d4 100644
--- a/src/borg/testsuite/locking.py
+++ b/src/borg/testsuite/locking.py
@@ -3,7 +3,6 @@
 
 import pytest
 
-from ..helpers import daemonize
 from ..platform import get_process_id, process_alive
 from ..locking import TimeoutTimer, ExclusiveLock, Lock, LockRoster, \
                       ADD, REMOVE, SHARED, EXCLUSIVE, LockTimeout, NotLocked, NotMyLock
@@ -77,19 +76,6 @@ def test_kill_stale(self, lockpath, free_pid):
             with pytest.raises(LockTimeout):
                 ExclusiveLock(lockpath, id=our_id, kill_stale_locks=True, timeout=0.1).acquire()
 
-    def test_migrate_lock(self, lockpath):
-        old_id, new_id = ID1, ID2
-        assert old_id[1] != new_id[1]  # different PIDs (like when doing daemonize())
-        lock = ExclusiveLock(lockpath, id=old_id).acquire()
-        assert lock.id == old_id  # lock is for old id / PID
-        old_unique_name = lock.unique_name
-        assert lock.by_me()  # we have the lock
-        lock.migrate_lock(old_id, new_id)  # fix the lock
-        assert lock.id == new_id  # lock corresponds to the new id / PID
-        new_unique_name = lock.unique_name
-        assert lock.by_me()  # we still have the lock
-        assert old_unique_name != new_unique_name  # locking filename is different now
-
 
 class TestLock:
     def test_shared(self, lockpath):
@@ -169,22 +155,6 @@ def test_kill_stale(self, lockpath, free_pid):
             with pytest.raises(LockTimeout):
                 Lock(lockpath, id=our_id, kill_stale_locks=True, timeout=0.1).acquire()
 
-    def test_migrate_lock(self, lockpath):
-        old_id, new_id = ID1, ID2
-        assert old_id[1] != new_id[1]  # different PIDs (like when doing daemonize())
-
-        lock = Lock(lockpath, id=old_id, exclusive=True).acquire()
-        assert lock.id == old_id
-        lock.migrate_lock(old_id, new_id)  # fix the lock
-        assert lock.id == new_id
-        lock.release()
-
-        lock = Lock(lockpath, id=old_id, exclusive=False).acquire()
-        assert lock.id == old_id
-        lock.migrate_lock(old_id, new_id)  # fix the lock
-        assert lock.id == new_id
-        lock.release()
-
 
 @pytest.fixture()
 def rosterpath(tmpdir):
@@ -237,14 +207,3 @@ def test_kill_stale(self, rosterpath, free_pid):
         other_killer_roster = LockRoster(rosterpath, kill_stale_locks=True)
         # Did not kill us, since we're alive
         assert other_killer_roster.get(SHARED) == {our_id, cant_know_if_dead_id}
-
-    def test_migrate_lock(self, rosterpath):
-        old_id, new_id = ID1, ID2
-        assert old_id[1] != new_id[1]  # different PIDs (like when doing daemonize())
-        roster = LockRoster(rosterpath, id=old_id)
-        assert roster.id == old_id
-        roster.modify(SHARED, ADD)
-        assert roster.get(SHARED) == {old_id}
-        roster.migrate_lock(SHARED, old_id, new_id)  # fix the lock
-        assert roster.id == new_id
-        assert roster.get(SHARED) == {new_id}
diff --git a/src/borg/testsuite/upgrader.py b/src/borg/testsuite/upgrader.py
index 3fd7500c..08c0693b 100644
--- a/src/borg/testsuite/upgrader.py
+++ b/src/borg/testsuite/upgrader.py
@@ -85,8 +85,8 @@ def test_convert_segments(attic_repo, inplace):
     :param attic_repo: a populated attic repository (fixture)
     """
     repo_path = attic_repo
-    # check should fail because of magic number
-    assert not repo_valid(repo_path)
+    with pytest.raises(Repository.AtticRepository):
+        repo_valid(repo_path)
     repository = AtticRepositoryUpgrader(repo_path, create=False)
     with repository:
         segments = [filename for i, filename in repository.io.segment_iterator()]
@@ -149,8 +149,8 @@ def test_convert_all(attic_repo, attic_key_file, inplace):
     """
     repo_path = attic_repo
 
-    # check should fail because of magic number
-    assert not repo_valid(repo_path)
+    with pytest.raises(Repository.AtticRepository):
+        repo_valid(repo_path)
 
     def stat_segment(path):
         return os.stat(os.path.join(path, 'data', '0', '0'))