diff --git a/app/html/modal.js b/app/html/modal.js
index 43589cd8..b73854cf 100644
--- a/app/html/modal.js
+++ b/app/html/modal.js
@@ -4,7 +4,7 @@ const { h, Value } = require('mutant')
 exports.gives = nest('app.html.modal')
 
 exports.create = (api) => {
-  return nest('app.html.modal', (content, { isOpen, onClose, className = '' } = {}) => {
+  return nest('app.html.modal', (content, { isOpen, onOpen, onClose, className = '' } = {}) => {
     if (typeof isOpen !== 'function') isOpen = Value(false)
 
     const openMe = () => {
@@ -15,7 +15,7 @@ exports.create = (api) => {
       if (typeof onClose === 'function') onClose()
     }
 
-    const lb = h('Modal -closed',
+    const modal = h('Modal -closed',
       {
         className,
         'ev-click': closeMe,
@@ -33,27 +33,29 @@ exports.create = (api) => {
 
     isOpen(state => {
       if (state === true) {
-        lb.classList.remove('-closed')
-        lb.classList.add('-open')
+        modal.classList.remove('-closed')
+        modal.classList.add('-open')
       } else {
-        lb.classList.remove('-open')
-        lb.classList.add('-closed')
+        modal.classList.remove('-open')
+        modal.classList.add('-closed')
         return
       }
 
+      if (typeof onOpen === 'function') onOpen()
       focus()
+
       function focus () {
-        if (!lb.isConnected) setTimeout(focus, 200)
+        if (!modal.isConnected) setTimeout(focus, 200)
         else {
-          const target = lb.querySelector('input') || lb.querySelector('textarea')
+          const target = modal.querySelector('input') || modal.querySelector('textarea')
           if (target) target.focus()
         }
       }
     })
 
-    lb.open = openMe
-    lb.close = closeMe
+    modal.open = openMe
+    modal.close = closeMe
 
-    return lb
+    return modal
   })
 }
diff --git a/app/html/modal.mcss b/app/html/modal.mcss
index 20c4df40..38e87b07 100644
--- a/app/html/modal.mcss
+++ b/app/html/modal.mcss
@@ -25,11 +25,13 @@ Modal {
   }
 
   -open {
-    display: grid
+    /* display: grid */
+    visibility: visible
   }
 
   -closed {
-    display: none
+    /* display: none */
+    visibility: hidden
   }
 
   -dark {
diff --git a/app/page/network/index.js b/app/page/network/index.js
index 107de28c..682c56c5 100644
--- a/app/page/network/index.js
+++ b/app/page/network/index.js
@@ -92,7 +92,11 @@ exports.create = function (api) {
     container.keyboardScroll = function (n) {
       if (isNaN(n)) return
 
-      state.activeGroup.set((state.activeGroup() + n) % state.groups.length)
+      var nextGroup = state.activeGroup() + n
+      if (nextGroup === -1) nextGroup = state.groups.length - 1
+      else nextGroup = nextGroup % state.groups.length
+
+      state.activeGroup.set(nextGroup)
     }
     return container
   }
diff --git a/index.js b/index.js
index 9c2befa5..76f51323 100644
--- a/index.js
+++ b/index.js
@@ -9,8 +9,7 @@ const plugins = [
   'ssb-local',
   'ssb-logging',
 
-  'ssb-legacy-conn',
-  // 'ssb-conn', // TODO requires secret-stack@^6.2.0 , but ssb-server shrinkwrapped @6.1.2
+  'ssb-conn', // TODO need to re-enable local auto-gossip
   'ssb-replicate',
   'ssb-friends',
 
diff --git a/package-lock.json b/package-lock.json
index f2e8d386..96bfd93f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,6 +18,14 @@
       "requires": {
         "core-js": "^2.6.5",
         "regenerator-runtime": "^0.13.2"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.13.3",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+          "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
+          "dev": true
+        }
       }
     },
     "@f/zip-obj": {
@@ -406,9 +414,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "10.14.12",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz",
-      "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg=="
+      "version": "10.14.13",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.13.tgz",
+      "integrity": "sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ=="
     },
     "abstract-leveldown": {
       "version": "6.0.3",
@@ -428,9 +436,9 @@
       }
     },
     "acorn": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz",
-      "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw=="
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz",
+      "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q=="
     },
     "acorn-dynamic-import": {
       "version": "4.0.0",
@@ -612,9 +620,9 @@
       },
       "dependencies": {
         "semver": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
-          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         }
       }
@@ -1054,13 +1062,6 @@
       "requires": {
         "core-js": "^2.4.0",
         "regenerator-runtime": "^0.11.0"
-      },
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.11.1",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
-        }
       }
     },
     "babel-template": {
@@ -1184,9 +1185,9 @@
       "dev": true
     },
     "base64-url": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-2.2.2.tgz",
-      "integrity": "sha512-JMAkNo3MJ7GG2CHPVMiGPrzGQizUcVE9qvCU6pxQln4aYZZgYM6BJHXbawDegSoryvsKGrK3FuBO9IuGWErRLQ=="
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-2.3.2.tgz",
+      "integrity": "sha512-2QpXjtjndKqPn9JKBpMTCbDGpgicfLUu+N5Y1vEfbuyqb1MN1D68C9YKCth4SjTHRvJleF3tPuxhLbH79MM0iQ=="
     },
     "bash-color": {
       "version": "0.0.4",
@@ -1322,8 +1323,7 @@
     "bluebird": {
       "version": "3.5.5",
       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
-      "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
-      "dev": true
+      "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w=="
     },
     "bluebird-lst": {
       "version": "1.0.9",
@@ -2001,6 +2001,11 @@
       "resolved": "https://registry.npmjs.org/charwise/-/charwise-3.0.1.tgz",
       "integrity": "sha512-RcdumNsM6fJZ5HHbYunqj2bpurVRGsXour3OR+SlLEHFhG6ALm54i6Osnh+OvO7kEoSBzwExpblYFH8zKQiEPw=="
     },
+    "chessground": {
+      "version": "7.6.8",
+      "resolved": "https://registry.npmjs.org/chessground/-/chessground-7.6.8.tgz",
+      "integrity": "sha512-8Yj9e7qnmunRguPWLeTyPLJJb6mcAyb1JihacqT3aMDTQbKMyBr2w93VAakvlJGDRB1pJsliR7bBl2FfUl08mw=="
+    },
     "chloride": {
       "version": "2.2.14",
       "resolved": "https://registry.npmjs.org/chloride/-/chloride-2.2.14.tgz",
@@ -3136,9 +3141,9 @@
       }
     },
     "electron": {
-      "version": "4.2.6",
-      "resolved": "https://registry.npmjs.org/electron/-/electron-4.2.6.tgz",
-      "integrity": "sha512-qnaQXQcRKugXoQ7/4J4lYKzyU/RJMK/qrIGyC8KsgGG/IVVagolNPYy7QrsGpJ7YwpQHzNjwtDNaJ/UI7VTCyA==",
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/electron/-/electron-4.2.8.tgz",
+      "integrity": "sha512-/D9zfs+EWLN4yLV7tu2kWyXUnZQ3CKG1cmWbXeSFXF+0dNXQ8iFpY49dqZRoHGIBImFfp2x4N3Zc5Tu7rw3PJw==",
       "requires": {
         "@types/node": "^10.12.18",
         "electron-download": "^4.1.0",
@@ -3437,12 +3442,6 @@
           "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
           "dev": true
         },
-        "mime": {
-          "version": "2.4.4",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
-          "dev": true
-        },
         "supports-color": {
           "version": "5.5.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -3590,13 +3589,6 @@
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
       "requires": {
         "is-arrayish": "^0.2.1"
-      },
-      "dependencies": {
-        "is-arrayish": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-          "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
-        }
       }
     },
     "es-abstract": {
@@ -3897,9 +3889,9 @@
       }
     },
     "eslint-module-utils": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz",
-      "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==",
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
+      "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
       "dev": true,
       "requires": {
         "debug": "^2.6.8",
@@ -4660,9 +4652,9 @@
       }
     },
     "flumelog-offset": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/flumelog-offset/-/flumelog-offset-3.4.2.tgz",
-      "integrity": "sha512-pj8gc3idzbpWjGQPXvRwNdkqtHPx/0olLsyip3u1lULP+LVvcYGYvTt8AU0frKWSFsGST0B8WVh9DrZ5rsEzbg==",
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/flumelog-offset/-/flumelog-offset-3.4.3.tgz",
+      "integrity": "sha512-XG2uVxoMjwcWKHniKSp1Iyo4XSZqvpK/KcQNDfTUM+ajpehLveMTd5H0cXWzaVlNjkHE0oGDGL7CgHrDyixiIg==",
       "requires": {
         "aligned-block-file": "^1.2.0",
         "append-batch": "0.0.2",
@@ -4672,6 +4664,7 @@
         "obv": "0.0.1",
         "pull-cursor": "^3.0.0",
         "pull-looper": "^1.0.0",
+        "pull-stream": "^3.6.13",
         "uint48be": "^2.0.1"
       },
       "dependencies": {
@@ -5563,6 +5556,14 @@
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
       "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg=="
     },
+    "graphreduce": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/graphreduce/-/graphreduce-3.0.4.tgz",
+      "integrity": "sha1-v0QtCoeOg5AeXvPmUtI/+1uDHtc=",
+      "requires": {
+        "statistics": "^3.3.0"
+      }
+    },
     "har-schema": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
@@ -5683,11 +5684,21 @@
         "os-tmpdir": "^1.0.1"
       }
     },
+    "hoox": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/hoox/-/hoox-0.0.1.tgz",
+      "integrity": "sha1-CKdNknKpzIOujmu+AwPw7nZDIJQ="
+    },
     "hosted-git-info": {
       "version": "2.7.1",
       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
       "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
     },
+    "howler": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/howler/-/howler-2.1.2.tgz",
+      "integrity": "sha512-oKrTFaVXsDRoB/jik7cEpWKTj7VieoiuzMYJ7E/EU5ayvmpRhumCv3YQ3823zi9VTJkSWAhbryHnlZAionGAJg=="
+    },
     "hscrpt": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/hscrpt/-/hscrpt-0.0.1.tgz",
@@ -5737,9 +5748,9 @@
       "integrity": "sha1-KA0DNjeRmTBrLhUY49X2OBy4UH0="
     },
     "hypercore": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-7.5.0.tgz",
-      "integrity": "sha512-Uuk0xmc73YzkqRCcLtAUTm5dmtdvg6yG3sMytIJuf/bu+9SB5pej0tILEBgnI+TmWRdJrxd242j1C4ND96V0xg==",
+      "version": "7.5.1",
+      "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-7.5.1.tgz",
+      "integrity": "sha512-tgololYj3O6Y0Mg6PK7EJntRu+auKSYuER2a8pVetPqnDSJ1RfAVlyVr3VmuS5W9hS0PwH4OXl4R/uVfkuNNoQ==",
       "requires": {
         "array-lru": "^1.1.0",
         "atomic-batcher": "^1.0.2",
@@ -5786,9 +5797,9 @@
       }
     },
     "hypercore-protocol": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/hypercore-protocol/-/hypercore-protocol-6.11.0.tgz",
-      "integrity": "sha512-V/0Vru8gavoO++K2QFOAXu7xgBuXcBAjURQ9BQ48DnQ/p4hK4Jy76ulRnppDHpbDthxRziMWLZfmYXncwD63Aw==",
+      "version": "6.11.1",
+      "resolved": "https://registry.npmjs.org/hypercore-protocol/-/hypercore-protocol-6.11.1.tgz",
+      "integrity": "sha512-4vyYGzSTRCfpIPnpYO/WN0VeS2oGeIrzCCwIXfz5TL2dyyHu7wF5xiigNuUfTn9n3cTOwwbH+EKsygTNsO2yfw==",
       "requires": {
         "buffer-alloc-unsafe": "^1.0.0",
         "buffer-from": "^1.0.0",
@@ -5839,13 +5850,6 @@
         "mime": "^2.3.1",
         "pump": "^3.0.0",
         "range-parser": "^1.2.0"
-      },
-      "dependencies": {
-        "mime": {
-          "version": "2.4.4",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
-        }
       }
     },
     "hyperdrive-network-speed": {
@@ -6206,10 +6210,9 @@
       }
     },
     "is-arrayish": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-      "dev": true
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
     },
     "is-binary-path": {
       "version": "1.0.1",
@@ -7086,6 +7089,14 @@
         "phin": "^2.9.1",
         "xhr": "^2.0.1",
         "xtend": "^4.0.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+          "dev": true
+        }
       }
     },
     "load-json-file": {
@@ -7110,9 +7121,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.14",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
-      "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw=="
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
     },
     "lodash.assign": {
       "version": "4.2.0",
@@ -7316,6 +7327,11 @@
         "typewiselite": "^1.0.0"
       }
     },
+    "map-merge": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/map-merge/-/map-merge-1.1.0.tgz",
+      "integrity": "sha1-am/FjJXYqrRsK93kTVFbbuBvzjQ="
+    },
     "map-obj": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
@@ -7479,9 +7495,9 @@
       }
     },
     "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+      "version": "2.4.4",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+      "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
     },
     "mime-db": {
       "version": "1.40.0",
@@ -7564,6 +7580,11 @@
         "recursive-watch": "^1.1.1"
       }
     },
+    "mithril": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/mithril/-/mithril-1.1.6.tgz",
+      "integrity": "sha512-fWcUrQTCqu8M916rj1MFGlHaPh65rznPu6U/N2U9g81H89klDCIptSK5bnkNkC+jyi3sJIXjyGhSQjUnR8jzZA=="
+    },
     "mixin-deep": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -7667,9 +7688,9 @@
       "integrity": "sha512-PZM4dhYFmCF6uZGWpEmoPMUqJBywS9IcAgybT2GmSpYI1BvGvoWSdbio+ik+q/YD2vodhvslESWIS3NnkKYdqQ=="
     },
     "multiserver": {
-      "version": "3.3.6",
-      "resolved": "https://registry.npmjs.org/multiserver/-/multiserver-3.3.6.tgz",
-      "integrity": "sha512-zuPjEaPEVMosWXnfNalXv3QyjYCwaD2emC6l/ozwMeaCcZ/Do7WMb/ZF8MC6TVwhV9Y7eTcnBiYEP/hq8zA2nA==",
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/multiserver/-/multiserver-3.4.0.tgz",
+      "integrity": "sha512-HSGnZBXDM9e8gi3YyhObwiDYP3BFeL+TV22H1dAReigHHMc52IDBsz9N1OR72OKxCd7SMD+gKBpVJbJohhb3og==",
       "requires": {
         "debug": "^4.1.1",
         "multicb": "^1.2.2",
@@ -7709,12 +7730,11 @@
       }
     },
     "mutant": {
-      "version": "3.23.0",
-      "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.23.0.tgz",
-      "integrity": "sha512-gCMc5o0CtRosBJIvQnVzYuD+vDN4rWeGtWAjbpsZIpArIGEyITMCK0v6WnIcuSyYl5EiCvTbtPVUOwPjo7Mp0w==",
+      "version": "3.22.1",
+      "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.22.1.tgz",
+      "integrity": "sha1-kEh1RvcAs8KKqApD0c99M48wdYE=",
       "requires": {
         "browser-split": "0.0.1",
-        "source-map-support": "^0.5.9",
         "xtend": "^4.0.1"
       },
       "dependencies": {
@@ -7722,20 +7742,6 @@
           "version": "0.0.1",
           "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.1.tgz",
           "integrity": "sha1-ewl1dPjj6tYG+0Zk5krf3aKYGpM="
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        },
-        "source-map-support": {
-          "version": "0.5.12",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
-          "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
-          "requires": {
-            "buffer-from": "^1.0.0",
-            "source-map": "^0.6.0"
-          }
         }
       }
     },
@@ -7881,9 +7887,9 @@
       "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M="
     },
     "nearley": {
-      "version": "2.16.0",
-      "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz",
-      "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==",
+      "version": "2.17.0",
+      "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.17.0.tgz",
+      "integrity": "sha512-duA4zGPF0EC93e0UNqCowBiZg6wnBKUazA1YSYoyJDKx24dPqNITBZb3dp/e92wTdyeGKe+ng1iOTWn69FiGEQ==",
       "requires": {
         "commander": "^2.19.0",
         "moo": "^0.4.3",
@@ -8156,9 +8162,9 @@
       }
     },
     "omggif": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz",
-      "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=",
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
+      "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==",
       "dev": true
     },
     "on-change-network": {
@@ -8305,21 +8311,21 @@
       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
     },
     "package-json": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.4.0.tgz",
-      "integrity": "sha512-bd1T8OBG7hcvMd9c/udgv6u5v9wISP3Oyl9Cm7Weop8EFwrtcQDnS2sb6zhwqus2WslSr5wSTIPiTTpxxmPm7Q==",
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
       "dev": true,
       "requires": {
         "got": "^9.6.0",
-        "registry-auth-token": "^3.4.0",
+        "registry-auth-token": "^4.0.0",
         "registry-url": "^5.0.0",
-        "semver": "^6.1.1"
+        "semver": "^6.2.0"
       },
       "dependencies": {
         "semver": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
-          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         }
       }
@@ -8533,9 +8539,9 @@
       }
     },
     "patchbay-gatherings": {
-      "version": "3.2.14",
-      "resolved": "https://registry.npmjs.org/patchbay-gatherings/-/patchbay-gatherings-3.2.14.tgz",
-      "integrity": "sha512-gDXhuMh17TQGd7LOk9raGJzgiYJ+/EaJgTNpmC8O9ZZwIY1RkLL2dwyhdwYXfPTYOYOkNoixRUtRGCpq1hsRDw==",
+      "version": "3.2.19",
+      "resolved": "https://registry.npmjs.org/patchbay-gatherings/-/patchbay-gatherings-3.2.19.tgz",
+      "integrity": "sha512-GEj68oK+OskqGcdfwxmWBwJIXbvulLPYx362+OwUP9ou8pzyq8WH5ghbzo5AaU+0Rz6JIqiStZ8/xGMZMQjKUw==",
       "requires": {
         "depject": "^4.1.1",
         "depnest": "^1.3.0",
@@ -8555,6 +8561,11 @@
         "suggest-box": "^2.2.3"
       },
       "dependencies": {
+        "browser-split": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.1.tgz",
+          "integrity": "sha1-ewl1dPjj6tYG+0Zk5krf3aKYGpM="
+        },
         "duplexer2": {
           "version": "0.0.2",
           "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
@@ -8585,6 +8596,17 @@
             "estraverse": "~1.5.0",
             "esutils": "~1.0.0",
             "source-map": "~0.1.33"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.1.43",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+              "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+              "optional": true,
+              "requires": {
+                "amdefine": ">=0.0.4"
+              }
+            }
           }
         },
         "esprima": {
@@ -8607,6 +8629,16 @@
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
           "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
         },
+        "mutant": {
+          "version": "3.23.0",
+          "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.23.0.tgz",
+          "integrity": "sha512-gCMc5o0CtRosBJIvQnVzYuD+vDN4rWeGtWAjbpsZIpArIGEyITMCK0v6WnIcuSyYl5EiCvTbtPVUOwPjo7Mp0w==",
+          "requires": {
+            "browser-split": "0.0.1",
+            "source-map-support": "^0.5.9",
+            "xtend": "^4.0.1"
+          }
+        },
         "object-inspect": {
           "version": "0.4.0",
           "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz",
@@ -8641,12 +8673,17 @@
           }
         },
         "source-map": {
-          "version": "0.1.43",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "optional": true,
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "source-map-support": {
+          "version": "0.5.13",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+          "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
           "requires": {
-            "amdefine": ">=0.0.4"
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
           }
         },
         "static-eval": {
@@ -8705,6 +8742,14 @@
                 "readable-stream": "~1.0.17",
                 "xtend": "~2.1.1"
               }
+            },
+            "xtend": {
+              "version": "2.1.2",
+              "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+              "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+              "requires": {
+                "object-keys": "~0.4.0"
+              }
             }
           }
         },
@@ -8712,14 +8757,6 @@
           "version": "0.10.31",
           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
           "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-        },
-        "xtend": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
-          "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
-          "requires": {
-            "object-keys": "~0.4.0"
-          }
         }
       }
     },
@@ -9498,6 +9535,11 @@
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
       "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA=="
     },
+    "pubsub-js": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.7.0.tgz",
+      "integrity": "sha512-Pb68P9qFZxnvDipHMuj9oT1FoIgBcXJ9C9eWdHCLZAnulaUoJ3+Y87RhGMYilWpun6DMWVmvK70T4RP4drZMSA=="
+    },
     "pull-abortable": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/pull-abortable/-/pull-abortable-4.1.1.tgz",
@@ -9508,6 +9550,24 @@
       "resolved": "https://registry.npmjs.org/pull-async/-/pull-async-1.0.0.tgz",
       "integrity": "sha1-FGs24+BD16ZmtZoUFl/dO+889Ew="
     },
+    "pull-async-filter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/pull-async-filter/-/pull-async-filter-1.0.0.tgz",
+      "integrity": "sha1-68NhfZ3iRjkIyJ/QFnHHJ1ZNaDE=",
+      "requires": {
+        "pull-stream": "^2.26.0"
+      },
+      "dependencies": {
+        "pull-stream": {
+          "version": "2.28.4",
+          "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-2.28.4.tgz",
+          "integrity": "sha1-fql0E8FhnCC8O9+eEOkTR7AyU+Q=",
+          "requires": {
+            "pull-core": "~1.1.0"
+          }
+        }
+      }
+    },
     "pull-box-stream": {
       "version": "1.0.13",
       "resolved": "https://registry.npmjs.org/pull-box-stream/-/pull-box-stream-1.0.13.tgz",
@@ -9637,6 +9697,27 @@
       "resolved": "https://registry.npmjs.org/pull-hash/-/pull-hash-1.0.0.tgz",
       "integrity": "sha1-/K1NJQe/LCsyMfZT3Jv7LbTw2Iw="
     },
+    "pull-high-watermark": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/pull-high-watermark/-/pull-high-watermark-0.2.0.tgz",
+      "integrity": "sha512-kgiY2WwebW6i6oCC2ZuwJhHb/6zQ5rY/NwxbZu7Rp2sMVwWIAHGB0Pf3s0sffxdAHL3WkJKVWFeatTFLkRgjtA=="
+    },
+    "pull-inactivity": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/pull-inactivity/-/pull-inactivity-2.1.3.tgz",
+      "integrity": "sha512-swJ/jwkIN/O1bQCE3iY7Xy9r3gYuJ50MXaxZilw/HIduAy4tJu+vcz2/If0L+xNK7Ku/FfjtVbTpRTe7sf3hmA==",
+      "requires": {
+        "pull-abortable": "~4.0.0",
+        "pull-stream": "^3.4.5"
+      },
+      "dependencies": {
+        "pull-abortable": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/pull-abortable/-/pull-abortable-4.0.0.tgz",
+          "integrity": "sha1-cBephMO4NN53usOMELd28i38GEM="
+        }
+      }
+    },
     "pull-iterable": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/pull-iterable/-/pull-iterable-0.1.0.tgz",
@@ -9758,6 +9839,14 @@
       "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz",
       "integrity": "sha1-Xy867UethpGfAbEqLpnW8b13ZYE="
     },
+    "pull-rate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pull-rate/-/pull-rate-1.0.2.tgz",
+      "integrity": "sha1-F7IxrV81n2dYJmcBcrDlkMiWTo0=",
+      "requires": {
+        "pull-stream": "^3.6.0"
+      }
+    },
     "pull-reader": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/pull-reader/-/pull-reader-1.3.1.tgz",
@@ -9964,6 +10053,11 @@
       "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
       "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234="
     },
+    "ramda": {
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz",
+      "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ=="
+    },
     "randexp": {
       "version": "0.4.6",
       "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
@@ -10192,10 +10286,9 @@
       }
     },
     "regenerator-runtime": {
-      "version": "0.13.2",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
-      "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==",
-      "dev": true
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
     },
     "regex-cache": {
       "version": "0.4.4",
@@ -10221,12 +10314,12 @@
       "dev": true
     },
     "registry-auth-token": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
-      "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz",
+      "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==",
       "dev": true,
       "requires": {
-        "rc": "^1.1.6",
+        "rc": "^1.2.8",
         "safe-buffer": "^5.0.1"
       }
     },
@@ -10544,6 +10637,12 @@
           "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz",
           "integrity": "sha1-E1uZLAV1yYXPoPSUoyJ+0jhYPs4=",
           "dev": true
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+          "dev": true
         }
       }
     },
@@ -10669,9 +10768,9 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
     },
     "sanitize-filename": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
-      "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=",
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.2.tgz",
+      "integrity": "sha512-cmTzND7RMxUB+f7gI+4+KAVHWEg0lfXvQJdko+FXDP5bNbGIdx4KMP5pX6lv5jfT9jSf6OBbjyxjFtZQwYA/ig==",
       "dev": true,
       "requires": {
         "truncate-utf8-bytes": "^1.0.0"
@@ -10872,6 +10971,30 @@
         "pull-stream": "^3.4.5"
       }
     },
+    "secret-stack": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/secret-stack/-/secret-stack-6.2.1.tgz",
+      "integrity": "sha512-7hw13S77Et4yC23uVXOFDRyullxAvFuoN3XW6PvHlAVkYMirLkyeglPOwPTk5JhYwIKPdpIz6vQ7DM0zSlOUHA==",
+      "requires": {
+        "debug": "^4.1.0",
+        "hoox": "0.0.1",
+        "ip": "^1.1.5",
+        "map-merge": "^1.1.0",
+        "multiserver": "^3.1.0",
+        "muxrpc": "^6.4.0",
+        "non-private-ip": "^1.4.3",
+        "pull-inactivity": "~2.1.1",
+        "pull-rate": "^1.0.2",
+        "pull-stream": "^3.4.5",
+        "stream-to-pull-stream": "^1.6.1",
+        "to-camel-case": "^1.0.0"
+      }
+    },
+    "secret-stack-decorators": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/secret-stack-decorators/-/secret-stack-decorators-1.0.0.tgz",
+      "integrity": "sha512-IOg/RCXS6q5rRuGPV0fsExG5D5wGVk+evvPl0pdZJrfBwDQiWGi4yxPhDNxvZb/So4TiVj8iQRxVdkWwrPFaBg=="
+    },
     "secrets.js-grempe": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/secrets.js-grempe/-/secrets.js-grempe-1.1.0.tgz",
@@ -11023,9 +11146,9 @@
           }
         },
         "semver": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
-          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         }
       }
@@ -11096,6 +11219,14 @@
       "dev": true,
       "requires": {
         "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+          "dev": true
+        }
       }
     },
     "single-line-log": {
@@ -11256,9 +11387,9 @@
       }
     },
     "sodium-browserify": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.7.tgz",
-      "integrity": "sha512-PGhNO8KravjroRDYvurMPRYi4xMM7zjTW10R77Nq9sjkU314YA2sPeXS6UA5k/rLHaXLaZ6YfLLVz+DdCU5w0g==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.3.0.tgz",
+      "integrity": "sha512-1KRS6Oew3X13AIZhbmGF0YBdt2pQdafJMfv83OZHWbzxG92YBBnN8HYx/VKmYB4xCe90eidNaDJWBEFw/o3ahw==",
       "requires": {
         "libsodium-wrappers": "^0.7.4",
         "sha.js": "2.4.5",
@@ -11569,6 +11700,160 @@
       "resolved": "https://registry.npmjs.org/ssb-caps/-/ssb-caps-1.1.0.tgz",
       "integrity": "sha512-qe3qpvchJ+gnH8M/ge4rpL+7eRbSmsEAzNwHkDdrW06OBcziQ6/KuAdmcR6joxCbNeoAXAZF+inkefgE16okXA=="
     },
+    "ssb-chess": {
+      "version": "3.1.9",
+      "resolved": "https://registry.npmjs.org/ssb-chess/-/ssb-chess-3.1.9.tgz",
+      "integrity": "sha512-NR4tycPjzaPA6x3VElT/7VlqbkqenoZh05JqPnGx6vm0Qvs0WwvywjTbYdvS8eyI93UJz3xwFhhMiXzBKkw0QA==",
+      "requires": {
+        "bluebird": "^3.5.2",
+        "depject": "4.1.0",
+        "depnest": "1.3.0",
+        "lodash": "^4.17.11",
+        "mutant": "3.19.0",
+        "mutant-pull-reduce": "^1.1.0",
+        "patchcore": "^1.28.3",
+        "pubsub-js": "1.5.7",
+        "pull-async-filter": "^1.0.0",
+        "pull-cat": "^1.1.11",
+        "pull-high-watermark": "^0.2.0",
+        "pull-many": "^1.0.8",
+        "pull-stream": "3.6.0",
+        "ssb-ooo-about": "^1.0.0",
+        "tiny-worker": "2.1.1"
+      },
+      "dependencies": {
+        "browser-split": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.1.tgz",
+          "integrity": "sha1-ewl1dPjj6tYG+0Zk5krf3aKYGpM="
+        },
+        "depject": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/depject/-/depject-4.1.0.tgz",
+          "integrity": "sha1-nJbqrazRaLrbQIeUv1+GeJg84YM=",
+          "requires": {
+            "libnested": "^1.1.0"
+          }
+        },
+        "mutant": {
+          "version": "3.19.0",
+          "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.19.0.tgz",
+          "integrity": "sha1-UQRlcyJJRSUQ9RLoTpVmMDV2Vjg=",
+          "requires": {
+            "browser-split": "0.0.1",
+            "xtend": "^4.0.1"
+          }
+        },
+        "patchcore": {
+          "version": "1.28.3",
+          "resolved": "https://registry.npmjs.org/patchcore/-/patchcore-1.28.3.tgz",
+          "integrity": "sha512-6opENNFfGuR9flDrpIPRozzeqC6rzHQeyVvDQ85VvGQbR6kgxrOxgC5y7Jw/BiiK0g4l/HgRgHWXz4vI2j53jw==",
+          "requires": {
+            "bulk-require": "^1.0.0",
+            "bulkify": "^1.4.2",
+            "color-hash": "^1.0.3",
+            "depnest": "^1.0.2",
+            "emoji-named-characters": "^1.0.2",
+            "es2040": "^1.2.4",
+            "flat": "^4.0.0",
+            "hashlru": "^2.2.0",
+            "html-escape": "^2.0.0",
+            "human-time": "0.0.1",
+            "mutant": "^3.21.2",
+            "mutant-pull-reduce": "^1.1.0",
+            "pull-abortable": "^4.1.0",
+            "pull-cat": "^1.1.11",
+            "pull-defer": "~0.2.2",
+            "pull-reconnect": "0.0.3",
+            "pull-stream": "^3.5.0",
+            "scuttle-blog": "^1.0.0",
+            "sorted-array-functions": "^1.0.0",
+            "ssb-blob-files": "^1.1.1",
+            "ssb-client": "^4.5.2",
+            "ssb-config": "^2.2.0",
+            "ssb-feed": "^2.3.0",
+            "ssb-friends": "^2.2.3",
+            "ssb-keys": "^7.0.9",
+            "ssb-markdown": "^3.6.0",
+            "ssb-ref": "^2.11.0",
+            "ssb-sort": "^1.0.0",
+            "xtend": "^4.0.1"
+          },
+          "dependencies": {
+            "mutant": {
+              "version": "3.23.0",
+              "resolved": "https://registry.npmjs.org/mutant/-/mutant-3.23.0.tgz",
+              "integrity": "sha512-gCMc5o0CtRosBJIvQnVzYuD+vDN4rWeGtWAjbpsZIpArIGEyITMCK0v6WnIcuSyYl5EiCvTbtPVUOwPjo7Mp0w==",
+              "requires": {
+                "browser-split": "0.0.1",
+                "source-map-support": "^0.5.9",
+                "xtend": "^4.0.1"
+              }
+            }
+          }
+        },
+        "pubsub-js": {
+          "version": "1.5.7",
+          "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.5.7.tgz",
+          "integrity": "sha1-qfOGrBQbCQWxnLst1XJWJl+XV0Q="
+        },
+        "pull-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.0.tgz",
+          "integrity": "sha1-WdAzpoFdTjCX1Hw9KxiTqeWKI1E="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "source-map-support": {
+          "version": "0.5.12",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
+          "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
+          "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+          }
+        },
+        "ssb-config": {
+          "version": "2.3.9",
+          "resolved": "https://registry.npmjs.org/ssb-config/-/ssb-config-2.3.9.tgz",
+          "integrity": "sha512-UF+4+khFXILLBqtu9HfrpUwYnDXIdAyJe3u9X4GrApuoakxuSKwaUGakUxLPyo6COyV2brMqufUgf+fDOI8Ftw==",
+          "requires": {
+            "deep-extend": "^0.6.0",
+            "non-private-ip": "^1.2.1",
+            "os-homedir": "^1.0.1",
+            "rc": "^1.1.6"
+          }
+        },
+        "ssb-friends": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/ssb-friends/-/ssb-friends-2.4.0.tgz",
+          "integrity": "sha1-DUDNlqEvIznJBkqK0dWnE+kcV64=",
+          "requires": {
+            "flumeview-reduce": "^1.3.0",
+            "graphreduce": "^3.0.3",
+            "obv": "0.0.1",
+            "pull-cont": "^0.1.1",
+            "pull-flatmap": "0.0.1",
+            "pull-stream": "^3.6.0",
+            "ssb-ref": "^2.7.1"
+          }
+        },
+        "ssb-markdown": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/ssb-markdown/-/ssb-markdown-3.6.0.tgz",
+          "integrity": "sha512-WaI/s6Zbq9EBAE9CD2OnPMn1U7Wce3HBK3EZN2qfnjIEkirL/oj8Wz92sBYyyV+tae1aJJRTV7/PFbT5YfNk+g==",
+          "requires": {
+            "emoji-named-characters": "^1.0.2",
+            "ssb-marked": "^0.7.3",
+            "ssb-msgs": "^5.2.0",
+            "ssb-ref": "^2.3.0"
+          }
+        }
+      }
+    },
     "ssb-chess-db": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/ssb-chess-db/-/ssb-chess-db-1.0.6.tgz",
@@ -11582,6 +11867,8 @@
     },
     "ssb-chess-mithril": {
       "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/ssb-chess-mithril/-/ssb-chess-mithril-1.0.12.tgz",
+      "integrity": "sha512-xLJO3G+AxpEMbt5FJFbqmsM541/G4PrFElIUTjb+YMOkC8VDEjchDOeC+2q1UVBGWOCKCAzWGcy3y/22PjAeAQ==",
       "requires": {
         "chessground": "^7.6.8",
         "depject": "^4.1.1",
@@ -11598,12 +11885,104 @@
         "ramda": "^0.25.0",
         "ssb-chess": "3.1.9",
         "ssb-embedded-chat": "1.2.2"
+      },
+      "dependencies": {
+        "html-element": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/html-element/-/html-element-2.3.0.tgz",
+          "integrity": "sha512-axsAv89JAxk/zSSOn+jK5dJ1eAUVSkienyIcruAe/kD5skC/E/HxjFfCfNYv8+A9m7BXR9kfL4ZD1ZobUfUWzQ==",
+          "requires": {
+            "class-list": "~0.1.1"
+          }
+        },
+        "hyperscript": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz",
+          "integrity": "sha1-ODnLpFVUvf4nu4HCFC0WhPgTWvU=",
+          "requires": {
+            "browser-split": "0.0.0",
+            "class-list": "~0.1.0",
+            "html-element": "^2.0.0"
+          }
+        },
+        "patchcore": {
+          "version": "1.28.3",
+          "resolved": "https://registry.npmjs.org/patchcore/-/patchcore-1.28.3.tgz",
+          "integrity": "sha512-6opENNFfGuR9flDrpIPRozzeqC6rzHQeyVvDQ85VvGQbR6kgxrOxgC5y7Jw/BiiK0g4l/HgRgHWXz4vI2j53jw==",
+          "requires": {
+            "bulk-require": "^1.0.0",
+            "bulkify": "^1.4.2",
+            "color-hash": "^1.0.3",
+            "depnest": "^1.0.2",
+            "emoji-named-characters": "^1.0.2",
+            "es2040": "^1.2.4",
+            "flat": "^4.0.0",
+            "hashlru": "^2.2.0",
+            "html-escape": "^2.0.0",
+            "human-time": "0.0.1",
+            "mutant": "^3.21.2",
+            "mutant-pull-reduce": "^1.1.0",
+            "pull-abortable": "^4.1.0",
+            "pull-cat": "^1.1.11",
+            "pull-defer": "~0.2.2",
+            "pull-reconnect": "0.0.3",
+            "pull-stream": "^3.5.0",
+            "scuttle-blog": "^1.0.0",
+            "sorted-array-functions": "^1.0.0",
+            "ssb-blob-files": "^1.1.1",
+            "ssb-client": "^4.5.2",
+            "ssb-config": "^2.2.0",
+            "ssb-feed": "^2.3.0",
+            "ssb-friends": "^2.2.3",
+            "ssb-keys": "^7.0.9",
+            "ssb-markdown": "^3.6.0",
+            "ssb-ref": "^2.11.0",
+            "ssb-sort": "^1.0.0",
+            "xtend": "^4.0.1"
+          }
+        },
+        "ssb-config": {
+          "version": "2.3.9",
+          "resolved": "https://registry.npmjs.org/ssb-config/-/ssb-config-2.3.9.tgz",
+          "integrity": "sha512-UF+4+khFXILLBqtu9HfrpUwYnDXIdAyJe3u9X4GrApuoakxuSKwaUGakUxLPyo6COyV2brMqufUgf+fDOI8Ftw==",
+          "requires": {
+            "deep-extend": "^0.6.0",
+            "non-private-ip": "^1.2.1",
+            "os-homedir": "^1.0.1",
+            "rc": "^1.1.6"
+          }
+        },
+        "ssb-friends": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/ssb-friends/-/ssb-friends-2.4.0.tgz",
+          "integrity": "sha1-DUDNlqEvIznJBkqK0dWnE+kcV64=",
+          "requires": {
+            "flumeview-reduce": "^1.3.0",
+            "graphreduce": "^3.0.3",
+            "obv": "0.0.1",
+            "pull-cont": "^0.1.1",
+            "pull-flatmap": "0.0.1",
+            "pull-stream": "^3.6.0",
+            "ssb-ref": "^2.7.1"
+          }
+        },
+        "ssb-markdown": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/ssb-markdown/-/ssb-markdown-3.6.0.tgz",
+          "integrity": "sha512-WaI/s6Zbq9EBAE9CD2OnPMn1U7Wce3HBK3EZN2qfnjIEkirL/oj8Wz92sBYyyV+tae1aJJRTV7/PFbT5YfNk+g==",
+          "requires": {
+            "emoji-named-characters": "^1.0.2",
+            "ssb-marked": "^0.7.3",
+            "ssb-msgs": "^5.2.0",
+            "ssb-ref": "^2.3.0"
+          }
+        }
       }
     },
     "ssb-client": {
-      "version": "4.7.7",
-      "resolved": "https://registry.npmjs.org/ssb-client/-/ssb-client-4.7.7.tgz",
-      "integrity": "sha512-JKB4DzicHXEAzNnEHrp/FJI7LGnLedfmmWaXuSDjpRH0MzGGFw1oir7R5a11pe7gxXJvm1uQZ4mdNz7nJgHyyw==",
+      "version": "4.7.8",
+      "resolved": "https://registry.npmjs.org/ssb-client/-/ssb-client-4.7.8.tgz",
+      "integrity": "sha512-0oQhsa8EZtXbq2tdb/Pvf9h22tW4q7BZ4gbuaxVqIyYqw79Hq6Sr3xFa6+Mj6DX0Gb00TbI/Ft/jts2NyDfbmQ==",
       "requires": {
         "explain-error": "^1.0.1",
         "multicb": "^1.2.1",
@@ -11629,6 +12008,174 @@
         "ssb-keys": "^7.1.4"
       }
     },
+    "ssb-conn": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/ssb-conn/-/ssb-conn-0.2.7.tgz",
+      "integrity": "sha512-DU7chwQmTGOX1EGVL+wrDIKo5F7ujrrT3igyMUSXTvYnC/iPqyQ7lftxOaKWIpB8hOFoFAHlLgp7I5j4yjKPOQ==",
+      "requires": {
+        "debug": "~4.1.1",
+        "has-network": "0.0.1",
+        "ip": "^1.1.5",
+        "multiserver-address": "~1.0.1",
+        "on-change-network": "0.0.2",
+        "on-wakeup": "^1.0.1",
+        "pull-notify": "^0.1.1",
+        "pull-ping": "^2.0.2",
+        "pull-stream": "^3.6.9",
+        "secret-stack-decorators": "1.0.0",
+        "ssb-conn-db": "~0.2.0",
+        "ssb-conn-hub": "~0.0.10",
+        "ssb-conn-query": "~0.1.2",
+        "ssb-conn-staging": "~0.0.7",
+        "ssb-ref": "^2.13.9",
+        "ssb-typescript": "^1.4.0",
+        "statistics": "^3.3.0",
+        "zii": "~1.1.0"
+      },
+      "dependencies": {
+        "atomic-file": {
+          "version": "1.1.5",
+          "resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-1.1.5.tgz",
+          "integrity": "sha512-TG+5YFiaKQ6CZiSQsosGMJ/IJzwMZ4V/rSdEXlD6+DwKyv8OyeUcprq34kp4yuS6bfQYXhxBC2Vm8PWo+iKBGQ=="
+        },
+        "ssb-conn-db": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/ssb-conn-db/-/ssb-conn-db-0.2.0.tgz",
+          "integrity": "sha512-jdYFkBp8CpFzL0gMN9m1K7+K/nOnydhjsFyl3S1TLhQwP/qxh+rAb+WlOUtHrUHF6CJoBW0gKNiQ2Hd78IKjtw==",
+          "requires": {
+            "atomic-file": "^1.1.5",
+            "debug": "~4.1.1",
+            "multiserver-address": "~1.0.1",
+            "pull-notify": "~0.1.1",
+            "ssb-ref": "~2.13.9"
+          }
+        },
+        "ssb-conn-hub": {
+          "version": "0.0.10",
+          "resolved": "https://registry.npmjs.org/ssb-conn-hub/-/ssb-conn-hub-0.0.10.tgz",
+          "integrity": "sha512-glmCWj5ahbKK33ZCxgB9D9+Ut31zB7DZvt+SY95dQ9/mUMfBTcmO9U1+0N6Q6MGgx9fbRGvH8OFWqMkgseWm3Q==",
+          "requires": {
+            "debug": "^4.1.1",
+            "multiserver-address": "~1.0.1",
+            "promisify-tuple": "^1.0.0",
+            "pull-cat": "~1.1.11",
+            "pull-notify": "~0.1.1",
+            "pull-stream": "~3.6.9",
+            "ssb-ref": "~2.13.9"
+          }
+        },
+        "ssb-conn-staging": {
+          "version": "0.0.7",
+          "resolved": "https://registry.npmjs.org/ssb-conn-staging/-/ssb-conn-staging-0.0.7.tgz",
+          "integrity": "sha512-1HefddXgvnS3ith7Pa37QCH1CurTIN2QPGZ1/UA83iFt/xVf0TLDHEFHnkjzngp/345nWacfjQH+rKnLgvygFg==",
+          "requires": {
+            "debug": "^4.1.1",
+            "multiserver-address": "~1.0.1",
+            "pull-cat": "~1.1.11",
+            "pull-notify": "~0.1.1",
+            "pull-stream": "^3.6.9"
+          }
+        }
+      }
+    },
+    "ssb-conn-db": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/ssb-conn-db/-/ssb-conn-db-0.1.0.tgz",
+      "integrity": "sha512-mzRZv1IKPcnDpJndr4HsvJ/EBA1Bb849y+DjOwgvP0Vsk0R0bkhyNqmUHIrUTeJX8jkyeuiVXc6iYAIKqOYNmA==",
+      "requires": {
+        "atomic-file": "^1.1.5",
+        "debug": "~4.1.1",
+        "multiserver-address": "~1.0.1",
+        "pull-notify": "~0.1.1",
+        "ssb-ref": "~2.13.9"
+      },
+      "dependencies": {
+        "atomic-file": {
+          "version": "1.1.5",
+          "resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-1.1.5.tgz",
+          "integrity": "sha512-TG+5YFiaKQ6CZiSQsosGMJ/IJzwMZ4V/rSdEXlD6+DwKyv8OyeUcprq34kp4yuS6bfQYXhxBC2Vm8PWo+iKBGQ=="
+        }
+      }
+    },
+    "ssb-conn-hub": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/ssb-conn-hub/-/ssb-conn-hub-0.0.3.tgz",
+      "integrity": "sha512-F/5XtjFObCK9VCEKMoKoS0xoFGuV2AM+wU4+4GJCR7SUz3ZqNj8ik9Qu4esDSqsv2Q2JFSeupcO8d0Tqt6lWlw==",
+      "requires": {
+        "debug": "^4.1.1",
+        "multiserver-address": "~1.0.1",
+        "promisify-tuple": "^1.0.0",
+        "pull-notify": "~0.1.1",
+        "ssb-ref": "~2.13.9"
+      }
+    },
+    "ssb-conn-query": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ssb-conn-query/-/ssb-conn-query-0.1.2.tgz",
+      "integrity": "sha512-MtOVpMUUydoDXUr1Y0i8XWrzkmCKROyiWNpBWOpM7LQMx3oalp68wcufSRL4Ady/IhlEy6GlbaNFeVNchHdoQQ==",
+      "requires": {
+        "ssb-conn-db": "~0.2.0",
+        "ssb-conn-hub": "~0.0.9",
+        "ssb-conn-staging": "~0.0.6"
+      },
+      "dependencies": {
+        "atomic-file": {
+          "version": "1.1.5",
+          "resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-1.1.5.tgz",
+          "integrity": "sha512-TG+5YFiaKQ6CZiSQsosGMJ/IJzwMZ4V/rSdEXlD6+DwKyv8OyeUcprq34kp4yuS6bfQYXhxBC2Vm8PWo+iKBGQ=="
+        },
+        "ssb-conn-db": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/ssb-conn-db/-/ssb-conn-db-0.2.0.tgz",
+          "integrity": "sha512-jdYFkBp8CpFzL0gMN9m1K7+K/nOnydhjsFyl3S1TLhQwP/qxh+rAb+WlOUtHrUHF6CJoBW0gKNiQ2Hd78IKjtw==",
+          "requires": {
+            "atomic-file": "^1.1.5",
+            "debug": "~4.1.1",
+            "multiserver-address": "~1.0.1",
+            "pull-notify": "~0.1.1",
+            "ssb-ref": "~2.13.9"
+          }
+        },
+        "ssb-conn-hub": {
+          "version": "0.0.10",
+          "resolved": "https://registry.npmjs.org/ssb-conn-hub/-/ssb-conn-hub-0.0.10.tgz",
+          "integrity": "sha512-glmCWj5ahbKK33ZCxgB9D9+Ut31zB7DZvt+SY95dQ9/mUMfBTcmO9U1+0N6Q6MGgx9fbRGvH8OFWqMkgseWm3Q==",
+          "requires": {
+            "debug": "^4.1.1",
+            "multiserver-address": "~1.0.1",
+            "promisify-tuple": "^1.0.0",
+            "pull-cat": "~1.1.11",
+            "pull-notify": "~0.1.1",
+            "pull-stream": "~3.6.9",
+            "ssb-ref": "~2.13.9"
+          }
+        },
+        "ssb-conn-staging": {
+          "version": "0.0.7",
+          "resolved": "https://registry.npmjs.org/ssb-conn-staging/-/ssb-conn-staging-0.0.7.tgz",
+          "integrity": "sha512-1HefddXgvnS3ith7Pa37QCH1CurTIN2QPGZ1/UA83iFt/xVf0TLDHEFHnkjzngp/345nWacfjQH+rKnLgvygFg==",
+          "requires": {
+            "debug": "^4.1.1",
+            "multiserver-address": "~1.0.1",
+            "pull-cat": "~1.1.11",
+            "pull-notify": "~0.1.1",
+            "pull-stream": "^3.6.9"
+          }
+        }
+      }
+    },
+    "ssb-conn-staging": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/ssb-conn-staging/-/ssb-conn-staging-0.0.1.tgz",
+      "integrity": "sha512-4iOxScdLWy6kAAtfIv7C7TiHqtZFgg+cdJt66peXx3MrfLqMDy657DFe5C2neTD4N63MIlysplkmtXYQzTusRg==",
+      "requires": {
+        "debug": "^4.1.1",
+        "multiserver-address": "~1.0.1",
+        "pull-notify": "~0.1.1",
+        "pull-stream": "^3.6.9",
+        "ssb-conn-hub": "~0.0.3"
+      }
+    },
     "ssb-dark-crystal-schema": {
       "version": "1.2.6",
       "resolved": "https://registry.npmjs.org/ssb-dark-crystal-schema/-/ssb-dark-crystal-schema-1.2.6.tgz",
@@ -11665,6 +12212,46 @@
         "ssb-ref": "^2.9.1"
       }
     },
+    "ssb-embedded-chat": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/ssb-embedded-chat/-/ssb-embedded-chat-1.2.2.tgz",
+      "integrity": "sha512-GXBxiT0/sFRb0r5CorbKnZMQe32k8XXOBRpku0rDmBkynqJXKB+FIsn0bnVtqz0XGrCoCLstm8HcnA7mkvjCqg==",
+      "requires": {
+        "depject": "4.1.1",
+        "depnest": "1.3.0",
+        "hyperscript": "2.0.2",
+        "lodash": "^4.17.10",
+        "pull-abortable": "^4.1.1",
+        "pull-cat": "^1.1.11",
+        "pull-scroll": "1.0.9",
+        "pull-stream": "3.6.0"
+      },
+      "dependencies": {
+        "html-element": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/html-element/-/html-element-2.3.0.tgz",
+          "integrity": "sha512-axsAv89JAxk/zSSOn+jK5dJ1eAUVSkienyIcruAe/kD5skC/E/HxjFfCfNYv8+A9m7BXR9kfL4ZD1ZobUfUWzQ==",
+          "requires": {
+            "class-list": "~0.1.1"
+          }
+        },
+        "hyperscript": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz",
+          "integrity": "sha1-ODnLpFVUvf4nu4HCFC0WhPgTWvU=",
+          "requires": {
+            "browser-split": "0.0.0",
+            "class-list": "~0.1.0",
+            "html-element": "^2.0.0"
+          }
+        },
+        "pull-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.0.tgz",
+          "integrity": "sha1-WdAzpoFdTjCX1Hw9KxiTqeWKI1E="
+        }
+      }
+    },
     "ssb-feed": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/ssb-feed/-/ssb-feed-2.3.0.tgz",
@@ -11892,9 +12479,9 @@
       }
     },
     "ssb-keys": {
-      "version": "7.1.7",
-      "resolved": "https://registry.npmjs.org/ssb-keys/-/ssb-keys-7.1.7.tgz",
-      "integrity": "sha512-Zncn++gtpoF4Wjz/po4Jvt7mCHbQfU6ATljahqf1CprWAio4JBUJnQrUeUlmlTn3f4Tseo0/hoh3vk7Bu6M/Sw==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/ssb-keys/-/ssb-keys-7.2.0.tgz",
+      "integrity": "sha512-qxbVBYB5CsxWPEFg6qe+98hL6Jbs0rztA5zYsoQmYqz2+j3EhhIuXMTki92K4xREOCA2x45FFdOjDFy7ReDpBA==",
       "requires": {
         "chloride": "^2.2.8",
         "mkdirp": "~0.5.0",
@@ -11920,49 +12507,6 @@
         "ssb-conn-staging": "0.0.1",
         "ssb-ref": "^2.13.9",
         "statistics": "^3.3.0"
-      },
-      "dependencies": {
-        "atomic-file": {
-          "version": "1.1.5",
-          "resolved": "https://registry.npmjs.org/atomic-file/-/atomic-file-1.1.5.tgz",
-          "integrity": "sha512-TG+5YFiaKQ6CZiSQsosGMJ/IJzwMZ4V/rSdEXlD6+DwKyv8OyeUcprq34kp4yuS6bfQYXhxBC2Vm8PWo+iKBGQ=="
-        },
-        "ssb-conn-db": {
-          "version": "0.1.0",
-          "resolved": "https://registry.npmjs.org/ssb-conn-db/-/ssb-conn-db-0.1.0.tgz",
-          "integrity": "sha512-mzRZv1IKPcnDpJndr4HsvJ/EBA1Bb849y+DjOwgvP0Vsk0R0bkhyNqmUHIrUTeJX8jkyeuiVXc6iYAIKqOYNmA==",
-          "requires": {
-            "atomic-file": "^1.1.5",
-            "debug": "~4.1.1",
-            "multiserver-address": "~1.0.1",
-            "pull-notify": "~0.1.1",
-            "ssb-ref": "~2.13.9"
-          }
-        },
-        "ssb-conn-hub": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/ssb-conn-hub/-/ssb-conn-hub-0.0.3.tgz",
-          "integrity": "sha512-F/5XtjFObCK9VCEKMoKoS0xoFGuV2AM+wU4+4GJCR7SUz3ZqNj8ik9Qu4esDSqsv2Q2JFSeupcO8d0Tqt6lWlw==",
-          "requires": {
-            "debug": "^4.1.1",
-            "multiserver-address": "~1.0.1",
-            "promisify-tuple": "^1.0.0",
-            "pull-notify": "~0.1.1",
-            "ssb-ref": "~2.13.9"
-          }
-        },
-        "ssb-conn-staging": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/ssb-conn-staging/-/ssb-conn-staging-0.0.1.tgz",
-          "integrity": "sha512-4iOxScdLWy6kAAtfIv7C7TiHqtZFgg+cdJt66peXx3MrfLqMDy657DFe5C2neTD4N63MIlysplkmtXYQzTusRg==",
-          "requires": {
-            "debug": "^4.1.1",
-            "multiserver-address": "~1.0.1",
-            "pull-notify": "~0.1.1",
-            "pull-stream": "^3.6.9",
-            "ssb-conn-hub": "~0.0.3"
-          }
-        }
       }
     },
     "ssb-local": {
@@ -12115,6 +12659,17 @@
         }
       }
     },
+    "ssb-ooo-about": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/ssb-ooo-about/-/ssb-ooo-about-1.0.0.tgz",
+      "integrity": "sha512-Bn99P10Glh5KtPmNqwQocQq1/McI4R4zc9vnMSaSRRlLSuEXNPHcJ45Uda519Xp2C4fS8dF4pML6ljZFN0ns0Q==",
+      "requires": {
+        "array-unique": "^0.3.2",
+        "bluebird": "^3.5.1",
+        "pull-stream": "^3.6.2",
+        "ssb-client": "^4.5.7"
+      }
+    },
     "ssb-peer-invites": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ssb-peer-invites/-/ssb-peer-invites-2.0.0.tgz",
@@ -12274,9 +12829,9 @@
       }
     },
     "ssb-server": {
-      "version": "15.0.2",
-      "resolved": "https://registry.npmjs.org/ssb-server/-/ssb-server-15.0.2.tgz",
-      "integrity": "sha512-xY3H+E3P5vSQREtoBohUT/1Lhx01NNTkooud29h+fhwXX1+Erowds/b0M+HpVpVClY8/yR4/0jATBg0oKvD+VA==",
+      "version": "15.1.0",
+      "resolved": "https://registry.npmjs.org/ssb-server/-/ssb-server-15.1.0.tgz",
+      "integrity": "sha512-4qn3Q+xpKL6BKBTgO1dHSt5ljyrZkWVoHYaZzCYbs75rGbaGvc0evSyu2TpaYwiiSxrVxJGYr8s4MyXzdPqUVQ==",
       "requires": {
         "bash-color": "~0.0.3",
         "broadcast-stream": "^0.2.1",
@@ -12303,7 +12858,7 @@
         "pull-pushable": "^2.2.0",
         "pull-stream": "^3.6.2",
         "rimraf": "^2.4.2",
-        "secret-stack": "^6.0.2",
+        "secret-stack": "^6.2.1",
         "ssb-blobs": "1.2.1",
         "ssb-caps": "^1.0.1",
         "ssb-client": "^4.7.5",
@@ -14854,9 +15409,9 @@
           },
           "dependencies": {
             "readable-stream": {
-              "version": "3.4.0",
-              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
-              "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+              "version": "3.3.0",
+              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
+              "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
               "requires": {
                 "inherits": "^2.0.3",
                 "string_decoder": "^1.1.1",
@@ -15594,12 +16149,12 @@
           "dependencies": {
             "ansi-regex": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
             },
             "append-transform": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
               "requires": {
                 "default-require-extensions": "^2.0.0"
@@ -15607,22 +16162,22 @@
             },
             "archy": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
             },
             "arrify": {
               "version": "1.0.1",
-              "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
             },
             "balanced-match": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
             },
             "brace-expansion": {
               "version": "1.1.11",
-              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+              "resolved": false,
               "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
               "requires": {
                 "balanced-match": "^1.0.0",
@@ -15631,7 +16186,7 @@
             },
             "caching-transform": {
               "version": "3.0.1",
-              "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.1.tgz",
+              "resolved": false,
               "integrity": "sha512-Y1KTLNwSPd4ljsDrFOtyXVmm7Gnk42yQitNq43AhE+cwUR/e4T+rmOHs1IPtzBg8066GBJfTOj1rQYFSWSsH2g==",
               "requires": {
                 "hasha": "^3.0.0",
@@ -15642,12 +16197,12 @@
             },
             "camelcase": {
               "version": "5.0.0",
-              "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA=="
             },
             "cliui": {
               "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
               "requires": {
                 "string-width": "^2.1.1",
@@ -15657,22 +16212,22 @@
             },
             "code-point-at": {
               "version": "1.1.0",
-              "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+              "resolved": false,
               "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
             },
             "commondir": {
               "version": "1.0.1",
-              "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
             },
             "concat-map": {
               "version": "0.0.1",
-              "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
             },
             "convert-source-map": {
               "version": "1.6.0",
-              "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+              "resolved": false,
               "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
               "requires": {
                 "safe-buffer": "~5.1.1"
@@ -15680,7 +16235,7 @@
             },
             "cross-spawn": {
               "version": "4.0.2",
-              "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+              "resolved": false,
               "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
               "requires": {
                 "lru-cache": "^4.0.1",
@@ -15689,7 +16244,7 @@
             },
             "debug": {
               "version": "4.1.1",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+              "resolved": false,
               "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
               "requires": {
                 "ms": "^2.1.1"
@@ -15697,12 +16252,12 @@
             },
             "decamelize": {
               "version": "1.2.0",
-              "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+              "resolved": false,
               "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
             },
             "default-require-extensions": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
               "requires": {
                 "strip-bom": "^3.0.0"
@@ -15710,7 +16265,7 @@
             },
             "end-of-stream": {
               "version": "1.4.1",
-              "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+              "resolved": false,
               "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
               "requires": {
                 "once": "^1.4.0"
@@ -15718,7 +16273,7 @@
             },
             "error-ex": {
               "version": "1.3.2",
-              "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+              "resolved": false,
               "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
               "requires": {
                 "is-arrayish": "^0.2.1"
@@ -15726,12 +16281,12 @@
             },
             "es6-error": {
               "version": "4.1.1",
-              "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+              "resolved": false,
               "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="
             },
             "execa": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
               "requires": {
                 "cross-spawn": "^6.0.0",
@@ -15745,7 +16300,7 @@
               "dependencies": {
                 "cross-spawn": {
                   "version": "6.0.5",
-                  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+                  "resolved": false,
                   "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
                   "requires": {
                     "nice-try": "^1.0.4",
@@ -15759,7 +16314,7 @@
             },
             "find-cache-dir": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==",
               "requires": {
                 "commondir": "^1.0.1",
@@ -15769,7 +16324,7 @@
             },
             "find-up": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
               "requires": {
                 "locate-path": "^3.0.0"
@@ -15777,7 +16332,7 @@
             },
             "foreground-child": {
               "version": "1.5.6",
-              "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
+              "resolved": false,
               "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=",
               "requires": {
                 "cross-spawn": "^4",
@@ -15786,17 +16341,17 @@
             },
             "fs.realpath": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
             },
             "get-caller-file": {
               "version": "1.0.3",
-              "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+              "resolved": false,
               "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
             },
             "get-stream": {
               "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
               "requires": {
                 "pump": "^3.0.0"
@@ -15804,7 +16359,7 @@
             },
             "glob": {
               "version": "7.1.3",
-              "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+              "resolved": false,
               "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
               "requires": {
                 "fs.realpath": "^1.0.0",
@@ -15817,17 +16372,17 @@
             },
             "graceful-fs": {
               "version": "4.1.15",
-              "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+              "resolved": false,
               "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
             },
             "has-flag": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
             },
             "hasha": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=",
               "requires": {
                 "is-stream": "^1.0.1"
@@ -15835,17 +16390,17 @@
             },
             "hosted-git-info": {
               "version": "2.7.1",
-              "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+              "resolved": false,
               "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
             },
             "imurmurhash": {
               "version": "0.1.4",
-              "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+              "resolved": false,
               "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
             },
             "inflight": {
               "version": "1.0.6",
-              "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+              "resolved": false,
               "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
               "requires": {
                 "once": "^1.3.0",
@@ -15854,42 +16409,42 @@
             },
             "inherits": {
               "version": "2.0.3",
-              "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+              "resolved": false,
               "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
             },
             "invert-kv": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
             },
             "is-arrayish": {
               "version": "0.2.1",
-              "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+              "resolved": false,
               "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
             },
             "is-fullwidth-code-point": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
             },
             "is-stream": {
               "version": "1.1.0",
-              "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+              "resolved": false,
               "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
             },
             "isexe": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
             },
             "istanbul-lib-coverage": {
               "version": "2.0.3",
-              "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
+              "resolved": false,
               "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw=="
             },
             "istanbul-lib-hook": {
               "version": "2.0.3",
-              "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz",
+              "resolved": false,
               "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==",
               "requires": {
                 "append-transform": "^1.0.0"
@@ -15897,7 +16452,7 @@
             },
             "istanbul-lib-report": {
               "version": "2.0.4",
-              "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz",
+              "resolved": false,
               "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==",
               "requires": {
                 "istanbul-lib-coverage": "^2.0.3",
@@ -15907,7 +16462,7 @@
               "dependencies": {
                 "supports-color": {
                   "version": "6.1.0",
-                  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+                  "resolved": false,
                   "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                   "requires": {
                     "has-flag": "^3.0.0"
@@ -15917,7 +16472,7 @@
             },
             "istanbul-lib-source-maps": {
               "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz",
+              "resolved": false,
               "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==",
               "requires": {
                 "debug": "^4.1.1",
@@ -15929,14 +16484,14 @@
               "dependencies": {
                 "source-map": {
                   "version": "0.6.1",
-                  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                  "resolved": false,
                   "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
                 }
               }
             },
             "istanbul-reports": {
               "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz",
+              "resolved": false,
               "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==",
               "requires": {
                 "handlebars": "^4.1.0"
@@ -15944,12 +16499,12 @@
             },
             "json-parse-better-errors": {
               "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+              "resolved": false,
               "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
             },
             "lcid": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
               "requires": {
                 "invert-kv": "^2.0.0"
@@ -15957,7 +16512,7 @@
             },
             "load-json-file": {
               "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
               "requires": {
                 "graceful-fs": "^4.1.2",
@@ -15968,7 +16523,7 @@
             },
             "locate-path": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
               "requires": {
                 "p-locate": "^3.0.0",
@@ -15977,12 +16532,12 @@
             },
             "lodash.flattendeep": {
               "version": "4.4.0",
-              "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+              "resolved": false,
               "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI="
             },
             "lru-cache": {
               "version": "4.1.5",
-              "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+              "resolved": false,
               "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
               "requires": {
                 "pseudomap": "^1.0.2",
@@ -15991,7 +16546,7 @@
             },
             "make-dir": {
               "version": "1.3.0",
-              "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+              "resolved": false,
               "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
               "requires": {
                 "pify": "^3.0.0"
@@ -15999,7 +16554,7 @@
             },
             "map-age-cleaner": {
               "version": "0.1.3",
-              "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+              "resolved": false,
               "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
               "requires": {
                 "p-defer": "^1.0.0"
@@ -16007,7 +16562,7 @@
             },
             "mem": {
               "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
               "requires": {
                 "map-age-cleaner": "^0.1.1",
@@ -16017,7 +16572,7 @@
             },
             "merge-source-map": {
               "version": "1.1.0",
-              "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
               "requires": {
                 "source-map": "^0.6.1"
@@ -16025,19 +16580,19 @@
               "dependencies": {
                 "source-map": {
                   "version": "0.6.1",
-                  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                  "resolved": false,
                   "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
                 }
               }
             },
             "mimic-fn": {
               "version": "1.2.0",
-              "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+              "resolved": false,
               "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
             },
             "minimatch": {
               "version": "3.0.4",
-              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+              "resolved": false,
               "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
               "requires": {
                 "brace-expansion": "^1.1.7"
@@ -16045,7 +16600,7 @@
             },
             "mkdirp": {
               "version": "0.5.1",
-              "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+              "resolved": false,
               "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
               "requires": {
                 "minimist": "0.0.8"
@@ -16053,24 +16608,24 @@
               "dependencies": {
                 "minimist": {
                   "version": "0.0.8",
-                  "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+                  "resolved": false,
                   "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
                 }
               }
             },
             "ms": {
               "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+              "resolved": false,
               "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
             },
             "nice-try": {
               "version": "1.0.5",
-              "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+              "resolved": false,
               "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
             },
             "normalize-package-data": {
               "version": "2.5.0",
-              "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+              "resolved": false,
               "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
               "requires": {
                 "hosted-git-info": "^2.1.4",
@@ -16081,7 +16636,7 @@
             },
             "npm-run-path": {
               "version": "2.0.2",
-              "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+              "resolved": false,
               "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
               "requires": {
                 "path-key": "^2.0.0"
@@ -16089,12 +16644,12 @@
             },
             "number-is-nan": {
               "version": "1.0.1",
-              "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
             },
             "once": {
               "version": "1.4.0",
-              "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+              "resolved": false,
               "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
               "requires": {
                 "wrappy": "1"
@@ -16102,12 +16657,12 @@
             },
             "os-homedir": {
               "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+              "resolved": false,
               "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
             },
             "os-locale": {
               "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
               "requires": {
                 "execa": "^1.0.0",
@@ -16117,22 +16672,22 @@
             },
             "p-defer": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
             },
             "p-finally": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
             },
             "p-is-promise": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg=="
             },
             "p-limit": {
               "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
               "requires": {
                 "p-try": "^2.0.0"
@@ -16140,7 +16695,7 @@
             },
             "p-locate": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
               "requires": {
                 "p-limit": "^2.0.0"
@@ -16148,12 +16703,12 @@
             },
             "p-try": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
             },
             "package-hash": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==",
               "requires": {
                 "graceful-fs": "^4.1.15",
@@ -16164,7 +16719,7 @@
             },
             "parse-json": {
               "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
               "requires": {
                 "error-ex": "^1.3.1",
@@ -16173,27 +16728,27 @@
             },
             "path-exists": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
             },
             "path-is-absolute": {
               "version": "1.0.1",
-              "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
             },
             "path-key": {
               "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
             },
             "path-parse": {
               "version": "1.0.6",
-              "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+              "resolved": false,
               "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
             },
             "path-type": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
               "requires": {
                 "pify": "^3.0.0"
@@ -16201,12 +16756,12 @@
             },
             "pify": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
             },
             "pkg-dir": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
               "requires": {
                 "find-up": "^3.0.0"
@@ -16214,12 +16769,12 @@
             },
             "pseudomap": {
               "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+              "resolved": false,
               "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
             },
             "pump": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
               "requires": {
                 "end-of-stream": "^1.1.0",
@@ -16228,7 +16783,7 @@
             },
             "read-pkg": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
               "requires": {
                 "load-json-file": "^4.0.0",
@@ -16238,7 +16793,7 @@
             },
             "read-pkg-up": {
               "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
               "requires": {
                 "find-up": "^3.0.0",
@@ -16247,7 +16802,7 @@
             },
             "release-zalgo": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=",
               "requires": {
                 "es6-error": "^4.0.1"
@@ -16255,17 +16810,17 @@
             },
             "require-directory": {
               "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+              "resolved": false,
               "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
             },
             "require-main-filename": {
               "version": "1.0.1",
-              "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+              "resolved": false,
               "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
             },
             "resolve": {
               "version": "1.10.0",
-              "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
+              "resolved": false,
               "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
               "requires": {
                 "path-parse": "^1.0.6"
@@ -16273,12 +16828,12 @@
             },
             "resolve-from": {
               "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
             },
             "rimraf": {
               "version": "2.6.3",
-              "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+              "resolved": false,
               "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
               "requires": {
                 "glob": "^7.1.3"
@@ -16286,22 +16841,22 @@
             },
             "safe-buffer": {
               "version": "5.1.2",
-              "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+              "resolved": false,
               "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
             },
             "semver": {
               "version": "5.6.0",
-              "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+              "resolved": false,
               "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
             },
             "set-blocking": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
             },
             "shebang-command": {
               "version": "1.2.0",
-              "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+              "resolved": false,
               "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
               "requires": {
                 "shebang-regex": "^1.0.0"
@@ -16309,17 +16864,17 @@
             },
             "shebang-regex": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
             },
             "signal-exit": {
               "version": "3.0.2",
-              "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+              "resolved": false,
               "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
             },
             "spawn-wrap": {
               "version": "1.4.2",
-              "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz",
+              "resolved": false,
               "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==",
               "requires": {
                 "foreground-child": "^1.5.6",
@@ -16332,7 +16887,7 @@
             },
             "spdx-correct": {
               "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
               "requires": {
                 "spdx-expression-parse": "^3.0.0",
@@ -16341,12 +16896,12 @@
             },
             "spdx-exceptions": {
               "version": "2.2.0",
-              "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+              "resolved": false,
               "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
             },
             "spdx-expression-parse": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
               "requires": {
                 "spdx-exceptions": "^2.1.0",
@@ -16355,12 +16910,12 @@
             },
             "spdx-license-ids": {
               "version": "3.0.3",
-              "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
+              "resolved": false,
               "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g=="
             },
             "string-width": {
               "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+              "resolved": false,
               "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
               "requires": {
                 "is-fullwidth-code-point": "^2.0.0",
@@ -16369,7 +16924,7 @@
             },
             "strip-ansi": {
               "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
               "requires": {
                 "ansi-regex": "^3.0.0"
@@ -16377,17 +16932,17 @@
             },
             "strip-bom": {
               "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
             },
             "strip-eof": {
               "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
             },
             "test-exclude": {
               "version": "5.1.0",
-              "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz",
+              "resolved": false,
               "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==",
               "requires": {
                 "arrify": "^1.0.1",
@@ -16398,12 +16953,12 @@
             },
             "uuid": {
               "version": "3.3.2",
-              "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+              "resolved": false,
               "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
             },
             "validate-npm-package-license": {
               "version": "3.0.4",
-              "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+              "resolved": false,
               "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
               "requires": {
                 "spdx-correct": "^3.0.0",
@@ -16412,7 +16967,7 @@
             },
             "which": {
               "version": "1.3.1",
-              "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+              "resolved": false,
               "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
               "requires": {
                 "isexe": "^2.0.0"
@@ -16420,12 +16975,12 @@
             },
             "which-module": {
               "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+              "resolved": false,
               "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
             },
             "wrap-ansi": {
               "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+              "resolved": false,
               "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
               "requires": {
                 "string-width": "^1.0.1",
@@ -16434,12 +16989,12 @@
               "dependencies": {
                 "ansi-regex": {
                   "version": "2.1.1",
-                  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                  "resolved": false,
                   "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
                 },
                 "is-fullwidth-code-point": {
                   "version": "1.0.0",
-                  "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+                  "resolved": false,
                   "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
                   "requires": {
                     "number-is-nan": "^1.0.0"
@@ -16447,7 +17002,7 @@
                 },
                 "string-width": {
                   "version": "1.0.2",
-                  "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+                  "resolved": false,
                   "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
                   "requires": {
                     "code-point-at": "^1.0.0",
@@ -16457,7 +17012,7 @@
                 },
                 "strip-ansi": {
                   "version": "3.0.1",
-                  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+                  "resolved": false,
                   "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
                   "requires": {
                     "ansi-regex": "^2.0.0"
@@ -16467,12 +17022,12 @@
             },
             "wrappy": {
               "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+              "resolved": false,
               "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
             },
             "write-file-atomic": {
               "version": "2.4.2",
-              "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
+              "resolved": false,
               "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
               "requires": {
                 "graceful-fs": "^4.1.11",
@@ -16482,17 +17037,17 @@
             },
             "y18n": {
               "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+              "resolved": false,
               "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
             },
             "yallist": {
               "version": "2.1.2",
-              "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+              "resolved": false,
               "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
             },
             "yargs": {
               "version": "12.0.5",
-              "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+              "resolved": false,
               "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
               "requires": {
                 "cliui": "^4.0.0",
@@ -16511,7 +17066,7 @@
             },
             "yargs-parser": {
               "version": "11.1.1",
-              "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+              "resolved": false,
               "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
               "requires": {
                 "camelcase": "^5.0.0",
@@ -17787,9 +18342,9 @@
           }
         },
         "secret-stack": {
-          "version": "6.1.2",
-          "resolved": "https://registry.npmjs.org/secret-stack/-/secret-stack-6.1.2.tgz",
-          "integrity": "sha512-J8JlISJnWsEapR5GOOtnFD1JuJ9QHinWzSSzPMIqoVwhz05bnwCmTQvtMRKD5Hk9WrjCrPTprubJvrrYhqHpeg==",
+          "version": "6.2.1",
+          "resolved": "https://registry.npmjs.org/secret-stack/-/secret-stack-6.2.1.tgz",
+          "integrity": "sha512-7hw13S77Et4yC23uVXOFDRyullxAvFuoN3XW6PvHlAVkYMirLkyeglPOwPTk5JhYwIKPdpIz6vQ7DM0zSlOUHA==",
           "requires": {
             "debug": "^4.1.0",
             "hoox": "0.0.1",
@@ -19156,6 +19711,11 @@
         "ssb-sort": "^1.1.3"
       }
     },
+    "ssb-typescript": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/ssb-typescript/-/ssb-typescript-1.4.0.tgz",
+      "integrity": "sha512-+qFUlFGTIR9f4ab45UfszGCBiClSPH1llM072zWiwlxMyKu70CQ4IUgsWGWyge2mN8z9CiNkPm+ElZ5Ok0Mxcg=="
+    },
     "ssb-unix-socket": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/ssb-unix-socket/-/ssb-unix-socket-1.0.0.tgz",
@@ -19933,6 +20493,11 @@
       "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==",
       "dev": true
     },
+    "tiny-worker": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.1.1.tgz",
+      "integrity": "sha1-BUbxQ35Dud4lPvqtI1BHZ31zVls="
+    },
     "tinycolor2": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",
@@ -19953,6 +20518,14 @@
       "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
       "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
     },
+    "to-camel-case": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz",
+      "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=",
+      "requires": {
+        "to-space-case": "^1.0.0"
+      }
+    },
     "to-fast-properties": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
@@ -19971,6 +20544,11 @@
         "resize-img": "^1.1.0"
       }
     },
+    "to-no-case": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz",
+      "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo="
+    },
     "to-object-path": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@@ -20015,6 +20593,14 @@
         "repeat-string": "^1.6.1"
       }
     },
+    "to-space-case": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz",
+      "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=",
+      "requires": {
+        "to-no-case": "^1.0.0"
+      }
+    },
     "to-vfile": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-1.0.0.tgz",
@@ -20397,6 +20983,11 @@
         "static-module": "^3.0.0"
       },
       "dependencies": {
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+        },
         "minimist": {
           "version": "1.2.0",
           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
@@ -20837,6 +21428,11 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/zerr/-/zerr-1.0.4.tgz",
       "integrity": "sha1-YoFN15nv+DYfKiKPQfcFxeGd5Mk="
+    },
+    "zii": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/zii/-/zii-1.1.0.tgz",
+      "integrity": "sha512-l4EKO8dgLsEWxdb/koCjv92FplAIAQaV4Riq5n/38dTC7Z3NwaFSKQ5Bda+CUTu11VtFE1D+4+HPfPt7/86CRw=="
     }
   }
 }
diff --git a/package.json b/package.json
index c4b8aa89..b7808c1a 100644
--- a/package.json
+++ b/package.json
@@ -66,7 +66,7 @@
     "lodash": "^4.17.10",
     "marama": "^1.2.2",
     "micro-css": "^2.0.1",
-    "mutant": "^3.23.0",
+    "mutant": "~3.22.1",
     "mutant-scroll": "^1.0.2",
     "noto-color-emoji": "^1.0.0",
     "open-dyslexic": "^1.0.3",
@@ -79,7 +79,7 @@
     "patch-suggest": "^3.0.1",
     "patchbay-book": "^2.0.4",
     "patchbay-dark-crystal": "^2.0.0",
-    "patchbay-gatherings": "^3.2.14",
+    "patchbay-gatherings": "^3.2.19",
     "patchbay-hacky-art": "^1.0.0",
     "patchbay-poll": "^1.1.4",
     "patchbay-scry": "^1.5.0",
@@ -95,6 +95,7 @@
     "scuttle-blog": "^1.0.1",
     "scuttle-book": "^2.0.6",
     "scuttle-thread": "^1.0.2",
+    "secret-stack": "^6.2.1",
     "setimmediate": "^1.0.5",
     "ssb-about": "^2.0.1",
     "ssb-ahoy": "^1.1.2",
@@ -104,13 +105,13 @@
     "ssb-chess-db": "^1.0.6",
     "ssb-chess-mithril": "1.0.12",
     "ssb-config": "^3.3.0",
+    "ssb-conn": "^0.2.7",
     "ssb-device-address": "^1.1.6",
     "ssb-ebt": "^5.6.6",
     "ssb-friend-pub": "^1.0.7",
     "ssb-friends": "^4.1.4",
     "ssb-identities": "^2.1.0",
     "ssb-invite": "~2.0.4",
-    "ssb-legacy-conn": "^1.0.25",
     "ssb-local": "^1.0.0",
     "ssb-logging": "^1.0.0",
     "ssb-master": "^1.0.3",
@@ -127,7 +128,7 @@
     "ssb-ref": "^2.13.6",
     "ssb-replicate": "^1.3.0",
     "ssb-search": "^1.1.2",
-    "ssb-server": "^15.0.2",
+    "ssb-server": "^15.1.0",
     "ssb-sort": "^1.1.0",
     "ssb-suggest": "^1.0.4",
     "ssb-tangle": "^1.0.1",
@@ -174,4 +175,4 @@
     "type": "opencollective",
     "url": "https://opencollective.com/patchbay"
   }
-}
\ No newline at end of file
+}