Run npm audit

This syncs our dependencies to the latest version. There is still
a reported vulnerability in postcss, but we are luckily unaffected.
However, we can't upgrade postcss yet, as stylelint requires it
and can not use postcss 8 yet:
https://github.com/stylelint/stylelint/issues/4942#issuecomment-823513767

Also updated manage_node_deps.py to not run the full install when
running `ls`, to allow for easier inspection of our dependency graph.

R=jacktfranklin@chromium.org

Bug: none
Change-Id: I1c9e4836fca25500e2e7277ec82b13bf2b881dca
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2887731
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index c3d8a94..291fdff 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -3154,9 +3154,9 @@
       }
     },
     "node_modules/globby": {
-      "version": "11.0.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz",
-      "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==",
+      "version": "11.0.3",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz",
+      "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==",
       "dev": true,
       "dependencies": {
         "array-union": "^2.1.0",
@@ -3417,12 +3417,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
-      "dev": true
-    },
     "node_modules/inflight": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -3644,6 +3638,18 @@
       "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
       "dev": true
     },
+    "node_modules/is-unicode-supported": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+      "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -4082,12 +4088,24 @@
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
       "dev": true
     },
+    "node_modules/lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
     "node_modules/lodash.get": {
       "version": "4.4.2",
       "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
       "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
       "dev": true
     },
+    "node_modules/lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+      "dev": true
+    },
     "node_modules/log-symbols": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
@@ -4391,16 +4409,16 @@
       }
     },
     "node_modules/micromatch": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-      "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+      "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
       "dev": true,
       "dependencies": {
         "braces": "^3.0.1",
-        "picomatch": "^2.0.5"
+        "picomatch": "^2.2.3"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">=8.6"
       }
     },
     "node_modules/mime": {
@@ -5100,9 +5118,9 @@
       "dev": true
     },
     "node_modules/picomatch": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
-      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+      "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
       "dev": true,
       "engines": {
         "node": ">=8.6"
@@ -5272,14 +5290,12 @@
       }
     },
     "node_modules/postcss-selector-parser": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
-      "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz",
+      "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==",
       "dev": true,
       "dependencies": {
         "cssesc": "^3.0.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1",
         "util-deprecate": "^1.0.2"
       },
       "engines": {
@@ -6228,16 +6244,16 @@
       "dev": true
     },
     "node_modules/stylelint": {
-      "version": "13.12.0",
-      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.12.0.tgz",
-      "integrity": "sha512-P8O1xDy41B7O7iXaSlW+UuFbE5+ZWQDb61ndGDxKIt36fMH50DtlQTbwLpFLf8DikceTAb3r6nPrRv30wBlzXw==",
+      "version": "13.13.1",
+      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz",
+      "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==",
       "dev": true,
       "dependencies": {
         "@stylelint/postcss-css-in-js": "^0.37.2",
         "@stylelint/postcss-markdown": "^0.36.2",
         "autoprefixer": "^9.8.6",
-        "balanced-match": "^1.0.0",
-        "chalk": "^4.1.0",
+        "balanced-match": "^2.0.0",
+        "chalk": "^4.1.1",
         "cosmiconfig": "^7.0.0",
         "debug": "^4.3.1",
         "execall": "^2.0.0",
@@ -6246,7 +6262,7 @@
         "file-entry-cache": "^6.0.1",
         "get-stdin": "^8.0.0",
         "global-modules": "^2.0.0",
-        "globby": "^11.0.2",
+        "globby": "^11.0.3",
         "globjoin": "^0.1.4",
         "html-tags": "^3.1.0",
         "ignore": "^5.1.8",
@@ -6254,10 +6270,10 @@
         "imurmurhash": "^0.1.4",
         "known-css-properties": "^0.21.0",
         "lodash": "^4.17.21",
-        "log-symbols": "^4.0.0",
+        "log-symbols": "^4.1.0",
         "mathml-tag-names": "^2.1.3",
         "meow": "^9.0.0",
-        "micromatch": "^4.0.2",
+        "micromatch": "^4.0.4",
         "normalize-selector": "^0.2.0",
         "postcss": "^7.0.35",
         "postcss-html": "^0.36.0",
@@ -6267,7 +6283,7 @@
         "postcss-safe-parser": "^4.0.2",
         "postcss-sass": "^0.4.4",
         "postcss-scss": "^2.1.1",
-        "postcss-selector-parser": "^6.0.4",
+        "postcss-selector-parser": "^6.0.5",
         "postcss-syntax": "^0.36.2",
         "postcss-value-parser": "^4.1.0",
         "resolve-from": "^5.0.0",
@@ -6278,8 +6294,8 @@
         "style-search": "^0.1.0",
         "sugarss": "^2.0.0",
         "svg-tags": "^1.0.0",
-        "table": "^6.0.7",
-        "v8-compile-cache": "^2.2.0",
+        "table": "^6.6.0",
+        "v8-compile-cache": "^2.3.0",
         "write-file-atomic": "^3.0.3"
       },
       "bin": {
@@ -6335,6 +6351,12 @@
         "node": ">=8"
       }
     },
+    "node_modules/stylelint/node_modules/balanced-match": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+      "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+      "dev": true
+    },
     "node_modules/stylelint/node_modules/chalk": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
@@ -6387,6 +6409,22 @@
         "node": ">=8"
       }
     },
+    "node_modules/stylelint/node_modules/log-symbols": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+      "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.1.0",
+        "is-unicode-supported": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/stylelint/node_modules/resolve-from": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -6471,24 +6509,26 @@
       "dev": true
     },
     "node_modules/table": {
-      "version": "6.0.7",
-      "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz",
-      "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==",
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz",
+      "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==",
       "dev": true,
       "dependencies": {
-        "ajv": "^7.0.2",
-        "lodash": "^4.17.20",
+        "ajv": "^8.0.1",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.truncate": "^4.4.2",
         "slice-ansi": "^4.0.0",
-        "string-width": "^4.2.0"
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0"
       },
       "engines": {
         "node": ">=10.0.0"
       }
     },
     "node_modules/table/node_modules/ajv": {
-      "version": "7.2.4",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz",
-      "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==",
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.3.0.tgz",
+      "integrity": "sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q==",
       "dev": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -6823,12 +6863,6 @@
         "vfile": "^4.0.0"
       }
     },
-    "node_modules/uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
-      "dev": true
-    },
     "node_modules/unist-util-find-all-after": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz",
@@ -6902,9 +6936,9 @@
       }
     },
     "node_modules/v8-compile-cache": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
-      "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
       "dev": true
     },
     "node_modules/validate-npm-package-license": {
diff --git a/node_modules/globby/gitignore.js b/node_modules/globby/gitignore.js
index 95227a1..2f77baa 100644
--- a/node_modules/globby/gitignore.js
+++ b/node_modules/globby/gitignore.js
@@ -48,7 +48,7 @@
 const ensureAbsolutePathForCwd = (cwd, p) => {
 	cwd = slash(cwd);
 	if (path.isAbsolute(p)) {
-		if (p.startsWith(cwd)) {
+		if (slash(p).startsWith(cwd)) {
 			return p;
 		}
 
diff --git a/node_modules/globby/package.json b/node_modules/globby/package.json
index afe19b1..0c6a182 100644
--- a/node_modules/globby/package.json
+++ b/node_modules/globby/package.json
@@ -1,6 +1,6 @@
 {
   "name": "globby",
-  "version": "11.0.2",
+  "version": "11.0.3",
   "description": "User-friendly glob matching",
   "license": "MIT",
   "repository": "sindresorhus/globby",
@@ -68,7 +68,7 @@
     "ava": "^3.13.0",
     "get-stream": "^6.0.0",
     "glob-stream": "^6.1.0",
-    "globby": "sindresorhus/globby#master",
+    "globby": "sindresorhus/globby#main",
     "matcha": "^0.7.0",
     "rimraf": "^3.0.2",
     "tsd": "^0.13.1",
diff --git a/node_modules/globby/readme.md b/node_modules/globby/readme.md
index ac36ee3..b39ae43 100644
--- a/node_modules/globby/readme.md
+++ b/node_modules/globby/readme.md
@@ -154,7 +154,7 @@
 - `{}` allows for a comma-separated list of "or" expressions
 - `!` at the beginning of a pattern will negate the match
 
-[Various patterns and expected matches.](https://github.com/sindresorhus/multimatch/blob/master/test/test.js)
+[Various patterns and expected matches.](https://github.com/sindresorhus/multimatch/blob/main/test/test.js)
 
 ## globby for enterprise
 
diff --git a/node_modules/indexes-of/.npmignore b/node_modules/indexes-of/.npmignore
deleted file mode 100644
index c2658d7..0000000
--- a/node_modules/indexes-of/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/node_modules/indexes-of/LICENSE b/node_modules/indexes-of/LICENSE
deleted file mode 100644
index b799ec0..0000000
--- a/node_modules/indexes-of/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2013 Dominic Tarr
-
-Permission is hereby granted, free of charge, 
-to any person obtaining a copy of this software and 
-associated documentation files (the "Software"), to 
-deal in the Software without restriction, including 
-without limitation the rights to use, copy, modify, 
-merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom 
-the Software is furnished to do so, 
-subject to the following conditions:
-
-The above copyright notice and this permission notice 
-shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/indexes-of/README.md b/node_modules/indexes-of/README.md
deleted file mode 100644
index 90a3741..0000000
--- a/node_modules/indexes-of/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# indexes-of
-
-like Array/String#indexOf but return all the indexes in an array.
-
-``` js
-var indexesOf = require('indexes-of')
-
-var twosIndexes = indexesOf([1, 2, 3, 4, 5, 4, 3, 2, 1], 2)
-
-console.log(twosIndexes)
-
-// [1, 7]
-
-```
-
-# Haiku
-
-* A 5 line module.
-* But the tests are 40 lines.
-* npm publish.
-
-## License
-
-MIT
diff --git a/node_modules/indexes-of/index.js b/node_modules/indexes-of/index.js
deleted file mode 100644
index fda337d..0000000
--- a/node_modules/indexes-of/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = function (ary, item) {
-  var i = -1, indexes = []
-  while((i = ary.indexOf(item, i + 1)) !== -1)
-    indexes.push(i)
-  return indexes
-}
diff --git a/node_modules/indexes-of/package.json b/node_modules/indexes-of/package.json
deleted file mode 100644
index e6346cf..0000000
--- a/node_modules/indexes-of/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "name": "indexes-of",
-  "description": "line String/Array#indexOf but return all the indexes in an array",
-  "version": "1.0.1",
-  "homepage": "https://github.com/dominictarr/indexes-of",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/dominictarr/indexes-of.git"
-  },
-  "scripts": {
-    "test": "node test.js"
-  },
-  "author": "Dominic Tarr <dominic.tarr@gmail.com> (dominictarr.com)",
-  "license": "MIT",
-  "devDependencies": {
-    "tape": "~2.1.0"
-  }
-}
diff --git a/node_modules/indexes-of/test.js b/node_modules/indexes-of/test.js
deleted file mode 100644
index b6103d5..0000000
--- a/node_modules/indexes-of/test.js
+++ /dev/null
@@ -1,38 +0,0 @@
-
-var tape = require('tape')
-
-var indexes = require('./')
-
-tape('indexes of - 2 matches', function (t) {
-  var x = indexes([1,2,3, 2,4,5,9,8,0], 2)
-  t.deepEqual(x, [1,3])
-  t.end()
-})
-
-
-tape('indexes of - 1 match', function (t) {
-  var x = indexes([1,2,3, 2,4,5,9,8,0], 2)
-  t.deepEqual(x, [1,3])
-  t.end()
-})
-
-
-tape('indexes of - empty', function (t) {
-  var x = indexes([1,2,3, 2,4,5,9,8,0], 24)
-  t.deepEqual(x, [])
-  t.end()
-})
-
-
-tape('indexes of - empty', function (t) {
-  var x = indexes([8,8,8,8,8,8,8], 8)
-  t.deepEqual(x, [0,1,2,3,4,5,6])
-  t.end()
-})
-
-
-tape('indexes of - string', function (t) {
-  var x = indexes('foo bar baz foo', 'foo')
-  t.deepEqual(x, [0, 12])
-  t.end()
-})
diff --git a/node_modules/is-unicode-supported/index.d.ts b/node_modules/is-unicode-supported/index.d.ts
new file mode 100644
index 0000000..275b37b
--- /dev/null
+++ b/node_modules/is-unicode-supported/index.d.ts
@@ -0,0 +1,14 @@
+/**
+Detect whether the terminal supports Unicode.
+
+@example
+```
+import isUnicodeSupported = require('is-unicode-supported');
+
+isUnicodeSupported();
+//=> true
+```
+*/
+declare function isUnicodeSupported(): boolean;
+
+export = isUnicodeSupported;
diff --git a/node_modules/is-unicode-supported/index.js b/node_modules/is-unicode-supported/index.js
new file mode 100644
index 0000000..b5a11be
--- /dev/null
+++ b/node_modules/is-unicode-supported/index.js
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = () => {
+	if (process.platform !== 'win32') {
+		return true;
+	}
+
+	return Boolean(process.env.CI) ||
+		Boolean(process.env.WT_SESSION) || // Windows Terminal
+		process.env.TERM_PROGRAM === 'vscode' ||
+		process.env.TERM === 'xterm-256color' ||
+		process.env.TERM === 'alacritty';
+};
diff --git a/node_modules/is-unicode-supported/license b/node_modules/is-unicode-supported/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/node_modules/is-unicode-supported/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/is-unicode-supported/package.json b/node_modules/is-unicode-supported/package.json
new file mode 100644
index 0000000..759c1d0
--- /dev/null
+++ b/node_modules/is-unicode-supported/package.json
@@ -0,0 +1,41 @@
+{
+  "name": "is-unicode-supported",
+  "version": "0.1.0",
+  "description": "Detect whether the terminal supports Unicode",
+  "license": "MIT",
+  "repository": "sindresorhus/is-unicode-supported",
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "keywords": [
+    "terminal",
+    "unicode",
+    "detect",
+    "utf8",
+    "console",
+    "shell",
+    "support",
+    "supports",
+    "supported",
+    "check",
+    "detection"
+  ],
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.38.2"
+  }
+}
diff --git a/node_modules/is-unicode-supported/readme.md b/node_modules/is-unicode-supported/readme.md
new file mode 100644
index 0000000..a82e34d
--- /dev/null
+++ b/node_modules/is-unicode-supported/readme.md
@@ -0,0 +1,35 @@
+# is-unicode-supported
+
+> Detect whether the terminal supports Unicode
+
+This can be useful to decide whether to use Unicode characters or fallback ASCII characters in command-line output.
+
+Note that the check is quite naive. It just assumes all non-Windows terminals support Unicode and hard-codes which Windows terminals that do support Unicode. However, I have been using this logic in some popular packages for years without problems.
+
+## Install
+
+```
+$ npm install is-unicode-supported
+```
+
+## Usage
+
+```js
+const isUnicodeSupported = require('is-unicode-supported');
+
+isUnicodeSupported();
+//=> true
+```
+
+## API
+
+### isUnicodeSupported()
+
+Returns a `boolean` for whether the terminal supports Unicode.
+
+## Related
+
+- [is-interactive](https://github.com/sindresorhus/is-interactive) - Check if stdout or stderr is interactive
+- [supports-color](https://github.com/chalk/supports-color) - Detect whether a terminal supports color
+- [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows fallbacks
+- [log-symbols](https://github.com/sindresorhus/log-symbols) - Colored symbols for various log levels
diff --git a/node_modules/lodash.clonedeep/LICENSE b/node_modules/lodash.clonedeep/LICENSE
new file mode 100644
index 0000000..e0c69d5
--- /dev/null
+++ b/node_modules/lodash.clonedeep/LICENSE
@@ -0,0 +1,47 @@
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/node_modules/lodash.clonedeep/README.md b/node_modules/lodash.clonedeep/README.md
new file mode 100644
index 0000000..fee48e4
--- /dev/null
+++ b/node_modules/lodash.clonedeep/README.md
@@ -0,0 +1,18 @@
+# lodash.clonedeep v4.5.0
+
+The [lodash](https://lodash.com/) method `_.cloneDeep` exported as a [Node.js](https://nodejs.org/) module.
+
+## Installation
+
+Using npm:
+```bash
+$ {sudo -H} npm i -g npm
+$ npm i --save lodash.clonedeep
+```
+
+In Node.js:
+```js
+var cloneDeep = require('lodash.clonedeep');
+```
+
+See the [documentation](https://lodash.com/docs#cloneDeep) or [package source](https://github.com/lodash/lodash/blob/4.5.0-npm-packages/lodash.clonedeep) for more details.
diff --git a/node_modules/lodash.clonedeep/index.js b/node_modules/lodash.clonedeep/index.js
new file mode 100644
index 0000000..1b0e502
--- /dev/null
+++ b/node_modules/lodash.clonedeep/index.js
@@ -0,0 +1,1748 @@
+/**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/** Used as references for various `Number` constants. */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+    arrayTag = '[object Array]',
+    boolTag = '[object Boolean]',
+    dateTag = '[object Date]',
+    errorTag = '[object Error]',
+    funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
+    mapTag = '[object Map]',
+    numberTag = '[object Number]',
+    objectTag = '[object Object]',
+    promiseTag = '[object Promise]',
+    regexpTag = '[object RegExp]',
+    setTag = '[object Set]',
+    stringTag = '[object String]',
+    symbolTag = '[object Symbol]',
+    weakMapTag = '[object WeakMap]';
+
+var arrayBufferTag = '[object ArrayBuffer]',
+    dataViewTag = '[object DataView]',
+    float32Tag = '[object Float32Array]',
+    float64Tag = '[object Float64Array]',
+    int8Tag = '[object Int8Array]',
+    int16Tag = '[object Int16Array]',
+    int32Tag = '[object Int32Array]',
+    uint8Tag = '[object Uint8Array]',
+    uint8ClampedTag = '[object Uint8ClampedArray]',
+    uint16Tag = '[object Uint16Array]',
+    uint32Tag = '[object Uint32Array]';
+
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+
+/** Used to match `RegExp` flags from their coerced string values. */
+var reFlags = /\w*$/;
+
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/** Used to detect unsigned integer values. */
+var reIsUint = /^(?:0|[1-9]\d*)$/;
+
+/** Used to identify `toStringTag` values supported by `_.clone`. */
+var cloneableTags = {};
+cloneableTags[argsTag] = cloneableTags[arrayTag] =
+cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
+cloneableTags[boolTag] = cloneableTags[dateTag] =
+cloneableTags[float32Tag] = cloneableTags[float64Tag] =
+cloneableTags[int8Tag] = cloneableTags[int16Tag] =
+cloneableTags[int32Tag] = cloneableTags[mapTag] =
+cloneableTags[numberTag] = cloneableTags[objectTag] =
+cloneableTags[regexpTag] = cloneableTags[setTag] =
+cloneableTags[stringTag] = cloneableTags[symbolTag] =
+cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
+cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+cloneableTags[errorTag] = cloneableTags[funcTag] =
+cloneableTags[weakMapTag] = false;
+
+/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
+
+/** Detect free variable `exports`. */
+var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
+
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
+
+/**
+ * Adds the key-value `pair` to `map`.
+ *
+ * @private
+ * @param {Object} map The map to modify.
+ * @param {Array} pair The key-value pair to add.
+ * @returns {Object} Returns `map`.
+ */
+function addMapEntry(map, pair) {
+  // Don't return `map.set` because it's not chainable in IE 11.
+  map.set(pair[0], pair[1]);
+  return map;
+}
+
+/**
+ * Adds `value` to `set`.
+ *
+ * @private
+ * @param {Object} set The set to modify.
+ * @param {*} value The value to add.
+ * @returns {Object} Returns `set`.
+ */
+function addSetEntry(set, value) {
+  // Don't return `set.add` because it's not chainable in IE 11.
+  set.add(value);
+  return set;
+}
+
+/**
+ * A specialized version of `_.forEach` for arrays without support for
+ * iteratee shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns `array`.
+ */
+function arrayEach(array, iteratee) {
+  var index = -1,
+      length = array ? array.length : 0;
+
+  while (++index < length) {
+    if (iteratee(array[index], index, array) === false) {
+      break;
+    }
+  }
+  return array;
+}
+
+/**
+ * Appends the elements of `values` to `array`.
+ *
+ * @private
+ * @param {Array} array The array to modify.
+ * @param {Array} values The values to append.
+ * @returns {Array} Returns `array`.
+ */
+function arrayPush(array, values) {
+  var index = -1,
+      length = values.length,
+      offset = array.length;
+
+  while (++index < length) {
+    array[offset + index] = values[index];
+  }
+  return array;
+}
+
+/**
+ * A specialized version of `_.reduce` for arrays without support for
+ * iteratee shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {*} [accumulator] The initial value.
+ * @param {boolean} [initAccum] Specify using the first element of `array` as
+ *  the initial value.
+ * @returns {*} Returns the accumulated value.
+ */
+function arrayReduce(array, iteratee, accumulator, initAccum) {
+  var index = -1,
+      length = array ? array.length : 0;
+
+  if (initAccum && length) {
+    accumulator = array[++index];
+  }
+  while (++index < length) {
+    accumulator = iteratee(accumulator, array[index], index, array);
+  }
+  return accumulator;
+}
+
+/**
+ * The base implementation of `_.times` without support for iteratee shorthands
+ * or max array length checks.
+ *
+ * @private
+ * @param {number} n The number of times to invoke `iteratee`.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the array of results.
+ */
+function baseTimes(n, iteratee) {
+  var index = -1,
+      result = Array(n);
+
+  while (++index < n) {
+    result[index] = iteratee(index);
+  }
+  return result;
+}
+
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+  return object == null ? undefined : object[key];
+}
+
+/**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+function isHostObject(value) {
+  // Many host objects are `Object` objects that can coerce to strings
+  // despite having improperly defined `toString` methods.
+  var result = false;
+  if (value != null && typeof value.toString != 'function') {
+    try {
+      result = !!(value + '');
+    } catch (e) {}
+  }
+  return result;
+}
+
+/**
+ * Converts `map` to its key-value pairs.
+ *
+ * @private
+ * @param {Object} map The map to convert.
+ * @returns {Array} Returns the key-value pairs.
+ */
+function mapToArray(map) {
+  var index = -1,
+      result = Array(map.size);
+
+  map.forEach(function(value, key) {
+    result[++index] = [key, value];
+  });
+  return result;
+}
+
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+  return function(arg) {
+    return func(transform(arg));
+  };
+}
+
+/**
+ * Converts `set` to an array of its values.
+ *
+ * @private
+ * @param {Object} set The set to convert.
+ * @returns {Array} Returns the values.
+ */
+function setToArray(set) {
+  var index = -1,
+      result = Array(set.size);
+
+  set.forEach(function(value) {
+    result[++index] = value;
+  });
+  return result;
+}
+
+/** Used for built-in method references. */
+var arrayProto = Array.prototype,
+    funcProto = Function.prototype,
+    objectProto = Object.prototype;
+
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
+
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+  return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/** Built-in value references. */
+var Buffer = moduleExports ? root.Buffer : undefined,
+    Symbol = root.Symbol,
+    Uint8Array = root.Uint8Array,
+    getPrototype = overArg(Object.getPrototypeOf, Object),
+    objectCreate = Object.create,
+    propertyIsEnumerable = objectProto.propertyIsEnumerable,
+    splice = arrayProto.splice;
+
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeGetSymbols = Object.getOwnPropertySymbols,
+    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
+    nativeKeys = overArg(Object.keys, Object);
+
+/* Built-in method references that are verified to be native. */
+var DataView = getNative(root, 'DataView'),
+    Map = getNative(root, 'Map'),
+    Promise = getNative(root, 'Promise'),
+    Set = getNative(root, 'Set'),
+    WeakMap = getNative(root, 'WeakMap'),
+    nativeCreate = getNative(Object, 'create');
+
+/** Used to detect maps, sets, and weakmaps. */
+var dataViewCtorString = toSource(DataView),
+    mapCtorString = toSource(Map),
+    promiseCtorString = toSource(Promise),
+    setCtorString = toSource(Set),
+    weakMapCtorString = toSource(WeakMap);
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
+
+/**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Hash(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+function hashClear() {
+  this.__data__ = nativeCreate ? nativeCreate(null) : {};
+}
+
+/**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function hashDelete(key) {
+  return this.has(key) && delete this.__data__[key];
+}
+
+/**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function hashGet(key) {
+  var data = this.__data__;
+  if (nativeCreate) {
+    var result = data[key];
+    return result === HASH_UNDEFINED ? undefined : result;
+  }
+  return hasOwnProperty.call(data, key) ? data[key] : undefined;
+}
+
+/**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function hashHas(key) {
+  var data = this.__data__;
+  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+}
+
+/**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+function hashSet(key, value) {
+  var data = this.__data__;
+  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+  return this;
+}
+
+// Add methods to `Hash`.
+Hash.prototype.clear = hashClear;
+Hash.prototype['delete'] = hashDelete;
+Hash.prototype.get = hashGet;
+Hash.prototype.has = hashHas;
+Hash.prototype.set = hashSet;
+
+/**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function ListCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+function listCacheClear() {
+  this.__data__ = [];
+}
+
+/**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function listCacheDelete(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    return false;
+  }
+  var lastIndex = data.length - 1;
+  if (index == lastIndex) {
+    data.pop();
+  } else {
+    splice.call(data, index, 1);
+  }
+  return true;
+}
+
+/**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function listCacheGet(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  return index < 0 ? undefined : data[index][1];
+}
+
+/**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function listCacheHas(key) {
+  return assocIndexOf(this.__data__, key) > -1;
+}
+
+/**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+function listCacheSet(key, value) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    data.push([key, value]);
+  } else {
+    data[index][1] = value;
+  }
+  return this;
+}
+
+// Add methods to `ListCache`.
+ListCache.prototype.clear = listCacheClear;
+ListCache.prototype['delete'] = listCacheDelete;
+ListCache.prototype.get = listCacheGet;
+ListCache.prototype.has = listCacheHas;
+ListCache.prototype.set = listCacheSet;
+
+/**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function MapCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+function mapCacheClear() {
+  this.__data__ = {
+    'hash': new Hash,
+    'map': new (Map || ListCache),
+    'string': new Hash
+  };
+}
+
+/**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function mapCacheDelete(key) {
+  return getMapData(this, key)['delete'](key);
+}
+
+/**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function mapCacheGet(key) {
+  return getMapData(this, key).get(key);
+}
+
+/**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function mapCacheHas(key) {
+  return getMapData(this, key).has(key);
+}
+
+/**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+function mapCacheSet(key, value) {
+  getMapData(this, key).set(key, value);
+  return this;
+}
+
+// Add methods to `MapCache`.
+MapCache.prototype.clear = mapCacheClear;
+MapCache.prototype['delete'] = mapCacheDelete;
+MapCache.prototype.get = mapCacheGet;
+MapCache.prototype.has = mapCacheHas;
+MapCache.prototype.set = mapCacheSet;
+
+/**
+ * Creates a stack cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Stack(entries) {
+  this.__data__ = new ListCache(entries);
+}
+
+/**
+ * Removes all key-value entries from the stack.
+ *
+ * @private
+ * @name clear
+ * @memberOf Stack
+ */
+function stackClear() {
+  this.__data__ = new ListCache;
+}
+
+/**
+ * Removes `key` and its value from the stack.
+ *
+ * @private
+ * @name delete
+ * @memberOf Stack
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function stackDelete(key) {
+  return this.__data__['delete'](key);
+}
+
+/**
+ * Gets the stack value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Stack
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function stackGet(key) {
+  return this.__data__.get(key);
+}
+
+/**
+ * Checks if a stack value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Stack
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function stackHas(key) {
+  return this.__data__.has(key);
+}
+
+/**
+ * Sets the stack `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Stack
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the stack cache instance.
+ */
+function stackSet(key, value) {
+  var cache = this.__data__;
+  if (cache instanceof ListCache) {
+    var pairs = cache.__data__;
+    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
+      pairs.push([key, value]);
+      return this;
+    }
+    cache = this.__data__ = new MapCache(pairs);
+  }
+  cache.set(key, value);
+  return this;
+}
+
+// Add methods to `Stack`.
+Stack.prototype.clear = stackClear;
+Stack.prototype['delete'] = stackDelete;
+Stack.prototype.get = stackGet;
+Stack.prototype.has = stackHas;
+Stack.prototype.set = stackSet;
+
+/**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+function arrayLikeKeys(value, inherited) {
+  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+  // Safari 9 makes `arguments.length` enumerable in strict mode.
+  var result = (isArray(value) || isArguments(value))
+    ? baseTimes(value.length, String)
+    : [];
+
+  var length = result.length,
+      skipIndexes = !!length;
+
+  for (var key in value) {
+    if ((inherited || hasOwnProperty.call(value, key)) &&
+        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+/**
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function assignValue(object, key, value) {
+  var objValue = object[key];
+  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
+      (value === undefined && !(key in object))) {
+    object[key] = value;
+  }
+}
+
+/**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function assocIndexOf(array, key) {
+  var length = array.length;
+  while (length--) {
+    if (eq(array[length][0], key)) {
+      return length;
+    }
+  }
+  return -1;
+}
+
+/**
+ * The base implementation of `_.assign` without support for multiple sources
+ * or `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
+ */
+function baseAssign(object, source) {
+  return object && copyObject(source, keys(source), object);
+}
+
+/**
+ * The base implementation of `_.clone` and `_.cloneDeep` which tracks
+ * traversed objects.
+ *
+ * @private
+ * @param {*} value The value to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @param {boolean} [isFull] Specify a clone including symbols.
+ * @param {Function} [customizer] The function to customize cloning.
+ * @param {string} [key] The key of `value`.
+ * @param {Object} [object] The parent object of `value`.
+ * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
+ * @returns {*} Returns the cloned value.
+ */
+function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
+  var result;
+  if (customizer) {
+    result = object ? customizer(value, key, object, stack) : customizer(value);
+  }
+  if (result !== undefined) {
+    return result;
+  }
+  if (!isObject(value)) {
+    return value;
+  }
+  var isArr = isArray(value);
+  if (isArr) {
+    result = initCloneArray(value);
+    if (!isDeep) {
+      return copyArray(value, result);
+    }
+  } else {
+    var tag = getTag(value),
+        isFunc = tag == funcTag || tag == genTag;
+
+    if (isBuffer(value)) {
+      return cloneBuffer(value, isDeep);
+    }
+    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
+      if (isHostObject(value)) {
+        return object ? value : {};
+      }
+      result = initCloneObject(isFunc ? {} : value);
+      if (!isDeep) {
+        return copySymbols(value, baseAssign(result, value));
+      }
+    } else {
+      if (!cloneableTags[tag]) {
+        return object ? value : {};
+      }
+      result = initCloneByTag(value, tag, baseClone, isDeep);
+    }
+  }
+  // Check for circular references and return its corresponding clone.
+  stack || (stack = new Stack);
+  var stacked = stack.get(value);
+  if (stacked) {
+    return stacked;
+  }
+  stack.set(value, result);
+
+  if (!isArr) {
+    var props = isFull ? getAllKeys(value) : keys(value);
+  }
+  arrayEach(props || value, function(subValue, key) {
+    if (props) {
+      key = subValue;
+      subValue = value[key];
+    }
+    // Recursively populate clone (susceptible to call stack limits).
+    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
+  });
+  return result;
+}
+
+/**
+ * The base implementation of `_.create` without support for assigning
+ * properties to the created object.
+ *
+ * @private
+ * @param {Object} prototype The object to inherit from.
+ * @returns {Object} Returns the new object.
+ */
+function baseCreate(proto) {
+  return isObject(proto) ? objectCreate(proto) : {};
+}
+
+/**
+ * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
+ * `keysFunc` and `symbolsFunc` to get the enumerable property names and
+ * symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Function} keysFunc The function to get the keys of `object`.
+ * @param {Function} symbolsFunc The function to get the symbols of `object`.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+  var result = keysFunc(object);
+  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
+}
+
+/**
+ * The base implementation of `getTag`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+function baseGetTag(value) {
+  return objectToString.call(value);
+}
+
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ *  else `false`.
+ */
+function baseIsNative(value) {
+  if (!isObject(value) || isMasked(value)) {
+    return false;
+  }
+  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+  return pattern.test(toSource(value));
+}
+
+/**
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function baseKeys(object) {
+  if (!isPrototype(object)) {
+    return nativeKeys(object);
+  }
+  var result = [];
+  for (var key in Object(object)) {
+    if (hasOwnProperty.call(object, key) && key != 'constructor') {
+      result.push(key);
+    }
+  }
+  return result;
+}
+
+/**
+ * Creates a clone of  `buffer`.
+ *
+ * @private
+ * @param {Buffer} buffer The buffer to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Buffer} Returns the cloned buffer.
+ */
+function cloneBuffer(buffer, isDeep) {
+  if (isDeep) {
+    return buffer.slice();
+  }
+  var result = new buffer.constructor(buffer.length);
+  buffer.copy(result);
+  return result;
+}
+
+/**
+ * Creates a clone of `arrayBuffer`.
+ *
+ * @private
+ * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
+ */
+function cloneArrayBuffer(arrayBuffer) {
+  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
+  new Uint8Array(result).set(new Uint8Array(arrayBuffer));
+  return result;
+}
+
+/**
+ * Creates a clone of `dataView`.
+ *
+ * @private
+ * @param {Object} dataView The data view to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned data view.
+ */
+function cloneDataView(dataView, isDeep) {
+  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
+  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
+}
+
+/**
+ * Creates a clone of `map`.
+ *
+ * @private
+ * @param {Object} map The map to clone.
+ * @param {Function} cloneFunc The function to clone values.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned map.
+ */
+function cloneMap(map, isDeep, cloneFunc) {
+  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);
+  return arrayReduce(array, addMapEntry, new map.constructor);
+}
+
+/**
+ * Creates a clone of `regexp`.
+ *
+ * @private
+ * @param {Object} regexp The regexp to clone.
+ * @returns {Object} Returns the cloned regexp.
+ */
+function cloneRegExp(regexp) {
+  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
+  result.lastIndex = regexp.lastIndex;
+  return result;
+}
+
+/**
+ * Creates a clone of `set`.
+ *
+ * @private
+ * @param {Object} set The set to clone.
+ * @param {Function} cloneFunc The function to clone values.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned set.
+ */
+function cloneSet(set, isDeep, cloneFunc) {
+  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);
+  return arrayReduce(array, addSetEntry, new set.constructor);
+}
+
+/**
+ * Creates a clone of the `symbol` object.
+ *
+ * @private
+ * @param {Object} symbol The symbol object to clone.
+ * @returns {Object} Returns the cloned symbol object.
+ */
+function cloneSymbol(symbol) {
+  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
+}
+
+/**
+ * Creates a clone of `typedArray`.
+ *
+ * @private
+ * @param {Object} typedArray The typed array to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the cloned typed array.
+ */
+function cloneTypedArray(typedArray, isDeep) {
+  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
+  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
+}
+
+/**
+ * Copies the values of `source` to `array`.
+ *
+ * @private
+ * @param {Array} source The array to copy values from.
+ * @param {Array} [array=[]] The array to copy values to.
+ * @returns {Array} Returns `array`.
+ */
+function copyArray(source, array) {
+  var index = -1,
+      length = source.length;
+
+  array || (array = Array(length));
+  while (++index < length) {
+    array[index] = source[index];
+  }
+  return array;
+}
+
+/**
+ * Copies properties of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy properties from.
+ * @param {Array} props The property identifiers to copy.
+ * @param {Object} [object={}] The object to copy properties to.
+ * @param {Function} [customizer] The function to customize copied values.
+ * @returns {Object} Returns `object`.
+ */
+function copyObject(source, props, object, customizer) {
+  object || (object = {});
+
+  var index = -1,
+      length = props.length;
+
+  while (++index < length) {
+    var key = props[index];
+
+    var newValue = customizer
+      ? customizer(object[key], source[key], key, object, source)
+      : undefined;
+
+    assignValue(object, key, newValue === undefined ? source[key] : newValue);
+  }
+  return object;
+}
+
+/**
+ * Copies own symbol properties of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy symbols from.
+ * @param {Object} [object={}] The object to copy symbols to.
+ * @returns {Object} Returns `object`.
+ */
+function copySymbols(source, object) {
+  return copyObject(source, getSymbols(source), object);
+}
+
+/**
+ * Creates an array of own enumerable property names and symbols of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names and symbols.
+ */
+function getAllKeys(object) {
+  return baseGetAllKeys(object, keys, getSymbols);
+}
+
+/**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+function getMapData(map, key) {
+  var data = map.__data__;
+  return isKeyable(key)
+    ? data[typeof key == 'string' ? 'string' : 'hash']
+    : data.map;
+}
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+  var value = getValue(object, key);
+  return baseIsNative(value) ? value : undefined;
+}
+
+/**
+ * Creates an array of the own enumerable symbol properties of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of symbols.
+ */
+var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;
+
+/**
+ * Gets the `toStringTag` of `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+var getTag = baseGetTag;
+
+// Fallback for data views, maps, sets, and weak maps in IE 11,
+// for data views in Edge < 14, and promises in Node.js.
+if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
+    (Map && getTag(new Map) != mapTag) ||
+    (Promise && getTag(Promise.resolve()) != promiseTag) ||
+    (Set && getTag(new Set) != setTag) ||
+    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
+  getTag = function(value) {
+    var result = objectToString.call(value),
+        Ctor = result == objectTag ? value.constructor : undefined,
+        ctorString = Ctor ? toSource(Ctor) : undefined;
+
+    if (ctorString) {
+      switch (ctorString) {
+        case dataViewCtorString: return dataViewTag;
+        case mapCtorString: return mapTag;
+        case promiseCtorString: return promiseTag;
+        case setCtorString: return setTag;
+        case weakMapCtorString: return weakMapTag;
+      }
+    }
+    return result;
+  };
+}
+
+/**
+ * Initializes an array clone.
+ *
+ * @private
+ * @param {Array} array The array to clone.
+ * @returns {Array} Returns the initialized clone.
+ */
+function initCloneArray(array) {
+  var length = array.length,
+      result = array.constructor(length);
+
+  // Add properties assigned by `RegExp#exec`.
+  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
+    result.index = array.index;
+    result.input = array.input;
+  }
+  return result;
+}
+
+/**
+ * Initializes an object clone.
+ *
+ * @private
+ * @param {Object} object The object to clone.
+ * @returns {Object} Returns the initialized clone.
+ */
+function initCloneObject(object) {
+  return (typeof object.constructor == 'function' && !isPrototype(object))
+    ? baseCreate(getPrototype(object))
+    : {};
+}
+
+/**
+ * Initializes an object clone based on its `toStringTag`.
+ *
+ * **Note:** This function only supports cloning values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to clone.
+ * @param {string} tag The `toStringTag` of the object to clone.
+ * @param {Function} cloneFunc The function to clone values.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the initialized clone.
+ */
+function initCloneByTag(object, tag, cloneFunc, isDeep) {
+  var Ctor = object.constructor;
+  switch (tag) {
+    case arrayBufferTag:
+      return cloneArrayBuffer(object);
+
+    case boolTag:
+    case dateTag:
+      return new Ctor(+object);
+
+    case dataViewTag:
+      return cloneDataView(object, isDeep);
+
+    case float32Tag: case float64Tag:
+    case int8Tag: case int16Tag: case int32Tag:
+    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
+      return cloneTypedArray(object, isDeep);
+
+    case mapTag:
+      return cloneMap(object, isDeep, cloneFunc);
+
+    case numberTag:
+    case stringTag:
+      return new Ctor(object);
+
+    case regexpTag:
+      return cloneRegExp(object);
+
+    case setTag:
+      return cloneSet(object, isDeep, cloneFunc);
+
+    case symbolTag:
+      return cloneSymbol(object);
+  }
+}
+
+/**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+function isIndex(value, length) {
+  length = length == null ? MAX_SAFE_INTEGER : length;
+  return !!length &&
+    (typeof value == 'number' || reIsUint.test(value)) &&
+    (value > -1 && value % 1 == 0 && value < length);
+}
+
+/**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+function isKeyable(value) {
+  var type = typeof value;
+  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+    ? (value !== '__proto__')
+    : (value === null);
+}
+
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+  return !!maskSrcKey && (maskSrcKey in func);
+}
+
+/**
+ * Checks if `value` is likely a prototype object.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ */
+function isPrototype(value) {
+  var Ctor = value && value.constructor,
+      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
+
+  return value === proto;
+}
+
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+  if (func != null) {
+    try {
+      return funcToString.call(func);
+    } catch (e) {}
+    try {
+      return (func + '');
+    } catch (e) {}
+  }
+  return '';
+}
+
+/**
+ * This method is like `_.clone` except that it recursively clones `value`.
+ *
+ * @static
+ * @memberOf _
+ * @since 1.0.0
+ * @category Lang
+ * @param {*} value The value to recursively clone.
+ * @returns {*} Returns the deep cloned value.
+ * @see _.clone
+ * @example
+ *
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
+ *
+ * var deep = _.cloneDeep(objects);
+ * console.log(deep[0] === objects[0]);
+ * // => false
+ */
+function cloneDeep(value) {
+  return baseClone(value, true, true);
+}
+
+/**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+function eq(value, other) {
+  return value === other || (value !== value && other !== other);
+}
+
+/**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ *  else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+function isArguments(value) {
+  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
+    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
+}
+
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
+
+/**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+function isArrayLike(value) {
+  return value != null && isLength(value.length) && !isFunction(value);
+}
+
+/**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
+ *  else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+function isArrayLikeObject(value) {
+  return isObjectLike(value) && isArrayLike(value);
+}
+
+/**
+ * Checks if `value` is a buffer.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.3.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
+ * @example
+ *
+ * _.isBuffer(new Buffer(2));
+ * // => true
+ *
+ * _.isBuffer(new Uint8Array(2));
+ * // => false
+ */
+var isBuffer = nativeIsBuffer || stubFalse;
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+  // The use of `Object#toString` avoids issues with the `typeof` operator
+  // in Safari 8-9 which returns 'object' for typed array and other constructors.
+  var tag = isObject(value) ? objectToString.call(value) : '';
+  return tag == funcTag || tag == genTag;
+}
+
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+function isLength(value) {
+  return typeof value == 'number' &&
+    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+}
+
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+  return !!value && typeof value == 'object';
+}
+
+/**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ *   this.a = 1;
+ *   this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+function keys(object) {
+  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+}
+
+/**
+ * This method returns a new empty array.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {Array} Returns the new empty array.
+ * @example
+ *
+ * var arrays = _.times(2, _.stubArray);
+ *
+ * console.log(arrays);
+ * // => [[], []]
+ *
+ * console.log(arrays[0] === arrays[1]);
+ * // => false
+ */
+function stubArray() {
+  return [];
+}
+
+/**
+ * This method returns `false`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.13.0
+ * @category Util
+ * @returns {boolean} Returns `false`.
+ * @example
+ *
+ * _.times(2, _.stubFalse);
+ * // => [false, false]
+ */
+function stubFalse() {
+  return false;
+}
+
+module.exports = cloneDeep;
diff --git a/node_modules/lodash.clonedeep/package.json b/node_modules/lodash.clonedeep/package.json
new file mode 100644
index 0000000..bc21c1c
--- /dev/null
+++ b/node_modules/lodash.clonedeep/package.json
@@ -0,0 +1,19 @@
+{
+  "name": "lodash.clonedeep",
+  "version": "4.5.0",
+  "description": "The lodash method `_.cloneDeep` exported as a module.",
+  "homepage": "https://lodash.com/",
+  "icon": "https://lodash.com/icon.svg",
+  "license": "MIT",
+  "keywords": "lodash-modularized, clonedeep",
+  "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
+  "contributors": [
+    "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
+    "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
+    "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
+  ],
+  "repository": "lodash/lodash",
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  }
+}
diff --git a/node_modules/lodash.truncate/LICENSE b/node_modules/lodash.truncate/LICENSE
new file mode 100644
index 0000000..e0c69d5
--- /dev/null
+++ b/node_modules/lodash.truncate/LICENSE
@@ -0,0 +1,47 @@
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/node_modules/lodash.truncate/README.md b/node_modules/lodash.truncate/README.md
new file mode 100644
index 0000000..a2936e9
--- /dev/null
+++ b/node_modules/lodash.truncate/README.md
@@ -0,0 +1,18 @@
+# lodash.truncate v4.4.2
+
+The [lodash](https://lodash.com/) method `_.truncate` exported as a [Node.js](https://nodejs.org/) module.
+
+## Installation
+
+Using npm:
+```bash
+$ {sudo -H} npm i -g npm
+$ npm i --save lodash.truncate
+```
+
+In Node.js:
+```js
+var truncate = require('lodash.truncate');
+```
+
+See the [documentation](https://lodash.com/docs#truncate) or [package source](https://github.com/lodash/lodash/blob/4.4.2-npm-packages/lodash.truncate) for more details.
diff --git a/node_modules/lodash.truncate/index.js b/node_modules/lodash.truncate/index.js
new file mode 100644
index 0000000..4f5449e
--- /dev/null
+++ b/node_modules/lodash.truncate/index.js
@@ -0,0 +1,632 @@
+/**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/** Used as default options for `_.truncate`. */
+var DEFAULT_TRUNC_LENGTH = 30,
+    DEFAULT_TRUNC_OMISSION = '...';
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+    MAX_INTEGER = 1.7976931348623157e+308,
+    NAN = 0 / 0;
+
+/** `Object#toString` result references. */
+var regexpTag = '[object RegExp]',
+    symbolTag = '[object Symbol]';
+
+/** Used to match leading and trailing whitespace. */
+var reTrim = /^\s+|\s+$/g;
+
+/** Used to match `RegExp` flags from their coerced string values. */
+var reFlags = /\w*$/;
+
+/** Used to detect bad signed hexadecimal string values. */
+var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+
+/** Used to detect binary string values. */
+var reIsBinary = /^0b[01]+$/i;
+
+/** Used to detect octal string values. */
+var reIsOctal = /^0o[0-7]+$/i;
+
+/** Used to compose unicode character classes. */
+var rsAstralRange = '\\ud800-\\udfff',
+    rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
+    rsComboSymbolsRange = '\\u20d0-\\u20f0',
+    rsVarRange = '\\ufe0e\\ufe0f';
+
+/** Used to compose unicode capture groups. */
+var rsAstral = '[' + rsAstralRange + ']',
+    rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
+    rsFitz = '\\ud83c[\\udffb-\\udfff]',
+    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
+    rsNonAstral = '[^' + rsAstralRange + ']',
+    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
+    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
+    rsZWJ = '\\u200d';
+
+/** Used to compose unicode regexes. */
+var reOptMod = rsModifier + '?',
+    rsOptVar = '[' + rsVarRange + ']?',
+    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
+    rsSeq = rsOptVar + reOptMod + rsOptJoin,
+    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
+
+/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
+var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
+
+/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
+var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');
+
+/** Built-in method references without a dependency on `root`. */
+var freeParseInt = parseInt;
+
+/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
+
+/** Detect free variable `exports`. */
+var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
+
+/** Detect free variable `module`. */
+var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = freeModule && freeModule.exports === freeExports;
+
+/** Detect free variable `process` from Node.js. */
+var freeProcess = moduleExports && freeGlobal.process;
+
+/** Used to access faster Node.js helpers. */
+var nodeUtil = (function() {
+  try {
+    return freeProcess && freeProcess.binding('util');
+  } catch (e) {}
+}());
+
+/* Node.js helper references. */
+var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
+
+/**
+ * Gets the size of an ASCII `string`.
+ *
+ * @private
+ * @param {string} string The string inspect.
+ * @returns {number} Returns the string size.
+ */
+var asciiSize = baseProperty('length');
+
+/**
+ * Converts an ASCII `string` to an array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the converted array.
+ */
+function asciiToArray(string) {
+  return string.split('');
+}
+
+/**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+function baseProperty(key) {
+  return function(object) {
+    return object == null ? undefined : object[key];
+  };
+}
+
+/**
+ * The base implementation of `_.unary` without support for storing metadata.
+ *
+ * @private
+ * @param {Function} func The function to cap arguments for.
+ * @returns {Function} Returns the new capped function.
+ */
+function baseUnary(func) {
+  return function(value) {
+    return func(value);
+  };
+}
+
+/**
+ * Checks if `string` contains Unicode symbols.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {boolean} Returns `true` if a symbol is found, else `false`.
+ */
+function hasUnicode(string) {
+  return reHasUnicode.test(string);
+}
+
+/**
+ * Gets the number of symbols in `string`.
+ *
+ * @private
+ * @param {string} string The string to inspect.
+ * @returns {number} Returns the string size.
+ */
+function stringSize(string) {
+  return hasUnicode(string)
+    ? unicodeSize(string)
+    : asciiSize(string);
+}
+
+/**
+ * Converts `string` to an array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the converted array.
+ */
+function stringToArray(string) {
+  return hasUnicode(string)
+    ? unicodeToArray(string)
+    : asciiToArray(string);
+}
+
+/**
+ * Gets the size of a Unicode `string`.
+ *
+ * @private
+ * @param {string} string The string inspect.
+ * @returns {number} Returns the string size.
+ */
+function unicodeSize(string) {
+  var result = reUnicode.lastIndex = 0;
+  while (reUnicode.test(string)) {
+    result++;
+  }
+  return result;
+}
+
+/**
+ * Converts a Unicode `string` to an array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the converted array.
+ */
+function unicodeToArray(string) {
+  return string.match(reUnicode) || [];
+}
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/** Built-in value references. */
+var Symbol = root.Symbol;
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolToString = symbolProto ? symbolProto.toString : undefined;
+
+/**
+ * The base implementation of `_.isRegExp` without Node.js optimizations.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
+ */
+function baseIsRegExp(value) {
+  return isObject(value) && objectToString.call(value) == regexpTag;
+}
+
+/**
+ * The base implementation of `_.slice` without an iteratee call guard.
+ *
+ * @private
+ * @param {Array} array The array to slice.
+ * @param {number} [start=0] The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns the slice of `array`.
+ */
+function baseSlice(array, start, end) {
+  var index = -1,
+      length = array.length;
+
+  if (start < 0) {
+    start = -start > length ? 0 : (length + start);
+  }
+  end = end > length ? length : end;
+  if (end < 0) {
+    end += length;
+  }
+  length = start > end ? 0 : ((end - start) >>> 0);
+  start >>>= 0;
+
+  var result = Array(length);
+  while (++index < length) {
+    result[index] = array[index + start];
+  }
+  return result;
+}
+
+/**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+function baseToString(value) {
+  // Exit early for strings to avoid a performance hit in some environments.
+  if (typeof value == 'string') {
+    return value;
+  }
+  if (isSymbol(value)) {
+    return symbolToString ? symbolToString.call(value) : '';
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+/**
+ * Casts `array` to a slice if it's needed.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {number} start The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns the cast slice.
+ */
+function castSlice(array, start, end) {
+  var length = array.length;
+  end = end === undefined ? length : end;
+  return (!start && end >= length) ? array : baseSlice(array, start, end);
+}
+
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+  return !!value && typeof value == 'object';
+}
+
+/**
+ * Checks if `value` is classified as a `RegExp` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
+ * @example
+ *
+ * _.isRegExp(/abc/);
+ * // => true
+ *
+ * _.isRegExp('/abc/');
+ * // => false
+ */
+var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
+
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+  return typeof value == 'symbol' ||
+    (isObjectLike(value) && objectToString.call(value) == symbolTag);
+}
+
+/**
+ * Converts `value` to a finite number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.12.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted number.
+ * @example
+ *
+ * _.toFinite(3.2);
+ * // => 3.2
+ *
+ * _.toFinite(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toFinite(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toFinite('3.2');
+ * // => 3.2
+ */
+function toFinite(value) {
+  if (!value) {
+    return value === 0 ? value : 0;
+  }
+  value = toNumber(value);
+  if (value === INFINITY || value === -INFINITY) {
+    var sign = (value < 0 ? -1 : 1);
+    return sign * MAX_INTEGER;
+  }
+  return value === value ? value : 0;
+}
+
+/**
+ * Converts `value` to an integer.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted integer.
+ * @example
+ *
+ * _.toInteger(3.2);
+ * // => 3
+ *
+ * _.toInteger(Number.MIN_VALUE);
+ * // => 0
+ *
+ * _.toInteger(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toInteger('3.2');
+ * // => 3
+ */
+function toInteger(value) {
+  var result = toFinite(value),
+      remainder = result % 1;
+
+  return result === result ? (remainder ? result - remainder : result) : 0;
+}
+
+/**
+ * Converts `value` to a number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {number} Returns the number.
+ * @example
+ *
+ * _.toNumber(3.2);
+ * // => 3.2
+ *
+ * _.toNumber(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toNumber(Infinity);
+ * // => Infinity
+ *
+ * _.toNumber('3.2');
+ * // => 3.2
+ */
+function toNumber(value) {
+  if (typeof value == 'number') {
+    return value;
+  }
+  if (isSymbol(value)) {
+    return NAN;
+  }
+  if (isObject(value)) {
+    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+    value = isObject(other) ? (other + '') : other;
+  }
+  if (typeof value != 'string') {
+    return value === 0 ? value : +value;
+  }
+  value = value.replace(reTrim, '');
+  var isBinary = reIsBinary.test(value);
+  return (isBinary || reIsOctal.test(value))
+    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+    : (reIsBadHex.test(value) ? NAN : +value);
+}
+
+/**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+function toString(value) {
+  return value == null ? '' : baseToString(value);
+}
+
+/**
+ * Truncates `string` if it's longer than the given maximum string length.
+ * The last characters of the truncated string are replaced with the omission
+ * string which defaults to "...".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category String
+ * @param {string} [string=''] The string to truncate.
+ * @param {Object} [options={}] The options object.
+ * @param {number} [options.length=30] The maximum string length.
+ * @param {string} [options.omission='...'] The string to indicate text is omitted.
+ * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
+ * @returns {string} Returns the truncated string.
+ * @example
+ *
+ * _.truncate('hi-diddly-ho there, neighborino');
+ * // => 'hi-diddly-ho there, neighbo...'
+ *
+ * _.truncate('hi-diddly-ho there, neighborino', {
+ *   'length': 24,
+ *   'separator': ' '
+ * });
+ * // => 'hi-diddly-ho there,...'
+ *
+ * _.truncate('hi-diddly-ho there, neighborino', {
+ *   'length': 24,
+ *   'separator': /,? +/
+ * });
+ * // => 'hi-diddly-ho there...'
+ *
+ * _.truncate('hi-diddly-ho there, neighborino', {
+ *   'omission': ' [...]'
+ * });
+ * // => 'hi-diddly-ho there, neig [...]'
+ */
+function truncate(string, options) {
+  var length = DEFAULT_TRUNC_LENGTH,
+      omission = DEFAULT_TRUNC_OMISSION;
+
+  if (isObject(options)) {
+    var separator = 'separator' in options ? options.separator : separator;
+    length = 'length' in options ? toInteger(options.length) : length;
+    omission = 'omission' in options ? baseToString(options.omission) : omission;
+  }
+  string = toString(string);
+
+  var strLength = string.length;
+  if (hasUnicode(string)) {
+    var strSymbols = stringToArray(string);
+    strLength = strSymbols.length;
+  }
+  if (length >= strLength) {
+    return string;
+  }
+  var end = length - stringSize(omission);
+  if (end < 1) {
+    return omission;
+  }
+  var result = strSymbols
+    ? castSlice(strSymbols, 0, end).join('')
+    : string.slice(0, end);
+
+  if (separator === undefined) {
+    return result + omission;
+  }
+  if (strSymbols) {
+    end += (result.length - end);
+  }
+  if (isRegExp(separator)) {
+    if (string.slice(end).search(separator)) {
+      var match,
+          substring = result;
+
+      if (!separator.global) {
+        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
+      }
+      separator.lastIndex = 0;
+      while ((match = separator.exec(substring))) {
+        var newEnd = match.index;
+      }
+      result = result.slice(0, newEnd === undefined ? end : newEnd);
+    }
+  } else if (string.indexOf(baseToString(separator), end) != end) {
+    var index = result.lastIndexOf(separator);
+    if (index > -1) {
+      result = result.slice(0, index);
+    }
+  }
+  return result + omission;
+}
+
+module.exports = truncate;
diff --git a/node_modules/lodash.truncate/package.json b/node_modules/lodash.truncate/package.json
new file mode 100644
index 0000000..c1a2e03
--- /dev/null
+++ b/node_modules/lodash.truncate/package.json
@@ -0,0 +1,19 @@
+{
+  "name": "lodash.truncate",
+  "version": "4.4.2",
+  "description": "The lodash method `_.truncate` exported as a module.",
+  "homepage": "https://lodash.com/",
+  "icon": "https://lodash.com/icon.svg",
+  "license": "MIT",
+  "keywords": "lodash-modularized, truncate",
+  "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
+  "contributors": [
+    "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
+    "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
+    "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
+  ],
+  "repository": "lodash/lodash",
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  }
+}
diff --git a/node_modules/micromatch/CHANGELOG.md b/node_modules/micromatch/CHANGELOG.md
index 25fa58c..fc6d456 100644
--- a/node_modules/micromatch/CHANGELOG.md
+++ b/node_modules/micromatch/CHANGELOG.md
@@ -43,8 +43,9 @@
 
 ### Breaking changes
 
+- Require Node.js >= 8.6
 - Removed support for passing an array of brace patterns to `micromatch.braces()`.
-- To strictly enforce closing brackets (for `{`, `[`, and `(`), you must now use `strictBrackets=true` instead of `strictErrors`.   
+- To strictly enforce closing brackets (for `{`, `[`, and `(`), you must now use `strictBrackets=true` instead of `strictErrors`.
 - `cache` - caching and all related options and methods have been removed
 - `options.unixify` was renamed to `options.windows`
 - `options.nodupes` Was removed. Duplicates are always removed by default. You can override this with custom behavior by using the `onMatch`, `onResult` and `onIgnore` functions.
@@ -72,7 +73,7 @@
 
 **Added**
 
- - source map support (optionally created when using parse or compile - I have no idea what the use case is yet, but they come for free) (note that source maps are not generated for brace expansion at present, since the braces compiler uses a different strategy. I'll update if/when this changes). 
+ - source map support (optionally created when using parse or compile - I have no idea what the use case is yet, but they come for free) (note that source maps are not generated for brace expansion at present, since the braces compiler uses a different strategy. I'll update if/when this changes).
  - parser is exposed, so that implementors can customize or override specific micromatch parsers if necessary
  - compiler is exposed, so that implementors can customize or override specific micromatch compilers if necessary
 
diff --git a/node_modules/micromatch/README.md b/node_modules/micromatch/README.md
index e38f7ca..c692529 100644
--- a/node_modules/micromatch/README.md
+++ b/node_modules/micromatch/README.md
@@ -1,4 +1,4 @@
-# micromatch [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/micromatch.svg?style=flat)](https://www.npmjs.com/package/micromatch) [![NPM monthly downloads](https://img.shields.io/npm/dm/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![NPM total downloads](https://img.shields.io/npm/dt/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![Linux Build Status](https://img.shields.io/travis/micromatch/micromatch.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/micromatch)
+# micromatch [![NPM version](https://img.shields.io/npm/v/micromatch.svg?style=flat)](https://www.npmjs.com/package/micromatch) [![NPM monthly downloads](https://img.shields.io/npm/dm/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![NPM total downloads](https://img.shields.io/npm/dt/micromatch.svg?style=flat)](https://npmjs.org/package/micromatch) [![Linux Build Status](https://img.shields.io/travis/micromatch/micromatch.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/micromatch)
 
 > Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.
 
@@ -93,7 +93,7 @@
 * More complete support for the Bash 4.3 specification than minimatch and multimatch. Micromatch passes _all of the spec tests_ from bash, including some that bash still fails.
 * **Fast & Performant** - Loads in about 5ms and performs [fast matches](#benchmarks).
 * **Glob matching** - Using wildcards (`*` and `?`), globstars (`**`) for nested directories
-* **[Advanced globbing](#advanced-globbing)** - Supports [extglobs](#extglobs), [braces](#braces), and [POSIX brackets](#posix-bracket-expressions), and support for escaping special characters with `\` or quotes.
+* **[Advanced globbing](#extended-globbing)** - Supports [extglobs](#extglobs), [braces](#braces-1), and [POSIX brackets](#posix-bracket-expressions), and support for escaping special characters with `\` or quotes.
 * **Accurate** - Covers more scenarios [than minimatch](https://github.com/yarnpkg/yarn/pull/3339)
 * **Well tested** - More than 5,000 [test assertions](./test)
 * **Windows support** - More reliable windows support than minimatch and multimatch.
@@ -142,9 +142,9 @@
 
 **Params**
 
-* **{String|Array<string>}**: list List of strings to match.
-* **{String|Array<string>}**: patterns One or more glob patterns to use for matching.
-* **{Object}**: options See available [options](#options)
+* `list` **{String|Array<string>}**: List of strings to match.
+* `patterns` **{String|Array<string>}**: One or more glob patterns to use for matching.
+* `options` **{Object}**: See available [options](#options)
 * `returns` **{Array}**: Returns an array of matches
 
 **Example**
@@ -157,7 +157,7 @@
 //=> [ 'a.js' ]
 ```
 
-### [.matcher](index.js#L98)
+### [.matcher](index.js#L104)
 
 Returns a matcher function from the given glob `pattern` and `options`. The returned function takes a string to match as its only argument and returns true if the string is a match.
 
@@ -178,15 +178,15 @@
 console.log(isMatch('a.b')); //=> true
 ```
 
-### [.isMatch](index.js#L117)
+### [.isMatch](index.js#L123)
 
 Returns true if **any** of the given glob `patterns` match the specified `string`.
 
 **Params**
 
-* **{String}**: str The string to test.
-* **{String|Array}**: patterns One or more glob patterns to use for matching.
-* **{Object}**: See available [options](#options).
+* `str` **{String}**: The string to test.
+* `patterns` **{String|Array}**: One or more glob patterns to use for matching.
+* `[options]` **{Object}**: See available [options](#options).
 * `returns` **{Boolean}**: Returns true if any patterns match `str`
 
 **Example**
@@ -199,7 +199,7 @@
 console.log(mm.isMatch('a.a', 'b.*')); //=> false
 ```
 
-### [.not](index.js#L136)
+### [.not](index.js#L148)
 
 Returns a list of strings that _**do not match any**_ of the given `patterns`.
 
@@ -220,7 +220,7 @@
 //=> ['b.b', 'c.c']
 ```
 
-### [.contains](index.js#L176)
+### [.contains](index.js#L188)
 
 Returns true if the given `string` contains the given pattern. Similar to [.isMatch](#isMatch) but the pattern can match any part of the string.
 
@@ -229,7 +229,7 @@
 * `str` **{String}**: The string to match.
 * `patterns` **{String|Array}**: Glob pattern to use for matching.
 * `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if the patter matches any part of `str`.
+* `returns` **{Boolean}**: Returns true if any of the patterns matches any part of `str`.
 
 **Example**
 
@@ -243,7 +243,7 @@
 //=> false
 ```
 
-### [.matchKeys](index.js#L218)
+### [.matchKeys](index.js#L230)
 
 Filter the keys of the given object with the given `glob` pattern and `options`. Does not attempt to match nested keys. If you need this feature, use [glob-object](https://github.com/jonschlinkert/glob-object) instead.
 
@@ -265,7 +265,7 @@
 //=> { ab: 'b' }
 ```
 
-### [.some](index.js#L247)
+### [.some](index.js#L259)
 
 Returns true if some of the strings in the given `list` match any of the given glob `patterns`.
 
@@ -274,7 +274,7 @@
 * `list` **{String|Array}**: The string or array of strings to test. Returns as soon as the first match is found.
 * `patterns` **{String|Array}**: One or more glob patterns to use for matching.
 * `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
+* `returns` **{Boolean}**: Returns true if any `patterns` matches any of the strings in `list`
 
 **Example**
 
@@ -288,7 +288,7 @@
 // false
 ```
 
-### [.every](index.js#L283)
+### [.every](index.js#L295)
 
 Returns true if every string in the given `list` matches any of the given glob `patterns`.
 
@@ -297,7 +297,7 @@
 * `list` **{String|Array}**: The string or array of strings to test.
 * `patterns` **{String|Array}**: One or more glob patterns to use for matching.
 * `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns true if any patterns match `str`
+* `returns` **{Boolean}**: Returns true if all `patterns` matches all of the strings in `list`
 
 **Example**
 
@@ -315,7 +315,7 @@
 // false
 ```
 
-### [.all](index.js#L322)
+### [.all](index.js#L334)
 
 Returns true if **all** of the given `patterns` match the specified string.
 
@@ -345,7 +345,7 @@
 // true
 ```
 
-### [.capture](index.js#L349)
+### [.capture](index.js#L361)
 
 Returns an array of matches captured by `pattern` in `string, or`null` if the pattern did not match.
 
@@ -354,7 +354,7 @@
 * `glob` **{String}**: Glob pattern to use for matching.
 * `input` **{String}**: String to match
 * `options` **{Object}**: See available [options](#options) for changing how matches are performed
-* `returns` **{Boolean}**: Returns an array of captures if the input matches the glob pattern, otherwise `null`.
+* `returns` **{Array|null}**: Returns an array of captures if the input matches the glob pattern, otherwise `null`.
 
 **Example**
 
@@ -368,7 +368,7 @@
 //=> null
 ```
 
-### [.makeRe](index.js#L375)
+### [.makeRe](index.js#L387)
 
 Create a regular expression from the given glob `pattern`.
 
@@ -388,7 +388,7 @@
 //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/
 ```
 
-### [.scan](index.js#L391)
+### [.scan](index.js#L403)
 
 Scan a glob pattern to separate the pattern into segments. Used by the [split](#split) method.
 
@@ -405,7 +405,7 @@
 const state = mm.scan(pattern[, options]);
 ```
 
-### [.parse](index.js#L407)
+### [.parse](index.js#L419)
 
 Parse a glob pattern to create the source string for a regular expression.
 
@@ -422,7 +422,7 @@
 const state = mm(pattern[, options]);
 ```
 
-### [.braces](index.js#L434)
+### [.braces](index.js#L446)
 
 Process the given brace `pattern`.
 
@@ -479,7 +479,7 @@
 | [onResult](#optionsonResult) | `function` | `undefined` | Function to be called on all items, regardless of whether or not they are matched or ignored. |
 | `posix`               | `boolean`      | `false`     | Support [POSIX character classes](#posix-bracket-expressions) ("posix brackets"). |
 | `posixSlashes`        | `boolean`      | `undefined` | Convert all slashes in file paths to forward slashes. This does not convert slashes in the glob pattern itself |
-| `prepend`             | `boolean`      | `undefined` | String to prepend to the generated regex used for matching. |
+| `prepend`             | `string`       | `undefined` | String to prepend to the generated regex used for matching. |
 | `regex`               | `boolean`      | `false`     | Use regular expression rules for `+` (instead of matching literal `+`), and for stars that follow closing parentheses or brackets (as in `)*` and `]*`). |
 | `strictBrackets`      | `boolean`      | `undefined` | Throw an error if brackets, braces, or parens are imbalanced. |
 | `strictSlashes`       | `boolean`      | `undefined` | When true, picomatch won't match trailing slashes with single stars. |
@@ -772,7 +772,6 @@
 
 * `[ac].js`: matches both `a` and `c`, returning `['a.js', 'c.js']`
 * `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']`
-* `[b-d].js`: matches from `b` to `d`, returning `['b.js', 'c.js', 'd.js']`
 * `a/[A-Z].js`: matches and uppercase letter, returning `['a/E.md']`
 
 Learn about [regex character classes](http://www.regular-expressions.info/charclass.html).
@@ -835,7 +834,7 @@
 Install dependencies for running benchmarks:
 
 ```sh
-$ cd bench && npm install 
+$ cd bench && npm install
 ```
 
 Run the benchmarks:
@@ -846,56 +845,56 @@
 
 ### Latest results
 
-As of April 10, 2019 (longer bars are better):
+As of April 10, 2021 (longer bars are better):
 
 ```sh
 # .makeRe star
-  micromatch x 1,724,735 ops/sec ±1.69% (87 runs sampled))
-  minimatch x 649,565 ops/sec ±1.93% (91 runs sampled)
+  micromatch x 2,232,802 ops/sec ±2.34% (89 runs sampled))
+  minimatch x 781,018 ops/sec ±6.74% (92 runs sampled))
 
 # .makeRe star; dot=true
-  micromatch x 1,302,127 ops/sec ±1.43% (92 runs sampled)
-  minimatch x 556,242 ops/sec ±0.71% (86 runs sampled)
+  micromatch x 1,863,453 ops/sec ±0.74% (93 runs sampled)
+  minimatch x 723,105 ops/sec ±0.75% (93 runs sampled)
 
 # .makeRe globstar
-  micromatch x 1,393,992 ops/sec ±0.71% (89 runs sampled)
-  minimatch x 1,112,801 ops/sec ±2.02% (91 runs sampled)
+  micromatch x 1,624,179 ops/sec ±2.22% (91 runs sampled)
+  minimatch x 1,117,230 ops/sec ±2.78% (86 runs sampled))
 
 # .makeRe globstars
-  micromatch x 1,419,097 ops/sec ±0.34% (94 runs sampled)
-  minimatch x 541,207 ops/sec ±1.66% (93 runs sampled)
+  micromatch x 1,658,642 ops/sec ±0.86% (92 runs sampled)
+  minimatch x 741,224 ops/sec ±1.24% (89 runs sampled))
 
 # .makeRe with leading star
-  micromatch x 1,247,825 ops/sec ±0.97% (94 runs sampled)
-  minimatch x 489,660 ops/sec ±0.63% (94 runs sampled)
+  micromatch x 1,525,014 ops/sec ±1.63% (90 runs sampled)
+  minimatch x 561,074 ops/sec ±3.07% (89 runs sampled)
 
 # .makeRe - braces
-  micromatch x 206,301 ops/sec ±1.62% (81 runs sampled))
-  minimatch x 115,986 ops/sec ±0.59% (94 runs sampled)
+  micromatch x 172,478 ops/sec ±2.37% (78 runs sampled)
+  minimatch x 96,087 ops/sec ±2.34% (88 runs sampled)))
 
 # .makeRe braces - range (expanded)
-  micromatch x 27,782 ops/sec ±0.79% (88 runs sampled)
-  minimatch x 4,683 ops/sec ±1.20% (92 runs sampled)
+  micromatch x 26,973 ops/sec ±0.84% (89 runs sampled)
+  minimatch x 3,023 ops/sec ±0.99% (90 runs sampled))
 
 # .makeRe braces - range (compiled)
-  micromatch x 134,056 ops/sec ±2.73% (77 runs sampled))
-  minimatch x 977 ops/sec ±0.85% (91 runs sampled)d)
+  micromatch x 152,892 ops/sec ±1.67% (83 runs sampled)
+  minimatch x 992 ops/sec ±3.50% (89 runs sampled)d))
 
 # .makeRe braces - nested ranges (expanded)
-  micromatch x 18,353 ops/sec ±0.95% (91 runs sampled)
-  minimatch x 4,514 ops/sec ±1.04% (93 runs sampled)
+  micromatch x 15,816 ops/sec ±13.05% (80 runs sampled)
+  minimatch x 2,953 ops/sec ±1.64% (91 runs sampled)
 
 # .makeRe braces - nested ranges (compiled)
-  micromatch x 38,916 ops/sec ±1.85% (82 runs sampled)
-  minimatch x 980 ops/sec ±0.54% (93 runs sampled)d)
+  micromatch x 110,881 ops/sec ±1.85% (82 runs sampled)
+  minimatch x 1,008 ops/sec ±1.51% (91 runs sampled)
 
 # .makeRe braces - set (compiled)
-  micromatch x 141,088 ops/sec ±1.70% (70 runs sampled))
-  minimatch x 43,385 ops/sec ±0.87% (93 runs sampled)
+  micromatch x 134,930 ops/sec ±3.54% (63 runs sampled))
+  minimatch x 43,242 ops/sec ±0.60% (93 runs sampled)
 
 # .makeRe braces - nested sets (compiled)
-  micromatch x 87,272 ops/sec ±2.85% (71 runs sampled))
-  minimatch x 25,327 ops/sec ±1.59% (86 runs sampled)
+  micromatch x 94,455 ops/sec ±1.74% (69 runs sampled))
+  minimatch x 27,720 ops/sec ±1.84% (93 runs sampled))
 ```
 
 ## Contributing
@@ -964,23 +963,32 @@
 
 | **Commits** | **Contributor** |  
 | --- | --- |  
-| 475 | [jonschlinkert](https://github.com/jonschlinkert) |  
+| 508 | [jonschlinkert](https://github.com/jonschlinkert) |  
 | 12  | [es128](https://github.com/es128) |  
 | 8   | [doowb](https://github.com/doowb) |  
-| 3   | [paulmillr](https://github.com/paulmillr) |  
+| 6   | [paulmillr](https://github.com/paulmillr) |  
+| 5   | [mrmlnc](https://github.com/mrmlnc) |  
+| 4   | [danez](https://github.com/danez) |  
+| 3   | [DrPizza](https://github.com/DrPizza) |  
 | 2   | [TrySound](https://github.com/TrySound) |  
+| 2   | [mceIdo](https://github.com/mceIdo) |  
+| 2   | [Glazy](https://github.com/Glazy) |  
 | 2   | [MartinKolarik](https://github.com/MartinKolarik) |  
 | 2   | [Tvrqvoise](https://github.com/Tvrqvoise) |  
-| 2   | [tunnckoCore](https://github.com/tunnckoCore) |  
 | 1   | [amilajack](https://github.com/amilajack) |  
-| 1   | [mrmlnc](https://github.com/mrmlnc) |  
+| 1   | [Cslove](https://github.com/Cslove) |  
 | 1   | [devongovett](https://github.com/devongovett) |  
 | 1   | [DianeLooney](https://github.com/DianeLooney) |  
 | 1   | [UltCombo](https://github.com/UltCombo) |  
+| 1   | [frangio](https://github.com/frangio) |  
+| 1   | [juszczykjakub](https://github.com/juszczykjakub) |  
+| 1   | [muescha](https://github.com/muescha) |  
+| 1   | [sebdeckers](https://github.com/sebdeckers) |  
 | 1   | [tomByrer](https://github.com/tomByrer) |  
 | 1   | [fidian](https://github.com/fidian) |  
 | 1   | [simlu](https://github.com/simlu) |  
 | 1   | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |  
+| 1   | [yvele](https://github.com/yvele) |  
 
 ### Author
 
@@ -992,9 +1000,9 @@
 
 ### License
 
-Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
+Copyright © 2021, [Jon Schlinkert](https://github.com/jonschlinkert).
 Released under the [MIT License](LICENSE).
 
 ***
 
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 10, 2019._
\ No newline at end of file
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 10, 2021._
\ No newline at end of file
diff --git a/node_modules/micromatch/index.js b/node_modules/micromatch/index.js
index 1d5b3d1..7ac922b 100644
--- a/node_modules/micromatch/index.js
+++ b/node_modules/micromatch/index.js
@@ -4,7 +4,7 @@
 const braces = require('braces');
 const picomatch = require('picomatch');
 const utils = require('picomatch/lib/utils');
-const isEmptyString = val => typeof val === 'string' && (val === '' || val === './');
+const isEmptyString = val => val === '' || val === './';
 
 /**
  * Returns an array of strings that match one or more glob patterns.
@@ -16,9 +16,9 @@
  * console.log(mm(['a.js', 'a.txt'], ['*.js']));
  * //=> [ 'a.js' ]
  * ```
- * @param {String|Array<string>} list List of strings to match.
- * @param {String|Array<string>} patterns One or more glob patterns to use for matching.
- * @param {Object} options See available [options](#options)
+ * @param {String|Array<string>} `list` List of strings to match.
+ * @param {String|Array<string>} `patterns` One or more glob patterns to use for matching.
+ * @param {Object} `options` See available [options](#options)
  * @return {Array} Returns an array of matches
  * @summary false
  * @api public
@@ -113,9 +113,9 @@
  * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true
  * console.log(mm.isMatch('a.a', 'b.*')); //=> false
  * ```
- * @param {String} str The string to test.
- * @param {String|Array} patterns One or more glob patterns to use for matching.
- * @param {Object} [options] See available [options](#options).
+ * @param {String} `str` The string to test.
+ * @param {String|Array} `patterns` One or more glob patterns to use for matching.
+ * @param {Object} `[options]` See available [options](#options).
  * @return {Boolean} Returns true if any patterns match `str`
  * @api public
  */
@@ -181,7 +181,7 @@
  * @param {String} `str` The string to match.
  * @param {String|Array} `patterns` Glob pattern to use for matching.
  * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if the patter matches any part of `str`.
+ * @return {Boolean} Returns true if any of the patterns matches any part of `str`.
  * @api public
  */
 
@@ -252,7 +252,7 @@
  * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.
  * @param {String|Array} `patterns` One or more glob patterns to use for matching.
  * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
+ * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`
  * @api public
  */
 
@@ -288,7 +288,7 @@
  * @param {String|Array} `list` The string or array of strings to test.
  * @param {String|Array} `patterns` One or more glob patterns to use for matching.
  * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns true if any patterns match `str`
+ * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`
  * @api public
  */
 
@@ -354,7 +354,7 @@
  * @param {String} `glob` Glob pattern to use for matching.
  * @param {String} `input` String to match
  * @param {Object} `options` See available [options](#options) for changing how matches are performed
- * @return {Boolean} Returns an array of captures if the input matches the glob pattern, otherwise `null`.
+ * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.
  * @api public
  */
 
diff --git a/node_modules/micromatch/package.json b/node_modules/micromatch/package.json
index eb315b8..ccc7ee7 100644
--- a/node_modules/micromatch/package.json
+++ b/node_modules/micromatch/package.json
@@ -1,7 +1,7 @@
 {
   "name": "micromatch",
   "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.",
-  "version": "4.0.2",
+  "version": "4.0.4",
   "homepage": "https://github.com/micromatch/micromatch",
   "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
   "contributors": [
@@ -18,7 +18,8 @@
     "Paul Miller (paulmillr.com)",
     "Tom Byrer (https://github.com/tomByrer)",
     "Tyler Akins (http://rumkin.com)",
-    "Peter Bright <drpizza@quiscalusmexicanus.org> (https://github.com/drpizza)"
+    "Peter Bright <drpizza@quiscalusmexicanus.org> (https://github.com/drpizza)",
+    "Kuba Juszczyk (https://github.com/ku8ar)"
   ],
   "repository": "micromatch/micromatch",
   "bugs": {
@@ -30,20 +31,20 @@
   ],
   "main": "index.js",
   "engines": {
-    "node": ">=8"
+    "node": ">=8.6"
   },
   "scripts": {
     "test": "mocha"
   },
   "dependencies": {
     "braces": "^3.0.1",
-    "picomatch": "^2.0.5"
+    "picomatch": "^2.2.3"
   },
   "devDependencies": {
     "fill-range": "^7.0.1",
     "gulp-format-md": "^2.0.0",
     "minimatch": "^3.0.4",
-    "mocha": "^5.2.0",
+    "mocha": "^7.2.0",
     "time-require": "github:jonschlinkert/time-require"
   },
   "keywords": [
diff --git a/node_modules/picomatch/CHANGELOG.md b/node_modules/picomatch/CHANGELOG.md
old mode 100755
new mode 100644
index 7af5861..1301f3a
--- a/node_modules/picomatch/CHANGELOG.md
+++ b/node_modules/picomatch/CHANGELOG.md
@@ -32,6 +32,13 @@
 
 </details>
 
+## 2.2.3 (2021-04-10)
+
+### Fixed
+
+* Do not skip pattern seperator for square brackets ([fb08a30](https://github.com/micromatch/picomatch/commit/fb08a30)).
+* Set negatedExtGlob also if it does not span the whole pattern ([032e3f5](https://github.com/micromatch/picomatch/commit/032e3f5)).
+
 ## 2.2.2 (2020-03-21)
 
 ### Fixed
diff --git a/node_modules/picomatch/LICENSE b/node_modules/picomatch/LICENSE
old mode 100755
new mode 100644
diff --git a/node_modules/picomatch/README.md b/node_modules/picomatch/README.md
old mode 100755
new mode 100644
index 7737151..85f4bfb
--- a/node_modules/picomatch/README.md
+++ b/node_modules/picomatch/README.md
@@ -562,7 +562,7 @@
 
 Some characters that are used for matching in regular expressions are also regarded as valid file path characters on some platforms.
 
-To match any of the following characters as literals: `$^*+?()[]
+To match any of the following characters as literals: `$^*+?()[]`
 
 Examples:
 
diff --git a/node_modules/picomatch/index.js b/node_modules/picomatch/index.js
old mode 100755
new mode 100644
diff --git a/node_modules/picomatch/lib/constants.js b/node_modules/picomatch/lib/constants.js
old mode 100755
new mode 100644
diff --git a/node_modules/picomatch/lib/parse.js b/node_modules/picomatch/lib/parse.js
old mode 100755
new mode 100644
index 34bdc2f..bb8e043
--- a/node_modules/picomatch/lib/parse.js
+++ b/node_modules/picomatch/lib/parse.js
@@ -247,7 +247,7 @@
         output = token.close = `)$))${extglobStar}`;
       }
 
-      if (token.prev.type === 'bos' && eos()) {
+      if (token.prev.type === 'bos') {
         state.negatedExtglob = true;
       }
     }
diff --git a/node_modules/picomatch/lib/picomatch.js b/node_modules/picomatch/lib/picomatch.js
old mode 100755
new mode 100644
diff --git a/node_modules/picomatch/lib/scan.js b/node_modules/picomatch/lib/scan.js
old mode 100755
new mode 100644
index 31ae6ad..456c2f8
--- a/node_modules/picomatch/lib/scan.js
+++ b/node_modules/picomatch/lib/scan.js
@@ -231,13 +231,15 @@
           isBracket = token.isBracket = true;
           isGlob = token.isGlob = true;
           finished = true;
-
-          if (scanToEnd === true) {
-            continue;
-          }
           break;
         }
       }
+
+      if (scanToEnd === true) {
+        continue;
+      }
+
+      break;
     }
 
     if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
diff --git a/node_modules/picomatch/lib/utils.js b/node_modules/picomatch/lib/utils.js
old mode 100755
new mode 100644
diff --git a/node_modules/picomatch/package.json b/node_modules/picomatch/package.json
old mode 100755
new mode 100644
index 947f229..9be4556
--- a/node_modules/picomatch/package.json
+++ b/node_modules/picomatch/package.json
@@ -1,7 +1,7 @@
 {
   "name": "picomatch",
   "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.",
-  "version": "2.2.2",
+  "version": "2.2.3",
   "homepage": "https://github.com/micromatch/picomatch",
   "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
   "funding": "https://github.com/sponsors/jonschlinkert",
diff --git a/node_modules/postcss-selector-parser/CHANGELOG.md b/node_modules/postcss-selector-parser/CHANGELOG.md
index ef9c5a2..e91908c 100644
--- a/node_modules/postcss-selector-parser/CHANGELOG.md
+++ b/node_modules/postcss-selector-parser/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 6.0.5
+
+- Perf: rework unesc for a 63+% performance boost
+
 # 6.0.4
 
 - Fixed: ts errors
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/attributes.js b/node_modules/postcss-selector-parser/dist/__tests__/attributes.js
index a7b275f..1de6517 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/attributes.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/attributes.js
@@ -6,9 +6,9 @@
 
 var _helpers = require("./util/helpers");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-_process.default.throwDeprecation = true;
+_process["default"].throwDeprecation = true;
 (0, _helpers.test)('attribute selector', '[href]', function (t, tree) {
   t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
   t.deepEqual(tree.nodes[0].nodes[0].type, 'attribute');
@@ -65,7 +65,7 @@
   t.deepEqual(tree.nodes[0].nodes[0].attribute, 'href');
   t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
   t.deepEqual(tree.nodes[0].nodes[0].value, '');
-  t.true(tree.nodes[0].nodes[0].quoted);
+  t["true"](tree.nodes[0].nodes[0].quoted);
 });
 (0, _helpers.test)('attribute selector with a value', '[name=james]', function (t, tree) {
   t.deepEqual(tree.nodes[0].nodes[0].attribute, 'name');
@@ -305,7 +305,7 @@
   t.deepEqual(tree.nodes[0].nodes[0].operator, '=');
   t.deepEqual(tree.nodes[0].nodes[0].value, '');
   t.deepEqual(tree.nodes[0].nodes[0].insensitive, true);
-  t.true(tree.nodes[0].nodes[0].quoted);
+  t["true"](tree.nodes[0].nodes[0].quoted);
 });
 (0, _helpers.test)('insensitive attribute selector 2', '[href=TEsT i  ]', function (t, tree) {
   t.deepEqual(tree.nodes[0].nodes[0].value, 'TEsT');
@@ -398,32 +398,38 @@
 });
 var testDeprecation = (0, _helpers.nodeVersionAtLeast)('7.0.0') || (0, _helpers.nodeVersionBefore)('6.0.0') ? _helpers.test : _helpers.test.skip;
 testDeprecation('deprecated constructor', '', function (t) {
-  t.throws(function () {
-    return new _attribute.default({
+  t["throws"](function () {
+    return new _attribute["default"]({
       value: '"foo"',
       attribute: "data-bar"
     });
-  }, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.");
+  }, {
+    message: "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now."
+  });
 });
 testDeprecation('deprecated get of raws.unquoted ', '', function (t) {
-  t.throws(function () {
-    var attr = new _attribute.default({
+  t["throws"](function () {
+    var attr = new _attribute["default"]({
       value: 'foo',
       quoteMark: '"',
       attribute: "data-bar"
     });
     return attr.raws.unquoted;
-  }, "attr.raws.unquoted is deprecated. Call attr.value instead.");
+  }, {
+    message: "attr.raws.unquoted is deprecated. Call attr.value instead."
+  });
 });
 testDeprecation('deprecated set of raws.unquoted ', '', function (t) {
-  t.throws(function () {
-    var attr = new _attribute.default({
+  t["throws"](function () {
+    var attr = new _attribute["default"]({
       value: 'foo',
       quoteMark: '"',
       attribute: "data-bar"
     });
     attr.raws.unquoted = 'fooooo';
-  }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.");
+  }, {
+    message: "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now."
+  });
 });
 testDeprecation('smart quotes', '[data-foo=bar]', function (t, tree) {
   var attr = tree.nodes[0].nodes[0];
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/container.js b/node_modules/postcss-selector-parser/dist/__tests__/container.js
index ff1bb71..6a99e9c 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/container.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/container.js
@@ -6,9 +6,9 @@
 
 var _helpers = require("./util/helpers");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-(0, _ava.default)('container#append', function (t) {
+(0, _ava["default"])('container#append', function (t) {
   var out = (0, _helpers.parse)('h1', function (selectors) {
     var selector = selectors.first;
     var clone = selector.first.clone({
@@ -18,7 +18,7 @@
   });
   t.deepEqual(out, 'h1,h2');
 });
-(0, _ava.default)('container#prepend', function (t) {
+(0, _ava["default"])('container#prepend', function (t) {
   var out = (0, _helpers.parse)('h2', function (selectors) {
     var selector = selectors.first;
     var clone = selector.first.clone({
@@ -28,7 +28,7 @@
   });
   t.deepEqual(out, 'h1,h2');
 });
-(0, _ava.default)('container#each', function (t) {
+(0, _ava["default"])('container#each', function (t) {
   var str = '';
   (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
     selectors.each(function (selector) {
@@ -39,20 +39,20 @@
   });
   t.deepEqual(str, 'h1h2');
 });
-(0, _ava.default)('container#each (safe iteration)', function (t) {
+(0, _ava["default"])('container#each (safe iteration)', function (t) {
   var out = (0, _helpers.parse)('.x, .y', function (selectors) {
     selectors.each(function (selector) {
-      selector.parent.insertBefore(selector, _.default.className({
+      selector.parent.insertBefore(selector, _["default"].className({
         value: 'b'
       }));
-      selector.parent.insertAfter(selector, _.default.className({
+      selector.parent.insertAfter(selector, _["default"].className({
         value: 'a'
       }));
     });
   });
   t.deepEqual(out, '.b,.x,.a,.b, .y,.a');
 });
-(0, _ava.default)('container#each (early exit)', function (t) {
+(0, _ava["default"])('container#each (early exit)', function (t) {
   var str = '';
   (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
     var eachReturn = selectors.each(function (selector) {
@@ -60,11 +60,11 @@
       str += tag;
       return tag !== 'h2';
     });
-    t.false(eachReturn);
+    t["false"](eachReturn);
   });
   t.deepEqual(str, 'h1h2');
 });
-(0, _ava.default)('container#walk', function (t) {
+(0, _ava["default"])('container#walk', function (t) {
   var str = '';
   (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
     selectors.walk(function (selector) {
@@ -75,7 +75,7 @@
   });
   t.deepEqual(str, 'h1h2h3h4');
 });
-(0, _ava.default)('container#walk (safe iteration)', function (t) {
+(0, _ava["default"])('container#walk (safe iteration)', function (t) {
   var out = (0, _helpers.parse)('[class] + *[href] *:not(*.green)', function (selectors) {
     selectors.walkUniversals(function (selector) {
       var next = selector.next();
@@ -87,7 +87,7 @@
   });
   t.deepEqual(out, '[class] + [href] :not(.green)');
 });
-(0, _ava.default)('container#walk (early exit)', function (t) {
+(0, _ava["default"])('container#walk (early exit)', function (t) {
   var str = '';
   (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
     var walkReturn = selectors.walk(function (selector) {
@@ -97,11 +97,11 @@
         return tag !== 'h3';
       }
     });
-    t.false(walkReturn);
+    t["false"](walkReturn);
   });
   t.deepEqual(str, 'h1h2h3');
 });
-(0, _ava.default)('container#walkAttribute', function (t) {
+(0, _ava["default"])('container#walkAttribute', function (t) {
   var out = (0, _helpers.parse)('[href][class].class', function (selectors) {
     selectors.walkAttributes(function (attr) {
       if (attr.attribute === 'class') {
@@ -111,7 +111,7 @@
   });
   t.deepEqual(out, '[href].class');
 });
-(0, _ava.default)('container#walkClass', function (t) {
+(0, _ava["default"])('container#walkClass', function (t) {
   var out = (0, _helpers.parse)('.one, .two, .three:not(.four, .five)', function (selectors) {
     selectors.walkClasses(function (className) {
       className.value = className.value.slice(0, 1);
@@ -119,7 +119,7 @@
   });
   t.deepEqual(out, '.o, .t, .t:not(.f, .f)');
 });
-(0, _ava.default)('container#walkCombinator', function (t) {
+(0, _ava["default"])('container#walkCombinator', function (t) {
   var out = (0, _helpers.parse)('h1 h2 h3 h4', function (selectors) {
     selectors.walkCombinators(function (comment) {
       comment.remove();
@@ -127,7 +127,7 @@
   });
   t.deepEqual(out, 'h1h2h3h4');
 });
-(0, _ava.default)('container#walkComment', function (t) {
+(0, _ava["default"])('container#walkComment', function (t) {
   var out = (0, _helpers.parse)('.one/*test*/.two', function (selectors) {
     selectors.walkComments(function (comment) {
       comment.remove();
@@ -135,7 +135,7 @@
   });
   t.deepEqual(out, '.one.two');
 });
-(0, _ava.default)('container#walkId', function (t) {
+(0, _ava["default"])('container#walkId', function (t) {
   var out = (0, _helpers.parse)('h1#one, h2#two', function (selectors) {
     selectors.walkIds(function (id) {
       id.value = id.value.slice(0, 1);
@@ -143,17 +143,17 @@
   });
   t.deepEqual(out, 'h1#o, h2#t');
 });
-(0, _ava.default)('container#walkNesting', function (t) {
+(0, _ava["default"])('container#walkNesting', function (t) {
   var out = (0, _helpers.parse)('& h1', function (selectors) {
     selectors.walkNesting(function (node) {
-      node.replaceWith(_.default.tag({
+      node.replaceWith(_["default"].tag({
         value: 'body'
       }));
     });
   });
   t.deepEqual(out, 'body h1');
 });
-(0, _ava.default)('container#walkPseudo', function (t) {
+(0, _ava["default"])('container#walkPseudo', function (t) {
   var out = (0, _helpers.parse)('a:before, a:after', function (selectors) {
     selectors.walkPseudos(function (pseudo) {
       pseudo.value = pseudo.value.slice(0, 2);
@@ -161,7 +161,7 @@
   });
   t.deepEqual(out, 'a:b, a:a');
 });
-(0, _ava.default)('container#walkTag', function (t) {
+(0, _ava["default"])('container#walkTag', function (t) {
   var out = (0, _helpers.parse)('1 2 3', function (selectors) {
     selectors.walkTags(function (tag) {
       tag.value = 'h' + tag.value;
@@ -169,7 +169,7 @@
   });
   t.deepEqual(out, 'h1 h2 h3');
 });
-(0, _ava.default)('container#walkUniversal', function (t) {
+(0, _ava["default"])('container#walkUniversal', function (t) {
   var out = (0, _helpers.parse)('*.class,*.class,*.class', function (selectors) {
     selectors.walkUniversals(function (universal) {
       universal.remove();
@@ -177,7 +177,7 @@
   });
   t.deepEqual(out, '.class,.class,.class');
 });
-(0, _ava.default)('container#map', function (t) {
+(0, _ava["default"])('container#map', function (t) {
   (0, _helpers.parse)('1 2 3', function (selectors) {
     var arr = selectors.first.map(function (selector) {
       if (/[0-9]/.test(selector.value)) {
@@ -189,7 +189,7 @@
     t.deepEqual(arr, ['h1', ' ', 'h2', ' ', 'h3']);
   });
 });
-(0, _ava.default)('container#every', function (t) {
+(0, _ava["default"])('container#every', function (t) {
   (0, _helpers.parse)('.one.two.three', function (selectors) {
     var allClasses = selectors.first.every(function (selector) {
       return selector.type === 'class';
@@ -197,7 +197,7 @@
     t.truthy(allClasses);
   });
 });
-(0, _ava.default)('container#some', function (t) {
+(0, _ava["default"])('container#some', function (t) {
   (0, _helpers.parse)('one#two.three', function (selectors) {
     var someClasses = selectors.first.some(function (selector) {
       return selector.type === 'class';
@@ -205,7 +205,7 @@
     t.truthy(someClasses);
   });
 });
-(0, _ava.default)('container#reduce', function (t) {
+(0, _ava["default"])('container#reduce', function (t) {
   (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
     var str = selectors.reduce(function (memo, selector) {
       if (selector.first.type === 'tag') {
@@ -217,7 +217,7 @@
     t.deepEqual(str, 'h1h2h3h4');
   });
 });
-(0, _ava.default)('container#filter', function (t) {
+(0, _ava["default"])('container#filter', function (t) {
   (0, _helpers.parse)('h1, h2, c1, c2', function (selectors) {
     var ast = selectors.filter(function (selector) {
       return ~selector.first.value.indexOf('h');
@@ -225,7 +225,7 @@
     t.deepEqual(String(ast), 'h1, h2');
   });
 });
-(0, _ava.default)('container#split', function (t) {
+(0, _ava["default"])('container#split', function (t) {
   (0, _helpers.parse)('h1 h2 >> h3', function (selectors) {
     var list = selectors.first.split(function (selector) {
       return selector.value === '>>';
@@ -236,7 +236,7 @@
     t.deepEqual(list.length, 2);
   });
 });
-(0, _ava.default)('container#sort', function (t) {
+(0, _ava["default"])('container#sort', function (t) {
   var out = (0, _helpers.parse)('h2,h3,h1,h4', function (selectors) {
     selectors.sort(function (a, b) {
       return a.first.value.slice(-1) - b.first.value.slice(-1);
@@ -244,29 +244,29 @@
   });
   t.deepEqual(out, 'h1,h2,h3,h4');
 });
-(0, _ava.default)('container#at', function (t) {
+(0, _ava["default"])('container#at', function (t) {
   (0, _helpers.parse)('h1, h2, h3', function (selectors) {
     t.deepEqual(selectors.at(1).first.value, 'h2');
   });
 });
-(0, _ava.default)('container#first, container#last', function (t) {
+(0, _ava["default"])('container#first, container#last', function (t) {
   (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
     t.deepEqual(selectors.first.first.value, 'h1');
     t.deepEqual(selectors.last.last.value, 'h4');
   });
 });
-(0, _ava.default)('container#index', function (t) {
+(0, _ava["default"])('container#index', function (t) {
   (0, _helpers.parse)('h1 h2 h3', function (selectors) {
     var middle = selectors.first.at(1);
     t.deepEqual(selectors.first.index(middle), 1);
   });
 });
-(0, _ava.default)('container#length', function (t) {
+(0, _ava["default"])('container#length', function (t) {
   (0, _helpers.parse)('h1, h2, h3', function (selectors) {
     t.deepEqual(selectors.length, 3);
   });
 });
-(0, _ava.default)('container#removeChild', function (t) {
+(0, _ava["default"])('container#removeChild', function (t) {
   var out = (0, _helpers.parse)('h1.class h2.class h3.class', function (selectors) {
     selectors.walk(function (selector) {
       if (selector.type === 'class') {
@@ -276,7 +276,7 @@
   });
   t.deepEqual(out, 'h1 h2 h3');
 });
-(0, _ava.default)('container#removeAll, container#empty', function (t) {
+(0, _ava["default"])('container#removeAll, container#empty', function (t) {
   var wipe = function wipe(method) {
     return function (selectors) {
       return selectors[method]();
@@ -288,7 +288,7 @@
   t.deepEqual(out1, '');
   t.deepEqual(out2, '');
 });
-(0, _ava.default)('container#insertBefore', function (t) {
+(0, _ava["default"])('container#insertBefore', function (t) {
   var out = (0, _helpers.parse)('h2', function (selectors) {
     var selector = selectors.first;
     var clone = selector.first.clone({
@@ -298,11 +298,11 @@
   });
   t.deepEqual(out, 'h1,h2');
 });
-(0, _ava.default)('container#insertBefore and node#remove', function (t) {
+(0, _ava["default"])('container#insertBefore and node#remove', function (t) {
   var out = (0, _helpers.parse)('h2', function (selectors) {
     var selector = selectors.first;
 
-    var newSel = _.default.tag({
+    var newSel = _["default"].tag({
       value: 'h1'
     });
 
@@ -311,7 +311,7 @@
   });
   t.deepEqual(out, 'h2');
 });
-(0, _ava.default)('container#insertAfter', function (t) {
+(0, _ava["default"])('container#insertAfter', function (t) {
   var out = (0, _helpers.parse)('h1', function (selectors) {
     var selector = selectors.first;
     var clone = selector.first.clone({
@@ -321,11 +321,11 @@
   });
   t.deepEqual(out, 'h1,h2');
 });
-(0, _ava.default)('container#insertAfter and node#remove', function (t) {
+(0, _ava["default"])('container#insertAfter and node#remove', function (t) {
   var out = (0, _helpers.parse)('h2', function (selectors) {
     var selector = selectors.first;
 
-    var newSel = _.default.tag({
+    var newSel = _["default"].tag({
       value: 'h1'
     });
 
@@ -334,10 +334,10 @@
   });
   t.deepEqual(out, 'h2');
 });
-(0, _ava.default)('container#insertAfter (during iteration)', function (t) {
+(0, _ava["default"])('container#insertAfter (during iteration)', function (t) {
   var out = (0, _helpers.parse)('h1, h2, h3', function (selectors) {
     selectors.walkTags(function (selector) {
-      var attribute = _.default.attribute({
+      var attribute = _["default"].attribute({
         attribute: 'class'
       });
 
@@ -346,28 +346,28 @@
   });
   t.deepEqual(out, 'h1[class], h2[class], h3[class]');
 });
-(0, _ava.default)('Container#atPosition first pseudo', function (t) {
+(0, _ava["default"])('Container#atPosition first pseudo', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     var node = root.atPosition(1, 1);
     t.deepEqual(node.type, "pseudo");
     t.deepEqual(node.toString(), ":not(.foo)");
   });
 });
-(0, _ava.default)('Container#atPosition class in pseudo', function (t) {
+(0, _ava["default"])('Container#atPosition class in pseudo', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     var node = root.atPosition(1, 6);
     t.deepEqual(node.type, "class");
     t.deepEqual(node.toString(), ".foo");
   });
 });
-(0, _ava.default)('Container#atPosition id in second selector', function (t) {
+(0, _ava["default"])('Container#atPosition id in second selector', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     var node = root.atPosition(2, 1);
     t.deepEqual(node.type, "id");
     t.deepEqual(node.toString(), "\n#foo");
   });
 });
-(0, _ava.default)('Container#atPosition combinator in second selector', function (t) {
+(0, _ava["default"])('Container#atPosition combinator in second selector', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     var node = root.atPosition(2, 6);
     t.deepEqual(node.type, "combinator");
@@ -377,14 +377,14 @@
     t.deepEqual(nodeSpace.toString(), "\n#foo > :matches(ol, ul)");
   });
 });
-(0, _ava.default)('Container#atPosition tag in second selector pseudo', function (t) {
+(0, _ava["default"])('Container#atPosition tag in second selector pseudo', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     var node = root.atPosition(2, 17);
     t.deepEqual(node.type, "tag");
     t.deepEqual(node.toString(), "ol");
   });
 });
-(0, _ava.default)('Container#atPosition comma in second selector pseudo', function (t) {
+(0, _ava["default"])('Container#atPosition comma in second selector pseudo', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     var node = root.atPosition(2, 19);
     t.deepEqual(node.type, "pseudo");
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js b/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js
index 5f7c41c..85c3f83 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/exceptions.js
@@ -3,22 +3,22 @@
 var _helpers = require("./util/helpers");
 
 // Unclosed elements
-(0, _helpers.throws)('unclosed string', 'a[href="wow]');
-(0, _helpers.throws)('unclosed comment', '/* oops');
-(0, _helpers.throws)('unclosed pseudo element', 'button::');
-(0, _helpers.throws)('unclosed pseudo class', 'a:');
-(0, _helpers.throws)('unclosed attribute selector', '[name="james"][href');
-(0, _helpers.throws)('no opening parenthesis', ')');
-(0, _helpers.throws)('no opening parenthesis (2)', ':global.foo)');
-(0, _helpers.throws)('no opening parenthesis (3)', 'h1:not(h2:not(h3)))');
-(0, _helpers.throws)('no opening square bracket', ']');
-(0, _helpers.throws)('no opening square bracket (2)', ':global.foo]');
-(0, _helpers.throws)('no opening square bracket (3)', '[global]]');
-(0, _helpers.throws)('bad pseudo element', 'button::"after"');
-(0, _helpers.throws)('missing closing parenthesis in pseudo', ':not([attr="test"]:not([attr="test"])');
-(0, _helpers.throws)('bad syntax', '-moz-osx-font-smoothing: grayscale');
-(0, _helpers.throws)('bad syntax (2)', '! .body');
-(0, _helpers.throws)('missing backslash for semicolon', '.;');
-(0, _helpers.throws)('missing backslash for semicolon (2)', '.\;');
-(0, _helpers.throws)('unexpected / foo', '-Option\/root', "Unexpected '/'. Escaping special characters with \\ may help.");
-(0, _helpers.throws)('bang in selector', '.foo !optional', "Unexpected '!'. Escaping special characters with \\ may help.");
\ No newline at end of file
+(0, _helpers["throws"])('unclosed string', 'a[href="wow]');
+(0, _helpers["throws"])('unclosed comment', '/* oops');
+(0, _helpers["throws"])('unclosed pseudo element', 'button::');
+(0, _helpers["throws"])('unclosed pseudo class', 'a:');
+(0, _helpers["throws"])('unclosed attribute selector', '[name="james"][href');
+(0, _helpers["throws"])('no opening parenthesis', ')');
+(0, _helpers["throws"])('no opening parenthesis (2)', ':global.foo)');
+(0, _helpers["throws"])('no opening parenthesis (3)', 'h1:not(h2:not(h3)))');
+(0, _helpers["throws"])('no opening square bracket', ']');
+(0, _helpers["throws"])('no opening square bracket (2)', ':global.foo]');
+(0, _helpers["throws"])('no opening square bracket (3)', '[global]]');
+(0, _helpers["throws"])('bad pseudo element', 'button::"after"');
+(0, _helpers["throws"])('missing closing parenthesis in pseudo', ':not([attr="test"]:not([attr="test"])');
+(0, _helpers["throws"])('bad syntax', '-moz-osx-font-smoothing: grayscale');
+(0, _helpers["throws"])('bad syntax (2)', '! .body');
+(0, _helpers["throws"])('missing backslash for semicolon', '.;');
+(0, _helpers["throws"])('missing backslash for semicolon (2)', '.\;');
+(0, _helpers["throws"])('unexpected / foo', '-Option\/root', "Unexpected '/'. Escaping special characters with \\ may help.");
+(0, _helpers["throws"])('bang in selector', '.foo !optional', "Unexpected '!'. Escaping special characters with \\ may help.");
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/guards.js b/node_modules/postcss-selector-parser/dist/__tests__/guards.js
index 1f2412b..7cdec58 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/guards.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/guards.js
@@ -4,7 +4,7 @@
 
 var _helpers = require("./util/helpers");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 var node = function node(tree, n) {
   if (n === void 0) {
@@ -16,112 +16,112 @@
 
 (0, _helpers.test)('attribute guard', '[foo]', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isAttribute(undefined));
-  t.true(_.default.isAttribute(n));
-  t.false(_.default.isContainer(n));
-  t.true(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isAttribute(undefined));
+  t["true"](_["default"].isAttribute(n));
+  t["false"](_["default"].isContainer(n));
+  t["true"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('className guard', '.foo', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isClassName(undefined));
-  t.true(_.default.isClassName(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isClassName(undefined));
+  t["true"](_["default"].isClassName(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('combinator guard', '.foo > .bar', function (t, tree) {
   var n = node(tree, 1);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isCombinator(undefined));
-  t.true(_.default.isCombinator(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isCombinator(undefined));
+  t["true"](_["default"].isCombinator(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('comment guard', '/* foo */.foo > .bar', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isComment(undefined));
-  t.true(_.default.isComment(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isComment(undefined));
+  t["true"](_["default"].isComment(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('id guard', '#ident', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isIdentifier(undefined));
-  t.true(_.default.isIdentifier(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isIdentifier(undefined));
+  t["true"](_["default"].isIdentifier(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('nesting guard', '&.foo', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isNesting(undefined));
-  t.true(_.default.isNesting(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isNesting(undefined));
+  t["true"](_["default"].isNesting(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('pseudo class guard', ':hover', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isPseudo(undefined));
-  t.true(_.default.isPseudo(n));
-  t.true(_.default.isPseudoClass(n));
-  t.false(_.default.isPseudoElement(n));
-  t.true(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isPseudo(undefined));
+  t["true"](_["default"].isPseudo(n));
+  t["true"](_["default"].isPseudoClass(n));
+  t["false"](_["default"].isPseudoElement(n));
+  t["true"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('pseudo element guard', '::first-line', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isPseudo(undefined));
-  t.true(_.default.isPseudo(n));
-  t.false(_.default.isPseudoClass(n));
-  t.true(_.default.isPseudoElement(n));
-  t.true(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isPseudo(undefined));
+  t["true"](_["default"].isPseudo(n));
+  t["false"](_["default"].isPseudoClass(n));
+  t["true"](_["default"].isPseudoElement(n));
+  t["true"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('special pseudo element guard', ':before:after', function (t, tree) {
   [node(tree), node(tree, 1)].forEach(function (n) {
-    t.true(_.default.isPseudo(n));
-    t.false(_.default.isPseudoClass(n));
-    t.true(_.default.isPseudoElement(n));
-    t.true(_.default.isContainer(n));
-    t.false(_.default.isNamespace(n));
+    t["true"](_["default"].isPseudo(n));
+    t["false"](_["default"].isPseudoClass(n));
+    t["true"](_["default"].isPseudoElement(n));
+    t["true"](_["default"].isContainer(n));
+    t["false"](_["default"].isNamespace(n));
   });
 });
 (0, _helpers.test)('special pseudo element guard (uppercase)', ':BEFORE:AFTER', function (t, tree) {
   [node(tree), node(tree, 1)].forEach(function (n) {
-    t.true(_.default.isPseudo(n));
-    t.false(_.default.isPseudoClass(n));
-    t.true(_.default.isPseudoElement(n));
-    t.true(_.default.isContainer(n));
-    t.false(_.default.isNamespace(n));
+    t["true"](_["default"].isPseudo(n));
+    t["false"](_["default"].isPseudoClass(n));
+    t["true"](_["default"].isPseudoElement(n));
+    t["true"](_["default"].isContainer(n));
+    t["false"](_["default"].isNamespace(n));
   });
 });
 (0, _helpers.test)('string guard', '"string"', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isString(undefined));
-  t.true(_.default.isString(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isString(undefined));
+  t["true"](_["default"].isString(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('tag guard', 'h1', function (t, tree) {
   var n = node(tree);
-  t.false(_.default.isNode(undefined));
-  t.true(_.default.isNode(n));
-  t.false(_.default.isTag(undefined));
-  t.true(_.default.isTag(n));
-  t.false(_.default.isContainer(n));
-  t.true(_.default.isNamespace(n));
+  t["false"](_["default"].isNode(undefined));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isTag(undefined));
+  t["true"](_["default"].isTag(n));
+  t["false"](_["default"].isContainer(n));
+  t["true"](_["default"].isNamespace(n));
 });
 (0, _helpers.test)('universal guard', '*', function (t, tree) {
   var n = node(tree);
-  t.true(_.default.isNode(n));
-  t.false(_.default.isUniversal(undefined));
-  t.true(_.default.isUniversal(n));
-  t.false(_.default.isContainer(n));
-  t.false(_.default.isNamespace(n));
+  t["true"](_["default"].isNode(n));
+  t["false"](_["default"].isUniversal(undefined));
+  t["true"](_["default"].isUniversal(n));
+  t["false"](_["default"].isContainer(n));
+  t["false"](_["default"].isNamespace(n));
 });
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/lossy.js b/node_modules/postcss-selector-parser/dist/__tests__/lossy.js
index bfec388..a59a93a 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/lossy.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/lossy.js
@@ -7,10 +7,10 @@
 
 var _index = _interopRequireDefault(require("../index"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 var parse = function parse(input, options, transform) {
-  return (0, _index.default)(transform).processSync(input, options);
+  return (0, _index["default"])(transform).processSync(input, options);
 };
 
 exports.parse = parse;
@@ -23,66 +23,66 @@
 };
 
 exports.testLossy = testLossy;
-(0, _ava.default)('combinator, descendant - single', testLossy, '.one .two', '.one .two');
-(0, _ava.default)('combinator, descendant - multiple', testLossy, '.one   .two', '.one .two');
-(0, _ava.default)('combinator, child - space before', testLossy, '.one >.two', '.one>.two');
-(0, _ava.default)('combinator, child - space after', testLossy, '.one> .two', '.one>.two');
-(0, _ava.default)('combinator, sibling - space before', testLossy, '.one ~.two', '.one~.two');
-(0, _ava.default)('combinator, sibling - space after', testLossy, '.one~ .two', '.one~.two');
-(0, _ava.default)('combinator, adj sibling - space before', testLossy, '.one +.two', '.one+.two');
-(0, _ava.default)('combinator, adj sibling - space after', testLossy, '.one+ .two', '.one+.two');
-(0, _ava.default)('classes, extraneous spaces', testLossy, '  .h1   ,  .h2   ', '.h1,.h2');
-(0, _ava.default)('ids, extraneous spaces', testLossy, '  #h1   ,  #h2   ', '#h1,#h2');
-(0, _ava.default)('attribute, spaces in selector', testLossy, 'h1[  href  *=  "test"  ]', 'h1[href*="test"]');
-(0, _ava.default)('attribute, insensitive flag 1', testLossy, '[href="test" i  ]', '[href="test"i]');
-(0, _ava.default)('attribute, insensitive flag 2', testLossy, '[href=TEsT i  ]', '[href=TEsT i]');
-(0, _ava.default)('attribute, insensitive flag 3', testLossy, '[href=test i  ]', '[href=test i]');
-(0, _ava.default)('attribute, extreneous whitespace', testLossy, '  [href]   ,  [class]   ', '[href],[class]');
-(0, _ava.default)('namespace, space before', testLossy, '   postcss|button', 'postcss|button');
-(0, _ava.default)('namespace, space after', testLossy, 'postcss|button     ', 'postcss|button');
-(0, _ava.default)('namespace - all elements, space before', testLossy, '   postcss|*', 'postcss|*');
-(0, _ava.default)('namespace - all elements, space after', testLossy, 'postcss|*     ', 'postcss|*');
-(0, _ava.default)('namespace - all namespaces, space before', testLossy, '   *|button', '*|button');
-(0, _ava.default)('namespace - all namespaces, space after', testLossy, '*|button     ', '*|button');
-(0, _ava.default)('namespace - all elements in all namespaces, space before', testLossy, '   *|*', '*|*');
-(0, _ava.default)('namespace - all elements in all namespaces, space after', testLossy, '*|*     ', '*|*');
-(0, _ava.default)('namespace - all elements without namespace, space before', testLossy, '   |*', '|*');
-(0, _ava.default)('namespace - all elements without namespace, space after', testLossy, '|*     ', '|*');
-(0, _ava.default)('namespace - tag with no namespace, space before', testLossy, '   |button', '|button');
-(0, _ava.default)('namespace - tag with no namespace, space after', testLossy, '|button     ', '|button');
-(0, _ava.default)('namespace - inside attribute, space before', testLossy, ' [  postcss|href=test]', '[postcss|href=test]');
-(0, _ava.default)('namespace - inside attribute, space after', testLossy, '[postcss|href=  test  ] ', '[postcss|href=test]');
-(0, _ava.default)('namespace - inside attribute (2), space before', testLossy, ' [  postcss|href]', '[postcss|href]');
-(0, _ava.default)('namespace - inside attribute (2), space after', testLossy, '[postcss|href ] ', '[postcss|href]');
-(0, _ava.default)('namespace - inside attribute (3), space before', testLossy, ' [  *|href=test]', '[*|href=test]');
-(0, _ava.default)('namespace - inside attribute (3), space after', testLossy, '[*|href=  test  ] ', '[*|href=test]');
-(0, _ava.default)('namespace - inside attribute (4), space after', testLossy, '[|href=  test  ] ', '[|href=test]');
-(0, _ava.default)('tag - extraneous whitespace', testLossy, '  h1   ,  h2   ', 'h1,h2');
-(0, _ava.default)('tag - trailing comma', testLossy, 'h1, ', 'h1,');
-(0, _ava.default)('tag - trailing comma (1)', testLossy, 'h1,', 'h1,');
-(0, _ava.default)('tag - trailing comma (2)', testLossy, 'h1', 'h1');
-(0, _ava.default)('tag - trailing slash (1)', testLossy, 'h1\\    ', 'h1\\ ');
-(0, _ava.default)('tag - trailing slash (2)', testLossy, 'h1\\    h2\\', 'h1\\  h2\\');
-(0, _ava.default)('universal - combinator', testLossy, ' * + * ', '*+*');
-(0, _ava.default)('universal - extraneous whitespace', testLossy, '  *   ,  *   ', '*,*');
-(0, _ava.default)('universal - qualified universal selector', testLossy, '*[href] *:not(*.green)', '*[href] *:not(*.green)');
-(0, _ava.default)('nesting - spacing before', testLossy, '  &.class', '&.class');
-(0, _ava.default)('nesting - spacing after', testLossy, '&.class  ', '&.class');
-(0, _ava.default)('nesting - spacing between', testLossy, '&  .class  ', '& .class');
-(0, _ava.default)('pseudo (single) - spacing before', testLossy, '  :after', ':after');
-(0, _ava.default)('pseudo (single) - spacing after', testLossy, ':after  ', ':after');
-(0, _ava.default)('pseudo (double) - spacing before', testLossy, '  ::after', '::after');
-(0, _ava.default)('pseudo (double) - spacing after', testLossy, '::after  ', '::after');
-(0, _ava.default)('pseudo - multiple', testLossy, ' *:target::before ,   a:after  ', '*:target::before,a:after');
-(0, _ava.default)('pseudo - negated', testLossy, 'h1:not( .heading )', 'h1:not(.heading)');
-(0, _ava.default)('pseudo - negated with combinators (1)', testLossy, 'h1:not(.heading > .title)   >  h1', 'h1:not(.heading>.title)>h1');
-(0, _ava.default)('pseudo - negated with combinators (2)', testLossy, '.foo:nth-child(2n + 1)', '.foo:nth-child(2n+1)');
-(0, _ava.default)('pseudo - extra whitespace', testLossy, 'a:not(   h2   )', 'a:not(h2)');
-(0, _ava.default)('comments - comment inside descendant selector', testLossy, "div /* wtf */.foo", "div /* wtf */.foo");
-(0, _ava.default)('comments - comment inside complex selector', testLossy, "div /* wtf */ > .foo", "div/* wtf */>.foo");
-(0, _ava.default)('comments - comment inside compound selector with space', testLossy, "div    /* wtf */    .foo", "div /* wtf */.foo");
-(0, _ava.default)('@words - space before', testLossy, '  @media', '@media');
-(0, _ava.default)('@words - space after', testLossy, '@media  ', '@media');
-(0, _ava.default)('@words - maintains space between', testLossy, '@media (min-width: 700px) and (orientation: landscape)', '@media (min-width: 700px) and (orientation: landscape)');
-(0, _ava.default)('@words - extraneous space between', testLossy, '@media  (min-width:  700px)  and   (orientation:   landscape)', '@media (min-width: 700px) and (orientation: landscape)');
-(0, _ava.default)('@words - multiple', testLossy, '@media (min-width: 700px), (min-height: 400px)', '@media (min-width: 700px),(min-height: 400px)');
\ No newline at end of file
+(0, _ava["default"])('combinator, descendant - single', testLossy, '.one .two', '.one .two');
+(0, _ava["default"])('combinator, descendant - multiple', testLossy, '.one   .two', '.one .two');
+(0, _ava["default"])('combinator, child - space before', testLossy, '.one >.two', '.one>.two');
+(0, _ava["default"])('combinator, child - space after', testLossy, '.one> .two', '.one>.two');
+(0, _ava["default"])('combinator, sibling - space before', testLossy, '.one ~.two', '.one~.two');
+(0, _ava["default"])('combinator, sibling - space after', testLossy, '.one~ .two', '.one~.two');
+(0, _ava["default"])('combinator, adj sibling - space before', testLossy, '.one +.two', '.one+.two');
+(0, _ava["default"])('combinator, adj sibling - space after', testLossy, '.one+ .two', '.one+.two');
+(0, _ava["default"])('classes, extraneous spaces', testLossy, '  .h1   ,  .h2   ', '.h1,.h2');
+(0, _ava["default"])('ids, extraneous spaces', testLossy, '  #h1   ,  #h2   ', '#h1,#h2');
+(0, _ava["default"])('attribute, spaces in selector', testLossy, 'h1[  href  *=  "test"  ]', 'h1[href*="test"]');
+(0, _ava["default"])('attribute, insensitive flag 1', testLossy, '[href="test" i  ]', '[href="test"i]');
+(0, _ava["default"])('attribute, insensitive flag 2', testLossy, '[href=TEsT i  ]', '[href=TEsT i]');
+(0, _ava["default"])('attribute, insensitive flag 3', testLossy, '[href=test i  ]', '[href=test i]');
+(0, _ava["default"])('attribute, extreneous whitespace', testLossy, '  [href]   ,  [class]   ', '[href],[class]');
+(0, _ava["default"])('namespace, space before', testLossy, '   postcss|button', 'postcss|button');
+(0, _ava["default"])('namespace, space after', testLossy, 'postcss|button     ', 'postcss|button');
+(0, _ava["default"])('namespace - all elements, space before', testLossy, '   postcss|*', 'postcss|*');
+(0, _ava["default"])('namespace - all elements, space after', testLossy, 'postcss|*     ', 'postcss|*');
+(0, _ava["default"])('namespace - all namespaces, space before', testLossy, '   *|button', '*|button');
+(0, _ava["default"])('namespace - all namespaces, space after', testLossy, '*|button     ', '*|button');
+(0, _ava["default"])('namespace - all elements in all namespaces, space before', testLossy, '   *|*', '*|*');
+(0, _ava["default"])('namespace - all elements in all namespaces, space after', testLossy, '*|*     ', '*|*');
+(0, _ava["default"])('namespace - all elements without namespace, space before', testLossy, '   |*', '|*');
+(0, _ava["default"])('namespace - all elements without namespace, space after', testLossy, '|*     ', '|*');
+(0, _ava["default"])('namespace - tag with no namespace, space before', testLossy, '   |button', '|button');
+(0, _ava["default"])('namespace - tag with no namespace, space after', testLossy, '|button     ', '|button');
+(0, _ava["default"])('namespace - inside attribute, space before', testLossy, ' [  postcss|href=test]', '[postcss|href=test]');
+(0, _ava["default"])('namespace - inside attribute, space after', testLossy, '[postcss|href=  test  ] ', '[postcss|href=test]');
+(0, _ava["default"])('namespace - inside attribute (2), space before', testLossy, ' [  postcss|href]', '[postcss|href]');
+(0, _ava["default"])('namespace - inside attribute (2), space after', testLossy, '[postcss|href ] ', '[postcss|href]');
+(0, _ava["default"])('namespace - inside attribute (3), space before', testLossy, ' [  *|href=test]', '[*|href=test]');
+(0, _ava["default"])('namespace - inside attribute (3), space after', testLossy, '[*|href=  test  ] ', '[*|href=test]');
+(0, _ava["default"])('namespace - inside attribute (4), space after', testLossy, '[|href=  test  ] ', '[|href=test]');
+(0, _ava["default"])('tag - extraneous whitespace', testLossy, '  h1   ,  h2   ', 'h1,h2');
+(0, _ava["default"])('tag - trailing comma', testLossy, 'h1, ', 'h1,');
+(0, _ava["default"])('tag - trailing comma (1)', testLossy, 'h1,', 'h1,');
+(0, _ava["default"])('tag - trailing comma (2)', testLossy, 'h1', 'h1');
+(0, _ava["default"])('tag - trailing slash (1)', testLossy, 'h1\\    ', 'h1\\ ');
+(0, _ava["default"])('tag - trailing slash (2)', testLossy, 'h1\\    h2\\', 'h1\\  h2\\');
+(0, _ava["default"])('universal - combinator', testLossy, ' * + * ', '*+*');
+(0, _ava["default"])('universal - extraneous whitespace', testLossy, '  *   ,  *   ', '*,*');
+(0, _ava["default"])('universal - qualified universal selector', testLossy, '*[href] *:not(*.green)', '*[href] *:not(*.green)');
+(0, _ava["default"])('nesting - spacing before', testLossy, '  &.class', '&.class');
+(0, _ava["default"])('nesting - spacing after', testLossy, '&.class  ', '&.class');
+(0, _ava["default"])('nesting - spacing between', testLossy, '&  .class  ', '& .class');
+(0, _ava["default"])('pseudo (single) - spacing before', testLossy, '  :after', ':after');
+(0, _ava["default"])('pseudo (single) - spacing after', testLossy, ':after  ', ':after');
+(0, _ava["default"])('pseudo (double) - spacing before', testLossy, '  ::after', '::after');
+(0, _ava["default"])('pseudo (double) - spacing after', testLossy, '::after  ', '::after');
+(0, _ava["default"])('pseudo - multiple', testLossy, ' *:target::before ,   a:after  ', '*:target::before,a:after');
+(0, _ava["default"])('pseudo - negated', testLossy, 'h1:not( .heading )', 'h1:not(.heading)');
+(0, _ava["default"])('pseudo - negated with combinators (1)', testLossy, 'h1:not(.heading > .title)   >  h1', 'h1:not(.heading>.title)>h1');
+(0, _ava["default"])('pseudo - negated with combinators (2)', testLossy, '.foo:nth-child(2n + 1)', '.foo:nth-child(2n+1)');
+(0, _ava["default"])('pseudo - extra whitespace', testLossy, 'a:not(   h2   )', 'a:not(h2)');
+(0, _ava["default"])('comments - comment inside descendant selector', testLossy, "div /* wtf */.foo", "div /* wtf */.foo");
+(0, _ava["default"])('comments - comment inside complex selector', testLossy, "div /* wtf */ > .foo", "div/* wtf */>.foo");
+(0, _ava["default"])('comments - comment inside compound selector with space', testLossy, "div    /* wtf */    .foo", "div /* wtf */.foo");
+(0, _ava["default"])('@words - space before', testLossy, '  @media', '@media');
+(0, _ava["default"])('@words - space after', testLossy, '@media  ', '@media');
+(0, _ava["default"])('@words - maintains space between', testLossy, '@media (min-width: 700px) and (orientation: landscape)', '@media (min-width: 700px) and (orientation: landscape)');
+(0, _ava["default"])('@words - extraneous space between', testLossy, '@media  (min-width:  700px)  and   (orientation:   landscape)', '@media (min-width: 700px) and (orientation: landscape)');
+(0, _ava["default"])('@words - multiple', testLossy, '@media (min-width: 700px), (min-height: 400px)', '@media (min-width: 700px),(min-height: 400px)');
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/node.js b/node_modules/postcss-selector-parser/dist/__tests__/node.js
index 6590bf4..7ed1fcc 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/node.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/node.js
@@ -6,9 +6,9 @@
 
 var _helpers = require("./util/helpers");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-(0, _ava.default)('node#clone', function (t) {
+(0, _ava["default"])('node#clone', function (t) {
   (0, _helpers.parse)('[href="test"]', function (selectors) {
     var selector = selectors.first.first;
     var clone = selector.clone();
@@ -16,7 +16,7 @@
     t.deepEqual(clone, selectors.first.first);
   });
 });
-(0, _ava.default)('node#clone of attribute', function (t) {
+(0, _ava["default"])('node#clone of attribute', function (t) {
   (0, _helpers.parse)('[href=test]', function (selectors) {
     var selector = selectors.first.first;
     var clone = selector.clone();
@@ -24,15 +24,15 @@
     t.deepEqual(clone, selectors.first.first);
   });
 });
-(0, _ava.default)('node#replaceWith', function (t) {
+(0, _ava["default"])('node#replaceWith', function (t) {
   var out = (0, _helpers.parse)('[href="test"]', function (selectors) {
     var attr = selectors.first.first;
 
-    var id = _.default.id({
+    var id = _["default"].id({
       value: 'test'
     });
 
-    var className = _.default.className({
+    var className = _["default"].className({
       value: 'test'
     });
 
@@ -40,7 +40,7 @@
   });
   t.deepEqual(out, '#test.test');
 });
-(0, _ava.default)('Node#appendToPropertyAndEscape', function (t) {
+(0, _ava["default"])('Node#appendToPropertyAndEscape', function (t) {
   var out = (0, _helpers.parse)('.fo\\o', function (selectors) {
     var className = selectors.first.first;
     t.deepEqual(className.raws, {
@@ -53,7 +53,7 @@
   });
   t.deepEqual(out, '.fo\\oba\\r');
 });
-(0, _ava.default)('Node#setPropertyAndEscape with existing raws', function (t) {
+(0, _ava["default"])('Node#setPropertyAndEscape with existing raws', function (t) {
   var out = (0, _helpers.parse)('.fo\\o', function (selectors) {
     var className = selectors.first.first;
     t.deepEqual(className.raws, {
@@ -66,7 +66,7 @@
   });
   t.deepEqual(out, '.ba\\r');
 });
-(0, _ava.default)('Node#setPropertyAndEscape without existing raws', function (t) {
+(0, _ava["default"])('Node#setPropertyAndEscape without existing raws', function (t) {
   var out = (0, _helpers.parse)('.foo', function (selectors) {
     var className = selectors.first.first;
     t.deepEqual(className.raws, undefined);
@@ -77,7 +77,7 @@
   });
   t.deepEqual(out, '.ba\\r');
 });
-(0, _ava.default)('Node#setPropertyWithoutEscape with existing raws', function (t) {
+(0, _ava["default"])('Node#setPropertyWithoutEscape with existing raws', function (t) {
   var out = (0, _helpers.parse)('.fo\\o', function (selectors) {
     var className = selectors.first.first;
     t.deepEqual(className.raws, {
@@ -88,7 +88,7 @@
   });
   t.deepEqual(out, '.w+t+f');
 });
-(0, _ava.default)('Node#setPropertyWithoutEscape without existing raws', function (t) {
+(0, _ava["default"])('Node#setPropertyWithoutEscape without existing raws', function (t) {
   var out = (0, _helpers.parse)('.foo', function (selectors) {
     var className = selectors.first.first;
     t.deepEqual(className.raws, undefined);
@@ -98,7 +98,7 @@
   });
   t.deepEqual(out, '.w+t+f');
 });
-(0, _ava.default)('Node#isAtPosition', function (t) {
+(0, _ava["default"])('Node#isAtPosition', function (t) {
   (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
     t.deepEqual(root.isAtPosition(1, 1), true);
     t.deepEqual(root.isAtPosition(1, 10), true);
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/parser.js b/node_modules/postcss-selector-parser/dist/__tests__/parser.js
index 2154036..a0dd84d 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/parser.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/parser.js
@@ -4,7 +4,7 @@
 
 var _index = _interopRequireDefault(require("../index"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 // Node creation
 var nodeTypes = [['attribute', '[href]', {
@@ -29,53 +29,53 @@
   value: 'button'
 }], ['universal', '*']];
 nodeTypes.forEach(function (type) {
-  (0, _ava.default)("parser#" + type[0], function (t) {
-    var node = _index.default[type[0]](type[2] || {});
+  (0, _ava["default"])("parser#" + type[0], function (t) {
+    var node = _index["default"][type[0]](type[2] || {});
 
     t.deepEqual(String(node), type[1]);
   });
 });
-(0, _ava.default)('string constants', function (t) {
-  t.truthy(_index.default.TAG);
-  t.truthy(_index.default.STRING);
-  t.truthy(_index.default.SELECTOR);
-  t.truthy(_index.default.ROOT);
-  t.truthy(_index.default.PSEUDO);
-  t.truthy(_index.default.NESTING);
-  t.truthy(_index.default.ID);
-  t.truthy(_index.default.COMMENT);
-  t.truthy(_index.default.COMBINATOR);
-  t.truthy(_index.default.CLASS);
-  t.truthy(_index.default.ATTRIBUTE);
-  t.truthy(_index.default.UNIVERSAL);
+(0, _ava["default"])('string constants', function (t) {
+  t.truthy(_index["default"].TAG);
+  t.truthy(_index["default"].STRING);
+  t.truthy(_index["default"].SELECTOR);
+  t.truthy(_index["default"].ROOT);
+  t.truthy(_index["default"].PSEUDO);
+  t.truthy(_index["default"].NESTING);
+  t.truthy(_index["default"].ID);
+  t.truthy(_index["default"].COMMENT);
+  t.truthy(_index["default"].COMBINATOR);
+  t.truthy(_index["default"].CLASS);
+  t.truthy(_index["default"].ATTRIBUTE);
+  t.truthy(_index["default"].UNIVERSAL);
 });
-(0, _ava.default)('construct a whole tree', function (t) {
-  var root = _index.default.root();
+(0, _ava["default"])('construct a whole tree', function (t) {
+  var root = _index["default"].root();
 
-  var selector = _index.default.selector();
+  var selector = _index["default"].selector();
 
-  selector.append(_index.default.id({
+  selector.append(_index["default"].id({
     value: 'tree'
   }));
   root.append(selector);
   t.deepEqual(String(root), '#tree');
 });
-(0, _ava.default)('no operation', function (t) {
+(0, _ava["default"])('no operation', function (t) {
   t.notThrows(function () {
-    return (0, _index.default)().processSync('h1 h2 h3');
+    return (0, _index["default"])().processSync('h1 h2 h3');
   });
 });
-(0, _ava.default)('empty selector string', function (t) {
+(0, _ava["default"])('empty selector string', function (t) {
   t.notThrows(function () {
-    return (0, _index.default)(function (selectors) {
+    return (0, _index["default"])(function (selectors) {
       selectors.walk(function (selector) {
         selector.type = 'tag';
       });
     }).processSync('');
   });
 });
-(0, _ava.default)('async parser', function (t) {
-  return (0, _index.default)(function (selectors) {
+(0, _ava["default"])('async parser', function (t) {
+  return (0, _index["default"])(function (selectors) {
     return new Promise(function (res) {
       setTimeout(function () {
         selectors.first.nodes[0].value = 'bar';
@@ -86,39 +86,39 @@
     t.deepEqual(result, 'bar');
   });
 });
-(0, _ava.default)('parse errors with the async parser', function (t) {
-  return (0, _index.default)(function (selectors) {
+(0, _ava["default"])('parse errors with the async parser', function (t) {
+  return (0, _index["default"])(function (selectors) {
     return new Promise(function (res) {
       setTimeout(function () {
         selectors.first.nodes[0].value = 'bar';
         res();
       }, 1);
     });
-  }).process('a b: c').catch(function (err) {
+  }).process('a b: c')["catch"](function (err) {
     return t.truthy(err);
   });
 });
-(0, _ava.default)('parse errors within the async processor', function (t) {
-  return (0, _index.default)(function (selectors) {
+(0, _ava["default"])('parse errors within the async processor', function (t) {
+  return (0, _index["default"])(function (selectors) {
     return new Promise(function (res, rej) {
       setTimeout(function () {
         rej(selectors.error("async error"));
       }, 1);
     });
-  }).process('.foo').catch(function (err) {
+  }).process('.foo')["catch"](function (err) {
     return t.truthy(err);
   });
 });
-(0, _ava.default)('parse errors within the async processor before the promise returns', function (t) {
-  return (0, _index.default)(function (selectors) {
+(0, _ava["default"])('parse errors within the async processor before the promise returns', function (t) {
+  return (0, _index["default"])(function (selectors) {
     throw selectors.error("async error");
-  }).process('.foo').catch(function (err) {
+  }).process('.foo')["catch"](function (err) {
     return t.truthy(err);
   });
 });
-(0, _ava.default)('returning a promise to the sync processor fails', function (t) {
-  t.throws(function () {
-    return (0, _index.default)(function () {
+(0, _ava["default"])('returning a promise to the sync processor fails', function (t) {
+  t["throws"](function () {
+    return (0, _index["default"])(function () {
       return new Promise(function (res) {
         setTimeout(function () {
           res();
@@ -127,11 +127,11 @@
     }).processSync('.foo');
   });
 });
-(0, _ava.default)('Passing a rule works async', function (t) {
+(0, _ava["default"])('Passing a rule works async', function (t) {
   var rule = {
     selector: '.foo'
   };
-  return (0, _index.default)(function (root) {
+  return (0, _index["default"])(function (root) {
     return new Promise(function (res) {
       setTimeout(function () {
         root.walkClasses(function (node) {
@@ -145,11 +145,11 @@
     t.deepEqual(rule.selector, ".bar");
   });
 });
-(0, _ava.default)('Passing a rule with mutation disabled works async', function (t) {
+(0, _ava["default"])('Passing a rule with mutation disabled works async', function (t) {
   var rule = {
     selector: '.foo'
   };
-  return (0, _index.default)(function (root) {
+  return (0, _index["default"])(function (root) {
     return new Promise(function (res) {
       setTimeout(function () {
         root.walkClasses(function (node) {
@@ -165,11 +165,11 @@
     t.deepEqual(rule.selector, ".foo");
   });
 });
-(0, _ava.default)('Passing a rule with mutation works sync', function (t) {
+(0, _ava["default"])('Passing a rule with mutation works sync', function (t) {
   var rule = {
     selector: '.foo'
   };
-  var newSel = (0, _index.default)(function (root) {
+  var newSel = (0, _index["default"])(function (root) {
     root.walkClasses(function (node) {
       node.value = "bar";
     });
@@ -179,11 +179,11 @@
   t.deepEqual(newSel, ".bar");
   t.deepEqual(rule.selector, ".bar");
 });
-(0, _ava.default)('Transform a selector synchronously', function (t) {
+(0, _ava["default"])('Transform a selector synchronously', function (t) {
   var rule = {
     selector: '.foo'
   };
-  var count = (0, _index.default)(function (root) {
+  var count = (0, _index["default"])(function (root) {
     var classCount = 0;
     root.walkClasses(function (node) {
       classCount++;
@@ -196,11 +196,11 @@
   t.deepEqual(count, 1);
   t.deepEqual(rule.selector, ".bar");
 });
-(0, _ava.default)('Transform a selector asynchronously', function (t) {
+(0, _ava["default"])('Transform a selector asynchronously', function (t) {
   var rule = {
     selector: '.foo'
   };
-  return (0, _index.default)(function (root) {
+  return (0, _index["default"])(function (root) {
     return new Promise(function (res) {
       setTimeout(function () {
         var classCount = 0;
@@ -218,11 +218,11 @@
     t.deepEqual(rule.selector, ".bar");
   });
 });
-(0, _ava.default)('get AST of a selector synchronously', function (t) {
+(0, _ava["default"])('get AST of a selector synchronously', function (t) {
   var rule = {
     selector: '.foo'
   };
-  var ast = (0, _index.default)(function (root) {
+  var ast = (0, _index["default"])(function (root) {
     var classCount = 0;
     root.walkClasses(function (node) {
       classCount++;
@@ -235,11 +235,11 @@
   t.deepEqual(ast.nodes[0].nodes[0].value, "bar");
   t.deepEqual(rule.selector, ".bar");
 });
-(0, _ava.default)('get AST a selector asynchronously', function (t) {
+(0, _ava["default"])('get AST a selector asynchronously', function (t) {
   var rule = {
     selector: '.foo'
   };
-  return (0, _index.default)(function (root) {
+  return (0, _index["default"])(function (root) {
     return new Promise(function (res) {
       setTimeout(function () {
         var classCount = 0;
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/postcss.js b/node_modules/postcss-selector-parser/dist/__tests__/postcss.js
index d7175f7..4c5bc4f 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/postcss.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/postcss.js
@@ -6,12 +6,12 @@
 
 var _helpers = require("./util/helpers");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 var cse = 'CssSyntaxError';
 
 function showCode(t, selector) {
-  var rule = _postcss.default.parse(selector).first;
+  var rule = _postcss["default"].parse(selector).first;
 
   try {
     (0, _helpers.parse)(rule);
@@ -26,21 +26,21 @@
   }
 }
 
-(0, _ava.default)('missing open square bracket', showCode, 'a b c] {}');
-(0, _ava.default)('missing open parenthesis', showCode, 'a b c) {}');
-(0, _ava.default)('missing pseudo class or pseudo element', showCode, 'a b c: {}');
-(0, _ava.default)('space in between colon and word (incorrect pseudo)', showCode, 'a b: c {}');
-(0, _ava.default)('string after colon (incorrect pseudo)', showCode, 'a b:"wow" {}'); // attribute selectors
+(0, _ava["default"])('missing open square bracket', showCode, 'a b c] {}');
+(0, _ava["default"])('missing open parenthesis', showCode, 'a b c) {}');
+(0, _ava["default"])('missing pseudo class or pseudo element', showCode, 'a b c: {}');
+(0, _ava["default"])('space in between colon and word (incorrect pseudo)', showCode, 'a b: c {}');
+(0, _ava["default"])('string after colon (incorrect pseudo)', showCode, 'a b:"wow" {}'); // attribute selectors
 
-(0, _ava.default)('bad string attribute', showCode, '["hello"] {}');
-(0, _ava.default)('bad string attribute with value', showCode, '["foo"=bar] {}');
-(0, _ava.default)('bad parentheses', showCode, '[foo=(bar)] {}');
-(0, _ava.default)('bad lonely asterisk', showCode, '[*] {}');
-(0, _ava.default)('bad lonely pipe', showCode, '[|] {}');
-(0, _ava.default)('bad lonely caret', showCode, '[^] {}');
-(0, _ava.default)('bad lonely dollar', showCode, '[$] {}');
-(0, _ava.default)('bad lonely tilde', showCode, '[~] {}');
-(0, _ava.default)('bad lonely equals', showCode, '[=] {}');
-(0, _ava.default)('bad lonely operator', showCode, '[*=] {}');
-(0, _ava.default)('bad lonely operator (2)', showCode, '[|=] {}');
-(0, _ava.default)('bad doubled operator', showCode, '[href=foo=bar] {}');
\ No newline at end of file
+(0, _ava["default"])('bad string attribute', showCode, '["hello"] {}');
+(0, _ava["default"])('bad string attribute with value', showCode, '["foo"=bar] {}');
+(0, _ava["default"])('bad parentheses', showCode, '[foo=(bar)] {}');
+(0, _ava["default"])('bad lonely asterisk', showCode, '[*] {}');
+(0, _ava["default"])('bad lonely pipe', showCode, '[|] {}');
+(0, _ava["default"])('bad lonely caret', showCode, '[^] {}');
+(0, _ava["default"])('bad lonely dollar', showCode, '[$] {}');
+(0, _ava["default"])('bad lonely tilde', showCode, '[~] {}');
+(0, _ava["default"])('bad lonely equals', showCode, '[=] {}');
+(0, _ava["default"])('bad lonely operator', showCode, '[*=] {}');
+(0, _ava["default"])('bad lonely operator (2)', showCode, '[|=] {}');
+(0, _ava["default"])('bad doubled operator', showCode, '[href=foo=bar] {}');
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js b/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js
index 2d6eb9a..b7f315b 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/stripComments.js
@@ -4,14 +4,14 @@
 
 var _stripComments = _interopRequireDefault(require("../../src/util/stripComments"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-(0, _ava.default)("stripComments()", function (t) {
-  t.deepEqual((0, _stripComments.default)("aaa/**/bbb"), "aaabbb");
-  t.deepEqual((0, _stripComments.default)("aaa/*bbb"), "aaa");
-  t.deepEqual((0, _stripComments.default)("aaa/*xxx*/bbb"), "aaabbb");
-  t.deepEqual((0, _stripComments.default)("aaa/*/xxx/*/bbb"), "aaabbb");
-  t.deepEqual((0, _stripComments.default)("aaa/*x*/bbb/**/"), "aaabbb");
-  t.deepEqual((0, _stripComments.default)("/**/aaa/*x*/bbb/**/"), "aaabbb");
-  t.deepEqual((0, _stripComments.default)("/**/"), "");
+(0, _ava["default"])("stripComments()", function (t) {
+  t.deepEqual((0, _stripComments["default"])("aaa/**/bbb"), "aaabbb");
+  t.deepEqual((0, _stripComments["default"])("aaa/*bbb"), "aaa");
+  t.deepEqual((0, _stripComments["default"])("aaa/*xxx*/bbb"), "aaabbb");
+  t.deepEqual((0, _stripComments["default"])("aaa/*/xxx/*/bbb"), "aaabbb");
+  t.deepEqual((0, _stripComments["default"])("aaa/*x*/bbb/**/"), "aaabbb");
+  t.deepEqual((0, _stripComments["default"])("/**/aaa/*x*/bbb/**/"), "aaabbb");
+  t.deepEqual((0, _stripComments["default"])("/**/"), "");
 });
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js b/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js
index 3bf9c0d..5bf0301 100644
--- a/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js
+++ b/node_modules/postcss-selector-parser/dist/__tests__/util/helpers.js
@@ -4,7 +4,7 @@
 exports.test = test;
 exports.nodeVersionAtLeast = nodeVersionAtLeast;
 exports.nodeVersionBefore = nodeVersionBefore;
-exports.throws = exports.parse = void 0;
+exports["throws"] = exports.parse = void 0;
 
 var _process = _interopRequireDefault(require("process"));
 
@@ -16,10 +16,10 @@
 
 var _index = _interopRequireDefault(require("../../index"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 var parse = function parse(input, transform) {
-  return (0, _index.default)(transform).processSync(input);
+  return (0, _index["default"])(transform).processSync(input);
 };
 
 exports.parse = parse;
@@ -39,22 +39,22 @@
     serial = false;
   }
 
-  var tester = only ? _ava.default.only : _ava.default;
+  var tester = only ? _ava["default"].only : _ava["default"];
   tester = disabled ? tester.skip : tester;
   tester = serial ? tester.serial : tester;
 
   if (callback) {
     tester(spec + " (tree)", function (t) {
-      var tree = (0, _index.default)().astSync(input);
+      var tree = (0, _index["default"])().astSync(input);
 
-      var debug = _util.default.inspect(tree, false, null);
+      var debug = _util["default"].inspect(tree, false, null);
 
       return callback.call(_this, t, tree, debug);
     });
   }
 
   tester(spec + " (toString)", function (t) {
-    var result = (0, _index.default)().processSync(input);
+    var result = (0, _index["default"])().processSync(input);
     t.deepEqual(result, input);
   });
 }
@@ -71,20 +71,24 @@
   return test(spec, input, callback, false, false, true);
 };
 
-var throws = function throws(spec, input, validator) {
-  (0, _ava.default)(spec + " (throws)", function (t) {
-    t.throws(function () {
-      return (0, _index.default)().processSync(input);
-    }, validator || Error);
+var _throws = function _throws(spec, input, validator) {
+  (0, _ava["default"])(spec + " (throws)", function (t) {
+    t["throws"](function () {
+      return (0, _index["default"])().processSync(input);
+    }, validator ? {
+      message: validator
+    } : {
+      instanceOf: Error
+    });
   });
 };
 
-exports.throws = throws;
+exports["throws"] = _throws;
 
 function nodeVersionAtLeast(version) {
-  return _semver.default.gte(_process.default.versions.node, version);
+  return _semver["default"].gte(_process["default"].versions.node, version);
 }
 
 function nodeVersionBefore(version) {
-  return _semver.default.lt(_process.default.versions.node, version);
+  return _semver["default"].lt(_process["default"].versions.node, version);
 }
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/__tests__/util/unesc.js b/node_modules/postcss-selector-parser/dist/__tests__/util/unesc.js
new file mode 100644
index 0000000..779348a
--- /dev/null
+++ b/node_modules/postcss-selector-parser/dist/__tests__/util/unesc.js
@@ -0,0 +1,50 @@
+"use strict";
+
+var _helpers = require("../util/helpers");
+
+(0, _helpers.test)('id selector', '#foo', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'foo');
+});
+(0, _helpers.test)('escaped special char', '#w\\+', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'w+');
+});
+(0, _helpers.test)('tailing escape', '#foo\\', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'foo\\');
+});
+(0, _helpers.test)('double escape', '#wow\\\\k', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'wow\\k');
+});
+(0, _helpers.test)('leading numeric', '.\\31 23', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, '123');
+});
+(0, _helpers.test)('emoji', '.\\🐐', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, '🐐');
+}); // https://www.w3.org/International/questions/qa-escapes#cssescapes
+
+(0, _helpers.test)('hex escape', '.\\E9motion', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'émotion');
+});
+(0, _helpers.test)('hex escape with space', '.\\E9 dition', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'édition');
+});
+(0, _helpers.test)('hex escape with hex number', '.\\0000E9dition', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'édition');
+});
+(0, _helpers.test)('class selector with escaping', '.\\1D306', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, '𝌆');
+});
+(0, _helpers.test)('class selector with escaping with more chars', '.\\1D306k', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, '𝌆k');
+});
+(0, _helpers.test)('class selector with escaping with more chars with whitespace', '.wow\\1D306 k', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, 'wow𝌆k');
+});
+(0, _helpers.test)('handles 0 value hex', '\\0', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, String.fromCodePoint(0xFFFD));
+});
+(0, _helpers.test)('handles lone surrogate value hex', '\\DBFF', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, String.fromCodePoint(0xFFFD));
+});
+(0, _helpers.test)('handles out of bound values', '\\110000', function (t, tree) {
+  t.deepEqual(tree.nodes[0].nodes[0].value, String.fromCodePoint(0xFFFD));
+});
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/index.js b/node_modules/postcss-selector-parser/dist/index.js
index ac33ec0..6e76a32 100644
--- a/node_modules/postcss-selector-parser/dist/index.js
+++ b/node_modules/postcss-selector-parser/dist/index.js
@@ -1,22 +1,24 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _processor = _interopRequireDefault(require("./processor"));
 
 var selectors = _interopRequireWildcard(require("./selectors"));
 
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
+function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 var parser = function parser(processor) {
-  return new _processor.default(processor);
+  return new _processor["default"](processor);
 };
 
 Object.assign(parser, selectors);
 delete parser.__esModule;
 var _default = parser;
-exports.default = _default;
+exports["default"] = _default;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/parser.js b/node_modules/postcss-selector-parser/dist/parser.js
index 4133ad1..c0af9b6 100644
--- a/node_modules/postcss-selector-parser/dist/parser.js
+++ b/node_modules/postcss-selector-parser/dist/parser.js
@@ -1,11 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
-
-var _indexesOf = _interopRequireDefault(require("indexes-of"));
-
-var _uniq = _interopRequireDefault(require("uniq"));
+exports["default"] = void 0;
 
 var _root = _interopRequireDefault(require("./selectors/root"));
 
@@ -43,9 +39,11 @@
 
 var _WHITESPACE_TOKENS, _Object$assign;
 
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
+function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
@@ -112,9 +110,25 @@
   return node;
 }
 
-var Parser =
-/*#__PURE__*/
-function () {
+function indexesOf(array, item) {
+  var i = -1;
+  var indexes = [];
+
+  while ((i = array.indexOf(item, i + 1)) !== -1) {
+    indexes.push(i);
+  }
+
+  return indexes;
+}
+
+function uniqs() {
+  var list = Array.prototype.concat.apply([], arguments);
+  return list.filter(function (item, i) {
+    return i === list.indexOf(item);
+  });
+}
+
+var Parser = /*#__PURE__*/function () {
   function Parser(rule, options) {
     if (options === void 0) {
       options = {};
@@ -127,17 +141,17 @@
     }, options);
     this.position = 0;
     this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;
-    this.tokens = (0, _tokenize.default)({
+    this.tokens = (0, _tokenize["default"])({
       css: this.css,
       error: this._errorGenerator(),
       safe: this.options.safe
     });
     var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);
-    this.root = new _root.default({
+    this.root = new _root["default"]({
       source: rootSource
     });
     this.root.errorGenerator = this._errorGenerator();
-    var selector = new _selector.default({
+    var selector = new _selector["default"]({
       source: {
         start: {
           line: 1,
@@ -447,7 +461,7 @@
 
     unescapeProp(node, "attribute");
     unescapeProp(node, "namespace");
-    this.newNode(new _attribute.default(node));
+    this.newNode(new _attribute["default"](node));
     this.position++;
   }
   /**
@@ -487,7 +501,7 @@
           space = "";
         }
 
-        lastComment = new _comment.default({
+        lastComment = new _comment["default"]({
           value: this.content(),
           source: getTokenSource(this.currToken),
           sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],
@@ -503,7 +517,7 @@
       } else if (!this.options.lossy) {
         var firstToken = this.tokens[startPosition];
         var lastToken = this.tokens[this.position - 1];
-        nodes.push(new _string.default({
+        nodes.push(new _string["default"]({
           value: '',
           source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),
           sourceIndex: firstToken[_tokenize.FIELDS.START_POS],
@@ -570,7 +584,7 @@
         raws.value = "/" + nameRaw + "/";
       }
 
-      var node = new _combinator.default({
+      var node = new _combinator["default"]({
         value: "/" + name + "/",
         source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),
         sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],
@@ -631,7 +645,7 @@
     if (this.isNamedCombinator()) {
       node = this.namedCombinator();
     } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {
-      node = new _combinator.default({
+      node = new _combinator["default"]({
         value: this.content(),
         source: getTokenSource(this.currToken),
         sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]
@@ -676,7 +690,7 @@
         raws.value = _rawSpace2;
       }
 
-      node = new _combinator.default({
+      node = new _combinator["default"]({
         value: ' ',
         source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),
         sourceIndex: firstToken[_tokenize.FIELDS.START_POS],
@@ -702,7 +716,7 @@
 
     this.current._inferEndPosition();
 
-    var selector = new _selector.default({
+    var selector = new _selector["default"]({
       source: {
         start: tokenStart(this.tokens[this.position + 1])
       }
@@ -714,7 +728,7 @@
 
   _proto.comment = function comment() {
     var current = this.currToken;
-    this.newNode(new _comment.default({
+    this.newNode(new _comment["default"]({
       value: this.content(),
       source: getTokenSource(current),
       sourceIndex: current[_tokenize.FIELDS.START_POS]
@@ -767,7 +781,7 @@
     }
 
     var current = this.currToken;
-    this.newNode(new _nesting.default({
+    this.newNode(new _nesting["default"]({
       value: this.content(),
       source: getTokenSource(current),
       sourceIndex: current[_tokenize.FIELDS.START_POS]
@@ -781,7 +795,7 @@
     this.position++;
 
     if (last && last.type === types.PSEUDO) {
-      var selector = new _selector.default({
+      var selector = new _selector["default"]({
         source: {
           start: tokenStart(this.tokens[this.position - 1])
         }
@@ -833,7 +847,7 @@
       if (last) {
         last.appendToPropertyAndEscape("value", parenValue, parenValue);
       } else {
-        this.newNode(new _string.default({
+        this.newNode(new _string["default"]({
           value: parenValue,
           source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),
           sourceIndex: parenStart[_tokenize.FIELDS.START_POS]
@@ -865,7 +879,7 @@
       this.splitWord(false, function (first, length) {
         pseudoStr += first;
 
-        _this4.newNode(new _pseudo.default({
+        _this4.newNode(new _pseudo["default"]({
           value: pseudoStr,
           source: getTokenSourceSpan(startingToken, _this4.currToken),
           sourceIndex: startingToken[_tokenize.FIELDS.START_POS]
@@ -900,7 +914,7 @@
 
   _proto.string = function string() {
     var current = this.currToken;
-    this.newNode(new _string.default({
+    this.newNode(new _string["default"]({
       value: this.content(),
       source: getTokenSource(current),
       sourceIndex: current[_tokenize.FIELDS.START_POS]
@@ -917,7 +931,7 @@
     }
 
     var current = this.currToken;
-    this.newNode(new _universal.default({
+    this.newNode(new _universal["default"]({
       value: this.content(),
       source: getTokenSource(current),
       sourceIndex: current[_tokenize.FIELDS.START_POS]
@@ -948,14 +962,14 @@
       nextToken = this.nextToken;
     }
 
-    var hasClass = (0, _indexesOf.default)(word, '.').filter(function (i) {
+    var hasClass = indexesOf(word, '.').filter(function (i) {
       return word[i - 1] !== '\\';
     });
-    var hasId = (0, _indexesOf.default)(word, '#').filter(function (i) {
+    var hasId = indexesOf(word, '#').filter(function (i) {
       return word[i - 1] !== '\\';
     }); // Eliminate Sass interpolations from the list of id indexes
 
-    var interpolations = (0, _indexesOf.default)(word, '#{');
+    var interpolations = indexesOf(word, '#{');
 
     if (interpolations.length) {
       hasId = hasId.filter(function (hashIndex) {
@@ -963,7 +977,7 @@
       });
     }
 
-    var indices = (0, _sortAscending.default)((0, _uniq.default)([0].concat(hasClass, hasId)));
+    var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId)));
     indices.forEach(function (ind, i) {
       var index = indices[i + 1] || word.length;
       var value = word.slice(ind, index);
@@ -983,14 +997,14 @@
           source: source,
           sourceIndex: sourceIndex
         };
-        node = new _className.default(unescapeProp(classNameOpts, "value"));
+        node = new _className["default"](unescapeProp(classNameOpts, "value"));
       } else if (~hasId.indexOf(ind)) {
         var idOpts = {
           value: value.slice(1),
           source: source,
           sourceIndex: sourceIndex
         };
-        node = new _id.default(unescapeProp(idOpts, "value"));
+        node = new _id["default"](unescapeProp(idOpts, "value"));
       } else {
         var tagOpts = {
           value: value,
@@ -998,7 +1012,7 @@
           sourceIndex: sourceIndex
         };
         unescapeProp(tagOpts, "value");
-        node = new _tag.default(tagOpts);
+        node = new _tag["default"](tagOpts);
       }
 
       _this5.newNode(node, namespace); // Ensure that the namespace is used only once
@@ -1221,5 +1235,5 @@
   return Parser;
 }();
 
-exports.default = Parser;
+exports["default"] = Parser;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/processor.js b/node_modules/postcss-selector-parser/dist/processor.js
index 048b1ef..a00170c 100644
--- a/node_modules/postcss-selector-parser/dist/processor.js
+++ b/node_modules/postcss-selector-parser/dist/processor.js
@@ -1,15 +1,13 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _parser = _interopRequireDefault(require("./parser"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-var Processor =
-/*#__PURE__*/
-function () {
+var Processor = /*#__PURE__*/function () {
   function Processor(func, options) {
     this.func = func || function noop() {};
 
@@ -52,7 +50,7 @@
       options = {};
     }
 
-    var parser = new _parser.default(rule, this._parseOptions(options));
+    var parser = new _parser["default"](rule, this._parseOptions(options));
     return parser.root;
   };
 
@@ -204,5 +202,5 @@
   return Processor;
 }();
 
-exports.default = Processor;
+exports["default"] = Processor;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/attribute.js b/node_modules/postcss-selector-parser/dist/selectors/attribute.js
index 3212d90..5d82669 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/attribute.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/attribute.js
@@ -2,7 +2,7 @@
 
 exports.__esModule = true;
 exports.unescapeValue = unescapeValue;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _cssesc = _interopRequireDefault(require("cssesc"));
 
@@ -14,13 +14,15 @@
 
 var _CSSESC_QUOTE_OPTIONS;
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
 function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
 
 var deprecate = require("util-deprecate");
 
@@ -40,7 +42,7 @@
     unescaped = m[2];
   }
 
-  unescaped = (0, _unesc.default)(unescaped);
+  unescaped = (0, _unesc["default"])(unescaped);
 
   if (unescaped !== value) {
     deprecatedUsage = true;
@@ -81,9 +83,7 @@
   return opts;
 }
 
-var Attribute =
-/*#__PURE__*/
-function (_Namespace) {
+var Attribute = /*#__PURE__*/function (_Namespace) {
   _inheritsLoose(Attribute, _Namespace);
 
   function Attribute(opts) {
@@ -140,7 +140,7 @@
     var quoteMark = this._determineQuoteMark(options);
 
     var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];
-    var escaped = (0, _cssesc.default)(this._value, cssescopts);
+    var escaped = (0, _cssesc["default"])(this._value, cssescopts);
     return escaped;
   };
 
@@ -184,7 +184,7 @@
     var numDoubleQuotes = v.replace(/[^"]/g, '').length;
 
     if (numSingleQuotes + numDoubleQuotes === 0) {
-      var escaped = (0, _cssesc.default)(v, {
+      var escaped = (0, _cssesc["default"])(v, {
         isIdentifier: true
       });
 
@@ -197,7 +197,7 @@
           // pick a quote mark that isn't none and see if it's smaller
           var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;
           var opts = CSSESC_QUOTE_OPTIONS[quote];
-          var quoteValue = (0, _cssesc.default)(v, opts);
+          var quoteValue = (0, _cssesc["default"])(v, opts);
 
           if (quoteValue.length < escaped.length) {
             return quote;
@@ -236,7 +236,7 @@
   };
 
   _proto._syncRawValue = function _syncRawValue() {
-    var rawValue = (0, _cssesc.default)(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);
+    var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);
 
     if (rawValue === this._value) {
       if (this.raws) {
@@ -249,7 +249,7 @@
 
   _proto._handleEscapes = function _handleEscapes(prop, value) {
     if (this._constructed) {
-      var escaped = (0, _cssesc.default)(value, {
+      var escaped = (0, _cssesc["default"])(value, {
         isIdentifier: true
       });
 
@@ -491,9 +491,9 @@
   }]);
 
   return Attribute;
-}(_namespace.default);
+}(_namespace["default"]);
 
-exports.default = Attribute;
+exports["default"] = Attribute;
 Attribute.NO_QUOTE = null;
 Attribute.SINGLE_QUOTE = "'";
 Attribute.DOUBLE_QUOTE = '"';
diff --git a/node_modules/postcss-selector-parser/dist/selectors/className.js b/node_modules/postcss-selector-parser/dist/selectors/className.js
index 76145bc..2240991 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/className.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/className.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _cssesc = _interopRequireDefault(require("cssesc"));
 
@@ -11,17 +11,17 @@
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
 function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var ClassName =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var ClassName = /*#__PURE__*/function (_Node) {
   _inheritsLoose(ClassName, _Node);
 
   function ClassName(opts) {
@@ -41,9 +41,12 @@
 
   _createClass(ClassName, [{
     key: "value",
+    get: function get() {
+      return this._value;
+    },
     set: function set(v) {
       if (this._constructed) {
-        var escaped = (0, _cssesc.default)(v, {
+        var escaped = (0, _cssesc["default"])(v, {
           isIdentifier: true
         });
 
@@ -56,14 +59,11 @@
       }
 
       this._value = v;
-    },
-    get: function get() {
-      return this._value;
     }
   }]);
 
   return ClassName;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = ClassName;
+exports["default"] = ClassName;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/combinator.js b/node_modules/postcss-selector-parser/dist/selectors/combinator.js
index 479cc4b..271ab4d 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/combinator.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/combinator.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _node = _interopRequireDefault(require("./node"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Combinator =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Combinator = /*#__PURE__*/function (_Node) {
   _inheritsLoose(Combinator, _Node);
 
   function Combinator(opts) {
@@ -25,7 +25,7 @@
   }
 
   return Combinator;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = Combinator;
+exports["default"] = Combinator;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/comment.js b/node_modules/postcss-selector-parser/dist/selectors/comment.js
index a104b69..e778094 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/comment.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/comment.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _node = _interopRequireDefault(require("./node"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Comment =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Comment = /*#__PURE__*/function (_Node) {
   _inheritsLoose(Comment, _Node);
 
   function Comment(opts) {
@@ -25,7 +25,7 @@
   }
 
   return Comment;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = Comment;
+exports["default"] = Comment;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/constructors.js b/node_modules/postcss-selector-parser/dist/selectors/constructors.js
index 6c5a3b6..078023e 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/constructors.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/constructors.js
@@ -27,76 +27,76 @@
 
 var _universal = _interopRequireDefault(require("./universal"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 var attribute = function attribute(opts) {
-  return new _attribute.default(opts);
+  return new _attribute["default"](opts);
 };
 
 exports.attribute = attribute;
 
 var className = function className(opts) {
-  return new _className.default(opts);
+  return new _className["default"](opts);
 };
 
 exports.className = className;
 
 var combinator = function combinator(opts) {
-  return new _combinator.default(opts);
+  return new _combinator["default"](opts);
 };
 
 exports.combinator = combinator;
 
 var comment = function comment(opts) {
-  return new _comment.default(opts);
+  return new _comment["default"](opts);
 };
 
 exports.comment = comment;
 
 var id = function id(opts) {
-  return new _id.default(opts);
+  return new _id["default"](opts);
 };
 
 exports.id = id;
 
 var nesting = function nesting(opts) {
-  return new _nesting.default(opts);
+  return new _nesting["default"](opts);
 };
 
 exports.nesting = nesting;
 
 var pseudo = function pseudo(opts) {
-  return new _pseudo.default(opts);
+  return new _pseudo["default"](opts);
 };
 
 exports.pseudo = pseudo;
 
 var root = function root(opts) {
-  return new _root.default(opts);
+  return new _root["default"](opts);
 };
 
 exports.root = root;
 
 var selector = function selector(opts) {
-  return new _selector.default(opts);
+  return new _selector["default"](opts);
 };
 
 exports.selector = selector;
 
 var string = function string(opts) {
-  return new _string.default(opts);
+  return new _string["default"](opts);
 };
 
 exports.string = string;
 
 var tag = function tag(opts) {
-  return new _tag.default(opts);
+  return new _tag["default"](opts);
 };
 
 exports.tag = tag;
 
 var universal = function universal(opts) {
-  return new _universal.default(opts);
+  return new _universal["default"](opts);
 };
 
 exports.universal = universal;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/container.js b/node_modules/postcss-selector-parser/dist/selectors/container.js
index 53b552d..2626fb8 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/container.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/container.js
@@ -1,25 +1,33 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _node = _interopRequireDefault(require("./node"));
 
 var types = _interopRequireWildcard(require("./types"));
 
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
+function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
 function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
 function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Container =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Container = /*#__PURE__*/function (_Node) {
   _inheritsLoose(Container, _Node);
 
   function Container(opts) {
@@ -78,19 +86,8 @@
   };
 
   _proto.removeAll = function removeAll() {
-    for (var _iterator = this.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-      var _ref;
-
-      if (_isArray) {
-        if (_i >= _iterator.length) break;
-        _ref = _iterator[_i++];
-      } else {
-        _i = _iterator.next();
-        if (_i.done) break;
-        _ref = _i.value;
-      }
-
-      var node = _ref;
+    for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {
+      var node = _step.value;
       node.parent = undefined;
     }
 
@@ -392,7 +389,7 @@
   }]);
 
   return Container;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = Container;
+exports["default"] = Container;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/id.js b/node_modules/postcss-selector-parser/dist/selectors/id.js
index 541beeb..4e83147 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/id.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/id.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _node = _interopRequireDefault(require("./node"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var ID =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var ID = /*#__PURE__*/function (_Node) {
   _inheritsLoose(ID, _Node);
 
   function ID(opts) {
@@ -31,7 +31,7 @@
   };
 
   return ID;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = ID;
+exports["default"] = ID;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/index.js b/node_modules/postcss-selector-parser/dist/selectors/index.js
index bc5bc37..1fe9b13 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/index.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/index.js
@@ -6,6 +6,7 @@
 
 Object.keys(_types).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
+  if (key in exports && exports[key] === _types[key]) return;
   exports[key] = _types[key];
 });
 
@@ -13,6 +14,7 @@
 
 Object.keys(_constructors).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
+  if (key in exports && exports[key] === _constructors[key]) return;
   exports[key] = _constructors[key];
 });
 
@@ -20,5 +22,6 @@
 
 Object.keys(_guards).forEach(function (key) {
   if (key === "default" || key === "__esModule") return;
+  if (key in exports && exports[key] === _guards[key]) return;
   exports[key] = _guards[key];
 });
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/namespace.js b/node_modules/postcss-selector-parser/dist/selectors/namespace.js
index c12233a..fd6c729 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/namespace.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/namespace.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _cssesc = _interopRequireDefault(require("cssesc"));
 
@@ -9,17 +9,17 @@
 
 var _node = _interopRequireDefault(require("./node"));
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
 function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Namespace =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Namespace = /*#__PURE__*/function (_Node) {
   _inheritsLoose(Namespace, _Node);
 
   function Namespace() {
@@ -56,7 +56,7 @@
         return;
       }
 
-      var escaped = (0, _cssesc.default)(namespace, {
+      var escaped = (0, _cssesc["default"])(namespace, {
         isIdentifier: true
       });
       this._namespace = namespace;
@@ -94,8 +94,8 @@
   }]);
 
   return Namespace;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = Namespace;
+exports["default"] = Namespace;
 ;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/nesting.js b/node_modules/postcss-selector-parser/dist/selectors/nesting.js
index 4cdfb10..3288c78 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/nesting.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/nesting.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _node = _interopRequireDefault(require("./node"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Nesting =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Nesting = /*#__PURE__*/function (_Node) {
   _inheritsLoose(Nesting, _Node);
 
   function Nesting(opts) {
@@ -26,7 +26,7 @@
   }
 
   return Nesting;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = Nesting;
+exports["default"] = Nesting;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/node.js b/node_modules/postcss-selector-parser/dist/selectors/node.js
index f959846..e8eca11 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/node.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/node.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _util = require("../util");
 
@@ -40,9 +40,7 @@
   return cloned;
 };
 
-var Node =
-/*#__PURE__*/
-function () {
+var Node = /*#__PURE__*/function () {
   function Node(opts) {
     if (opts === void 0) {
       opts = {};
@@ -237,5 +235,5 @@
   return Node;
 }();
 
-exports.default = Node;
+exports["default"] = Node;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/pseudo.js b/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
index 820338b..a0e7bca 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/pseudo.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _container = _interopRequireDefault(require("./container"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Pseudo =
-/*#__PURE__*/
-function (_Container) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Pseudo = /*#__PURE__*/function (_Container) {
   _inheritsLoose(Pseudo, _Container);
 
   function Pseudo(opts) {
@@ -32,7 +32,7 @@
   };
 
   return Pseudo;
-}(_container.default);
+}(_container["default"]);
 
-exports.default = Pseudo;
+exports["default"] = Pseudo;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/root.js b/node_modules/postcss-selector-parser/dist/selectors/root.js
index bbc619f..be5c2cc 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/root.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/root.js
@@ -1,23 +1,23 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _container = _interopRequireDefault(require("./container"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
 function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Root =
-/*#__PURE__*/
-function (_Container) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Root = /*#__PURE__*/function (_Container) {
   _inheritsLoose(Root, _Container);
 
   function Root(opts) {
@@ -54,7 +54,7 @@
   }]);
 
   return Root;
-}(_container.default);
+}(_container["default"]);
 
-exports.default = Root;
+exports["default"] = Root;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/selector.js b/node_modules/postcss-selector-parser/dist/selectors/selector.js
index 618238b..699eeb6 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/selector.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/selector.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _container = _interopRequireDefault(require("./container"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Selector =
-/*#__PURE__*/
-function (_Container) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Selector = /*#__PURE__*/function (_Container) {
   _inheritsLoose(Selector, _Container);
 
   function Selector(opts) {
@@ -25,7 +25,7 @@
   }
 
   return Selector;
-}(_container.default);
+}(_container["default"]);
 
-exports.default = Selector;
+exports["default"] = Selector;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/string.js b/node_modules/postcss-selector-parser/dist/selectors/string.js
index b8526fa..e61df30 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/string.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/string.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _node = _interopRequireDefault(require("./node"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var String =
-/*#__PURE__*/
-function (_Node) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var String = /*#__PURE__*/function (_Node) {
   _inheritsLoose(String, _Node);
 
   function String(opts) {
@@ -25,7 +25,7 @@
   }
 
   return String;
-}(_node.default);
+}(_node["default"]);
 
-exports.default = String;
+exports["default"] = String;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/tag.js b/node_modules/postcss-selector-parser/dist/selectors/tag.js
index 2d95176..e298db1 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/tag.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/tag.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _namespace = _interopRequireDefault(require("./namespace"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Tag =
-/*#__PURE__*/
-function (_Namespace) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Tag = /*#__PURE__*/function (_Namespace) {
   _inheritsLoose(Tag, _Namespace);
 
   function Tag(opts) {
@@ -25,7 +25,7 @@
   }
 
   return Tag;
-}(_namespace.default);
+}(_namespace["default"]);
 
-exports.default = Tag;
+exports["default"] = Tag;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/selectors/universal.js b/node_modules/postcss-selector-parser/dist/selectors/universal.js
index c83905e..cf25473 100644
--- a/node_modules/postcss-selector-parser/dist/selectors/universal.js
+++ b/node_modules/postcss-selector-parser/dist/selectors/universal.js
@@ -1,19 +1,19 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = void 0;
+exports["default"] = void 0;
 
 var _namespace = _interopRequireDefault(require("./namespace"));
 
 var _types = require("./types");
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
 
-var Universal =
-/*#__PURE__*/
-function (_Namespace) {
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Universal = /*#__PURE__*/function (_Namespace) {
   _inheritsLoose(Universal, _Namespace);
 
   function Universal(opts) {
@@ -26,7 +26,7 @@
   }
 
   return Universal;
-}(_namespace.default);
+}(_namespace["default"]);
 
-exports.default = Universal;
+exports["default"] = Universal;
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/sortAscending.js b/node_modules/postcss-selector-parser/dist/sortAscending.js
index 7af2fec..3ef56ac 100644
--- a/node_modules/postcss-selector-parser/dist/sortAscending.js
+++ b/node_modules/postcss-selector-parser/dist/sortAscending.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = sortAscending;
+exports["default"] = sortAscending;
 
 function sortAscending(list) {
   return list.sort(function (a, b) {
diff --git a/node_modules/postcss-selector-parser/dist/tokenize.js b/node_modules/postcss-selector-parser/dist/tokenize.js
index e890e9c..bee9fee 100644
--- a/node_modules/postcss-selector-parser/dist/tokenize.js
+++ b/node_modules/postcss-selector-parser/dist/tokenize.js
@@ -1,14 +1,16 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = tokenize;
+exports["default"] = tokenize;
 exports.FIELDS = void 0;
 
 var t = _interopRequireWildcard(require("./tokenTypes"));
 
 var _unescapable, _wordDelimiters;
 
-function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
+function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 
 var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);
 var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);
@@ -254,7 +256,8 @@
     endLine, // [3] Ending line
     endColumn, // [4] Ending column
     start, // [5] Start position / Source index
-    end]); // Reset offset for the next token
+    end // [6] End position
+    ]); // Reset offset for the next token
 
     if (nextOffset) {
       offset = nextOffset;
diff --git a/node_modules/postcss-selector-parser/dist/util/ensureObject.js b/node_modules/postcss-selector-parser/dist/util/ensureObject.js
index 548b107..3472e07 100644
--- a/node_modules/postcss-selector-parser/dist/util/ensureObject.js
+++ b/node_modules/postcss-selector-parser/dist/util/ensureObject.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = ensureObject;
+exports["default"] = ensureObject;
 
 function ensureObject(obj) {
   for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
diff --git a/node_modules/postcss-selector-parser/dist/util/getProp.js b/node_modules/postcss-selector-parser/dist/util/getProp.js
index fd44505..53e07c9 100644
--- a/node_modules/postcss-selector-parser/dist/util/getProp.js
+++ b/node_modules/postcss-selector-parser/dist/util/getProp.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = getProp;
+exports["default"] = getProp;
 
 function getProp(obj) {
   for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
diff --git a/node_modules/postcss-selector-parser/dist/util/index.js b/node_modules/postcss-selector-parser/dist/util/index.js
index d7a37bd..043fda8 100644
--- a/node_modules/postcss-selector-parser/dist/util/index.js
+++ b/node_modules/postcss-selector-parser/dist/util/index.js
@@ -5,18 +5,18 @@
 
 var _unesc = _interopRequireDefault(require("./unesc"));
 
-exports.unesc = _unesc.default;
+exports.unesc = _unesc["default"];
 
 var _getProp = _interopRequireDefault(require("./getProp"));
 
-exports.getProp = _getProp.default;
+exports.getProp = _getProp["default"];
 
 var _ensureObject = _interopRequireDefault(require("./ensureObject"));
 
-exports.ensureObject = _ensureObject.default;
+exports.ensureObject = _ensureObject["default"];
 
 var _stripComments = _interopRequireDefault(require("./stripComments"));
 
-exports.stripComments = _stripComments.default;
+exports.stripComments = _stripComments["default"];
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
\ No newline at end of file
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/dist/util/stripComments.js b/node_modules/postcss-selector-parser/dist/util/stripComments.js
index 7f4defe..c74f1fe 100644
--- a/node_modules/postcss-selector-parser/dist/util/stripComments.js
+++ b/node_modules/postcss-selector-parser/dist/util/stripComments.js
@@ -1,7 +1,7 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = stripComments;
+exports["default"] = stripComments;
 
 function stripComments(str) {
   var s = "";
diff --git a/node_modules/postcss-selector-parser/dist/util/unesc.js b/node_modules/postcss-selector-parser/dist/util/unesc.js
index ae12869..3136e7e 100644
--- a/node_modules/postcss-selector-parser/dist/util/unesc.js
+++ b/node_modules/postcss-selector-parser/dist/util/unesc.js
@@ -1,20 +1,93 @@
 "use strict";
 
 exports.__esModule = true;
-exports.default = unesc;
-var whitespace = '[\\x20\\t\\r\\n\\f]';
-var unescapeRegExp = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig');
+exports["default"] = unesc;
+
+// Many thanks for this post which made this migration much easier.
+// https://mathiasbynens.be/notes/css-escapes
+
+/**
+ * 
+ * @param {string} str 
+ * @returns {[string, number]|undefined}
+ */
+function gobbleHex(str) {
+  var lower = str.toLowerCase();
+  var hex = '';
+  var spaceTerminated = false;
+
+  for (var i = 0; i < 6 && lower[i] !== undefined; i++) {
+    var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]
+
+    var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point
+
+    spaceTerminated = code === 32;
+
+    if (!valid) {
+      break;
+    }
+
+    hex += lower[i];
+  }
+
+  if (hex.length === 0) {
+    return undefined;
+  }
+
+  var codePoint = parseInt(hex, 16);
+  var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for
+  // "If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point"
+  // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point
+
+  if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {
+    return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)];
+  }
+
+  return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];
+}
+
+var CONTAINS_ESCAPE = /\\/;
 
 function unesc(str) {
-  return str.replace(unescapeRegExp, function (_, escaped, escapedWhitespace) {
-    var high = '0x' + escaped - 0x10000; // NaN means non-codepoint
-    // Workaround erroneous numeric interpretation of +"0x"
-    // eslint-disable-next-line no-self-compare
+  var needToProcess = CONTAINS_ESCAPE.test(str);
 
-    return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint
-    String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair)
-    String.fromCharCode(high >> 10 | 0xd800, high & 0x3ff | 0xdc00);
-  });
+  if (!needToProcess) {
+    return str;
+  }
+
+  var ret = "";
+
+  for (var i = 0; i < str.length; i++) {
+    if (str[i] === "\\") {
+      var gobbled = gobbleHex(str.slice(i + 1, i + 7));
+
+      if (gobbled !== undefined) {
+        ret += gobbled[0];
+        i += gobbled[1];
+        continue;
+      } // Retain a pair of \\ if double escaped `\\\\`
+      // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e
+
+
+      if (str[i + 1] === "\\") {
+        ret += "\\";
+        i++;
+        continue;
+      } // if \\ is at the end of the string retain it
+      // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb
+
+
+      if (str.length === i + 1) {
+        ret += str[i];
+      }
+
+      continue;
+    }
+
+    ret += str[i];
+  }
+
+  return ret;
 }
 
 module.exports = exports.default;
\ No newline at end of file
diff --git a/node_modules/postcss-selector-parser/package.json b/node_modules/postcss-selector-parser/package.json
index 96a965c..b9fd20c 100644
--- a/node_modules/postcss-selector-parser/package.json
+++ b/node_modules/postcss-selector-parser/package.json
@@ -1,25 +1,25 @@
 {
   "name": "postcss-selector-parser",
-  "version": "6.0.4",
+  "version": "6.0.5",
   "devDependencies": {
-    "@babel/cli": "^7.2.3",
-    "@babel/core": "^7.3.4",
-    "@babel/plugin-proposal-class-properties": "^7.3.4",
-    "@babel/preset-env": "^7.3.4",
-    "@babel/register": "^7.0.0",
-    "ava": "^1.3.1",
-    "babel-eslint": "^10.0.1",
-    "babel-plugin-add-module-exports": "^1.0.0",
-    "coveralls": "^3.0.3",
-    "del-cli": "^1.1.0",
-    "eslint": "^5.15.1",
-    "eslint-plugin-babel": "^5.3.0",
-    "eslint-plugin-import": "^2.16.0",
-    "glob": "^7.1.3",
-    "minimist": "^1.2.0",
-    "nyc": "^13.3.0",
-    "postcss": "^7.0.14",
-    "semver": "^5.6.0",
+    "@babel/cli": "^7.11.6",
+    "@babel/core": "^7.11.6",
+    "@babel/eslint-parser": "^7.11.5",
+    "@babel/eslint-plugin": "^7.11.5",
+    "@babel/plugin-proposal-class-properties": "^7.10.4",
+    "@babel/preset-env": "^7.11.5",
+    "@babel/register": "^7.11.5",
+    "ava": "^3.12.1",
+    "babel-plugin-add-module-exports": "^1.0.4",
+    "coveralls": "^3.1.0",
+    "del-cli": "^3.0.1",
+    "eslint": "^7.9.0",
+    "eslint-plugin-import": "^2.22.0",
+    "glob": "^7.1.6",
+    "minimist": "^1.2.5",
+    "nyc": "^15.1.0",
+    "postcss": "^8.0.0",
+    "semver": "^7.3.2",
     "typescript": "^4.0.3"
   },
   "main": "dist/index.js",
@@ -36,13 +36,11 @@
     "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
     "lintfix": "eslint --fix src",
     "report": "nyc report --reporter=html",
-    "test": "nyc ava src/__tests__/*.js",
+    "test": "nyc ava src/__tests__/*.js ",
     "testone": "ava"
   },
   "dependencies": {
     "cssesc": "^3.0.0",
-    "indexes-of": "^1.0.1",
-    "uniq": "^1.0.1",
     "util-deprecate": "^1.0.2"
   },
   "license": "MIT",
@@ -67,7 +65,8 @@
     "require": [
       "@babel/register"
     ],
-    "concurrency": 5
+    "concurrency": 5,
+    "timeout": "25s"
   },
   "nyc": {
     "exclude": [
diff --git a/node_modules/stylelint/CHANGELOG.md b/node_modules/stylelint/CHANGELOG.md
index acb5638..4c3f6de 100644
--- a/node_modules/stylelint/CHANGELOG.md
+++ b/node_modules/stylelint/CHANGELOG.md
@@ -2,6 +2,24 @@
 
 All notable changes to this project are documented in this file.
 
+## 13.13.1
+
+- Fixed: invalid JSON for `max-warnings` option ([#5267](https://github.com/stylelint/stylelint/pull/5267)).
+- Fixed: `no-invalid-position-at-import-rule` false positives for dollar variables ([#5264](https://github.com/stylelint/stylelint/pull/5264)).
+
+## 13.13.0
+
+- Added: `no-invalid-position-at-import-rule` rule ([#5202](https://github.com/stylelint/stylelint/pull/5202)).
+- Added: `no-irregular-whitespace` rule ([#5209](https://github.com/stylelint/stylelint/pull/5209)).
+- Added: `selector-disallowed-list` rule ([#5239](https://github.com/stylelint/stylelint/pull/5239)).
+- Added: `selector-attribute-quotes` autofix ([#5248](https://github.com/stylelint/stylelint/pull/5248)).
+- Added: `ignore: ["inside-function"]` to `declaration-property-unit-allowed-list` ([#5194](https://github.com/stylelint/stylelint/pull/5194)).
+- Fixed: `color-no-hex` false positives for CSS-in-JS objection notation ([#5186](https://github.com/stylelint/stylelint/pull/5186)).
+- Fixed: `font-family-no-missing-generic-family-keyword` false positives for variables ([#5240](https://github.com/stylelint/stylelint/pull/5240)).
+- Fixed: `length-zero-no-unit` autofix removing trailing zeroes ([#5256](https://github.com/stylelint/stylelint/pull/5256)).
+- Fixed: `length-zero-no-unit` false positives for level 4 math functions ([#5203](https://github.com/stylelint/stylelint/pull/5203)).
+- Fixed: `length-zero-no-unit` false positives for functions inside of math functions ([#5245](https://github.com/stylelint/stylelint/pull/5245)).
+
 ## 13.12.0
 
 - Added: `named-grid-areas-no-invalid` rule ([#5167](https://github.com/stylelint/stylelint/pull/5167)).
diff --git a/node_modules/stylelint/docs/developer-guide/processors.md b/node_modules/stylelint/docs/developer-guide/processors.md
index 75b8401..220b949 100644
--- a/node_modules/stylelint/docs/developer-guide/processors.md
+++ b/node_modules/stylelint/docs/developer-guide/processors.md
@@ -2,7 +2,7 @@
 
 Processors are functions that hook into stylelint's pipeline, modifying code on its way into stylelint and modifying results on their way out.
 
-**Their use is discouraged favor of [PostCSS syntaxes](../about/syntaxes.md).**
+**Their use is discouraged in favor of [PostCSS syntaxes](../about/syntaxes.md).**
 
 Processor modules are functions that accept an options object and return an object with the following the functions, which hook into the processing of each file:
 
diff --git a/node_modules/stylelint/docs/user-guide/rules/list.md b/node_modules/stylelint/docs/user-guide/rules/list.md
index f3934eb..c8218dd 100644
--- a/node_modules/stylelint/docs/user-guide/rules/list.md
+++ b/node_modules/stylelint/docs/user-guide/rules/list.md
@@ -79,6 +79,7 @@
 - [`no-empty-source`](../../../lib/rules/no-empty-source/README.md): Disallow empty sources.
 - [`no-extra-semicolons`](../../../lib/rules/no-extra-semicolons/README.md): Disallow extra semicolons (Autofixable).
 - [`no-invalid-double-slash-comments`](../../../lib/rules/no-invalid-double-slash-comments/README.md): Disallow double-slash comments (`//...`) which are not supported by CSS.
+- [`no-invalid-position-at-import-rule`](../../../lib/rules/no-invalid-position-at-import-rule/README.md): Disallow invalid position `@import` rules within a stylesheet.
 
 ## Limit language features
 
@@ -184,6 +185,7 @@
 - [`selector-combinator-blacklist`](../../../lib/rules/selector-combinator-blacklist/README.md): Specify a list of disallowed combinators. **(deprecated)**
 - [`selector-combinator-disallowed-list`](../../../lib/rules/selector-combinator-disallowed-list/README.md): Specify a list of disallowed combinators.
 - [`selector-combinator-whitelist`](../../../lib/rules/selector-combinator-whitelist/README.md): Specify a list of allowed combinators. **(deprecated)**
+- [`selector-disallowed-list`](../../../lib/rules/selector-disallowed-list/README.md): Specify a list of disallowed selectors.
 - [`selector-id-pattern`](../../../lib/rules/selector-id-pattern/README.md): Specify a pattern for ID selectors.
 - [`selector-max-attribute`](../../../lib/rules/selector-max-attribute/README.md): Limit the number of attribute selectors in a selector.
 - [`selector-max-class`](../../../lib/rules/selector-max-class/README.md): Limit the number of classes in a selector.
@@ -394,3 +396,4 @@
 - [`no-missing-end-of-source-newline`](../../../lib/rules/no-missing-end-of-source-newline/README.md): Disallow missing end-of-source newlines (Autofixable).
 - [`no-empty-first-line`](../../../lib/rules/no-empty-first-line/README.md): Disallow empty first lines (Autofixable).
 - [`unicode-bom`](../../../lib/rules/unicode-bom/README.md): Require or disallow Unicode BOM.
+- [`no-irregular-whitespace`](../../../lib/rules/no-irregular-whitespace/README.md): Disallow irregular whitespace.
diff --git a/node_modules/stylelint/lib/assignDisabledRanges.js b/node_modules/stylelint/lib/assignDisabledRanges.js
index c0ab00a..78d6c10 100644
--- a/node_modules/stylelint/lib/assignDisabledRanges.js
+++ b/node_modules/stylelint/lib/assignDisabledRanges.js
@@ -72,16 +72,16 @@
 			return;
 		}
 
-		const next = comment.next();
+		const nextComment = comment.next();
 
 		// If any of these conditions are not met, do not merge comments.
 		if (
 			!(
 				isInlineComment(comment) &&
 				isStylelintCommand(comment) &&
-				next &&
-				next.type === 'comment' &&
-				(comment.text.includes('--') || next.text.startsWith('--'))
+				nextComment &&
+				nextComment.type === 'comment' &&
+				(comment.text.includes('--') || nextComment.text.startsWith('--'))
 			)
 		) {
 			checkComment(comment);
@@ -92,8 +92,7 @@
 		let lastLine = (comment.source && comment.source.end && comment.source.end.line) || 0;
 		const fullComment = comment.clone();
 
-		/** @type {PostcssComment} */
-		let current = next;
+		let current = nextComment;
 
 		while (isInlineComment(current) && !isStylelintCommand(current)) {
 			const currentLine = (current.source && current.source.end && current.source.end.line) || 0;
@@ -107,8 +106,6 @@
 			}
 
 			inlineEnd = current;
-			// TODO: Issue #4985
-			// eslint-disable-next-line no-shadow
 			const next = current.next();
 
 			if (!next || next.type !== 'comment') break;
diff --git a/node_modules/stylelint/lib/cli.js b/node_modules/stylelint/lib/cli.js
index 958162c..efaaea2 100644
--- a/node_modules/stylelint/lib/cli.js
+++ b/node_modules/stylelint/lib/cli.js
@@ -509,8 +509,8 @@
 					} else if (maxWarnings !== undefined && linted.maxWarningsExceeded) {
 						const foundWarnings = linted.maxWarningsExceeded.foundWarnings;
 
-						process.stdout.write(
-							`${chalk.red(`Max warnings exceeded: `)}${foundWarnings} found. ${chalk.dim(
+						process.stderr.write(
+							`${EOL}${chalk.red(`Max warnings exceeded: `)}${foundWarnings} found. ${chalk.dim(
 								`${maxWarnings} allowed${EOL}${EOL}`,
 							)}`,
 						);
diff --git a/node_modules/stylelint/lib/formatters/index.js b/node_modules/stylelint/lib/formatters/index.js
index ad2321e..82d4737 100644
--- a/node_modules/stylelint/lib/formatters/index.js
+++ b/node_modules/stylelint/lib/formatters/index.js
@@ -3,10 +3,10 @@
 const importLazy = require('import-lazy');
 
 module.exports = {
-	compact: importLazy(() => require('./compactFormatter'))(),
-	json: importLazy(() => require('./jsonFormatter'))(),
-	string: importLazy(() => require('./stringFormatter'))(),
-	tap: importLazy(() => require('./tapFormatter'))(),
-	unix: importLazy(() => require('./unixFormatter'))(),
-	verbose: importLazy(() => require('./verboseFormatter'))(),
+	compact: importLazy(() => require('./compactFormatter'))('compactFormatter'),
+	json: importLazy(() => require('./jsonFormatter'))('jsonFormatter'),
+	string: importLazy(() => require('./stringFormatter'))('stringFormatter'),
+	tap: importLazy(() => require('./tapFormatter'))('tapFormatter'),
+	unix: importLazy(() => require('./unixFormatter'))('unixFormatter'),
+	verbose: importLazy(() => require('./verboseFormatter'))('verboseFormatter'),
 };
diff --git a/node_modules/stylelint/lib/reference/mathFunctions.js b/node_modules/stylelint/lib/reference/mathFunctions.js
index 2fe9b67..e176131 100644
--- a/node_modules/stylelint/lib/reference/mathFunctions.js
+++ b/node_modules/stylelint/lib/reference/mathFunctions.js
@@ -1,3 +1,3 @@
 'use strict';
 
-module.exports = ['calc'];
+module.exports = ['calc', 'clamp', 'max', 'min'];
diff --git a/node_modules/stylelint/lib/rules/color-named/index.js b/node_modules/stylelint/lib/rules/color-named/index.js
index 2cc49f7..23dba11 100644
--- a/node_modules/stylelint/lib/rules/color-named/index.js
+++ b/node_modules/stylelint/lib/rules/color-named/index.js
@@ -24,7 +24,7 @@
 	rejected: (named) => `Unexpected named color "${named}"`,
 });
 
-// Todo tested on case insensivity
+// Todo tested on case insensitivity
 const NODE_TYPES = new Set(['word', 'function']);
 
 function rule(expectation, options) {
diff --git a/node_modules/stylelint/lib/rules/color-no-hex/index.js b/node_modules/stylelint/lib/rules/color-no-hex/index.js
index fd154df..5eba7f3 100644
--- a/node_modules/stylelint/lib/rules/color-no-hex/index.js
+++ b/node_modules/stylelint/lib/rules/color-no-hex/index.js
@@ -2,9 +2,12 @@
 
 'use strict';
 
+const valueParser = require('postcss-value-parser');
+
+const declarationValueIndex = require('../../utils/declarationValueIndex');
+const getDeclarationValue = require('../../utils/getDeclarationValue');
 const report = require('../../utils/report');
 const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
 const validateOptions = require('../../utils/validateOptions');
 
 const ruleName = 'color-no-hex';
@@ -13,6 +16,9 @@
 	rejected: (hex) => `Unexpected hex color "${hex}"`,
 });
 
+const HEX = /^#[0-9A-Za-z]+/;
+const IGNORED_FUNCTIONS = new Set(['url']);
+
 function rule(actual) {
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, { actual });
@@ -22,28 +28,17 @@
 		}
 
 		root.walkDecls((decl) => {
-			const declString = decl.toString();
+			const parsedValue = valueParser(getDeclarationValue(decl));
 
-			styleSearch({ source: declString, target: '#' }, (match) => {
-				// If there's not a colon, comma, or whitespace character before, we'll assume this is
-				// not intended to be a hex color, but is instead something like the
-				// hash in a url() argument
-				if (!/[:,\s]/.test(declString[match.startIndex - 1])) {
-					return;
-				}
+			parsedValue.walk((node) => {
+				if (isIgnoredFunction(node)) return false;
 
-				const hexMatch = /^#[0-9A-Za-z]+/.exec(declString.substr(match.startIndex));
-
-				if (!hexMatch) {
-					return;
-				}
-
-				const hexValue = hexMatch[0];
+				if (!isHexColor(node)) return;
 
 				report({
-					message: messages.rejected(hexValue),
+					message: messages.rejected(node.value),
 					node: decl,
-					index: match.startIndex,
+					index: declarationValueIndex(decl) + node.sourceIndex,
 					result,
 					ruleName,
 				});
@@ -52,6 +47,14 @@
 	};
 }
 
+function isIgnoredFunction({ type, value }) {
+	return type === 'function' && IGNORED_FUNCTIONS.has(value.toLowerCase());
+}
+
+function isHexColor({ type, value }) {
+	return type === 'word' && HEX.test(value);
+}
+
 rule.ruleName = ruleName;
 rule.messages = messages;
 module.exports = rule;
diff --git a/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js b/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js
index c01b332..7963d69 100644
--- a/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js
+++ b/node_modules/stylelint/lib/rules/declaration-bang-space-after/index.js
@@ -38,22 +38,18 @@
 			fix: context.fix
 				? (decl, index) => {
 						let bangIndex = index - declarationValueIndex(decl);
-						const value = getDeclarationValue(decl);
+						const declValue = getDeclarationValue(decl);
 						let target;
 						let setFixed;
 
-						if (bangIndex < value.length) {
-							target = value;
-							// TODO: Issue #4985
-							// eslint-disable-next-line no-shadow
+						if (bangIndex < declValue.length) {
+							target = declValue;
 							setFixed = (value) => {
 								setDeclarationValue(decl, value);
 							};
 						} else if (decl.important) {
 							target = decl.raws.important || ' !important';
-							bangIndex -= value.length;
-							// TODO: Issue #4985
-							// eslint-disable-next-line no-shadow
+							bangIndex -= declValue.length;
 							setFixed = (value) => {
 								decl.raws.important = value;
 							};
diff --git a/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js b/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js
index cd23887..0ceb887 100644
--- a/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js
+++ b/node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.js
@@ -36,15 +36,13 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		const longhandProperties = _.transform(shorthandData, (result, values, key) => {
+		const longhandProperties = _.transform(shorthandData, (longhandProps, values, key) => {
 			if (optionsMatches(options, 'ignoreShorthands', key)) {
 				return;
 			}
 
 			values.forEach((value) => {
-				(result[value] || (result[value] = [])).push(key);
+				(longhandProps[value] || (longhandProps[value] = [])).push(key);
 			});
 		});
 
diff --git a/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js b/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js
index 2d542e6..d9c8301 100644
--- a/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js
+++ b/node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.js
@@ -27,18 +27,16 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isSingleLineString(blockString(rule))) {
+		root.walkRules((ruleNode) => {
+			if (!isSingleLineString(blockString(ruleNode))) {
 				return;
 			}
 
-			if (!rule.nodes) {
+			if (!ruleNode.nodes) {
 				return;
 			}
 
-			const decls = rule.nodes.filter((node) => node.type === 'decl');
+			const decls = ruleNode.nodes.filter((node) => node.type === 'decl');
 
 			if (decls.length <= quantity) {
 				return;
@@ -46,8 +44,8 @@
 
 			report({
 				message: messages.expected(quantity),
-				node: rule,
-				index: beforeBlockString(rule, { noRawBefore: true }).length,
+				node: ruleNode,
+				index: beforeBlockString(ruleNode, { noRawBefore: true }).length,
 				result,
 				ruleName,
 			});
diff --git a/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/README.md b/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/README.md
index 48a95c9..d67ead0 100644
--- a/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/README.md
+++ b/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/README.md
@@ -83,3 +83,37 @@
 ```css
 a { line-height: 1; }
 ```
+
+## Optional secondary options
+
+### `ignore: ["inside-function"]`
+
+Ignore units that are inside a function.
+
+For example, given:
+
+```
+{
+  "/^border/": ["px"],
+  "/^background/": ["%"],
+},
+{
+  "ignore": ["inside-function"],
+},
+```
+
+The following patterns are _not_ considered violations:
+
+<!-- prettier-ignore -->
+```css
+a {
+  border: 1px solid hsla(162deg, 51%, 35%, 0.8);
+}
+```
+
+<!-- prettier-ignore -->
+```css
+a {
+  background-image: linear-gradient(hsla(162deg, 51%, 35%, 0.8), hsla(62deg, 51%, 35%, 0.8));
+}
+```
diff --git a/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/index.js b/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/index.js
index 9cec92b..a1df3bf 100644
--- a/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/index.js
@@ -6,6 +6,7 @@
 const declarationValueIndex = require('../../utils/declarationValueIndex');
 const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
 const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
+const optionsMatches = require('../../utils/optionsMatches');
 const report = require('../../utils/report');
 const ruleMessages = require('../../utils/ruleMessages');
 const validateOptions = require('../../utils/validateOptions');
@@ -18,12 +19,23 @@
 	rejected: (property, unit) => `Unexpected unit "${unit}" for property "${property}"`,
 });
 
-function rule(list) {
+function rule(list, options) {
 	return (root, result) => {
-		const validOptions = validateOptions(result, ruleName, {
-			actual: list,
-			possible: [_.isObject],
-		});
+		const validOptions = validateOptions(
+			result,
+			ruleName,
+			{
+				actual: list,
+				possible: [_.isObject],
+			},
+			{
+				actual: options,
+				possible: {
+					ignore: ['inside-function'],
+				},
+				optional: true,
+			},
+		);
 
 		if (!validOptions) {
 			return;
@@ -45,8 +57,14 @@
 
 			valueParser(value).walk((node) => {
 				// Ignore wrong units within `url` function
-				if (node.type === 'function' && node.value.toLowerCase() === 'url') {
-					return false;
+				if (node.type === 'function') {
+					if (node.value.toLowerCase() === 'url') {
+						return false;
+					}
+
+					if (optionsMatches(options, 'ignore', 'inside-function')) {
+						return false;
+					}
 				}
 
 				if (node.type === 'string') {
diff --git a/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md b/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md
index bd05c09..a7ba77f 100644
--- a/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md
+++ b/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/README.md
@@ -54,6 +54,16 @@
 a { font: caption; }
 ```
 
+<!-- prettier-ignore -->
+```css
+a { font-family: var(--font-family-common); }
+```
+
+<!-- prettier-ignore -->
+```css
+a { font-family: Helvetica, var(--font-family-common); }
+```
+
 ## Optional secondary options
 
 ### `ignoreFontFamilies: ["/regex/", /regex/, "string"]`
diff --git a/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js b/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js
index 5ee7dd6..c1abda3 100644
--- a/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js
+++ b/node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.js
@@ -4,6 +4,7 @@
 
 const declarationValueIndex = require('../../utils/declarationValueIndex');
 const findFontFamily = require('../../utils/findFontFamily');
+const isStandardSyntaxValue = require('../../utils/isStandardSyntaxValue');
 const isVariable = require('../../utils/isVariable');
 const keywordSets = require('../../reference/keywordSets');
 const optionsMatches = require('../../utils/optionsMatches');
@@ -23,6 +24,12 @@
 const isFamilyNameKeyword = (node) =>
 	!node.quote && keywordSets.fontFamilyKeywords.has(node.value.toLowerCase());
 
+const isLastFontFamilyVariable = (value) => {
+	const lastValue = postcss.list.comma(value).pop();
+
+	return isVariable(lastValue) || !isStandardSyntaxValue(lastValue);
+};
+
 function rule(actual, options) {
 	return (root, result) => {
 		const validOptions = validateOptions(
@@ -56,6 +63,10 @@
 				return;
 			}
 
+			if (isLastFontFamilyVariable(decl.value)) {
+				return;
+			}
+
 			const fontFamilies = findFontFamily(decl.value);
 
 			if (fontFamilies.length === 0) {
@@ -66,10 +77,6 @@
 				return;
 			}
 
-			if (postcss.list.space(decl.value).some(isVariable)) {
-				return;
-			}
-
 			if (fontFamilies.some((node) => optionsMatches(options, 'ignoreFontFamilies', node.value))) {
 				return;
 			}
diff --git a/node_modules/stylelint/lib/rules/indentation/index.js b/node_modules/stylelint/lib/rules/indentation/index.js
index 51a41c7..8241d7e 100644
--- a/node_modules/stylelint/lib/rules/indentation/index.js
+++ b/node_modules/stylelint/lib/rules/indentation/index.js
@@ -186,17 +186,15 @@
 			checkMultilineBit(declString, valueLevel, decl);
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkSelector(rule, ruleLevel) {
-			const selector = rule.selector;
+		function checkSelector(ruleNode, ruleLevel) {
+			const selector = ruleNode.selector;
 
 			// Less mixins have params, and they should be indented extra
-			if (rule.params) {
+			if (ruleNode.params) {
 				ruleLevel += 1;
 			}
 
-			checkMultilineBit(selector, ruleLevel, rule);
+			checkMultilineBit(selector, ruleLevel, ruleNode);
 		}
 
 		function checkAtRuleParams(atRule, ruleLevel) {
diff --git a/node_modules/stylelint/lib/rules/index.js b/node_modules/stylelint/lib/rules/index.js
index 395ac24..b05ceea 100644
--- a/node_modules/stylelint/lib/rules/index.js
+++ b/node_modules/stylelint/lib/rules/index.js
@@ -242,6 +242,10 @@
 	'no-invalid-double-slash-comments': importLazy(() =>
 		require('./no-invalid-double-slash-comments'),
 	)(),
+	'no-invalid-position-at-import-rule': importLazy(() =>
+		require('./no-invalid-position-at-import-rule'),
+	)(),
+	'no-irregular-whitespace': importLazy(() => require('./no-irregular-whitespace'))(),
 	'no-missing-end-of-source-newline': importLazy(() =>
 		require('./no-missing-end-of-source-newline'),
 	)(),
@@ -300,6 +304,7 @@
 	'selector-descendant-combinator-no-non-space': importLazy(() =>
 		require('./selector-descendant-combinator-no-non-space'),
 	)(),
+	'selector-disallowed-list': importLazy(() => require('./selector-disallowed-list'))(),
 	'selector-id-pattern': importLazy(() => require('./selector-id-pattern'))(),
 	'selector-list-comma-newline-after': importLazy(() =>
 		require('./selector-list-comma-newline-after'),
diff --git a/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md b/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md
index 847cf1b..2777652 100644
--- a/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md
+++ b/node_modules/stylelint/lib/rules/keyframe-declaration-no-important/README.md
@@ -4,55 +4,30 @@
 
 <!-- prettier-ignore -->
 ```css
-@keyframes important2 {
-  from { margin: 10px }
-  to { margin: 20px !important }
-}                /* ↑ */
-/**                 ↑
-*     This !important */
+@keyframes foo {
+  from { opacity: 0 }
+  to { opacity: 1 !important }
+}              /* ↑ */
+/**               ↑
+*   This !important */
 ```
 
-Using `!important` within keyframes declarations is completely ignored in some browsers:
-[MDN - !important in a keyframe](https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes#!important_in_a_keyframe)
+Using `!important` within keyframes declarations is [completely ignored in some browsers](https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes#!important_in_a_keyframe).
 
 ## Options
 
 ### `true`
 
-The following patterns are considered violations:
+The following patterns is considered a violation:
 
 <!-- prettier-ignore -->
 ```css
-@keyframes important1 {
+@keyframes foo {
   from {
-    margin-top: 50px;
+    opacity: 0;
   }
   to {
-    margin-top: 100px !important;
-  }
-}
-```
-
-<!-- prettier-ignore -->
-```css
-@keyframes important1 {
-  from {
-    margin-top: 50px;
-  }
-  to {
-    margin-top: 100px!important;
-  }
-}
-```
-
-<!-- prettier-ignore -->
-```css
-@keyframes important1 {
-  from {
-    margin-top: 50px;
-  }
-  to {
-    margin-top: 100px ! important;
+    opacity: 1 !important;
   }
 }
 ```
@@ -61,17 +36,17 @@
 
 <!-- prettier-ignore -->
 ```css
-a { color: pink !important; }
+@keyframes foo {
+  from {
+    opacity: 0;
+  }
+  to {
+    opacity: 1;
+  }
+}
 ```
 
 <!-- prettier-ignore -->
 ```css
-@keyframes important1 {
-  from {
-    margin-top: 50px;
-  }
-  to {
-    margin-top: 100px;
-  }
-}
+a { color: pink !important; }
 ```
diff --git a/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js b/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js
index 77f08d3..042b2ec 100644
--- a/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js
+++ b/node_modules/stylelint/lib/rules/length-zero-no-unit/index.js
@@ -2,20 +2,22 @@
 
 'use strict';
 
-const _ = require('lodash');
-const beforeBlockString = require('../../utils/beforeBlockString');
-const blurComments = require('../../utils/blurComments');
-const hasBlock = require('../../utils/hasBlock');
+const valueParser = require('postcss-value-parser');
+
+const atRuleParamIndex = require('../../utils/atRuleParamIndex');
+const declarationValueIndex = require('../../utils/declarationValueIndex');
+const getAtRuleParams = require('../../utils/getAtRuleParams');
+const getDeclarationValue = require('../../utils/getDeclarationValue');
 const isCustomProperty = require('../../utils/isCustomProperty');
-const isLessVariable = require('../../utils/isLessVariable');
 const isMathFunction = require('../../utils/isMathFunction');
+const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
 const keywordSets = require('../../reference/keywordSets');
 const optionsMatches = require('../../utils/optionsMatches');
 const report = require('../../utils/report');
 const ruleMessages = require('../../utils/ruleMessages');
-const styleSearch = require('style-search');
+const setAtRuleParams = require('../../utils/setAtRuleParams');
+const setDeclarationValue = require('../../utils/setDeclarationValue');
 const validateOptions = require('../../utils/validateOptions');
-const valueParser = require('postcss-value-parser');
 
 const ruleName = 'length-zero-no-unit';
 
@@ -23,178 +25,137 @@
 	rejected: 'Unexpected unit',
 });
 
-function rule(actual, secondary, context) {
+function rule(primary, secondary, context) {
 	return (root, result) => {
-		const validOptions = validateOptions(result, ruleName, { actual });
+		const validOptions = validateOptions(
+			result,
+			ruleName,
+			{
+				actual: primary,
+			},
+			{
+				actual: secondary,
+				possible: {
+					ignore: ['custom-properties'],
+				},
+				optional: true,
+			},
+		);
 
-		if (!validOptions) {
-			return;
+		if (!validOptions) return;
+
+		let needsFix;
+
+		function check(node, nodeIndex, valueNode) {
+			const { value, sourceIndex } = valueNode;
+
+			if (isMathFunction(valueNode)) return false;
+
+			if (!isWord(valueNode)) return;
+
+			const numberUnit = valueParser.unit(value);
+
+			if (numberUnit === false) return;
+
+			const { number, unit } = numberUnit;
+
+			if (unit === '') return;
+
+			if (!isLength(unit)) return;
+
+			if (isFraction(unit)) return;
+
+			if (!isZero(number)) return;
+
+			if (context.fix) {
+				valueNode.value = number;
+				needsFix = true;
+
+				return;
+			}
+
+			report({
+				index: nodeIndex + sourceIndex + number.length,
+				message: messages.rejected,
+				node,
+				result,
+				ruleName,
+			});
 		}
 
-		root.walkDecls((decl) => {
-			if (decl.prop.toLowerCase() === 'line-height') {
-				return;
-			}
+		function checkAtRule(node) {
+			if (!isStandardSyntaxAtRule(node)) return;
 
-			const stringValue = blurComments(decl.toString());
-			const ignorableIndexes = new Array(stringValue.length).fill(false);
-			const parsedValue = valueParser(stringValue);
+			needsFix = false;
 
-			parsedValue.walk((node, nodeIndex, nodes) => {
-				if (decl.prop.toLowerCase() === 'font' && node.type === 'div' && node.value === '/') {
-					const lineHeightNode = nodes[nodeIndex + 1];
-					const lineHeightNodeValue = valueParser.stringify(lineHeightNode);
+			const index = atRuleParamIndex(node);
+			const parsedValue = valueParser(getAtRuleParams(node));
 
-					for (let i = 0; i < lineHeightNodeValue.length; i++) {
-						ignorableIndexes[lineHeightNode.sourceIndex + i] = true;
-					}
-
-					return;
-				}
-
-				if (node.type !== 'function') {
-					return;
-				}
-
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				const stringValue = valueParser.stringify(node);
-				const ignoreFlag = isMathFunction(node);
-
-				for (let i = 0; i < stringValue.length; i++) {
-					ignorableIndexes[node.sourceIndex + i] = ignoreFlag;
-				}
+			parsedValue.walk((valueNode) => {
+				return check(node, index, valueNode);
 			});
 
-			check(stringValue, decl, ignorableIndexes);
-		});
-
-		root.walkAtRules((atRule) => {
-			// Ignore Less variables
-			if (isLessVariable(atRule)) {
-				return;
-			}
-
-			const source = hasBlock(atRule)
-				? beforeBlockString(atRule, { noRawBefore: true })
-				: atRule.toString();
-
-			check(source, atRule);
-		});
-
-		function check(value, node, ignorableIndexes = []) {
-			if (optionsMatches(secondary, 'ignore', 'custom-properties') && isCustomProperty(value)) {
-				return;
-			}
-
-			const fixPositions = [];
-
-			styleSearch({ source: value, target: '0' }, (match) => {
-				const index = match.startIndex;
-
-				// Given a 0 somewhere in the full property value (not in a string, thanks
-				// to styleSearch) we need to isolate the value that contains the zero.
-				// To do so, we'll find the last index before the 0 of a character that would
-				// divide one value in a list from another, and the next index of such a
-				// character; then we build a substring from those indexes, which we can
-				// assess.
-
-				// If a single value includes multiple 0's (e.g. 100.01px), we don't want
-				// each 0 to be treated as a separate value, possibly resulting in multiple
-				// warnings for the same value (e.g. 0.00px).
-				//
-				// This check prevents that from happening: we build and check against a
-				// Set containing all the indexes that are part of a value already validated.
-				if (ignorableIndexes[index]) {
-					return;
-				}
-
-				const prevValueBreakIndex = _.findLastIndex(value.substr(0, index), (char) => {
-					return [' ', ',', ')', '(', '#', ':', '\n', '\t'].includes(char);
-				});
-
-				// Ignore hex colors
-				if (value[prevValueBreakIndex] === '#') {
-					return;
-				}
-
-				// If no prev break was found, this value starts at 0
-				const valueWithZeroStart = prevValueBreakIndex === -1 ? 0 : prevValueBreakIndex + 1;
-
-				const nextValueBreakIndex = _.findIndex(value.substr(valueWithZeroStart), (char) => {
-					return [' ', ',', ')', '/'].includes(char);
-				});
-
-				// If no next break was found, this value ends at the end of the string
-				const valueWithZeroEnd =
-					nextValueBreakIndex === -1 ? value.length : nextValueBreakIndex + valueWithZeroStart;
-
-				const valueWithZero = value.slice(valueWithZeroStart, valueWithZeroEnd);
-				const parsedValue = valueParser.unit(valueWithZero);
-
-				if (!parsedValue || (parsedValue && !parsedValue.unit)) {
-					return;
-				}
-
-				if (parsedValue.unit.toLowerCase() === 'fr') {
-					return;
-				}
-
-				// Add the indexes to ignorableIndexes so the same value will not
-				// be checked multiple times.
-				_.range(valueWithZeroStart, valueWithZeroEnd).forEach((i) => (ignorableIndexes[i] = true));
-
-				// Only pay attention if the value parses to 0
-				// and units with lengths
-				if (
-					Number.parseFloat(valueWithZero) !== 0 ||
-					!keywordSets.lengthUnits.has(parsedValue.unit.toLowerCase())
-				) {
-					return;
-				}
-
-				if (context.fix) {
-					fixPositions.unshift({
-						startIndex: valueWithZeroStart,
-						length: valueWithZeroEnd - valueWithZeroStart,
-					});
-
-					return;
-				}
-
-				report({
-					message: messages.rejected,
-					node,
-					index: valueWithZeroEnd - parsedValue.unit.length,
-					result,
-					ruleName,
-				});
-			});
-
-			if (fixPositions.length) {
-				fixPositions.forEach((fixPosition) => {
-					if (node.type === 'atrule') {
-						// Use `-1` for `@` character before each at rule
-						const realIndex =
-							fixPosition.startIndex - node.name.length - node.raws.afterName.length - 1;
-
-						node.params = replaceZero(node.params, realIndex, fixPosition.length);
-					} else {
-						const realIndex = fixPosition.startIndex - node.prop.length - node.raws.between.length;
-
-						node.value = replaceZero(node.value, realIndex, fixPosition.length);
-					}
-				});
+			if (needsFix) {
+				setAtRuleParams(node, parsedValue.toString());
 			}
 		}
+
+		function checkDecl(node) {
+			needsFix = false;
+
+			const { prop } = node;
+
+			if (isLineHeight(prop)) return;
+
+			if (optionsMatches(secondary, 'ignore', 'custom-properties') && isCustomProperty(prop))
+				return;
+
+			const index = declarationValueIndex(node);
+			const parsedValue = valueParser(getDeclarationValue(node));
+
+			parsedValue.walk((valueNode, valueNodeIndex, valueNodes) => {
+				if (isLineHeightValue(node, valueNodes, valueNodeIndex)) return;
+
+				return check(node, index, valueNode);
+			});
+
+			if (needsFix) {
+				setDeclarationValue(node, parsedValue.toString());
+			}
+		}
+
+		root.walkAtRules(checkAtRule);
+		root.walkDecls(checkDecl);
 	};
 }
 
-function replaceZero(input, startIndex, length) {
-	const stringStart = input.slice(0, startIndex);
-	const stringEnd = input.slice(startIndex + length);
+function isLineHeightValue({ prop }, nodes, index) {
+	return (
+		prop.toLowerCase() === 'font' &&
+		index > 0 &&
+		nodes[index - 1].type === 'div' &&
+		nodes[index - 1].value === '/'
+	);
+}
 
-	return `${stringStart}0${stringEnd}`;
+function isLineHeight(prop) {
+	return prop.toLowerCase() === 'line-height';
+}
+
+function isWord({ type }) {
+	return type === 'word';
+}
+
+function isLength(unit) {
+	return keywordSets.lengthUnits.has(unit.toLowerCase());
+}
+
+function isFraction(unit) {
+	return unit.toLowerCase() === 'fr';
+}
+
+function isZero(number) {
+	return Number.parseFloat(number) === 0;
 }
 
 rule.ruleName = ruleName;
diff --git a/node_modules/stylelint/lib/rules/linebreaks/index.js b/node_modules/stylelint/lib/rules/linebreaks/index.js
index 241eff7..a3c7577 100644
--- a/node_modules/stylelint/lib/rules/linebreaks/index.js
+++ b/node_modules/stylelint/lib/rules/linebreaks/index.js
@@ -32,13 +32,13 @@
 
 			root.walk((node) => {
 				propertiesToUpdate.forEach((property) => {
-					const fixedData = fixData(_.get(node, property), shouldHaveCR);
+					const fixedData = fixData(_.get(node, property));
 
 					_.set(node, property, fixedData);
 				});
 			});
 
-			root.raws.after = fixData(root.raws.after, shouldHaveCR);
+			root.raws.after = fixData(root.raws.after);
 		} else {
 			const lines = root.source.input.css.split('\n');
 
@@ -49,62 +49,47 @@
 					line += '\n';
 				}
 
-				if (hasError(line, shouldHaveCR)) {
+				if (hasError(line)) {
 					const lineNum = i + 1;
 					const colNum = line.length;
 
-					reportNewlineError(shouldHaveCR, lineNum, colNum, actual, result);
+					reportNewlineError(lineNum, colNum);
 				}
 			}
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function hasError(dataToCheck, shouldHaveCR) {
+		function hasError(dataToCheck) {
 			const hasNewlineToVerify = /[\r\n]/.test(dataToCheck);
 			const hasCR = hasNewlineToVerify ? /\r/.test(dataToCheck) : false;
 
 			return hasNewlineToVerify && hasCR !== shouldHaveCR;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function fixData(data, shouldHaveCR) {
+		function fixData(data) {
 			if (data) {
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				let result = data.replace(/\r/g, '');
+				let res = data.replace(/\r/g, '');
 
 				if (shouldHaveCR) {
-					result = result.replace(/\n/g, '\r\n');
+					res = res.replace(/\n/g, '\r\n');
 				}
 
-				return result;
+				return res;
 			}
 
 			return data;
 		}
 
-		function createReportNode(line, column) {
+		function reportNewlineError(line, column) {
 			// Creating a node manually helps us to point to empty lines.
-			return postcss.rule({
+			const node = postcss.rule({
 				source: {
-					start: {
-						line,
-						column,
-					},
+					start: { line, column },
 				},
 			});
-		}
-
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function reportNewlineError(shouldHaveCR, lineNum, colNum, actual, result) {
-			const reportNode = createReportNode(lineNum, colNum);
 
 			report({
 				message: messages.expected(actual),
-				node: reportNode,
+				node,
 				result,
 				ruleName,
 			});
diff --git a/node_modules/stylelint/lib/rules/max-empty-lines/index.js b/node_modules/stylelint/lib/rules/max-empty-lines/index.js
index e1dae75..e6b6d38 100644
--- a/node_modules/stylelint/lib/rules/max-empty-lines/index.js
+++ b/node_modules/stylelint/lib/rules/max-empty-lines/index.js
@@ -151,10 +151,8 @@
 			}
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function replaceEmptyLines(max, str, isSpecialCase = false) {
-			const repeatTimes = isSpecialCase ? max : max + 1;
+		function replaceEmptyLines(maxLines, str, isSpecialCase = false) {
+			const repeatTimes = isSpecialCase ? maxLines : maxLines + 1;
 
 			if (repeatTimes === 0 || typeof str !== 'string') {
 				return '';
diff --git a/node_modules/stylelint/lib/rules/max-line-length/index.js b/node_modules/stylelint/lib/rules/max-line-length/index.js
index 87a42c7..6dd3cfc 100644
--- a/node_modules/stylelint/lib/rules/max-line-length/index.js
+++ b/node_modules/stylelint/lib/rules/max-line-length/index.js
@@ -66,19 +66,19 @@
 		skippedSubStrings = skippedSubStrings.sort((a, b) => a[0] - b[0]);
 
 		// Check first line
-		checkNewline(rootString, { endIndex: 0 }, root);
+		checkNewline({ endIndex: 0 });
 		// Check subsequent lines
 		styleSearch({ source: rootString, target: ['\n'], comments: 'check' }, (match) =>
-			checkNewline(rootString, match, root),
+			checkNewline(match),
 		);
 
-		function complain(index, rootNode) {
+		function complain(index) {
 			report({
 				index,
 				result,
 				ruleName,
 				message: messages.expected(maxLength),
-				node: rootNode,
+				node: root,
 			});
 		}
 
@@ -101,9 +101,7 @@
 			return excluded;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkNewline(rootString, match, root) {
+		function checkNewline(match) {
 			let nextNewlineIndex = rootString.indexOf('\n', match.endIndex);
 
 			if (rootString[nextNewlineIndex - 1] === '\r') {
@@ -153,7 +151,7 @@
 
 			if (ignoreNonComments) {
 				if (match.insideComment) {
-					return complain(complaintIndex, root);
+					return complain(complaintIndex);
 				}
 
 				// This trimming business is to notice when the line starts a
@@ -165,7 +163,7 @@
 					return;
 				}
 
-				return complain(complaintIndex, root);
+				return complain(complaintIndex);
 			}
 
 			// If there are no spaces besides initial (indent) spaces, ignore it
@@ -175,7 +173,7 @@
 				return;
 			}
 
-			return complain(complaintIndex, root);
+			return complain(complaintIndex);
 		}
 	};
 }
diff --git a/node_modules/stylelint/lib/rules/max-nesting-depth/index.js b/node_modules/stylelint/lib/rules/max-nesting-depth/index.js
index 9dc969a..f375d10 100644
--- a/node_modules/stylelint/lib/rules/max-nesting-depth/index.js
+++ b/node_modules/stylelint/lib/rules/max-nesting-depth/index.js
@@ -87,9 +87,7 @@
 			const normalized = parser().processSync(selector, { lossless: false });
 			const selectors = normalized.split(',');
 
-			// TODO: Issue #4985
-			// eslint-disable-next-line no-shadow
-			return selectors.every((selector) => selector.startsWith('&:') && selector[2] !== ':');
+			return selectors.every((sel) => sel.startsWith('&:') && sel[2] !== ':');
 		}
 
 		if (
diff --git a/node_modules/stylelint/lib/rules/named-grid-areas-no-invalid/README.md b/node_modules/stylelint/lib/rules/named-grid-areas-no-invalid/README.md
index 9462cfe..007247f 100644
--- a/node_modules/stylelint/lib/rules/named-grid-areas-no-invalid/README.md
+++ b/node_modules/stylelint/lib/rules/named-grid-areas-no-invalid/README.md
@@ -4,20 +4,30 @@
 
 <!-- prettier-ignore -->
 ```css
-a { grid-template-areas: 
+a { grid-template-areas:
       "a a a"
       "b b b"; }
 /**   ↑
  *  This named grid area */
 ```
 
+For a named grid area to be valid, all strings must define:
+
+- the same number of cell tokens
+- at least one cell token
+
+And all named grid areas that spans multiple grid cells must form a single filled-in rectangle.
+
 ## Options
 
 ### `true`
 
 The following patterns are considered violations:
 
-All strings must define the same number of cell tokens.
+<!-- prettier-ignore -->
+```css
+a { grid-template-areas: "" }
+```
 
 <!-- prettier-ignore -->
 ```css
@@ -25,35 +35,16 @@
                          "b b b b"; }
 ```
 
-All strings must define at least one cell token.
-
-<!-- prettier-ignore -->
-```css
-a { grid-template-areas: "" }
-```
-
-All named grid areas that spans multiple grid cells must form a single filled-in rectangle.
-
 <!-- prettier-ignore -->
 ```css
 a { grid-template-areas: "a a a"
                          "b b a"; }
 ```
 
-The following patterns are _not_ considered violations:
+The following pattern is _not_ considered a violation:
 
 <!-- prettier-ignore -->
 ```css
 a { grid-template-areas: "a a a"
                          "b b b"; }
 ```
-
-<!-- prettier-ignore -->
-```css
-a { grid-template-areas: "a a a" "b b b"; }
-```
-
-<!-- prettier-ignore -->
-```css
-a { grid-template-areas: none; }
-```
diff --git a/node_modules/stylelint/lib/rules/no-descending-specificity/index.js b/node_modules/stylelint/lib/rules/no-descending-specificity/index.js
index 28089ea..5d26782 100644
--- a/node_modules/stylelint/lib/rules/no-descending-specificity/index.js
+++ b/node_modules/stylelint/lib/rules/no-descending-specificity/index.js
@@ -46,27 +46,31 @@
 
 		const selectorContextLookup = nodeContextLookup();
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
+		root.walkRules((ruleNode) => {
 			// Ignore custom property set `--foo: {};`
-			if (isCustomPropertySet(rule)) {
+			if (isCustomPropertySet(ruleNode)) {
 				return;
 			}
 
 			// Ignore nested property `foo: {};`
-			if (!isStandardSyntaxRule(rule)) {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
 			// Ignores selectors within list of selectors
-			if (optionsMatches(options, 'ignore', 'selectors-within-list') && rule.selectors.length > 1) {
+			if (
+				optionsMatches(options, 'ignore', 'selectors-within-list') &&
+				ruleNode.selectors.length > 1
+			) {
 				return;
 			}
 
-			const comparisonContext = selectorContextLookup.getContext(rule, findAtRuleContext(rule));
+			const comparisonContext = selectorContextLookup.getContext(
+				ruleNode,
+				findAtRuleContext(ruleNode),
+			);
 
-			rule.selectors.forEach((selector) => {
+			ruleNode.selectors.forEach((selector) => {
 				const trimSelector = selector.trim();
 
 				// Ignore `.selector, { }`
@@ -75,24 +79,22 @@
 				}
 
 				// The edge-case of duplicate selectors will act acceptably
-				const index = rule.selector.indexOf(trimSelector);
+				const index = ruleNode.selector.indexOf(trimSelector);
 
 				// Resolve any nested selectors before checking
-				resolvedNestedSelector(selector, rule).forEach((resolvedSelector) => {
-					parseSelector(resolvedSelector, result, rule, (s) => {
+				resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
+					parseSelector(resolvedSelector, result, ruleNode, (s) => {
 						if (!isStandardSyntaxSelector(resolvedSelector)) {
 							return;
 						}
 
-						checkSelector(s, rule, index, comparisonContext);
+						checkSelector(s, ruleNode, index, comparisonContext);
 					});
 				});
 			});
 		});
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkSelector(selectorNode, rule, sourceIndex, comparisonContext) {
+		function checkSelector(selectorNode, ruleNode, sourceIndex, comparisonContext) {
 			const selector = selectorNode.toString();
 			const referenceSelectorNode = lastCompoundSelectorWithoutPseudoClasses(selectorNode);
 			const selectorSpecificity = specificity.calculate(selector)[0].specificityArray;
@@ -111,7 +113,7 @@
 					report({
 						ruleName,
 						result,
-						node: rule,
+						node: ruleNode,
 						message: messages.rejected(selector, priorEntry.selector),
 						index: sourceIndex,
 					});
diff --git a/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js b/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js
index b6656c8..399a579 100644
--- a/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js
+++ b/node_modules/stylelint/lib/rules/no-duplicate-selectors/index.js
@@ -47,18 +47,17 @@
 		// from other rules that share the same parent and the same source.
 		const selectorContextLookup = nodeContextLookup();
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (isKeyframeRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (isKeyframeRule(ruleNode)) {
 				return;
 			}
 
-			const contextSelectorSet = selectorContextLookup.getContext(rule, findAtRuleContext(rule));
-			// TODO: Issue #4985
-			// eslint-disable-next-line no-shadow
-			const resolvedSelectors = rule.selectors.reduce((result, selector) => {
-				return _.union(result, resolvedNestedSelector(selector, rule));
+			const contextSelectorSet = selectorContextLookup.getContext(
+				ruleNode,
+				findAtRuleContext(ruleNode),
+			);
+			const resolvedSelectors = ruleNode.selectors.reduce((selectors, selector) => {
+				return _.union(selectors, resolvedNestedSelector(selector, ruleNode));
 			}, []);
 
 			const normalizedSelectorList = resolvedSelectors.map(normalizeSelector);
@@ -67,7 +66,7 @@
 			// doesn't matter
 			const sortedSelectorList = normalizedSelectorList.slice().sort().join(',');
 
-			const selectorLine = rule.source.start.line;
+			const selectorLine = ruleNode.source.start.line;
 
 			// Complain if the same selector list occurs twice
 
@@ -77,7 +76,7 @@
 			const selectorListParsed = [];
 
 			if (shouldDisallowDuplicateInList) {
-				parseSelector(sortedSelectorList, result, rule, (selectors) => {
+				parseSelector(sortedSelectorList, result, ruleNode, (selectors) => {
 					selectors.each((s) => {
 						const selector = String(s);
 
@@ -95,13 +94,15 @@
 			if (previousDuplicatePosition) {
 				// If the selector isn't nested we can use its raw value; otherwise,
 				// we have to approximate something for the message -- which is close enough
-				const isNestedSelector = resolvedSelectors.join(',') !== rule.selectors.join(',');
-				const selectorForMessage = isNestedSelector ? resolvedSelectors.join(', ') : rule.selector;
+				const isNestedSelector = resolvedSelectors.join(',') !== ruleNode.selectors.join(',');
+				const selectorForMessage = isNestedSelector
+					? resolvedSelectors.join(', ')
+					: ruleNode.selector;
 
 				return report({
 					result,
 					ruleName,
-					node: rule,
+					node: ruleNode,
 					message: messages.rejected(selectorForMessage, previousDuplicatePosition),
 				});
 			}
@@ -110,7 +111,7 @@
 			const reportedSelectors = new Set();
 
 			// Or complain if one selector list contains the same selector more than once
-			rule.selectors.forEach((selector) => {
+			ruleNode.selectors.forEach((selector) => {
 				const normalized = normalizeSelector(selector);
 
 				if (presentedSelectors.has(normalized)) {
@@ -121,7 +122,7 @@
 					report({
 						result,
 						ruleName,
-						node: rule,
+						node: ruleNode,
 						message: messages.rejected(selector, selectorLine),
 					});
 					reportedSelectors.add(normalized);
diff --git a/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js b/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js
index 8267424..f5f7520 100644
--- a/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js
+++ b/node_modules/stylelint/lib/rules/no-eol-whitespace/index.js
@@ -117,15 +117,13 @@
 					comments: 'check',
 				},
 				(match) => {
-					// TODO: Issue #4985
-					// eslint-disable-next-line no-shadow
-					const errorIndex = findErrorStartIndex(match.startIndex, string, {
+					const index = findErrorStartIndex(match.startIndex, string, {
 						ignoreEmptyLines,
 						isRootFirst,
 					});
 
-					if (errorIndex > -1) {
-						callback(errorIndex);
+					if (index > -1) {
+						callback(index);
 					}
 				},
 			);
@@ -230,9 +228,7 @@
 			}
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function fixText(value, fix, isRootFirst) {
+		function fixText(value, fixFn, isRootFirst) {
 			if (!value) {
 				return;
 			}
@@ -253,7 +249,7 @@
 
 			if (lastIndex) {
 				fixed += value.slice(lastIndex);
-				fix(fixed);
+				fixFn(fixed);
 			}
 		}
 	};
diff --git a/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js b/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js
index 3661a39..606d459 100644
--- a/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js
+++ b/node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.js
@@ -30,14 +30,13 @@
 				});
 			}
 		});
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			rule.selectors.forEach((selector) => {
+
+		root.walkRules((ruleNode) => {
+			ruleNode.selectors.forEach((selector) => {
 				if (selector.startsWith('//')) {
 					report({
 						message: messages.rejected,
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/README.md b/node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/README.md
new file mode 100644
index 0000000..77cbe45
--- /dev/null
+++ b/node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/README.md
@@ -0,0 +1,51 @@
+# no-invalid-position-at-import-rule
+
+Disallow invalid position `@import` rules within a stylesheet.
+
+<!-- prettier-ignore -->
+```css
+a {}
+@import 'foo.css';
+/** ↑
+  * This @import */
+```
+
+Any `@import` rules must precede all other valid at-rules and style rules in a stylesheet (ignoring `@charset`), or else the `@import` rule is invalid.
+
+## Options
+
+### `true`
+
+The following patterns are considered violations:
+
+<!-- prettier-ignore -->
+```css
+a {}
+@import 'foo.css';
+```
+
+<!-- prettier-ignore -->
+```css
+@media print {}
+@import 'foo.css';
+```
+
+The following patterns are _not_ considered violations:
+
+<!-- prettier-ignore -->
+```css
+@import 'foo.css';
+a {}
+```
+
+<!-- prettier-ignore -->
+```css
+/* some comment */
+@import 'foo.css';
+```
+
+<!-- prettier-ignore -->
+```css
+@charset 'utf-8';
+@import 'foo.css';
+```
diff --git a/node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/index.js b/node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/index.js
new file mode 100644
index 0000000..f9f4643
--- /dev/null
+++ b/node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/index.js
@@ -0,0 +1,58 @@
+// @ts-nocheck
+
+'use strict';
+
+const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
+const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
+const report = require('../../utils/report');
+const ruleMessages = require('../../utils/ruleMessages');
+const validateOptions = require('../../utils/validateOptions');
+
+const ruleName = 'no-invalid-position-at-import-rule';
+
+const messages = ruleMessages(ruleName, {
+	rejected: 'Unexpected invalid position @import rule',
+});
+
+function rule(actual) {
+	return (root, result) => {
+		const validOptions = validateOptions(result, ruleName, { actual });
+
+		if (!validOptions) {
+			return;
+		}
+
+		let invalidPosition = false;
+
+		root.walk((node) => {
+			const nodeName = node.name && node.name.toLowerCase();
+
+			if (
+				(node.type === 'atrule' &&
+					nodeName !== 'charset' &&
+					nodeName !== 'import' &&
+					isStandardSyntaxAtRule(node)) ||
+				(node.type === 'rule' && isStandardSyntaxRule(node))
+			) {
+				invalidPosition = true;
+
+				return;
+			}
+
+			if (node.type === 'atrule' && nodeName === 'import') {
+				if (invalidPosition) {
+					report({
+						message: messages.rejected,
+						node,
+						result,
+						ruleName,
+					});
+				}
+			}
+		});
+	};
+}
+
+rule.ruleName = ruleName;
+rule.messages = messages;
+module.exports = rule;
diff --git a/node_modules/stylelint/lib/rules/no-irregular-whitespace/README.md b/node_modules/stylelint/lib/rules/no-irregular-whitespace/README.md
new file mode 100644
index 0000000..e50586b
--- /dev/null
+++ b/node_modules/stylelint/lib/rules/no-irregular-whitespace/README.md
@@ -0,0 +1,57 @@
+# no-irregular-whitespace
+
+Disallow irregular whitespaces.
+
+<!-- prettier-ignore -->
+```css
+    .firstClass .secondClass {}
+/**            ↑
+ * Irregular whitespace. Selector would fail to match '.firstClass' */
+```
+
+## Options
+
+### `true`
+
+The following patterns are considered violations:
+
+<!-- prettier-ignore -->
+```css
+.firstClass .secondClass {}
+```
+
+The following patterns are _not_ considered violations:
+
+<!-- prettier-ignore -->
+```css
+.firstClass .secondClass { /* Writing comments with irregular whitespaces */ }
+```
+
+## Unicode reference of irregular whitespaces
+
+```
+\u000B - Line Tabulation (\v) - <VT>
+\u000C - Form Feed (\f) - <FF>
+\u00A0 - No-Break Space - <NBSP>
+\u0085 - Next Line
+\u1680 - Ogham Space Mark
+\u180E - Mongolian Vowel Separator - <MVS>
+\uFEFF - Zero Width No-Break Space - <BOM>
+\u2000 - En Quad
+\u2001 - Em Quad
+\u2002 - En Space - <ENSP>
+\u2003 - Em Space - <EMSP>
+\u2004 - Tree-Per-Em
+\u2005 - Four-Per-Em
+\u2006 - Six-Per-Em
+\u2007 - Figure Space
+\u2008 - Punctuation Space - <PUNCSP>
+\u2009 - Thin Space
+\u200A - Hair Space
+\u200B - Zero Width Space - <ZWSP>
+\u2028 - Line Separator
+\u2029 - Paragraph Separator
+\u202F - Narrow No-Break Space
+\u205F - Medium Mathematical Space
+\u3000 - Ideographic Space
+```
diff --git a/node_modules/stylelint/lib/rules/no-irregular-whitespace/index.js b/node_modules/stylelint/lib/rules/no-irregular-whitespace/index.js
new file mode 100644
index 0000000..a0af350
--- /dev/null
+++ b/node_modules/stylelint/lib/rules/no-irregular-whitespace/index.js
@@ -0,0 +1,134 @@
+// @ts-nocheck
+
+'use strict';
+
+const report = require('../../utils/report');
+const ruleMessages = require('../../utils/ruleMessages');
+const validateOptions = require('../../utils/validateOptions');
+
+const ruleName = 'no-irregular-whitespace';
+const messages = ruleMessages(ruleName, {
+	unexpected: 'Unexpected irregular whitespace',
+});
+
+const IRREGULAR_WHITESPACES = [
+	'\u000B', // Line Tabulation (\v) - <VT>
+	'\u000C', // Form Feed (\f) - <FF>
+	'\u00A0', // No-Break Space - <NBSP>
+	'\u0085', // Next Line
+	'\u1680', // Ogham Space Mark
+	'\u180E', // Mongolian Vowel Separator - <MVS>
+	'\uFEFF', // Zero Width No-Break Space - <BOM>
+	'\u2000', // En Quad
+	'\u2001', // Em Quad
+	'\u2002', // En Space - <ENSP>
+	'\u2003', // Em Space - <EMSP>
+	'\u2004', // Tree-Per-Em
+	'\u2005', // Four-Per-Em
+	'\u2006', // Six-Per-Em
+	'\u2007', // Figure Space
+	'\u2008', // Punctuation Space - <PUNCSP>
+	'\u2009', // Thin Space
+	'\u200A', // Hair Space
+	'\u200B', // Zero Width Space - <ZWSP>
+	'\u2028', // Line Separator
+	'\u2029', // Paragraph Separator
+	'\u202F', // Narrow No-Break Space
+	'\u205F', // Medium Mathematical Space
+	'\u3000', // Ideographic Space
+];
+
+const IRREGULAR_WHITESPACES_PATTERN = new RegExp(`([${IRREGULAR_WHITESPACES.join('')}])`);
+
+const generateInvalidWhitespaceValidator = () => {
+	return (str) => typeof str === 'string' && IRREGULAR_WHITESPACES_PATTERN.exec(str);
+};
+
+const declarationSchema = {
+	prop: 'string',
+	value: 'string',
+	raws: {
+		before: 'string',
+		between: 'string',
+	},
+};
+
+const atRuleSchema = {
+	name: 'string',
+	params: 'string',
+	raws: {
+		before: 'string',
+		between: 'string',
+		afterName: 'string',
+		after: 'string',
+	},
+};
+
+const ruleSchema = {
+	selector: 'string',
+	raws: {
+		before: 'string',
+		between: 'string',
+		after: 'string',
+	},
+};
+
+const generateNodeValidator = (nodeSchema, validator) => {
+	const allKeys = Object.keys(nodeSchema);
+	const validatorForKey = {};
+
+	allKeys.forEach((key) => {
+		if (typeof nodeSchema[key] === 'string') validatorForKey[key] = validator;
+
+		if (typeof nodeSchema[key] === 'object')
+			validatorForKey[key] = generateNodeValidator(nodeSchema[key], validator);
+	});
+
+	// This will be called many times, so it's optimized for performance and not readibility.
+	// Surprisingly, this seem to be slightly faster then concatenating the params and running the validator once.
+	return (node) => {
+		for (const currentKey of allKeys) {
+			if (validatorForKey[currentKey](node[currentKey])) {
+				return validatorForKey[currentKey](node[currentKey]);
+			}
+		}
+	};
+};
+
+function rule(on) {
+	return (root, result) => {
+		const validOptions = validateOptions(result, ruleName, { actual: on });
+
+		if (!validOptions) {
+			return;
+		}
+
+		const genericValidator = generateInvalidWhitespaceValidator();
+
+		const validate = (node, validator) => {
+			const issue = validator(node);
+
+			if (issue) {
+				report({
+					ruleName,
+					result,
+					message: messages.unexpected,
+					node,
+					word: issue[1],
+				});
+			}
+		};
+
+		const atRuleValidator = generateNodeValidator(atRuleSchema, genericValidator);
+		const ruleValidator = generateNodeValidator(ruleSchema, genericValidator);
+		const declValidator = generateNodeValidator(declarationSchema, genericValidator);
+
+		root.walkAtRules((atRule) => validate(atRule, atRuleValidator));
+		root.walkRules((selector) => validate(selector, ruleValidator));
+		root.walkDecls((declaration) => validate(declaration, declValidator));
+	};
+}
+
+rule.ruleName = ruleName;
+rule.messages = messages;
+module.exports = rule;
diff --git a/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js b/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js
index ded0db7..e323764 100644
--- a/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js
+++ b/node_modules/stylelint/lib/rules/rule-empty-line-before/index.js
@@ -52,33 +52,31 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
 			// Ignore the first node
-			if (isFirstNodeOfRoot(rule)) {
+			if (isFirstNodeOfRoot(ruleNode)) {
 				return;
 			}
 
 			// Optionally ignore the expectation if a comment precedes this node
 			if (
 				optionsMatches(options, 'ignore', 'after-comment') &&
-				rule.prev() &&
-				rule.prev().type === 'comment'
+				ruleNode.prev() &&
+				ruleNode.prev().type === 'comment'
 			) {
 				return;
 			}
 
 			// Optionally ignore the node if it is the first nested
-			if (optionsMatches(options, 'ignore', 'first-nested') && isFirstNested(rule)) {
+			if (optionsMatches(options, 'ignore', 'first-nested') && isFirstNested(ruleNode)) {
 				return;
 			}
 
-			const isNested = rule.parent.type !== 'root';
+			const isNested = ruleNode.parent.type !== 'root';
 
 			// Optionally ignore the expectation if inside a block
 			if (optionsMatches(options, 'ignore', 'inside-block') && isNested) {
@@ -86,7 +84,7 @@
 			}
 
 			// Ignore if the expectation is for multiple and the rule is single-line
-			if (expectation.includes('multi-line') && isSingleLineString(rule.toString())) {
+			if (expectation.includes('multi-line') && isSingleLineString(ruleNode.toString())) {
 				return;
 			}
 
@@ -94,19 +92,19 @@
 
 			// Optionally reverse the expectation if any exceptions apply
 			if (
-				(optionsMatches(options, 'except', 'first-nested') && isFirstNested(rule)) ||
-				(optionsMatches(options, 'except', 'after-rule') && isAfterRule(rule)) ||
+				(optionsMatches(options, 'except', 'first-nested') && isFirstNested(ruleNode)) ||
+				(optionsMatches(options, 'except', 'after-rule') && isAfterRule(ruleNode)) ||
 				(optionsMatches(options, 'except', 'inside-block-and-after-rule') &&
 					isNested &&
-					isAfterRule(rule)) ||
+					isAfterRule(ruleNode)) ||
 				(optionsMatches(options, 'except', 'after-single-line-comment') &&
-					isAfterSingleLineComment(rule)) ||
+					isAfterSingleLineComment(ruleNode)) ||
 				(optionsMatches(options, 'except', 'inside-block') && isNested)
 			) {
 				expectEmptyLineBefore = !expectEmptyLineBefore;
 			}
 
-			const hasEmptyLineBefore = hasEmptyLine(rule.raws.before);
+			const hasEmptyLineBefore = hasEmptyLine(ruleNode.raws.before);
 
 			// Return if the expectation is met
 			if (expectEmptyLineBefore === hasEmptyLineBefore) {
@@ -116,9 +114,9 @@
 			// Fix
 			if (context.fix) {
 				if (expectEmptyLineBefore) {
-					addEmptyLineBefore(rule, context.newline);
+					addEmptyLineBefore(ruleNode, context.newline);
 				} else {
-					removeEmptyLinesBefore(rule, context.newline);
+					removeEmptyLinesBefore(ruleNode, context.newline);
 				}
 
 				return;
@@ -128,7 +126,7 @@
 
 			report({
 				message,
-				node: rule,
+				node: ruleNode,
 				result,
 				ruleName,
 			});
@@ -136,10 +134,8 @@
 	};
 }
 
-// TODO: Issue #4985
-// eslint-disable-next-line no-shadow
-function isAfterRule(rule) {
-	const prevNode = getPreviousNonSharedLineCommentNode(rule);
+function isAfterRule(ruleNode) {
+	const prevNode = getPreviousNonSharedLineCommentNode(ruleNode);
 
 	return prevNode && prevNode.type === 'rule';
 }
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js b/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js
index 53bf1b4..f05ad1a 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-brackets-space-inside/index.js
@@ -30,21 +30,19 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[')) {
+			if (!ruleNode.selector.includes('[')) {
 				return;
 			}
 
-			const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
+			const selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
 
 			let hasFixed;
-			const fixedSelector = parseSelector(selector, result, rule, (selectorTree) => {
+			const fixedSelector = parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkAttributes((attributeNode) => {
 					const attributeSelectorString = attributeNode.toString();
 
@@ -105,10 +103,10 @@
 			});
 
 			if (hasFixed) {
-				if (!rule.raws.selector) {
-					rule.selector = fixedSelector;
+				if (!ruleNode.raws.selector) {
+					ruleNode.selector = fixedSelector;
 				} else {
-					rule.raws.selector.raw = fixedSelector;
+					ruleNode.raws.selector.raw = fixedSelector;
 				}
 			}
 
@@ -118,7 +116,7 @@
 					index,
 					result,
 					ruleName,
-					node: rule,
+					node: ruleNode,
 				});
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-operator-allowed-list/index.js b/node_modules/stylelint/lib/rules/selector-attribute-operator-allowed-list/index.js
index 46e7427..3c32071 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-operator-allowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-operator-allowed-list/index.js
@@ -28,18 +28,16 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
+			if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
 				return;
 			}
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkAttributes((attributeNode) => {
 					const operator = attributeNode.operator;
 
@@ -49,7 +47,7 @@
 
 					report({
 						message: messages.rejected(operator),
-						node: rule,
+						node: ruleNode,
 						index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
 						result,
 						ruleName,
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js b/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js
index 82fb25d..1caed2f 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-operator-blacklist/index.js
@@ -36,18 +36,16 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
+			if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
 				return;
 			}
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkAttributes((attributeNode) => {
 					const operator = attributeNode.operator;
 
@@ -57,7 +55,7 @@
 
 					report({
 						message: messages.rejected(operator),
-						node: rule,
+						node: ruleNode,
 						index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
 						result,
 						ruleName,
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-operator-disallowed-list/index.js b/node_modules/stylelint/lib/rules/selector-attribute-operator-disallowed-list/index.js
index 2569897..a8a1ac9 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-operator-disallowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-operator-disallowed-list/index.js
@@ -28,18 +28,16 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
+			if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
 				return;
 			}
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkAttributes((attributeNode) => {
 					const operator = attributeNode.operator;
 
@@ -49,7 +47,7 @@
 
 					report({
 						message: messages.rejected(operator),
-						node: rule,
+						node: ruleNode,
 						index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
 						result,
 						ruleName,
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js b/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js
index 162e93a..f4fccaa 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-operator-space-after/index.js
@@ -39,12 +39,8 @@
 							const rawOperator = _.get(attributeNode, 'raws.operator');
 
 							if (rawOperator) {
-								// TODO: Issue #4985
-								// eslint-disable-next-line no-shadow
-								const operatorAfter = rawOperator.slice(attributeNode.operator.length);
-
 								return {
-									operatorAfter,
+									operatorAfter: rawOperator.slice(attributeNode.operator.length),
 									setOperatorAfter(fixed) {
 										delete attributeNode.raws.operator;
 										_.set(attributeNode, 'raws.spaces.operator.after', fixed);
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js b/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js
index 052cd5c..bd1c360 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-operator-whitelist/index.js
@@ -36,18 +36,16 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
+			if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
 				return;
 			}
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkAttributes((attributeNode) => {
 					const operator = attributeNode.operator;
 
@@ -57,7 +55,7 @@
 
 					report({
 						message: messages.rejected(operator),
-						node: rule,
+						node: ruleNode,
 						index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
 						result,
 						ruleName,
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md b/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md
index 38187fd..c62a300 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md
+++ b/node_modules/stylelint/lib/rules/selector-attribute-quotes/README.md
@@ -9,6 +9,8 @@
  * These quotes */
 ```
 
+The [`fix` option](../../../docs/user-guide/usage/options.md#fix) can automatically fix most of the problems reported by this rule.
+
 ## Options
 
 `string`: `"always"|"never"`
diff --git a/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js b/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js
index ff66b31..b1c4db4 100644
--- a/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js
+++ b/node_modules/stylelint/lib/rules/selector-attribute-quotes/index.js
@@ -2,6 +2,7 @@
 
 'use strict';
 
+const getRuleSelector = require('../../utils/getRuleSelector');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const parseSelector = require('../../utils/parseSelector');
 const report = require('../../utils/report');
@@ -15,7 +16,9 @@
 	rejected: (value) => `Unexpected quotes around "${value}"`,
 });
 
-function rule(expectation) {
+const acceptedQuoteMark = '"';
+
+function rule(expectation, secondary, context) {
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, {
 			actual: expectation,
@@ -26,37 +29,51 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
+			if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
 				return;
 			}
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(getRuleSelector(ruleNode), result, ruleNode, (selectorTree) => {
+				let selectorFixed = false;
+
 				selectorTree.walkAttributes((attributeNode) => {
 					if (!attributeNode.operator) {
 						return;
 					}
 
 					if (!attributeNode.quoted && expectation === 'always') {
-						complain(
-							messages.expected(attributeNode.value),
-							attributeNode.sourceIndex + attributeNode.offsetOf('value'),
-						);
+						if (context.fix) {
+							selectorFixed = true;
+							attributeNode.quoteMark = acceptedQuoteMark;
+						} else {
+							complain(
+								messages.expected(attributeNode.value),
+								attributeNode.sourceIndex + attributeNode.offsetOf('value'),
+							);
+						}
 					}
 
 					if (attributeNode.quoted && expectation === 'never') {
-						complain(
-							messages.rejected(attributeNode.value),
-							attributeNode.sourceIndex + attributeNode.offsetOf('value'),
-						);
+						if (context.fix) {
+							selectorFixed = true;
+							attributeNode.quoteMark = null;
+						} else {
+							complain(
+								messages.rejected(attributeNode.value),
+								attributeNode.sourceIndex + attributeNode.offsetOf('value'),
+							);
+						}
 					}
 				});
+
+				if (selectorFixed) {
+					ruleNode.selector = selectorTree.toString();
+				}
 			});
 
 			function complain(message, index) {
@@ -65,7 +82,7 @@
 					index,
 					result,
 					ruleName,
-					node: rule,
+					node: ruleNode,
 				});
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-class-pattern/index.js b/node_modules/stylelint/lib/rules/selector-class-pattern/index.js
index 1731ad3..5cd1e5f 100644
--- a/node_modules/stylelint/lib/rules/selector-class-pattern/index.js
+++ b/node_modules/stylelint/lib/rules/selector-class-pattern/index.js
@@ -44,13 +44,11 @@
 		const shouldResolveNestedSelectors = _.get(options, 'resolveNestedSelectors');
 		const normalizedPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			const selector = rule.selector;
-			const selectors = rule.selectors;
+		root.walkRules((ruleNode) => {
+			const selector = ruleNode.selector;
+			const selectors = ruleNode.selectors;
 
-			if (!isStandardSyntaxRule(rule)) {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
@@ -60,23 +58,19 @@
 
 			// Only bother resolving selectors that have an interpolating &
 			if (shouldResolveNestedSelectors && hasInterpolatingAmpersand(selector)) {
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				resolveNestedSelector(selector, rule).forEach((selector) => {
-					if (!isStandardSyntaxSelector(selector)) {
+				resolveNestedSelector(selector, ruleNode).forEach((nestedSelector) => {
+					if (!isStandardSyntaxSelector(nestedSelector)) {
 						return;
 					}
 
-					parseSelector(selector, result, rule, (s) => checkSelector(s, rule));
+					parseSelector(nestedSelector, result, ruleNode, (s) => checkSelector(s, ruleNode));
 				});
 			} else {
-				parseSelector(selector, result, rule, (s) => checkSelector(s, rule));
+				parseSelector(selector, result, ruleNode, (s) => checkSelector(s, ruleNode));
 			}
 		});
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkSelector(fullSelector, rule) {
+		function checkSelector(fullSelector, ruleNode) {
 			fullSelector.walkClasses((classNode) => {
 				const value = classNode.value;
 				const sourceIndex = classNode.sourceIndex;
@@ -89,7 +83,7 @@
 					result,
 					ruleName,
 					message: messages.expected(value, pattern),
-					node: rule,
+					node: ruleNode,
 					index: sourceIndex,
 				});
 			});
diff --git a/node_modules/stylelint/lib/rules/selector-combinator-allowed-list/index.js b/node_modules/stylelint/lib/rules/selector-combinator-allowed-list/index.js
index b26c671..18d042b 100644
--- a/node_modules/stylelint/lib/rules/selector-combinator-allowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-combinator-allowed-list/index.js
@@ -27,16 +27,14 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
-			parseSelector(selector, result, rule, (fullSelector) => {
+			parseSelector(selector, result, ruleNode, (fullSelector) => {
 				fullSelector.walkCombinators((combinatorNode) => {
 					if (!isStandardSyntaxCombinator(combinatorNode)) {
 						return;
@@ -52,7 +50,7 @@
 						result,
 						ruleName,
 						message: messages.rejected(value),
-						node: rule,
+						node: ruleNode,
 						index: combinatorNode.sourceIndex,
 					});
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js b/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js
index d55740c..c8b2e30 100644
--- a/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-combinator-blacklist/index.js
@@ -35,16 +35,14 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
-			parseSelector(selector, result, rule, (fullSelector) => {
+			parseSelector(selector, result, ruleNode, (fullSelector) => {
 				fullSelector.walkCombinators((combinatorNode) => {
 					if (!isStandardSyntaxCombinator(combinatorNode)) {
 						return;
@@ -60,7 +58,7 @@
 						result,
 						ruleName,
 						message: messages.rejected(value),
-						node: rule,
+						node: ruleNode,
 						index: combinatorNode.sourceIndex,
 					});
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-combinator-disallowed-list/index.js b/node_modules/stylelint/lib/rules/selector-combinator-disallowed-list/index.js
index 0b38f47..4af0a8b 100644
--- a/node_modules/stylelint/lib/rules/selector-combinator-disallowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-combinator-disallowed-list/index.js
@@ -27,16 +27,14 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
-			parseSelector(selector, result, rule, (fullSelector) => {
+			parseSelector(selector, result, ruleNode, (fullSelector) => {
 				fullSelector.walkCombinators((combinatorNode) => {
 					if (!isStandardSyntaxCombinator(combinatorNode)) {
 						return;
@@ -52,7 +50,7 @@
 						result,
 						ruleName,
 						message: messages.rejected(value),
-						node: rule,
+						node: ruleNode,
 						index: combinatorNode.sourceIndex,
 					});
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js b/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js
index ca10eff..7635e3e 100644
--- a/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-combinator-whitelist/index.js
@@ -35,16 +35,14 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
-			parseSelector(selector, result, rule, (fullSelector) => {
+			parseSelector(selector, result, ruleNode, (fullSelector) => {
 				fullSelector.walkCombinators((combinatorNode) => {
 					if (!isStandardSyntaxCombinator(combinatorNode)) {
 						return;
@@ -60,7 +58,7 @@
 						result,
 						ruleName,
 						message: messages.rejected(value),
-						node: rule,
+						node: ruleNode,
 						index: combinatorNode.sourceIndex,
 					});
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js b/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js
index 78394fa..1895f71 100644
--- a/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js
+++ b/node_modules/stylelint/lib/rules/selector-descendant-combinator-no-non-space/index.js
@@ -24,21 +24,19 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
 			let hasFixed = false;
-			const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
+			const selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
 
 			// Return early for selectors containing comments
 			// TODO: renable when parser and stylelint are compatible
 			if (selector.includes('/*')) return;
 
-			const fixedSelector = parseSelector(selector, result, rule, (fullSelector) => {
+			const fixedSelector = parseSelector(selector, result, ruleNode, (fullSelector) => {
 				fullSelector.walkCombinators((combinatorNode) => {
 					if (combinatorNode.value !== ' ') {
 						return;
@@ -65,7 +63,7 @@
 							result,
 							ruleName,
 							message: messages.rejected(value),
-							node: rule,
+							node: ruleNode,
 							index: combinatorNode.sourceIndex,
 						});
 					}
@@ -73,10 +71,10 @@
 			});
 
 			if (hasFixed) {
-				if (!rule.raws.selector) {
-					rule.selector = fixedSelector;
+				if (!ruleNode.raws.selector) {
+					ruleNode.selector = fixedSelector;
 				} else {
-					rule.raws.selector.raw = fixedSelector;
+					ruleNode.raws.selector.raw = fixedSelector;
 				}
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-disallowed-list/README.md b/node_modules/stylelint/lib/rules/selector-disallowed-list/README.md
new file mode 100644
index 0000000..ca20b59
--- /dev/null
+++ b/node_modules/stylelint/lib/rules/selector-disallowed-list/README.md
@@ -0,0 +1,68 @@
+# selector-disallowed-list
+
+Specify a list of disallowed selectors.
+
+<!-- prettier-ignore -->
+```css
+    .foo > .bar
+/** ↑
+ * This is selector */
+```
+
+## Options
+
+`array|string|regexp`: `["array", "of", "selectors", /or/, "/regex/"]|"selector"|"/regex/"`
+
+If a string is surrounded with `"/"` (e.g. `"/\.foo/"`), it is interpreted as a regular expression.
+
+Given:
+
+```
+["a > .foo", /\[data-.+]/]
+```
+
+The following patterns are considered violations:
+
+<!-- prettier-ignore -->
+```css
+a > .foo {}
+```
+
+<!-- prettier-ignore -->
+```css
+a[data-auto="1"] {}
+```
+
+<!-- prettier-ignore -->
+```css
+.foo, [data-auto="1"] {}
+```
+
+The following patterns are _not_ considered violations:
+
+<!-- prettier-ignore -->
+```css
+.foo {}
+```
+
+<!-- prettier-ignore -->
+```css
+a
+>
+.foo {}
+```
+
+<!-- prettier-ignore -->
+```css
+.bar > a > .foo {}
+```
+
+<!-- prettier-ignore -->
+```css
+.data-auto {}
+```
+
+<!-- prettier-ignore -->
+```css
+a[href] {}
+```
diff --git a/node_modules/stylelint/lib/rules/selector-disallowed-list/index.js b/node_modules/stylelint/lib/rules/selector-disallowed-list/index.js
new file mode 100644
index 0000000..9505314
--- /dev/null
+++ b/node_modules/stylelint/lib/rules/selector-disallowed-list/index.js
@@ -0,0 +1,56 @@
+// @ts-nocheck
+
+'use strict';
+
+const _ = require('lodash');
+const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
+const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
+const report = require('../../utils/report');
+const ruleMessages = require('../../utils/ruleMessages');
+const validateOptions = require('../../utils/validateOptions');
+
+const ruleName = 'selector-disallowed-list';
+
+const messages = ruleMessages(ruleName, {
+	rejected: (selector) => `Unexpected selector "${selector}"`,
+});
+
+function rule(listInput) {
+	const list = [].concat(listInput);
+
+	return (root, result) => {
+		const validOptions = validateOptions(result, ruleName, {
+			actual: list,
+			possible: [_.isString, _.isRegExp],
+		});
+
+		if (!validOptions) {
+			return;
+		}
+
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
+				return;
+			}
+
+			const selector = ruleNode.selector;
+
+			if (!matchesStringOrRegExp(selector, list)) {
+				return;
+			}
+
+			report({
+				result,
+				ruleName,
+				message: messages.rejected(selector),
+				node: ruleNode,
+			});
+		});
+	};
+}
+
+rule.primaryOptionArray = true;
+
+rule.ruleName = ruleName;
+rule.messages = messages;
+module.exports = rule;
diff --git a/node_modules/stylelint/lib/rules/selector-id-pattern/index.js b/node_modules/stylelint/lib/rules/selector-id-pattern/index.js
index 659386e..77912cb 100644
--- a/node_modules/stylelint/lib/rules/selector-id-pattern/index.js
+++ b/node_modules/stylelint/lib/rules/selector-id-pattern/index.js
@@ -29,16 +29,14 @@
 
 		const normalizedPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
-			parseSelector(selector, result, rule, (fullSelector) => {
+			parseSelector(selector, result, ruleNode, (fullSelector) => {
 				fullSelector.walk((selectorNode) => {
 					if (selectorNode.type !== 'id') {
 						return;
@@ -55,7 +53,7 @@
 						result,
 						ruleName,
 						message: messages.expected(value, pattern),
-						node: rule,
+						node: ruleNode,
 						index: sourceIndex,
 					});
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js b/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js
index 022f1fc..7a0a444 100644
--- a/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js
+++ b/node_modules/stylelint/lib/rules/selector-list-comma-newline-after/index.js
@@ -30,17 +30,15 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
 			// Get raw selector so we can allow end-of-line comments, e.g.
 			// a, /* comment */
 			// b {}
-			const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
+			const selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
 
 			const fixIndices = [];
 
@@ -76,7 +74,7 @@
 
 							report({
 								message: m,
-								node: rule,
+								node: ruleNode,
 								index: match.startIndex,
 								result,
 								ruleName,
@@ -104,10 +102,10 @@
 						fixedSelector = beforeSelector + afterSelector;
 					});
 
-				if (rule.raws.selector) {
-					rule.raws.selector.raw = fixedSelector;
+				if (ruleNode.raws.selector) {
+					ruleNode.raws.selector.raw = fixedSelector;
 				} else {
-					rule.selector = fixedSelector;
+					ruleNode.selector = fixedSelector;
 				}
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-max-attribute/index.js b/node_modules/stylelint/lib/rules/selector-max-attribute/index.js
index c6fa88c..a30e663 100644
--- a/node_modules/stylelint/lib/rules/selector-max-attribute/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-attribute/index.js
@@ -4,6 +4,7 @@
 
 const _ = require('lodash');
 const isContextFunctionalPseudoClass = require('../../utils/isContextFunctionalPseudoClass');
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const optionsMatches = require('../../utils/optionsMatches');
 const parseSelector = require('../../utils/parseSelector');
@@ -28,13 +29,7 @@
 			ruleName,
 			{
 				actual: max,
-				possible: [
-					// TODO: Issue #4985
-					// eslint-disable-next-line no-shadow
-					function (max) {
-						return typeof max === 'number' && max >= 0;
-					},
-				],
+				possible: isNonNegativeInteger,
 			},
 			{
 				actual: options,
diff --git a/node_modules/stylelint/lib/rules/selector-max-class/index.js b/node_modules/stylelint/lib/rules/selector-max-class/index.js
index ad1faca..696967a 100644
--- a/node_modules/stylelint/lib/rules/selector-max-class/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-class/index.js
@@ -3,6 +3,7 @@
 'use strict';
 
 const isContextFunctionalPseudoClass = require('../../utils/isContextFunctionalPseudoClass');
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const parseSelector = require('../../utils/parseSelector');
 const report = require('../../utils/report');
@@ -21,13 +22,7 @@
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, {
 			actual: max,
-			possible: [
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				function (max) {
-					return typeof max === 'number' && max >= 0;
-				},
-			],
+			possible: isNonNegativeInteger,
 		});
 
 		if (!validOptions) {
diff --git a/node_modules/stylelint/lib/rules/selector-max-combinators/index.js b/node_modules/stylelint/lib/rules/selector-max-combinators/index.js
index 071fc44..75a73ee 100644
--- a/node_modules/stylelint/lib/rules/selector-max-combinators/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-combinators/index.js
@@ -2,6 +2,7 @@
 
 'use strict';
 
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const parseSelector = require('../../utils/parseSelector');
 const report = require('../../utils/report');
@@ -22,13 +23,7 @@
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, {
 			actual: max,
-			possible: [
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				function (max) {
-					return typeof max === 'number' && max >= 0;
-				},
-			],
+			possible: isNonNegativeInteger,
 		});
 
 		if (!validOptions) {
diff --git a/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js b/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js
index 0a59bf3..ff6b880 100644
--- a/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.js
@@ -3,6 +3,7 @@
 'use strict';
 
 const isContextFunctionalPseudoClass = require('../../utils/isContextFunctionalPseudoClass');
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const parseSelector = require('../../utils/parseSelector');
 const report = require('../../utils/report');
@@ -23,13 +24,7 @@
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, {
 			actual: max,
-			possible: [
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				function (max) {
-					return typeof max === 'number' && max > 0;
-				},
-			],
+			possible: isNonNegativeInteger,
 		});
 
 		if (!validOptions) {
@@ -37,15 +32,13 @@
 		}
 
 		// Finds actual selectors in selectorNode object and checks them
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkSelector(selectorNode, rule) {
+		function checkSelector(selectorNode, ruleNode) {
 			let compoundCount = 1;
 
 			selectorNode.each((childNode) => {
 				// Only traverse inside actual selectors and context functional pseudo-classes
 				if (childNode.type === 'selector' || isContextFunctionalPseudoClass(childNode)) {
-					checkSelector(childNode, rule);
+					checkSelector(childNode, ruleNode);
 				}
 
 				// Compound selectors are separated by combinators, so increase count when meeting one
@@ -58,25 +51,23 @@
 				report({
 					ruleName,
 					result,
-					node: rule,
+					node: ruleNode,
 					message: messages.expected(selectorNode, max),
 					word: selectorNode,
 				});
 			}
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			// Using `rule.selectors` gets us each selector if there is a comma separated set
-			rule.selectors.forEach((selector) => {
-				resolvedNestedSelector(selector, rule).forEach((resolvedSelector) => {
+			// Using `.selectors` gets us each selector if there is a comma separated set
+			ruleNode.selectors.forEach((selector) => {
+				resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
 					// Process each resolved selector with `checkSelector` via postcss-selector-parser
-					parseSelector(resolvedSelector, result, rule, (s) => checkSelector(s, rule));
+					parseSelector(resolvedSelector, result, ruleNode, (s) => checkSelector(s, ruleNode));
 				});
 			});
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js b/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js
index 27bb2a3..0beef4d 100644
--- a/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-empty-lines/index.js
@@ -31,20 +31,18 @@
 		const allowedLFNewLinesString = context.fix ? '\n'.repeat(maxAdjacentNewlines) : '';
 		const allowedCRLFNewLinesString = context.fix ? '\r\n'.repeat(maxAdjacentNewlines) : '';
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
+		root.walkRules((ruleNode) => {
+			const selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
 
 			if (context.fix) {
 				const newSelectorString = selector
 					.replace(new RegExp(violatedLFNewLinesRegex, 'gm'), allowedLFNewLinesString)
 					.replace(new RegExp(violatedCRLFNewLinesRegex, 'gm'), allowedCRLFNewLinesString);
 
-				if (rule.raws.selector) {
-					rule.raws.selector.raw = newSelectorString;
+				if (ruleNode.raws.selector) {
+					ruleNode.raws.selector.raw = newSelectorString;
 				} else {
-					rule.selector = newSelectorString;
+					ruleNode.selector = newSelectorString;
 				}
 			} else if (
 				violatedLFNewLinesRegex.test(selector) ||
@@ -52,7 +50,7 @@
 			) {
 				report({
 					message: messages.expected(max),
-					node: rule,
+					node: ruleNode,
 					index: 0,
 					result,
 					ruleName,
diff --git a/node_modules/stylelint/lib/rules/selector-max-id/index.js b/node_modules/stylelint/lib/rules/selector-max-id/index.js
index c38fae5..9486850 100644
--- a/node_modules/stylelint/lib/rules/selector-max-id/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-id/index.js
@@ -4,6 +4,7 @@
 
 const _ = require('lodash');
 const isContextFunctionalPseudoClass = require('../../utils/isContextFunctionalPseudoClass');
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const optionsMatches = require('../../utils/optionsMatches');
 const parseSelector = require('../../utils/parseSelector');
@@ -26,13 +27,7 @@
 			ruleName,
 			{
 				actual: max,
-				possible: [
-					// TODO: Issue #4985
-					// eslint-disable-next-line no-shadow
-					function (max) {
-						return typeof max === 'number' && max >= 0;
-					},
-				],
+				possible: isNonNegativeInteger,
 			},
 			{
 				actual: options,
@@ -53,7 +48,7 @@
 				if (
 					childNode.type === 'selector' ||
 					(isContextFunctionalPseudoClass(childNode) &&
-						!isIgnoredContextFunctionalPseudoClass(childNode, options))
+						!isIgnoredContextFunctionalPseudoClass(childNode))
 				) {
 					checkSelector(childNode, ruleNode);
 				}
@@ -72,9 +67,7 @@
 			}
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function isIgnoredContextFunctionalPseudoClass(node, options) {
+		function isIgnoredContextFunctionalPseudoClass(node) {
 			return (
 				node.type === 'pseudo' &&
 				optionsMatches(options, 'ignoreContextFunctionalPseudoClasses', node.value)
diff --git a/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js b/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js
index d129232..a485da3 100644
--- a/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.js
@@ -3,6 +3,7 @@
 'use strict';
 
 const isContextFunctionalPseudoClass = require('../../utils/isContextFunctionalPseudoClass');
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const keywordSets = require('../../reference/keywordSets');
 const parseSelector = require('../../utils/parseSelector');
@@ -22,13 +23,7 @@
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, {
 			actual: max,
-			possible: [
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				function (max) {
-					return typeof max === 'number' && max >= 0;
-				},
-			],
+			possible: isNonNegativeInteger,
 		});
 
 		if (!validOptions) {
diff --git a/node_modules/stylelint/lib/rules/selector-max-specificity/index.js b/node_modules/stylelint/lib/rules/selector-max-specificity/index.js
index a441d05..58acc47 100755
--- a/node_modules/stylelint/lib/rules/selector-max-specificity/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-specificity/index.js
@@ -17,10 +17,7 @@
 const ruleName = 'selector-max-specificity';
 
 const messages = ruleMessages(ruleName, {
-	// TODO: Issue #4985
-	// eslint-disable-next-line no-shadow
-	expected: (selector, specificity) =>
-		`Expected "${selector}" to have a specificity no more than "${specificity}"`,
+	expected: (selector, max) => `Expected "${selector}" to have a specificity no more than "${max}"`,
 });
 
 // Return an array representation of zero specificity. We need a new array each time so that it can mutated
@@ -47,12 +44,8 @@
 			{
 				actual: max,
 				possible: [
-					// TODO: Issue #4985
-					// eslint-disable-next-line no-shadow
-					function (max) {
-						// Check that the max specificity is in the form "a,b,c"
-						return /^\d+,\d+,\d+$/.test(max);
-					},
+					// Check that the max specificity is in the form "a,b,c"
+					(spec) => /^\d+,\d+,\d+$/.test(spec),
 				],
 			},
 			{
@@ -79,12 +72,10 @@
 
 		// Calculate the the specificity of the most specific direct child
 		const maxChildSpecificity = (node) =>
-			// TODO: Issue #4985
-			// eslint-disable-next-line no-shadow
-			node.reduce((max, child) => {
+			node.reduce((maxSpec, child) => {
 				const childSpecificity = nodeSpecificity(child); // eslint-disable-line no-use-before-define
 
-				return specificity.compare(childSpecificity, max) === 1 ? childSpecificity : max;
+				return specificity.compare(childSpecificity, maxSpec) === 1 ? childSpecificity : maxSpec;
 			}, zeroSpecificity());
 
 		// Calculate the specificity of a pseudo selector including own value and children
@@ -146,23 +137,21 @@
 
 		const maxSpecificityArray = `0,${max}`.split(',').map(parseFloat);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			// Using rule.selectors gets us each selector in the eventuality we have a comma separated set
-			rule.selectors.forEach((selector) => {
-				resolvedNestedSelector(selector, rule).forEach((resolvedSelector) => {
+			// Using `.selectors` gets us each selector in the eventuality we have a comma separated set
+			ruleNode.selectors.forEach((selector) => {
+				resolvedNestedSelector(selector, ruleNode).forEach((resolvedSelector) => {
 					try {
 						// Skip non-standard syntax selectors
 						if (!isStandardSyntaxSelector(resolvedSelector)) {
 							return;
 						}
 
-						parseSelector(resolvedSelector, result, rule, (selectorTree) => {
+						parseSelector(resolvedSelector, result, ruleNode, (selectorTree) => {
 							// Check if the selector specificity exceeds the allowed maximum
 							if (
 								specificity.compare(maxChildSpecificity(selectorTree), maxSpecificityArray) === 1
@@ -170,7 +159,7 @@
 								report({
 									ruleName,
 									result,
-									node: rule,
+									node: ruleNode,
 									message: messages.expected(resolvedSelector, max),
 									word: selector,
 								});
@@ -178,7 +167,7 @@
 						});
 					} catch {
 						result.warn('Cannot parse selector', {
-							node: rule,
+							node: ruleNode,
 							stylelintType: 'parseError',
 						});
 					}
diff --git a/node_modules/stylelint/lib/rules/selector-max-type/index.js b/node_modules/stylelint/lib/rules/selector-max-type/index.js
index 5a1a770..3b0cb2f 100644
--- a/node_modules/stylelint/lib/rules/selector-max-type/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-type/index.js
@@ -5,6 +5,7 @@
 const _ = require('lodash');
 const isContextFunctionalPseudoClass = require('../../utils/isContextFunctionalPseudoClass');
 const isKeyframeSelector = require('../../utils/isKeyframeSelector');
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isOnlyWhitespace = require('../../utils/isOnlyWhitespace');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const isStandardSyntaxSelector = require('../../utils/isStandardSyntaxSelector');
@@ -32,11 +33,7 @@
 			ruleName,
 			{
 				actual: max,
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				possible(max) {
-					return typeof max === 'number' && max >= 0;
-				},
+				possible: isNonNegativeInteger,
 			},
 			{
 				actual: options,
diff --git a/node_modules/stylelint/lib/rules/selector-max-universal/index.js b/node_modules/stylelint/lib/rules/selector-max-universal/index.js
index 5bac09c..940f88c 100644
--- a/node_modules/stylelint/lib/rules/selector-max-universal/index.js
+++ b/node_modules/stylelint/lib/rules/selector-max-universal/index.js
@@ -2,6 +2,7 @@
 
 'use strict';
 
+const isNonNegativeInteger = require('../../utils/isNonNegativeInteger');
 const isStandardSyntaxRule = require('../../utils/isStandardSyntaxRule');
 const parseSelector = require('../../utils/parseSelector');
 const report = require('../../utils/report');
@@ -23,13 +24,7 @@
 	return (root, result) => {
 		const validOptions = validateOptions(result, ruleName, {
 			actual: max,
-			possible: [
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
-				function (max) {
-					return typeof max === 'number' && max >= 0;
-				},
-			],
+			possible: isNonNegativeInteger,
 		});
 
 		if (!validOptions) {
diff --git a/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js b/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js
index 11e0a8e..8a3014d 100644
--- a/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js
+++ b/node_modules/stylelint/lib/rules/selector-nested-pattern/index.js
@@ -28,18 +28,16 @@
 
 		const normalizedPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (rule.parent.type !== 'rule') {
+		root.walkRules((ruleNode) => {
+			if (ruleNode.parent.type !== 'rule') {
 				return;
 			}
 
-			if (!isStandardSyntaxRule(rule)) {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (normalizedPattern.test(selector)) {
 				return;
@@ -49,7 +47,7 @@
 				result,
 				ruleName,
 				message: messages.expected(selector, pattern),
-				node: rule,
+				node: ruleNode,
 			});
 		});
 	};
diff --git a/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js b/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js
index 429755b..84feeeb 100644
--- a/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js
+++ b/node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.js
@@ -65,18 +65,16 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (isKeyframeRule(rule)) {
+			if (isKeyframeRule(ruleNode)) {
 				return;
 			}
 
-			if (!isSelectorCharacters(rule.selector)) {
+			if (!isSelectorCharacters(ruleNode.selector)) {
 				return;
 			}
 
@@ -110,19 +108,19 @@
 				});
 			}
 
-			resolvedNestedSelector(rule.selector, rule).forEach((resolvedSelector) => {
+			resolvedNestedSelector(ruleNode.selector, ruleNode).forEach((resolvedSelector) => {
 				if (!isStandardSyntaxSelector(resolvedSelector)) {
 					return;
 				}
 
-				parseSelector(resolvedSelector, result, rule, checkSelector);
+				parseSelector(resolvedSelector, result, ruleNode, checkSelector);
 			});
 
 			function complain(index) {
 				report({
 					ruleName,
 					result,
-					node: rule,
+					node: ruleNode,
 					message: messages.rejected,
 					index,
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js b/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js
index 6f44df3..b4e4f83 100644
--- a/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js
+++ b/node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.js
@@ -36,16 +36,14 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					if (isAutoprefixable.selector(pseudoNode.value)) {
 						if (optionsMatches(options, 'ignoreSelectors', pseudoNode.value)) {
@@ -53,7 +51,7 @@
 						}
 
 						if (context.fix) {
-							rule.selector = isAutoprefixable.unprefix(rule.selector);
+							ruleNode.selector = isAutoprefixable.unprefix(ruleNode.selector);
 
 							return;
 						}
@@ -62,8 +60,8 @@
 							result,
 							ruleName,
 							message: messages.rejected(pseudoNode.value),
-							node: rule,
-							index: (rule.raws.before || '').length + pseudoNode.sourceIndex,
+							node: ruleNode,
+							index: (ruleNode.raws.before || '').length + pseudoNode.sourceIndex,
 						});
 					}
 				});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-allowed-list/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-allowed-list/index.js
index 9810604..c7aea9e 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-allowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-allowed-list/index.js
@@ -28,20 +28,18 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes(':')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -59,7 +57,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js
index 693b57f..0c0ce9f 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-blacklist/index.js
@@ -36,20 +36,18 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes(':')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -68,7 +66,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js
index 132031e..fc69526 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-case/index.js
@@ -27,23 +27,21 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes(':')) {
 				return;
 			}
 
 			const fixedSelector = parseSelector(
-				rule.raws.selector ? rule.raws.selector.raw : rule.selector,
+				ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector,
 				result,
-				rule,
+				ruleNode,
 				(selectorTree) => {
 					selectorTree.walkPseudos((pseudoNode) => {
 						const pseudo = pseudoNode.value;
@@ -74,7 +72,7 @@
 
 						report({
 							message: messages.expected(pseudo, expectedPseudo),
-							node: rule,
+							node: ruleNode,
 							index: pseudoNode.sourceIndex,
 							ruleName,
 							result,
@@ -84,10 +82,10 @@
 			);
 
 			if (context.fix) {
-				if (rule.raws.selector) {
-					rule.raws.selector.raw = fixedSelector;
+				if (ruleNode.raws.selector) {
+					ruleNode.raws.selector.raw = fixedSelector;
 				} else {
-					rule.selector = fixedSelector;
+					ruleNode.selector = fixedSelector;
 				}
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-disallowed-list/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-disallowed-list/index.js
index a12e472..a0a5372 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-disallowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-disallowed-list/index.js
@@ -28,20 +28,18 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes(':')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -60,7 +58,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js
index bb59f52..b601b86 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.js
@@ -41,9 +41,7 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function check(selector, result, node) {
+		function check(selector, node) {
 			parseSelector(selector, result, node, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
@@ -149,7 +147,7 @@
 				return;
 			}
 
-			check(selector, result, node);
+			check(selector, node);
 		});
 	};
 }
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js
index cc43a55..5042514 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-parentheses-space-inside/index.js
@@ -28,20 +28,18 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('(')) {
+			if (!ruleNode.selector.includes('(')) {
 				return;
 			}
 
 			let hasFixed = false;
-			const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;
-			const fixedSelector = parseSelector(selector, result, rule, (selectorTree) => {
+			const selector = ruleNode.raws.selector ? ruleNode.raws.selector.raw : ruleNode.selector;
+			const fixedSelector = parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					if (!pseudoNode.length) {
 						return;
@@ -94,10 +92,10 @@
 			});
 
 			if (hasFixed) {
-				if (!rule.raws.selector) {
-					rule.selector = fixedSelector;
+				if (!ruleNode.raws.selector) {
+					ruleNode.selector = fixedSelector;
 				} else {
-					rule.raws.selector.raw = fixedSelector;
+					ruleNode.raws.selector.raw = fixedSelector;
 				}
 			}
 
@@ -107,7 +105,7 @@
 					index,
 					result,
 					ruleName,
-					node: rule,
+					node: ruleNode,
 				});
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js
index 37fd432..0afef48 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-class-whitelist/index.js
@@ -36,20 +36,18 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes(':')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -67,7 +65,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-allowed-list/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-allowed-list/index.js
index 5dc0b17..244db10 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-allowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-allowed-list/index.js
@@ -28,20 +28,18 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes('::')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -59,7 +57,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js
index 2839755..b407dd3 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-blacklist/index.js
@@ -36,20 +36,18 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes('::')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -67,7 +65,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js
index 26682ff..db8a1f9 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-case/index.js
@@ -27,20 +27,18 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes(':')) {
 				return;
 			}
 
-			transformSelector(result, rule, (selectorTree) => {
+			transformSelector(result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const pseudoElement = pseudoNode.value;
 
@@ -70,7 +68,7 @@
 
 					report({
 						message: messages.expected(pseudoElement, expectedPseudoElement),
-						node: rule,
+						node: ruleNode,
 						index: pseudoNode.sourceIndex,
 						ruleName,
 						result,
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js
index 65234b8..696d82f 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.js
@@ -26,14 +26,12 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			// get out early if no pseudo elements or classes
 			if (!selector.includes(':')) {
@@ -59,14 +57,14 @@
 				}
 
 				if (context.fix) {
-					fixPositions.unshift({ rule, startIndex: match.startIndex });
+					fixPositions.unshift({ ruleNode, startIndex: match.startIndex });
 
 					return;
 				}
 
 				report({
 					message: messages.expected(expectation),
-					node: rule,
+					node: ruleNode,
 					index: match.startIndex,
 					result,
 					ruleName,
@@ -81,10 +79,10 @@
 				const extraColon = expectedSingle ? '' : ':';
 
 				fixPositions.forEach((fixPosition) => {
-					rule.selector =
-						rule.selector.substring(0, fixPosition.startIndex - offset) +
+					ruleNode.selector =
+						ruleNode.selector.substring(0, fixPosition.startIndex - offset) +
 						extraColon +
-						rule.selector.substring(fixPosition.startIndex);
+						ruleNode.selector.substring(fixPosition.startIndex);
 				});
 			}
 		});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-disallowed-list/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-disallowed-list/index.js
index 578733d..90374f0 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-disallowed-list/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-disallowed-list/index.js
@@ -28,20 +28,18 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes('::')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -59,7 +57,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js
index 055e72a..3e3d55d 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.js
@@ -38,14 +38,12 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			// Return early before parse if no pseudos for performance
 
@@ -53,7 +51,7 @@
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -78,7 +76,7 @@
 
 					report({
 						message: messages.rejected(value),
-						node: rule,
+						node: ruleNode,
 						index: pseudoNode.sourceIndex,
 						ruleName,
 						result,
diff --git a/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js b/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js
index 428a7a3..d7304a6 100644
--- a/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js
+++ b/node_modules/stylelint/lib/rules/selector-pseudo-element-whitelist/index.js
@@ -36,20 +36,18 @@
 			},
 		);
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			if (!isStandardSyntaxRule(rule)) {
+		root.walkRules((ruleNode) => {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			const selector = rule.selector;
+			const selector = ruleNode.selector;
 
 			if (!selector.includes('::')) {
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkPseudos((pseudoNode) => {
 					const value = pseudoNode.value;
 
@@ -67,7 +65,7 @@
 					report({
 						index: pseudoNode.sourceIndex,
 						message: messages.rejected(name),
-						node: rule,
+						node: ruleNode,
 						result,
 						ruleName,
 					});
diff --git a/node_modules/stylelint/lib/rules/selector-type-case/index.js b/node_modules/stylelint/lib/rules/selector-type-case/index.js
index 8c371a6..30d5975 100644
--- a/node_modules/stylelint/lib/rules/selector-type-case/index.js
+++ b/node_modules/stylelint/lib/rules/selector-type-case/index.js
@@ -40,14 +40,12 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			let hasComments = _.get(rule, 'raws.selector.raw');
-			const selector = hasComments ? hasComments : rule.selector;
-			const selectors = rule.selectors;
+		root.walkRules((ruleNode) => {
+			let hasComments = _.get(ruleNode, 'raws.selector.raw');
+			const selector = hasComments ? hasComments : ruleNode.selector;
+			const selectors = ruleNode.selectors;
 
-			if (!isStandardSyntaxRule(rule)) {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
@@ -55,7 +53,7 @@
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorAST) => {
+			parseSelector(selector, result, ruleNode, (selectorAST) => {
 				selectorAST.walkTags((tag) => {
 					if (!isStandardSyntaxTypeSelector(tag)) {
 						return;
@@ -80,12 +78,12 @@
 								hasComments.slice(0, sourceIndex) +
 								expectedValue +
 								hasComments.slice(sourceIndex + value.length);
-							_.set(rule, 'raws.selector.raw', hasComments);
+							_.set(ruleNode, 'raws.selector.raw', hasComments);
 						} else {
-							rule.selector =
-								rule.selector.slice(0, sourceIndex) +
+							ruleNode.selector =
+								ruleNode.selector.slice(0, sourceIndex) +
 								expectedValue +
-								rule.selector.slice(sourceIndex + value.length);
+								ruleNode.selector.slice(sourceIndex + value.length);
 						}
 
 						return;
@@ -93,7 +91,7 @@
 
 					report({
 						message: messages.expected(value, expectedValue),
-						node: rule,
+						node: ruleNode,
 						index: sourceIndex,
 						ruleName,
 						result,
diff --git a/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js b/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js
index e2cf813..051771c 100644
--- a/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js
+++ b/node_modules/stylelint/lib/rules/selector-type-no-unknown/index.js
@@ -44,13 +44,11 @@
 			return;
 		}
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		root.walkRules((rule) => {
-			const selector = rule.selector;
-			const selectors = rule.selectors;
+		root.walkRules((ruleNode) => {
+			const selector = ruleNode.selector;
+			const selectors = ruleNode.selectors;
 
-			if (!isStandardSyntaxRule(rule)) {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
@@ -58,7 +56,7 @@
 				return;
 			}
 
-			parseSelector(selector, result, rule, (selectorTree) => {
+			parseSelector(selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkTags((tagNode) => {
 					if (!isStandardSyntaxTypeSelector(tagNode)) {
 						return;
@@ -101,7 +99,7 @@
 
 					report({
 						message: messages.rejected(tagName),
-						node: rule,
+						node: ruleNode,
 						index: tagNode.sourceIndex,
 						ruleName,
 						result,
diff --git a/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js b/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js
index 5550d19..96441e6 100644
--- a/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js
+++ b/node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.js
@@ -111,9 +111,7 @@
 			}
 
 			const shortestForm = canCondense(...valuesToShorthand);
-			// TODO: Issue #4985
-			// eslint-disable-next-line no-shadow
-			const shortestFormString = shortestForm.filter((value) => value).join(' ');
+			const shortestFormString = shortestForm.filter(Boolean).join(' ');
 			const valuesFormString = valuesToShorthand.join(' ');
 
 			if (shortestFormString.toLowerCase() === valuesFormString.toLowerCase()) {
diff --git a/node_modules/stylelint/lib/rules/string-no-newline/index.js b/node_modules/stylelint/lib/rules/string-no-newline/index.js
index 328d086..f43a8b3 100644
--- a/node_modules/stylelint/lib/rules/string-no-newline/index.js
+++ b/node_modules/stylelint/lib/rules/string-no-newline/index.js
@@ -40,19 +40,17 @@
 			}
 		});
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkRule(rule) {
+		function checkRule(ruleNode) {
 			// Get out quickly if there are no new line
-			if (!reNewLine.test(rule.selector)) {
+			if (!reNewLine.test(ruleNode.selector)) {
 				return;
 			}
 
-			if (!isStandardSyntaxSelector(rule.selector)) {
+			if (!isStandardSyntaxSelector(ruleNode.selector)) {
 				return;
 			}
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
 				selectorTree.walkAttributes((attributeNode) => {
 					if (!reNewLine.test(attributeNode.value)) {
 						return;
@@ -73,7 +71,7 @@
 
 					report({
 						message: messages.rejected,
-						node: rule,
+						node: ruleNode,
 						index: openIndex,
 						result,
 						ruleName,
diff --git a/node_modules/stylelint/lib/rules/string-quotes/index.js b/node_modules/stylelint/lib/rules/string-quotes/index.js
index 076a5b8..fb0d705 100644
--- a/node_modules/stylelint/lib/rules/string-quotes/index.js
+++ b/node_modules/stylelint/lib/rules/string-quotes/index.js
@@ -62,20 +62,18 @@
 			}
 		});
 
-		// TODO: Issue #4985
-		// eslint-disable-next-line no-shadow
-		function checkRule(rule) {
-			if (!isStandardSyntaxRule(rule)) {
+		function checkRule(ruleNode) {
+			if (!isStandardSyntaxRule(ruleNode)) {
 				return;
 			}
 
-			if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
+			if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
 				return;
 			}
 
 			const fixPositions = [];
 
-			parseSelector(rule.selector, result, rule, (selectorTree) => {
+			parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
 				let selectorFixed = false;
 
 				selectorTree.walkAttributes((attributeNode) => {
@@ -99,7 +97,7 @@
 								} else {
 									report({
 										message: messages.expected(expectation === 'single' ? 'double' : expectation),
-										node: rule,
+										node: ruleNode,
 										index: attributeNode.sourceIndex + attributeNode.offsetOf('value'),
 										result,
 										ruleName,
@@ -121,7 +119,7 @@
 								} else {
 									report({
 										message: messages.expected(expectation),
-										node: rule,
+										node: ruleNode,
 										index: attributeNode.sourceIndex + attributeNode.offsetOf('value'),
 										result,
 										ruleName,
@@ -142,7 +140,7 @@
 						} else {
 							report({
 								message: messages.expected(expectation),
-								node: rule,
+								node: ruleNode,
 								index: attributeNode.sourceIndex + attributeNode.offsetOf('value'),
 								result,
 								ruleName,
@@ -152,12 +150,12 @@
 				});
 
 				if (selectorFixed) {
-					rule.selector = selectorTree.toString();
+					ruleNode.selector = selectorTree.toString();
 				}
 			});
 
 			fixPositions.forEach((fixIndex) => {
-				rule.selector = replaceQuote(rule.selector, fixIndex, correctQuote);
+				ruleNode.selector = replaceQuote(ruleNode.selector, fixIndex, correctQuote);
 			});
 		}
 
diff --git a/node_modules/stylelint/lib/rules/unit-case/index.js b/node_modules/stylelint/lib/rules/unit-case/index.js
index 6f97f3d..97383bf 100644
--- a/node_modules/stylelint/lib/rules/unit-case/index.js
+++ b/node_modules/stylelint/lib/rules/unit-case/index.js
@@ -27,7 +27,7 @@
 			return;
 		}
 
-		function check(node, value, getIndex) {
+		function check(node, checkedValue, getIndex) {
 			const violations = [];
 
 			function processValue(valueNode) {
@@ -51,11 +51,9 @@
 				return true;
 			}
 
-			const parsedValue = valueParser(value).walk((valueNode) => {
+			const parsedValue = valueParser(checkedValue).walk((valueNode) => {
 				// Ignore wrong units within `url` function
 				let needFix = false;
-				// TODO: Issue #4985
-				// eslint-disable-next-line no-shadow
 				const value = valueNode.value;
 
 				if (valueNode.type === 'function' && value.toLowerCase() === 'url') {
diff --git a/node_modules/stylelint/lib/rules/unit-no-unknown/index.js b/node_modules/stylelint/lib/rules/unit-no-unknown/index.js
index 9375db5..6b75ad2 100644
--- a/node_modules/stylelint/lib/rules/unit-no-unknown/index.js
+++ b/node_modules/stylelint/lib/rules/unit-no-unknown/index.js
@@ -65,11 +65,9 @@
 				}
 
 				if (isMap(valueNode)) {
-					// TODO: Issue #4985
-					// eslint-disable-next-line no-shadow
-					valueNode.nodes.forEach((node, index) => {
+					valueNode.nodes.forEach(({ sourceIndex }, index) => {
 						if (!(index % mapPropertyNameIndexOffset)) {
-							ignoredMapProperties.push(node.sourceIndex);
+							ignoredMapProperties.push(sourceIndex);
 						}
 					});
 				}
@@ -123,9 +121,7 @@
 
 						if (/^(?:-webkit-)?image-set[\s(]/i.test(value)) {
 							const imageSet = parsedValue.nodes.find(
-								// TODO: Issue #4985
-								// eslint-disable-next-line no-shadow
-								(node) => vendor.unprefixed(node.value) === 'image-set',
+								(n) => vendor.unprefixed(n.value) === 'image-set',
 							);
 							const imageSetValueLastIndex = _.last(imageSet.nodes).sourceIndex;
 
diff --git a/node_modules/stylelint/lib/utils/getAtRuleParams.js b/node_modules/stylelint/lib/utils/getAtRuleParams.js
new file mode 100644
index 0000000..ea891dc
--- /dev/null
+++ b/node_modules/stylelint/lib/utils/getAtRuleParams.js
@@ -0,0 +1,11 @@
+'use strict';
+
+const _ = require('lodash');
+
+/**
+ * @param {import('postcss').AtRule} atRule
+ * @returns {string}
+ */
+module.exports = function getAtRuleParams(atRule) {
+	return _.get(atRule, 'raws.params.raw', atRule.params);
+};
diff --git a/node_modules/stylelint/lib/utils/getRuleSelector.js b/node_modules/stylelint/lib/utils/getRuleSelector.js
new file mode 100644
index 0000000..715cf1e
--- /dev/null
+++ b/node_modules/stylelint/lib/utils/getRuleSelector.js
@@ -0,0 +1,13 @@
+'use strict';
+
+const _ = require('lodash');
+
+/**
+ * @param {import('postcss').Rule} ruleNode
+ * @returns {string}
+ */
+function getRuleSelector(ruleNode) {
+	return _.get(ruleNode, 'raws.selector.raw', ruleNode.selector);
+}
+
+module.exports = getRuleSelector;
diff --git a/node_modules/stylelint/lib/utils/isNonNegativeInteger.js b/node_modules/stylelint/lib/utils/isNonNegativeInteger.js
new file mode 100644
index 0000000..0ed8de9
--- /dev/null
+++ b/node_modules/stylelint/lib/utils/isNonNegativeInteger.js
@@ -0,0 +1,17 @@
+'use strict';
+
+// TODO: We need this polyfill because of the support of Node 10.
+//       When we will drop Node 10, please remove this polyfill.
+//       See <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger>
+const isInteger =
+	Number.isInteger ||
+	function (value) {
+		return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
+	};
+
+/**
+ * @param {unknown} value
+ */
+module.exports = function (value) {
+	return isInteger(value) && typeof value === 'number' && value >= 0;
+};
diff --git a/node_modules/stylelint/lib/utils/setAtRuleParams.js b/node_modules/stylelint/lib/utils/setAtRuleParams.js
new file mode 100644
index 0000000..7ccfff1
--- /dev/null
+++ b/node_modules/stylelint/lib/utils/setAtRuleParams.js
@@ -0,0 +1,20 @@
+'use strict';
+
+const _ = require('lodash');
+
+/** @typedef {import('postcss').AtRule} AtRule */
+
+/**
+ * @param {AtRule} atRule
+ * @param {string} params
+ * @returns {AtRule} The atRulearation that was passed in.
+ */
+module.exports = function setAtRuleParams(atRule, params) {
+	if (_.has(atRule, 'raws.params')) {
+		_.set(atRule, 'raws.params.raw', params);
+	} else {
+		atRule.params = params;
+	}
+
+	return atRule;
+};
diff --git a/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js b/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
index 7eee556..3150dc3 100644
--- a/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
+++ b/node_modules/stylelint/lib/utils/validateObjectWithArrayProps.js
@@ -24,15 +24,13 @@
 		return false;
 	}
 
-	// TODO: Issue #4985
-	// eslint-disable-next-line no-shadow
-	return Object.values(value).every((value) => {
-		if (!Array.isArray(value)) {
+	return Object.values(value).every((array) => {
+		if (!Array.isArray(array)) {
 			return false;
 		}
 
 		// Make sure the array items are strings
-		return value.every((item) => {
+		return array.every((item) => {
 			if (Array.isArray(validator)) {
 				return validator.some((v) => v(item));
 			}
diff --git a/node_modules/stylelint/lib/utils/validateOptions.js b/node_modules/stylelint/lib/utils/validateOptions.js
index 0081cb0..0d06ae4 100644
--- a/node_modules/stylelint/lib/utils/validateOptions.js
+++ b/node_modules/stylelint/lib/utils/validateOptions.js
@@ -2,7 +2,7 @@
 
 const _ = require('lodash');
 
-const ignoredOptions = new Set(['severity', 'message', 'reportDisables']);
+const IGNORED_OPTIONS = new Set(['severity', 'message', 'reportDisables']);
 
 /** @typedef {{possible: any, actual: any, optional?: boolean}} Options */
 
@@ -15,8 +15,8 @@
  * @param {string} ruleName
  * @param {...Options} optionDescriptions - Each optionDescription can
  *   have the following properties:
- *   	- `actual` (required): the actual passed option value or object.
- *   	- `possible` (required): a schema representation of what values are
+ *   - `actual` (required): the actual passed option value or object.
+ *   - `possible` (required): a schema representation of what values are
  *      valid for those options. `possible` should be an object if the
  *      options are an object, with corresponding keys; if the options are not an
  *      object, `possible` isn't, either. All `possible` value representations
@@ -125,7 +125,7 @@
 	}
 
 	Object.keys(actual).forEach((optionName) => {
-		if (ignoredOptions.has(optionName)) {
+		if (IGNORED_OPTIONS.has(optionName)) {
 			return;
 		}
 
@@ -155,9 +155,7 @@
 function isValid(possible, actual) {
 	const possibleList = /** @type {Array<any|Function>} */ ([]).concat(possible);
 
-	for (let i = 0, l = possibleList.length; i < l; i++) {
-		const possibility = possibleList[i];
-
+	for (const possibility of possibleList) {
 		if (typeof possibility === 'function' && possibility(actual)) {
 			return true;
 		}
diff --git a/node_modules/stylelint/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/stylelint/node_modules/balanced-match/.github/FUNDING.yml
new file mode 100644
index 0000000..1c904eb
--- /dev/null
+++ b/node_modules/stylelint/node_modules/balanced-match/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+tidelift: 'npm/balanced-match'
+patreon: juliangruber
diff --git a/node_modules/stylelint/node_modules/balanced-match/LICENSE.md b/node_modules/stylelint/node_modules/balanced-match/LICENSE.md
new file mode 100644
index 0000000..2cdc8e4
--- /dev/null
+++ b/node_modules/stylelint/node_modules/balanced-match/LICENSE.md
@@ -0,0 +1,21 @@
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/stylelint/node_modules/balanced-match/README.md b/node_modules/stylelint/node_modules/balanced-match/README.md
new file mode 100644
index 0000000..a7ccfec
--- /dev/null
+++ b/node_modules/stylelint/node_modules/balanced-match/README.md
@@ -0,0 +1,97 @@
+# balanced-match
+
+Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!
+
+[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
+[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
+
+[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)
+
+## Example
+
+Get the first matching pair of braces:
+
+```js
+var balanced = require('balanced-match')
+
+console.log(balanced('{', '}', 'pre{in{nested}}post'))
+console.log(balanced('{', '}', 'pre{first}between{second}post'))
+console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre  {   in{nest}   }  post'))
+```
+
+The matches are:
+
+```bash
+$ node example.js
+{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
+{ start: 3,
+  end: 9,
+  pre: 'pre',
+  body: 'first',
+  post: 'between{second}post' }
+{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }
+```
+
+## API
+
+### var m = balanced(a, b, str)
+
+For the first non-nested matching pair of `a` and `b` in `str`, return an
+object with those keys:
+
+- **start** the index of the first match of `a`
+- **end** the index of the matching `b`
+- **pre** the preamble, `a` and `b` not included
+- **body** the match, `a` and `b` not included
+- **post** the postscript, `a` and `b` not included
+
+If there's no match, `undefined` will be returned.
+
+If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
+
+### var r = balanced.range(a, b, str)
+
+For the first non-nested matching pair of `a` and `b` in `str`, return an
+array with indexes: `[ <a index>, <b index> ]`.
+
+If there's no match, `undefined` will be returned.
+
+If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`.
+
+## Installation
+
+With [npm](https://npmjs.org) do:
+
+```bash
+npm install balanced-match
+```
+
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
+
+## License
+
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/stylelint/node_modules/balanced-match/index.js b/node_modules/stylelint/node_modules/balanced-match/index.js
new file mode 100644
index 0000000..7c3266f
--- /dev/null
+++ b/node_modules/stylelint/node_modules/balanced-match/index.js
@@ -0,0 +1,64 @@
+'use strict'
+module.exports = balanced
+function balanced (a, b, str) {
+  if (a instanceof RegExp) a = maybeMatch(a, str)
+  if (b instanceof RegExp) b = maybeMatch(b, str)
+
+  const r = range(a, b, str)
+
+  return (
+    r && {
+      start: r[0],
+      end: r[1],
+      pre: str.slice(0, r[0]),
+      body: str.slice(r[0] + a.length, r[1]),
+      post: str.slice(r[1] + b.length)
+    }
+  )
+}
+
+function maybeMatch (reg, str) {
+  const m = str.match(reg)
+  return m ? m[0] : null
+}
+
+balanced.range = range
+function range (a, b, str) {
+  let begs, beg, left, right, result
+  let ai = str.indexOf(a)
+  let bi = str.indexOf(b, ai + 1)
+  let i = ai
+
+  if (ai >= 0 && bi > 0) {
+    if (a === b) {
+      return [ai, bi]
+    }
+    begs = []
+    left = str.length
+
+    while (i >= 0 && !result) {
+      if (i === ai) {
+        begs.push(i)
+        ai = str.indexOf(a, i + 1)
+      } else if (begs.length === 1) {
+        result = [begs.pop(), bi]
+      } else {
+        beg = begs.pop()
+        if (beg < left) {
+          left = beg
+          right = bi
+        }
+
+        bi = str.indexOf(b, i + 1)
+      }
+
+      i = ai < bi && ai >= 0 ? ai : bi
+    }
+
+    if (begs.length) {
+      result = [left, right]
+    }
+  }
+
+  return result
+}
diff --git a/node_modules/stylelint/node_modules/balanced-match/package.json b/node_modules/stylelint/node_modules/balanced-match/package.json
new file mode 100644
index 0000000..c304ecf
--- /dev/null
+++ b/node_modules/stylelint/node_modules/balanced-match/package.json
@@ -0,0 +1,52 @@
+{
+  "name": "balanced-match",
+  "description": "Match balanced character pairs, like \"{\" and \"}\"",
+  "version": "2.0.0",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/juliangruber/balanced-match.git"
+  },
+  "homepage": "https://github.com/juliangruber/balanced-match",
+  "main": "index.js",
+  "scripts": {
+    "test": "prettier-standard && standard && tape test/test.js",
+    "bench": "matcha test/bench.js",
+    "release": "np"
+  },
+  "devDependencies": {
+    "@c4312/matcha": "^1.3.1",
+    "np": "^7.4.0",
+    "prettier-standard": "^16.4.1",
+    "standard": "^16.0.3",
+    "tape": "^4.6.0"
+  },
+  "keywords": [
+    "match",
+    "regexp",
+    "test",
+    "balanced",
+    "parse"
+  ],
+  "author": {
+    "name": "Julian Gruber",
+    "email": "mail@juliangruber.com",
+    "url": "http://juliangruber.com"
+  },
+  "license": "MIT",
+  "testling": {
+    "files": "test/*.js",
+    "browsers": [
+      "ie/8..latest",
+      "firefox/20..latest",
+      "firefox/nightly",
+      "chrome/25..latest",
+      "chrome/canary",
+      "opera/12..latest",
+      "opera/next",
+      "safari/5.1..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2..latest"
+    ]
+  }
+}
diff --git a/node_modules/stylelint/node_modules/log-symbols/browser.js b/node_modules/stylelint/node_modules/log-symbols/browser.js
new file mode 100644
index 0000000..a66f8ec
--- /dev/null
+++ b/node_modules/stylelint/node_modules/log-symbols/browser.js
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+	info: 'ℹ️',
+	success: '✅',
+	warning: '⚠️',
+	error: '❌️'
+};
diff --git a/node_modules/stylelint/node_modules/log-symbols/index.d.ts b/node_modules/stylelint/node_modules/log-symbols/index.d.ts
new file mode 100644
index 0000000..8e4bdc5
--- /dev/null
+++ b/node_modules/stylelint/node_modules/log-symbols/index.d.ts
@@ -0,0 +1,25 @@
+/**
+Colored symbols for various log levels.
+
+Includes fallbacks for Windows CMD which only supports a [limited character set](https://en.wikipedia.org/wiki/Code_page_437).
+
+@example
+```
+import logSymbols = require('log-symbols');
+
+console.log(logSymbols.success, 'Finished successfully!');
+// Terminals with Unicode support:     ✔ Finished successfully!
+// Terminals without Unicode support:  √ Finished successfully!
+```
+*/
+declare const logSymbols: {
+	readonly info: string;
+
+	readonly success: string;
+
+	readonly warning: string;
+
+	readonly error: string;
+};
+
+export = logSymbols;
diff --git a/node_modules/stylelint/node_modules/log-symbols/index.js b/node_modules/stylelint/node_modules/log-symbols/index.js
new file mode 100644
index 0000000..12347e0
--- /dev/null
+++ b/node_modules/stylelint/node_modules/log-symbols/index.js
@@ -0,0 +1,19 @@
+'use strict';
+const chalk = require('chalk');
+const isUnicodeSupported = require('is-unicode-supported');
+
+const main = {
+	info: chalk.blue('ℹ'),
+	success: chalk.green('✔'),
+	warning: chalk.yellow('⚠'),
+	error: chalk.red('✖')
+};
+
+const fallback = {
+	info: chalk.blue('i'),
+	success: chalk.green('√'),
+	warning: chalk.yellow('‼'),
+	error: chalk.red('×')
+};
+
+module.exports = isUnicodeSupported() ? main : fallback;
diff --git a/node_modules/stylelint/node_modules/log-symbols/license b/node_modules/stylelint/node_modules/log-symbols/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/node_modules/stylelint/node_modules/log-symbols/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/stylelint/node_modules/log-symbols/package.json b/node_modules/stylelint/node_modules/log-symbols/package.json
new file mode 100644
index 0000000..9001467
--- /dev/null
+++ b/node_modules/stylelint/node_modules/log-symbols/package.json
@@ -0,0 +1,52 @@
+{
+  "name": "log-symbols",
+  "version": "4.1.0",
+  "description": "Colored symbols for various log levels. Example: `\u2714\ufe0e Success`",
+  "license": "MIT",
+  "repository": "sindresorhus/log-symbols",
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "browser.js"
+  ],
+  "keywords": [
+    "unicode",
+    "cli",
+    "cmd",
+    "command-line",
+    "characters",
+    "symbol",
+    "symbols",
+    "figure",
+    "figures",
+    "fallback",
+    "windows",
+    "log",
+    "logging",
+    "terminal",
+    "stdout"
+  ],
+  "dependencies": {
+    "chalk": "^4.1.0",
+    "is-unicode-supported": "^0.1.0"
+  },
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "strip-ansi": "^6.0.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.38.2"
+  },
+  "browser": "browser.js"
+}
diff --git a/node_modules/stylelint/node_modules/log-symbols/readme.md b/node_modules/stylelint/node_modules/log-symbols/readme.md
new file mode 100644
index 0000000..d464eae
--- /dev/null
+++ b/node_modules/stylelint/node_modules/log-symbols/readme.md
@@ -0,0 +1,51 @@
+# log-symbols
+
+<img src="screenshot.png" width="226" height="192" align="right">
+
+> Colored symbols for various log levels
+
+Includes fallbacks for Windows CMD which only supports a [limited character set](https://en.wikipedia.org/wiki/Code_page_437).
+
+## Install
+
+```
+$ npm install log-symbols
+```
+
+## Usage
+
+```js
+const logSymbols = require('log-symbols');
+
+console.log(logSymbols.success, 'Finished successfully!');
+// Terminals with Unicode support:     ✔ Finished successfully!
+// Terminals without Unicode support:  √ Finished successfully!
+```
+
+## API
+
+### logSymbols
+
+#### info
+#### success
+#### warning
+#### error
+
+## Related
+
+- [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows CMD fallbacks
+- [py-log-symbols](https://github.com/ManrajGrover/py-log-symbols) - Python port
+- [log-symbols](https://github.com/palash25/log-symbols) - Ruby port
+- [guumaster/logsymbols](https://github.com/guumaster/logsymbols) - Golang port
+
+---
+
+<div align="center">
+	<b>
+		<a href="https://tidelift.com/subscription/pkg/npm-log-symbols?utm_source=npm-log-symbols&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+	</b>
+	<br>
+	<sub>
+		Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+	</sub>
+</div>
diff --git a/node_modules/stylelint/package.json b/node_modules/stylelint/package.json
index 2255e4b..c9dd891 100644
--- a/node_modules/stylelint/package.json
+++ b/node_modules/stylelint/package.json
@@ -1,6 +1,6 @@
 {
   "name": "stylelint",
-  "version": "13.12.0",
+  "version": "13.13.1",
   "description": "A mighty, modern CSS linter.",
   "keywords": [
     "css-in-js",
@@ -38,25 +38,18 @@
   "scripts": {
     "benchmark-rule": "node scripts/benchmark-rule.js",
     "format": "prettier . --write",
-    "_postinstall": "is-ci || husky install",
     "jest": "jest",
     "lint": "npm-run-all --parallel lint:*",
     "lint:formatting": "prettier . --check",
     "lint:js": "eslint . --cache --max-warnings=0",
     "lint:md": "remark . --quiet --frail",
     "lint:types": "tsc",
-    "prepublishOnly": "pinst --disable",
-    "postpublish": "pinst --enable",
+    "prepare": "husky install",
     "release": "np",
     "pretest": "npm run lint",
     "test": "jest --coverage",
     "watch": "jest --watch"
   },
-  "husky": {
-    "hooks": {
-      "pre-commit": "lint-staged"
-    }
-  },
   "lint-staged": {
     "*.js": "eslint --cache --fix",
     "*.{js,json,md,ts,yml}": "prettier --write"
@@ -118,8 +111,8 @@
     "@stylelint/postcss-css-in-js": "^0.37.2",
     "@stylelint/postcss-markdown": "^0.36.2",
     "autoprefixer": "^9.8.6",
-    "balanced-match": "^1.0.0",
-    "chalk": "^4.1.0",
+    "balanced-match": "^2.0.0",
+    "chalk": "^4.1.1",
     "cosmiconfig": "^7.0.0",
     "debug": "^4.3.1",
     "execall": "^2.0.0",
@@ -128,7 +121,7 @@
     "file-entry-cache": "^6.0.1",
     "get-stdin": "^8.0.0",
     "global-modules": "^2.0.0",
-    "globby": "^11.0.2",
+    "globby": "^11.0.3",
     "globjoin": "^0.1.4",
     "html-tags": "^3.1.0",
     "ignore": "^5.1.8",
@@ -136,10 +129,10 @@
     "imurmurhash": "^0.1.4",
     "known-css-properties": "^0.21.0",
     "lodash": "^4.17.21",
-    "log-symbols": "^4.0.0",
+    "log-symbols": "^4.1.0",
     "mathml-tag-names": "^2.1.3",
     "meow": "^9.0.0",
-    "micromatch": "^4.0.2",
+    "micromatch": "^4.0.4",
     "normalize-selector": "^0.2.0",
     "postcss": "^7.0.35",
     "postcss-html": "^0.36.0",
@@ -149,7 +142,7 @@
     "postcss-safe-parser": "^4.0.2",
     "postcss-sass": "^0.4.4",
     "postcss-scss": "^2.1.1",
-    "postcss-selector-parser": "^6.0.4",
+    "postcss-selector-parser": "^6.0.5",
     "postcss-syntax": "^0.36.2",
     "postcss-value-parser": "^4.1.0",
     "resolve-from": "^5.0.0",
@@ -160,8 +153,8 @@
     "style-search": "^0.1.0",
     "sugarss": "^2.0.0",
     "svg-tags": "^1.0.0",
-    "table": "^6.0.7",
-    "v8-compile-cache": "^2.2.0",
+    "table": "^6.6.0",
+    "v8-compile-cache": "^2.3.0",
     "write-file-atomic": "^3.0.3"
   },
   "devDependencies": {
@@ -179,28 +172,24 @@
     "@types/postcss-safe-parser": "^4.0.0",
     "@types/style-search": "^0.1.1",
     "@types/svg-tags": "^1.0.0",
-    "@types/table": "^6.0.0",
     "@types/write-file-atomic": "^3.0.1",
     "benchmark": "^2.1.4",
     "common-tags": "^1.8.0",
-    "del": "^6.0.0",
-    "eslint": "^7.21.0",
+    "eslint": "^7.25.0",
     "eslint-config-stylelint": "^13.1.0",
     "got": "^11.8.2",
-    "husky": "^5.1.2",
-    "is-ci": "^3.0.0",
+    "husky": "^6.0.0",
     "jest": "^26.6.3",
     "jest-circus": "^26.6.3",
     "jest-preset-stylelint": "^3.0.0",
-    "jest-watch-typeahead": "^0.6.1",
+    "jest-watch-typeahead": "^0.6.3",
     "lint-staged": "^10.5.4",
-    "np": "^7.4.0",
+    "np": "^7.5.0",
     "npm-run-all": "^4.1.5",
-    "pinst": "^2.1.6",
     "postcss-import": "^12.0.1",
     "prettier": "^2.2.1",
     "remark-cli": "^9.0.0",
-    "typescript": "^4.2.2"
+    "typescript": "^4.2.4"
   },
   "engines": {
     "node": ">=10.13.0"
diff --git a/node_modules/table/README.md b/node_modules/table/README.md
index 22a7996..b96006e 100644
--- a/node_modules/table/README.md
+++ b/node_modules/table/README.md
@@ -1,6 +1,8 @@
 <a name="table"></a>
 # Table
 
+> Produces a string that represents array data in a text table.
+
 [![Travis build status](http://img.shields.io/travis/gajus/table/master.svg?style=flat-square)](https://travis-ci.org/gajus/table)
 [![Coveralls](https://img.shields.io/coveralls/gajus/table.svg?style=flat-square)](https://coveralls.io/github/gajus/table)
 [![NPM version](http://img.shields.io/npm/v/table.svg?style=flat-square)](https://www.npmjs.org/package/table)
@@ -11,20 +13,12 @@
     * [Features](#table-features)
     * [Install](#table-install)
     * [Usage](#table-usage)
-        * [Cell Content Alignment](#table-usage-cell-content-alignment)
-        * [Column Width](#table-usage-column-width)
-        * [Custom Border](#table-usage-custom-border)
-        * [Draw Horizontal Line](#table-usage-draw-horizontal-line)
-        * [Single Line Mode](#table-usage-single-line-mode)
-        * [Padding Cell Content](#table-usage-padding-cell-content)
-        * [Predefined Border Templates](#table-usage-predefined-border-templates)
-        * [Streaming](#table-usage-streaming)
-        * [Text Truncation](#table-usage-text-truncation)
-        * [Text Wrapping](#table-usage-text-wrapping)
+    * [API](#table-api)
+        * [table](#table-api-table-1)
+        * [createStream](#table-api-createstream)
+        * [getBorderCharacters](#table-api-getbordercharacters)
 
 
-Produces a string that represents array data in a text table.
-
 ![Demo of table displaying a list of missions to the Moon.](./.README/demo.png)
 
 <a name="table-features"></a>
@@ -43,98 +37,28 @@
 
 ```bash
 npm install table
-
 ```
 
 [![Buy Me A Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/gajus)
 [![Become a Patron](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/gajus)
 
+
 <a name="table-usage"></a>
 ## Usage
 
-Table data is described using an array (rows) of array (cells).
-
 ```js
-import {
-  table
-} from 'table';
+import { table } from 'table';
 
 // Using commonjs?
-// const {table} = require('table');
+// const { table } = require('table');
 
-let data,
-    output;
-
-data = [
+const data = [
     ['0A', '0B', '0C'],
     ['1A', '1B', '1C'],
     ['2A', '2B', '2C']
 ];
 
-/**
- * @typedef {string} table~cell
- */
-
-/**
- * @typedef {table~cell[]} table~row
- */
-
-/**
- * @typedef {Object} table~columns
- * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).
- * @property {number} width Column width (default: auto).
- * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).
- * @property {number} paddingLeft Cell content padding width left (default: 1).
- * @property {number} paddingRight Cell content padding width right (default: 1).
- */
-
-/**
- * @typedef {Object} table~border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * Used to dynamically tell table whether to draw a line separating rows or not.
- * The default behavior is to always return true.
- *
- * @typedef {function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @return {boolean}
- */
-
-/**
- * @typedef {Object} table~config
- * @property {table~border} border
- * @property {table~columns[]} columns Column specific configuration.
- * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.
- * @property {table~drawHorizontalLine} drawHorizontalLine
- */
-
-/**
- * Generates a text table.
- *
- * @param {table~row[]} rows
- * @param {table~config} config
- * @return {String}
- */
-output = table(data);
-
-console.log(output);
+console.log(table(data));
 ```
 
 ```
@@ -149,112 +73,44 @@
 ```
 
 
-<a name="table-usage-cell-content-alignment"></a>
-### Cell Content Alignment
+<a name="table-api"></a>
+## API
 
-`{string} config.columns[{number}].alignment` property controls content horizontal alignment within a cell.
+<a name="table-api-table-1"></a>
+### table
 
-Valid values are: "left", "right" and "center".
+Returns the string in the table format
+
+**Parameters:**
+- **_data_:** The data to display
+  - Type: `any[][]`
+  - Required: `true`
+
+- **_config_:** Table configuration
+  - Type: `object`
+  - Required: `false`
+
+<a name="table-api-table-1-config-border"></a>
+##### config.border
+
+Type: `{ [type: string]: string }`\
+Default: `honeywell` [template](#getbordercharacters)
+
+Custom borders. The keys are any of:
+- `topLeft`, `topRight`, `topBody`,`topJoin`
+- `bottomLeft`, `bottomRight`, `bottomBody`, `bottomJoin`
+- `joinLeft`, `joinRight`, `joinBody`, `joinJoin`
+- `bodyLeft`, `bodyRight`, `bodyJoin`
+- `headerJoin`
 
 ```js
-let config,
-  data,
-  output;
-
-data = [
+const data = [
   ['0A', '0B', '0C'],
   ['1A', '1B', '1C'],
   ['2A', '2B', '2C']
 ];
 
-config = {
-  columns: {
-    0: {
-      alignment: 'left',
-      width: 10
-    },
-    1: {
-      alignment: 'center',
-      width: 10
-    },
-    2: {
-      alignment: 'right',
-      width: 10
-    }
-  }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔════════════╤════════════╤════════════╗
-║ 0A         │     0B     │         0C ║
-╟────────────┼────────────┼────────────╢
-║ 1A         │     1B     │         1C ║
-╟────────────┼────────────┼────────────╢
-║ 2A         │     2B     │         2C ║
-╚════════════╧════════════╧════════════╝
-```
-
-<a name="table-usage-column-width"></a>
-### Column Width
-
-`{number} config.columns[{number}].width` property restricts column width to a fixed width.
-
-```js
-let data,
-  output,
-  options;
-
-data = [
-  ['0A', '0B', '0C'],
-  ['1A', '1B', '1C'],
-  ['2A', '2B', '2C']
-];
-
-options = {
-  columns: {
-    1: {
-      width: 10
-    }
-  }
-};
-
-output = table(data, options);
-
-console.log(output);
-```
-
-```
-╔════╤════════════╤════╗
-║ 0A │ 0B         │ 0C ║
-╟────┼────────────┼────╢
-║ 1A │ 1B         │ 1C ║
-╟────┼────────────┼────╢
-║ 2A │ 2B         │ 2C ║
-╚════╧════════════╧════╝
-```
-
-<a name="table-usage-custom-border"></a>
-### Custom Border
-
-`{object} config.border` property describes characters used to draw the table border.
-
-```js
-let config,
-  data,
-  output;
-
-data = [
-  ['0A', '0B', '0C'],
-  ['1A', '1B', '1C'],
-  ['2A', '2B', '2C']
-];
-
-config = {
+const config = {
   border: {
     topBody: `─`,
     topJoin: `┬`,
@@ -277,9 +133,7 @@
   }
 };
 
-output = table(data, config);
-
-console.log(output);
+console.log(table(data, config));
 ```
 
 ```
@@ -292,17 +146,17 @@
 └────┴────┴────┘
 ```
 
-<a name="table-usage-draw-horizontal-line"></a>
-### Draw Horizontal Line
+<a name="table-api-table-1-config-drawverticalline"></a>
+##### config.drawVerticalLine
 
-`{function} config.drawHorizontalLine` property is a function that is called for every non-content row in the table. The result of the function `{boolean}` determines whether a row is drawn.
+Type: `(lineIndex: number, columnCount: number) => boolean`\
+Default: `() => true`
+
+It is used to tell whether to draw a vertical line. This callback is called for each vertical border of the table.
+If the table has `n` columns, then the `index` parameter is alternatively received all numbers in range `[0, n]` inclusively.
 
 ```js
-let data,
-  output,
-  options;
-
-data = [
+const data = [
   ['0A', '0B', '0C'],
   ['1A', '1B', '1C'],
   ['2A', '2B', '2C'],
@@ -310,21 +164,57 @@
   ['4A', '4B', '4C']
 ];
 
-options = {
-  /**
-    * @typedef {function} drawHorizontalLine
-    * @param {number} index
-    * @param {number} size
-    * @return {boolean}
-    */
-  drawHorizontalLine: (index, size) => {
-    return index === 0 || index === 1 || index === size - 1 || index === size;
+const config = {
+  drawVerticalLine: (lineIndex, columnCount) => {
+    return lineIndex === 0 || lineIndex === columnCount;
   }
 };
 
-output = table(data, options);
+console.log(table(data, config));
 
-console.log(output);
+```
+
+```
+╔════════════╗
+║ 0A  0B  0C ║
+╟────────────╢
+║ 1A  1B  1C ║
+╟────────────╢
+║ 2A  2B  2C ║
+╟────────────╢
+║ 3A  3B  3C ║
+╟────────────╢
+║ 4A  4B  4C ║
+╚════════════╝
+
+```
+
+<a name="table-api-table-1-config-drawhorizontalline"></a>
+##### config.drawHorizontalLine
+
+Type: `(lineIndex: number, rowCount: number) => boolean`\
+Default: `() => true`
+
+It is used to tell whether to draw a horizontal line. This callback is called for each horizontal border of the table.
+If the table has `n` rows, then the `index` parameter is alternatively received all numbers in range `[0, n]` inclusively.
+If the table has `n` rows and contains the header, then the range will be `[0, n+1]` inclusively.
+
+```js
+const data = [
+  ['0A', '0B', '0C'],
+  ['1A', '1B', '1C'],
+  ['2A', '2B', '2C'],
+  ['3A', '3B', '3C'],
+  ['4A', '4B', '4C']
+];
+
+const config = {
+  drawHorizontalLine: (lineIndex, rowCount) => {
+    return lineIndex === 0 || lineIndex === 1 || lineIndex === rowCount - 1 || lineIndex === rowCount;
+  }
+};
+
+console.log(table(data, config));
 
 ```
 
@@ -341,17 +231,15 @@
 
 ```
 
-<a name="table-usage-single-line-mode"></a>
-### Single Line Mode
+<a name="table-api-table-1-config-singleline"></a>
+##### config.singleLine
 
-Horizontal lines inside the table are not drawn.
+Type: `boolean`\
+Default: `false`
+
+If `true`, horizontal lines inside the table are not drawn. This option also overrides the `config.drawHorizontalLine` if specified.
 
 ```js
-import {
-  table,
-  getBorderCharacters
-} from 'table';
-
 const data = [
   ['-rw-r--r--', '1', 'pandorym', 'staff', '1529', 'May 23 11:25', 'LICENSE'],
   ['-rw-r--r--', '1', 'pandorym', 'staff', '16327', 'May 23 11:58', 'README.md'],
@@ -367,8 +255,7 @@
   singleLine: true
 };
 
-const output = table(data, config);
-console.log(output);
+console.log(table(data, config));
 ```
 
 ```
@@ -384,37 +271,163 @@
 ╚═════════════╧═════╧══════════╧═══════╧════════╧══════════════╧═══════════════════╝
 ```
 
-<a name="table-usage-padding-cell-content"></a>
-### Padding Cell Content
 
-`{number} config.columns[{number}].paddingLeft` and `{number} config.columns[{number}].paddingRight` properties control content padding within a cell. Property value represents a number of whitespaces used to pad the content.
+<a name="table-api-table-1-config-columns"></a>
+##### config.columns
+
+Type: `Column[] | { [columnIndex: number]: Column }`
+
+Column specific configurations.
+
+<a name="table-api-table-1-config-columns-config-columns-width"></a>
+###### config.columns[*].width
+
+Type: `number`\
+Default: the maximum cell widths of the column
+
+Column width (excluding the paddings).
 
 ```js
-let config,
-  data,
-  output;
 
-data = [
+const data = [
+  ['0A', '0B', '0C'],
+  ['1A', '1B', '1C'],
+  ['2A', '2B', '2C']
+];
+
+const config = {
+  columns: {
+    1: { width: 10 }
+  }
+};
+
+console.log(table(data, config));
+```
+
+```
+╔════╤════════════╤════╗
+║ 0A │ 0B         │ 0C ║
+╟────┼────────────┼────╢
+║ 1A │ 1B         │ 1C ║
+╟────┼────────────┼────╢
+║ 2A │ 2B         │ 2C ║
+╚════╧════════════╧════╝
+```
+
+<a name="table-api-table-1-config-columns-config-columns-alignment"></a>
+###### config.columns[*].alignment
+
+Type: `'center' | 'justify' | 'left' | 'right'`\
+Default: `'left'`
+
+Cell content horizontal alignment
+
+```js
+const data = [
+  ['0A', '0B', '0C', '0D 0E 0F'],
+  ['1A', '1B', '1C', '1D 1E 1F'],
+  ['2A', '2B', '2C', '2D 2E 2F'],
+];
+
+const config = {
+  columnDefault: {
+    width: 10,
+  },
+  columns: [
+    { alignment: 'left' },
+    { alignment: 'center' },
+    { alignment: 'right' },
+    { alignment: 'justify' }
+  ],
+};
+
+console.log(table(data, config));
+```
+
+```
+╔════════════╤════════════╤════════════╤════════════╗
+║ 0A         │     0B     │         0C │ 0D  0E  0F ║
+╟────────────┼────────────┼────────────┼────────────╢
+║ 1A         │     1B     │         1C │ 1D  1E  1F ║
+╟────────────┼────────────┼────────────┼────────────╢
+║ 2A         │     2B     │         2C │ 2D  2E  2F ║
+╚════════════╧════════════╧════════════╧════════════╝
+```
+
+<a name="table-api-table-1-config-columns-config-columns-verticalalignment"></a>
+###### config.columns[*].verticalAlignment
+
+Type: `'top' | 'middle' | 'bottom'`\
+Default: `'top'`
+
+Cell content vertical alignment
+
+```js
+const data = [
+  ['A', 'B', 'C', 'DEF'],
+];
+
+const config = {
+  columnDefault: {
+    width: 1,
+  },
+  columns: [
+    { verticalAlignment: 'top' },
+    { verticalAlignment: 'middle' },
+    { verticalAlignment: 'bottom' },
+  ],
+};
+
+console.log(table(data, config));
+```
+
+```
+╔═══╤═══╤═══╤═══╗
+║ A │   │   │ D ║
+║   │ B │   │ E ║
+║   │   │ C │ F ║
+╚═══╧═══╧═══╧═══╝
+```
+
+<a name="table-api-table-1-config-columns-config-columns-paddingleft"></a>
+###### config.columns[*].paddingLeft
+
+Type: `number`\
+Default: `1`
+
+The number of whitespaces used to pad the content on the left.
+
+<a name="table-api-table-1-config-columns-config-columns-paddingright"></a>
+###### config.columns[*].paddingRight
+
+Type: `number`\
+Default: `1`
+
+The number of whitespaces used to pad the content on the right.
+
+The `paddingLeft` and `paddingRight` options do not count on the column width. So the column has `width = 5`, `paddingLeft = 2` and `paddingRight = 2` will have the total width is `9`.
+
+
+```js
+const data = [
   ['0A', 'AABBCC', '0C'],
   ['1A', '1B', '1C'],
   ['2A', '2B', '2C']
 ];
 
-config = {
-  columns: {
-    0: {
+const config = {
+  columns: [
+    {
       paddingLeft: 3
     },
-    1: {
+    {
       width: 2,
       paddingRight: 3
     }
-  }
+  ]
 };
 
-output = table(data, config);
-
-console.log(output);
+console.log(table(data, config));
 ```
 
 ```
@@ -429,31 +442,248 @@
 ╚══════╧══════╧════╝
 ```
 
-<a name="table-usage-predefined-border-templates"></a>
-### Predefined Border Templates
+<a name="table-api-table-1-config-columns-config-columns-truncate"></a>
+###### config.columns[*].truncate
+
+Type: `number`\
+Default: `Infinity`
+
+The number of characters is which the content will be truncated.
+To handle a content that overflows the container width, `table` package implements [text wrapping](#config.columns[*].wrapWord). However, sometimes you may want to truncate content that is too long to be displayed in the table.
+
+```js
+const data = [
+  ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
+];
+
+const config = {
+  columns: [
+    {
+      width: 20,
+      truncate: 100
+    }
+  ]
+};
+
+console.log(table(data, config));
+```
+
+```
+╔══════════════════════╗
+║ Lorem ipsum dolor si ║
+║ t amet, consectetur  ║
+║ adipiscing elit. Pha ║
+║ sellus pulvinar nibh ║
+║ sed mauris convall…  ║
+╚══════════════════════╝
+```
+
+<a name="table-api-table-1-config-columns-config-columns-wrapword"></a>
+###### config.columns[*].wrapWord
+
+Type: `boolean`\
+Default: `false`
+
+The `table` package implements auto text wrapping, i.e., text that has the width greater than the container width will be separated into multiple lines at the nearest space or one of the special characters: `\|/_.,;-`.
+
+When `wrapWord` is `false`:
+
+```js
+const data = [
+    ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
+];
+
+const config = {
+  columns: [ { width: 20 } ]
+};
+
+console.log(table(data, config));
+```
+
+```
+╔══════════════════════╗
+║ Lorem ipsum dolor si ║
+║ t amet, consectetur  ║
+║ adipiscing elit. Pha ║
+║ sellus pulvinar nibh ║
+║ sed mauris convallis ║
+║ dapibus. Nunc venena ║
+║ tis tempus nulla sit ║
+║ amet viverra.        ║
+╚══════════════════════╝
+```
+
+When `wrapWord` is `true`:
+
+```
+╔══════════════════════╗
+║ Lorem ipsum dolor    ║
+║ sit amet,            ║
+║ consectetur          ║
+║ adipiscing elit.     ║
+║ Phasellus pulvinar   ║
+║ nibh sed mauris      ║
+║ convallis dapibus.   ║
+║ Nunc venenatis       ║
+║ tempus nulla sit     ║
+║ amet viverra.        ║
+╚══════════════════════╝
+
+```
+
+
+<a name="table-api-table-1-config-columndefault"></a>
+##### config.columnDefault
+
+Type: `Column`\
+Default: `{}`
+
+The default configuration for all columns. Column-specific settings will overwrite the default values.
+
+
+<a name="table-api-table-1-config-header"></a>
+##### config.header
+
+Type: `object`
+
+Header configuration.
+
+The header configuration inherits the most of the column's, except:
+- `content` **{string}**: the header content.
+- `width:` calculate based on the content width automatically.
+- `alignment:` `center` be default.
+- `verticalAlignment:` is not supported.
+- `config.border.topJoin` will be `config.border.topBody` for prettier.
+
+```js
+const data = [
+      ['0A', '0B', '0C'],
+      ['1A', '1B', '1C'],
+      ['2A', '2B', '2C'],
+    ];
+
+const config = {
+  columnDefault: {
+    width: 10,
+  },
+  header: {
+    alignment: 'center',
+    content: 'THE HEADER\nThis is the table about something',
+  },
+}
+
+console.log(table(data, config));
+```
+
+```
+╔══════════════════════════════════════╗
+║              THE HEADER              ║
+║  This is the table about something   ║
+╟────────────┬────────────┬────────────╢
+║ 0A         │ 0B         │ 0C         ║
+╟────────────┼────────────┼────────────╢
+║ 1A         │ 1B         │ 1C         ║
+╟────────────┼────────────┼────────────╢
+║ 2A         │ 2B         │ 2C         ║
+╚════════════╧════════════╧════════════╝
+```
+
+
+<a name="table-api-createstream"></a>
+### createStream
+
+`table` package exports `createStream` function used to draw a table and append rows.
+
+**Parameter:**
+ - _**config:**_ the same as `table`'s, except `config.columnDefault.width` and `config.columnCount` must be provided.
+
+
+```js
+import { createStream } from 'table';
+
+const config = {
+  columnDefault: {
+    width: 50
+  },
+  columnCount: 1
+};
+
+const stream = createStream(config);
+
+setInterval(() => {
+  stream.write([new Date()]);
+}, 500);
+```
+
+![Streaming current date.](./.README/api/stream/streaming.gif)
+
+`table` package uses ANSI escape codes to overwrite the output of the last line when a new row is printed.
+
+The underlying implementation is explained in this [Stack Overflow answer](http://stackoverflow.com/a/32938658/368691).
+
+Streaming supports all of the configuration properties and functionality of a static table (such as auto text wrapping, alignment and padding), e.g.
+
+```js
+import { createStream } from 'table';
+
+import _ from 'lodash';
+
+const config = {
+  columnDefault: {
+    width: 50
+  },
+  columnCount: 3,
+  columns: [
+    {
+      width: 10,
+      alignment: 'right'
+    },
+    { alignment: 'center' },
+    { width: 10 }
+
+  ]
+};
+
+const stream = createStream(config);
+
+let i = 0;
+
+setInterval(() => {
+  let random;
+
+  random = _.sample('abcdefghijklmnopqrstuvwxyz', _.random(1, 30)).join('');
+
+  stream.write([i++, new Date(), random]);
+}, 500);
+```
+
+![Streaming random data.](./.README/api/stream/streaming-random.gif)
+
+
+<a name="table-api-getbordercharacters"></a>
+### getBorderCharacters
+
+**Parameter:**
+ - **_template_**
+   - Type: `'honeywell' | 'norc' | 'ramac' | 'void'`
+   - Required: `true`
 
 You can load one of the predefined border templates using `getBorderCharacters` function.
 
 ```js
-import {
-  table,
-  getBorderCharacters
-} from 'table';
+import { table, getBorderCharacters } from 'table';
 
-let config,
-  data;
-
-data = [
+const data = [
   ['0A', '0B', '0C'],
   ['1A', '1B', '1C'],
   ['2A', '2B', '2C']
 ];
 
-config = {
+const config = {
   border: getBorderCharacters(`name of the template`)
 };
 
-table(data, config);
+console.log(table(data, config));
 ```
 
 ```
@@ -487,7 +717,7 @@
 | 2A | 2B | 2C |
 +----+----+----+
 
-# void (no borders; see "bordless table" section of the documentation)
+# void (no borders; see "borderless table" section of the documentation)
 
  0A  0B  0C
 
@@ -499,26 +729,24 @@
 
 Raise [an issue](https://github.com/gajus/table/issues) if you'd like to contribute a new border template.
 
-<a name="table-usage-predefined-border-templates-borderless-table"></a>
+<a name="table-api-getbordercharacters-borderless-table"></a>
 #### Borderless Table
 
-Simply using "void" border character template creates a table with a lot of unnecessary spacing.
+Simply using `void` border character template creates a table with a lot of unnecessary spacing.
 
-To create a more plesant to the eye table, reset the padding and remove the joining rows, e.g.
+To create a more pleasant to the eye table, reset the padding and remove the joining rows, e.g.
 
 ```js
-let output;
 
-output = table(data, {
-    border: getBorderCharacters(`void`),
+const output = table(data, {
+    border: getBorderCharacters('void'),
     columnDefault: {
         paddingLeft: 0,
         paddingRight: 1
     },
-    drawHorizontalLine: () => {
-        return false
+    drawHorizontalLine: () => false
     }
-});
+);
 
 console.log(output);
 ```
@@ -529,206 +757,3 @@
 2A 2B 2C
 ```
 
-<a name="table-usage-streaming"></a>
-### Streaming
-
-`table` package exports `createStream` function used to draw a table and append rows.
-
-`createStream` requires `{number} columnDefault.width` and `{number} columnCount` configuration properties.
-
-```js
-import {
-  createStream
-} from 'table';
-
-let config,
-  stream;
-
-config = {
-  columnDefault: {
-    width: 50
-  },
-  columnCount: 1
-};
-
-stream = createStream(config);
-
-setInterval(() => {
-  stream.write([new Date()]);
-}, 500);
-```
-
-![Streaming current date.](./.README/streaming.gif)
-
-`table` package uses ANSI escape codes to overwrite the output of the last line when a new row is printed.
-
-The underlying implementation is explained in this [Stack Overflow answer](http://stackoverflow.com/a/32938658/368691).
-
-Streaming supports all of the configuration properties and functionality of a static table (such as auto text wrapping, alignment and padding), e.g.
-
-```js
-import {
-  createStream
-} from 'table';
-
-import _ from 'lodash';
-
-let config,
-  stream,
-  i;
-
-config = {
-  columnDefault: {
-    width: 50
-  },
-  columnCount: 3,
-  columns: {
-    0: {
-      width: 10,
-      alignment: 'right'
-    },
-    1: {
-      alignment: 'center',
-    },
-    2: {
-      width: 10
-    }
-  }
-};
-
-stream = createStream(config);
-
-i = 0;
-
-setInterval(() => {
-  let random;
-
-  random = _.sample('abcdefghijklmnopqrstuvwxyz', _.random(1, 30)).join('');
-
-  stream.write([i++, new Date(), random]);
-}, 500);
-```
-
-![Streaming random data.](./.README/streaming-random.gif)
-
-<a name="table-usage-text-truncation"></a>
-### Text Truncation
-
-To handle a content that overflows the container width, `table` package implements [text wrapping](#table-usage-text-wrapping). However, sometimes you may want to truncate content that is too long to be displayed in the table.
-
-`{number} config.columns[{number}].truncate` property (default: `Infinity`) truncates the text at the specified length.
-
-```js
-let config,
-  data,
-  output;
-
-data = [
-  ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
-];
-
-config = {
-  columns: {
-    0: {
-      width: 20,
-      truncate: 100
-    }
-  }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════════════════════╗
-║ Lorem ipsum dolor si ║
-║ t amet, consectetur  ║
-║ adipiscing elit. Pha ║
-║ sellus pulvinar nibh ║
-║ sed mauris conva...  ║
-╚══════════════════════╝
-```
-
-<a name="table-usage-text-wrapping"></a>
-### Text Wrapping
-
-`table` package implements auto text wrapping, i.e. text that has width greater than the container width will be separated into multiple lines, e.g.
-
-```js
-let config,
-  data,
-  output;
-
-data = [
-    ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
-];
-
-config = {
-  columns: {
-    0: {
-      width: 20
-    }
-  }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════════════════════╗
-║ Lorem ipsum dolor si ║
-║ t amet, consectetur  ║
-║ adipiscing elit. Pha ║
-║ sellus pulvinar nibh ║
-║ sed mauris convallis ║
-║ dapibus. Nunc venena ║
-║ tis tempus nulla sit ║
-║ amet viverra.        ║
-╚══════════════════════╝
-```
-
-When `wrapWord` is `true` the text is broken at the nearest space or one of the special characters ("-", "_", "\", "/", ".", ",", ";"), e.g.
-
-```js
-let config,
-  data,
-  output;
-
-data = [
-  ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pulvinar nibh sed mauris convallis dapibus. Nunc venenatis tempus nulla sit amet viverra.']
-];
-
-config = {
-  columns: {
-    0: {
-      width: 20,
-      wrapWord: true
-    }
-  }
-};
-
-output = table(data, config);
-
-console.log(output);
-```
-
-```
-╔══════════════════════╗
-║ Lorem ipsum dolor    ║
-║ sit amet,            ║
-║ consectetur          ║
-║ adipiscing elit.     ║
-║ Phasellus pulvinar   ║
-║ nibh sed mauris      ║
-║ convallis dapibus.   ║
-║ Nunc venenatis       ║
-║ tempus nulla sit     ║
-║ amet viverra.        ║
-╚══════════════════════╝
-
-```
-
diff --git a/node_modules/table/dist/alignString.d.ts b/node_modules/table/dist/alignString.d.ts
new file mode 100644
index 0000000..459fa7e
--- /dev/null
+++ b/node_modules/table/dist/alignString.d.ts
@@ -0,0 +1,6 @@
+import type { Alignment } from './types/api';
+/**
+ * Pads a string to the left and/or right to position the subject
+ * text in a desired alignment within a container.
+ */
+export declare const alignString: (subject: string, containerWidth: number, alignment: Alignment) => string;
diff --git a/node_modules/table/dist/alignString.js b/node_modules/table/dist/alignString.js
index 2dec379..61dc552 100644
--- a/node_modules/table/dist/alignString.js
+++ b/node_modules/table/dist/alignString.js
@@ -1,108 +1,59 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
-
-var _isString2 = _interopRequireDefault(require("lodash/isString"));
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const alignments = ['left', 'right', 'center'];
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.alignString = void 0;
+const string_width_1 = __importDefault(require("string-width"));
+const utils_1 = require("./utils");
 const alignLeft = (subject, width) => {
-  return subject + ' '.repeat(width);
+    return subject + ' '.repeat(width);
 };
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-
-
 const alignRight = (subject, width) => {
-  return ' '.repeat(width) + subject;
+    return ' '.repeat(width) + subject;
 };
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-
-
 const alignCenter = (subject, width) => {
-  let halfWidth;
-  halfWidth = width / 2;
-
-  if (width % 2 === 0) {
-    return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth);
-  } else {
-    halfWidth = Math.floor(halfWidth);
-    return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth + 1);
-  }
+    return ' '.repeat(Math.floor(width / 2)) + subject + ' '.repeat(Math.ceil(width / 2));
+};
+const alignJustify = (subject, width) => {
+    const spaceSequenceCount = utils_1.countSpaceSequence(subject);
+    if (spaceSequenceCount === 0) {
+        return alignLeft(subject, width);
+    }
+    const addingSpaces = utils_1.distributeUnevenly(width, spaceSequenceCount);
+    if (Math.max(...addingSpaces) > 3) {
+        return alignLeft(subject, width);
+    }
+    let spaceSequenceIndex = 0;
+    return subject.replace(/\s+/g, (groupSpace) => {
+        return groupSpace + ' '.repeat(addingSpaces[spaceSequenceIndex++]);
+    });
 };
 /**
  * Pads a string to the left and/or right to position the subject
  * text in a desired alignment within a container.
- *
- * @param {string} subject
- * @param {number} containerWidth
- * @param {string} alignment One of the valid options (left, right, center).
- * @returns {string}
  */
-
-
 const alignString = (subject, containerWidth, alignment) => {
-  if (!(0, _isString2.default)(subject)) {
-    throw new TypeError('Subject parameter value must be a string.');
-  }
-
-  if (!(0, _isNumber2.default)(containerWidth)) {
-    throw new TypeError('Container width parameter value must be a number.');
-  }
-
-  const subjectWidth = (0, _stringWidth.default)(subject);
-
-  if (subjectWidth > containerWidth) {
-    // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);
-    throw new Error('Subject parameter value width cannot be greater than the container width.');
-  }
-
-  if (!(0, _isString2.default)(alignment)) {
-    throw new TypeError('Alignment parameter value must be a string.');
-  }
-
-  if (!alignments.includes(alignment)) {
-    throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');
-  }
-
-  if (subjectWidth === 0) {
-    return ' '.repeat(containerWidth);
-  }
-
-  const availableWidth = containerWidth - subjectWidth;
-
-  if (alignment === 'left') {
-    return alignLeft(subject, availableWidth);
-  }
-
-  if (alignment === 'right') {
-    return alignRight(subject, availableWidth);
-  }
-
-  return alignCenter(subject, availableWidth);
+    const subjectWidth = string_width_1.default(subject);
+    if (subjectWidth === containerWidth) {
+        return subject;
+    }
+    if (subjectWidth > containerWidth) {
+        throw new Error('Subject parameter value width cannot be greater than the container width.');
+    }
+    if (subjectWidth === 0) {
+        return ' '.repeat(containerWidth);
+    }
+    const availableWidth = containerWidth - subjectWidth;
+    if (alignment === 'left') {
+        return alignLeft(subject, availableWidth);
+    }
+    if (alignment === 'right') {
+        return alignRight(subject, availableWidth);
+    }
+    if (alignment === 'justify') {
+        return alignJustify(subject, availableWidth);
+    }
+    return alignCenter(subject, availableWidth);
 };
-
-var _default = alignString;
-exports.default = _default;
-//# sourceMappingURL=alignString.js.map
\ No newline at end of file
+exports.alignString = alignString;
diff --git a/node_modules/table/dist/alignString.js.flow b/node_modules/table/dist/alignString.js.flow
deleted file mode 100644
index 4bd216d..0000000
--- a/node_modules/table/dist/alignString.js.flow
+++ /dev/null
@@ -1,96 +0,0 @@
-import _ from 'lodash';
-import stringWidth from 'string-width';
-
-const alignments = [
-  'left',
-  'right',
-  'center',
-];
-
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-const alignLeft = (subject, width) => {
-  return subject + ' '.repeat(width);
-};
-
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-const alignRight = (subject, width) => {
-  return ' '.repeat(width) + subject;
-};
-
-/**
- * @param {string} subject
- * @param {number} width
- * @returns {string}
- */
-const alignCenter = (subject, width) => {
-  let halfWidth;
-
-  halfWidth = width / 2;
-
-  if (width % 2 === 0) {
-    return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth);
-  } else {
-    halfWidth = Math.floor(halfWidth);
-
-    return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth + 1);
-  }
-};
-
-/**
- * Pads a string to the left and/or right to position the subject
- * text in a desired alignment within a container.
- *
- * @param {string} subject
- * @param {number} containerWidth
- * @param {string} alignment One of the valid options (left, right, center).
- * @returns {string}
- */
-export default (subject, containerWidth, alignment) => {
-  if (!_.isString(subject)) {
-    throw new TypeError('Subject parameter value must be a string.');
-  }
-
-  if (!_.isNumber(containerWidth)) {
-    throw new TypeError('Container width parameter value must be a number.');
-  }
-
-  const subjectWidth = stringWidth(subject);
-
-  if (subjectWidth > containerWidth) {
-    // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);
-
-    throw new Error('Subject parameter value width cannot be greater than the container width.');
-  }
-
-  if (!_.isString(alignment)) {
-    throw new TypeError('Alignment parameter value must be a string.');
-  }
-
-  if (!alignments.includes(alignment)) {
-    throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');
-  }
-
-  if (subjectWidth === 0) {
-    return ' '.repeat(containerWidth);
-  }
-
-  const availableWidth = containerWidth - subjectWidth;
-
-  if (alignment === 'left') {
-    return alignLeft(subject, availableWidth);
-  }
-
-  if (alignment === 'right') {
-    return alignRight(subject, availableWidth);
-  }
-
-  return alignCenter(subject, availableWidth);
-};
diff --git a/node_modules/table/dist/alignString.js.map b/node_modules/table/dist/alignString.js.map
deleted file mode 100644
index 8997445..0000000
--- a/node_modules/table/dist/alignString.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/alignString.js"],"names":["alignments","alignLeft","subject","width","repeat","alignRight","alignCenter","halfWidth","Math","floor","containerWidth","alignment","TypeError","subjectWidth","Error","includes","availableWidth"],"mappings":";;;;;;;;;;;AACA;;;;AAEA,MAAMA,UAAU,GAAG,CACjB,MADiB,EAEjB,OAFiB,EAGjB,QAHiB,CAAnB;AAMA;AACA;AACA;AACA;AACA;;AACA,MAAMC,SAAS,GAAG,CAACC,OAAD,EAAUC,KAAV,KAAoB;AACpC,SAAOD,OAAO,GAAG,IAAIE,MAAJ,CAAWD,KAAX,CAAjB;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;;;AACA,MAAME,UAAU,GAAG,CAACH,OAAD,EAAUC,KAAV,KAAoB;AACrC,SAAO,IAAIC,MAAJ,CAAWD,KAAX,IAAoBD,OAA3B;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;;;AACA,MAAMI,WAAW,GAAG,CAACJ,OAAD,EAAUC,KAAV,KAAoB;AACtC,MAAII,SAAJ;AAEAA,EAAAA,SAAS,GAAGJ,KAAK,GAAG,CAApB;;AAEA,MAAIA,KAAK,GAAG,CAAR,KAAc,CAAlB,EAAqB;AACnB,WAAO,IAAIC,MAAJ,CAAWG,SAAX,IAAwBL,OAAxB,GAAkC,IAAIE,MAAJ,CAAWG,SAAX,CAAzC;AACD,GAFD,MAEO;AACLA,IAAAA,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAWF,SAAX,CAAZ;AAEA,WAAO,IAAIH,MAAJ,CAAWG,SAAX,IAAwBL,OAAxB,GAAkC,IAAIE,MAAJ,CAAWG,SAAS,GAAG,CAAvB,CAAzC;AACD;AACF,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;qBACgBL,O,EAASQ,c,EAAgBC,S,KAAc;AACrD,MAAI,CAAC,wBAAWT,OAAX,CAAL,EAA0B;AACxB,UAAM,IAAIU,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAED,MAAI,CAAC,wBAAWF,cAAX,CAAL,EAAiC;AAC/B,UAAM,IAAIE,SAAJ,CAAc,mDAAd,CAAN;AACD;;AAED,QAAMC,YAAY,GAAG,0BAAYX,OAAZ,CAArB;;AAEA,MAAIW,YAAY,GAAGH,cAAnB,EAAmC;AACjC;AAEA,UAAM,IAAII,KAAJ,CAAU,2EAAV,CAAN;AACD;;AAED,MAAI,CAAC,wBAAWH,SAAX,CAAL,EAA4B;AAC1B,UAAM,IAAIC,SAAJ,CAAc,6CAAd,CAAN;AACD;;AAED,MAAI,CAACZ,UAAU,CAACe,QAAX,CAAoBJ,SAApB,CAAL,EAAqC;AACnC,UAAM,IAAIG,KAAJ,CAAU,4FAAV,CAAN;AACD;;AAED,MAAID,YAAY,KAAK,CAArB,EAAwB;AACtB,WAAO,IAAIT,MAAJ,CAAWM,cAAX,CAAP;AACD;;AAED,QAAMM,cAAc,GAAGN,cAAc,GAAGG,YAAxC;;AAEA,MAAIF,SAAS,KAAK,MAAlB,EAA0B;AACxB,WAAOV,SAAS,CAACC,OAAD,EAAUc,cAAV,CAAhB;AACD;;AAED,MAAIL,SAAS,KAAK,OAAlB,EAA2B;AACzB,WAAON,UAAU,CAACH,OAAD,EAAUc,cAAV,CAAjB;AACD;;AAED,SAAOV,WAAW,CAACJ,OAAD,EAAUc,cAAV,CAAlB;AACD,C","sourcesContent":["import _ from 'lodash';\nimport stringWidth from 'string-width';\n\nconst alignments = [\n  'left',\n  'right',\n  'center',\n];\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nconst alignLeft = (subject, width) => {\n  return subject + ' '.repeat(width);\n};\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nconst alignRight = (subject, width) => {\n  return ' '.repeat(width) + subject;\n};\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nconst alignCenter = (subject, width) => {\n  let halfWidth;\n\n  halfWidth = width / 2;\n\n  if (width % 2 === 0) {\n    return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth);\n  } else {\n    halfWidth = Math.floor(halfWidth);\n\n    return ' '.repeat(halfWidth) + subject + ' '.repeat(halfWidth + 1);\n  }\n};\n\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n *\n * @param {string} subject\n * @param {number} containerWidth\n * @param {string} alignment One of the valid options (left, right, center).\n * @returns {string}\n */\nexport default (subject, containerWidth, alignment) => {\n  if (!_.isString(subject)) {\n    throw new TypeError('Subject parameter value must be a string.');\n  }\n\n  if (!_.isNumber(containerWidth)) {\n    throw new TypeError('Container width parameter value must be a number.');\n  }\n\n  const subjectWidth = stringWidth(subject);\n\n  if (subjectWidth > containerWidth) {\n    // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);\n\n    throw new Error('Subject parameter value width cannot be greater than the container width.');\n  }\n\n  if (!_.isString(alignment)) {\n    throw new TypeError('Alignment parameter value must be a string.');\n  }\n\n  if (!alignments.includes(alignment)) {\n    throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');\n  }\n\n  if (subjectWidth === 0) {\n    return ' '.repeat(containerWidth);\n  }\n\n  const availableWidth = containerWidth - subjectWidth;\n\n  if (alignment === 'left') {\n    return alignLeft(subject, availableWidth);\n  }\n\n  if (alignment === 'right') {\n    return alignRight(subject, availableWidth);\n  }\n\n  return alignCenter(subject, availableWidth);\n};\n"],"file":"alignString.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/alignTableData.d.ts b/node_modules/table/dist/alignTableData.d.ts
new file mode 100644
index 0000000..73314d8
--- /dev/null
+++ b/node_modules/table/dist/alignTableData.d.ts
@@ -0,0 +1,2 @@
+import type { BaseConfig, Row } from './types/internal';
+export declare const alignTableData: (rows: Row[], config: BaseConfig) => Row[];
diff --git a/node_modules/table/dist/alignTableData.js b/node_modules/table/dist/alignTableData.js
index 54add44..5daa581 100644
--- a/node_modules/table/dist/alignTableData.js
+++ b/node_modules/table/dist/alignTableData.js
@@ -1,35 +1,13 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-var _alignString = _interopRequireDefault(require("./alignString"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {table~row[]} rows
- * @param {object} config
- * @returns {table~row[]}
- */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.alignTableData = void 0;
+const alignString_1 = require("./alignString");
 const alignTableData = (rows, config) => {
-  return rows.map(cells => {
-    return cells.map((value, index1) => {
-      const column = config.columns[index1];
-
-      if ((0, _stringWidth.default)(value) === column.width) {
-        return value;
-      } else {
-        return (0, _alignString.default)(value, column.width, column.alignment);
-      }
+    return rows.map((row) => {
+        return row.map((cell, cellIndex) => {
+            const { width, alignment } = config.columns[cellIndex];
+            return alignString_1.alignString(cell, width, alignment);
+        });
     });
-  });
 };
-
-var _default = alignTableData;
-exports.default = _default;
-//# sourceMappingURL=alignTableData.js.map
\ No newline at end of file
+exports.alignTableData = alignTableData;
diff --git a/node_modules/table/dist/alignTableData.js.flow b/node_modules/table/dist/alignTableData.js.flow
deleted file mode 100644
index c82c31e..0000000
--- a/node_modules/table/dist/alignTableData.js.flow
+++ /dev/null
@@ -1,21 +0,0 @@
-import stringWidth from 'string-width';
-import alignString from './alignString';
-
-/**
- * @param {table~row[]} rows
- * @param {object} config
- * @returns {table~row[]}
- */
-export default (rows, config) => {
-  return rows.map((cells) => {
-    return cells.map((value, index1) => {
-      const column = config.columns[index1];
-
-      if (stringWidth(value) === column.width) {
-        return value;
-      } else {
-        return alignString(value, column.width, column.alignment);
-      }
-    });
-  });
-};
diff --git a/node_modules/table/dist/alignTableData.js.map b/node_modules/table/dist/alignTableData.js.map
deleted file mode 100644
index 51c4479..0000000
--- a/node_modules/table/dist/alignTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/alignTableData.js"],"names":["rows","config","map","cells","value","index1","column","columns","width","alignment"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;wBACgBA,I,EAAMC,M,KAAW;AAC/B,SAAOD,IAAI,CAACE,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAU,CAACE,KAAD,EAAQC,MAAR,KAAmB;AAClC,YAAMC,MAAM,GAAGL,MAAM,CAACM,OAAP,CAAeF,MAAf,CAAf;;AAEA,UAAI,0BAAYD,KAAZ,MAAuBE,MAAM,CAACE,KAAlC,EAAyC;AACvC,eAAOJ,KAAP;AACD,OAFD,MAEO;AACL,eAAO,0BAAYA,KAAZ,EAAmBE,MAAM,CAACE,KAA1B,EAAiCF,MAAM,CAACG,SAAxC,CAAP;AACD;AACF,KARM,CAAP;AASD,GAVM,CAAP;AAWD,C","sourcesContent":["import stringWidth from 'string-width';\nimport alignString from './alignString';\n\n/**\n * @param {table~row[]} rows\n * @param {object} config\n * @returns {table~row[]}\n */\nexport default (rows, config) => {\n  return rows.map((cells) => {\n    return cells.map((value, index1) => {\n      const column = config.columns[index1];\n\n      if (stringWidth(value) === column.width) {\n        return value;\n      } else {\n        return alignString(value, column.width, column.alignment);\n      }\n    });\n  });\n};\n"],"file":"alignTableData.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateCellHeight.d.ts b/node_modules/table/dist/calculateCellHeight.d.ts
new file mode 100644
index 0000000..76fd7f1
--- /dev/null
+++ b/node_modules/table/dist/calculateCellHeight.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Calculates height of cell content in regard to its width and word wrapping.
+ */
+export declare const calculateCellHeight: (value: string, columnWidth: number, useWrapWord?: boolean) => number;
diff --git a/node_modules/table/dist/calculateCellHeight.js b/node_modules/table/dist/calculateCellHeight.js
index 7c11c4f..372943a 100644
--- a/node_modules/table/dist/calculateCellHeight.js
+++ b/node_modules/table/dist/calculateCellHeight.js
@@ -1,38 +1,11 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _isString2 = _interopRequireDefault(require("lodash/isString"));
-
-var _wrapCell = _interopRequireDefault(require("./wrapCell"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.calculateCellHeight = void 0;
+const wrapCell_1 = require("./wrapCell");
 /**
- * @param {string} value
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {number}
+ * Calculates height of cell content in regard to its width and word wrapping.
  */
 const calculateCellHeight = (value, columnWidth, useWrapWord = false) => {
-  if (!(0, _isString2.default)(value)) {
-    throw new TypeError('Value must be a string.');
-  }
-
-  if (!Number.isInteger(columnWidth)) {
-    throw new TypeError('Column width must be an integer.');
-  }
-
-  if (columnWidth < 1) {
-    throw new Error('Column width must be greater than 0.');
-  }
-
-  return (0, _wrapCell.default)(value, columnWidth, useWrapWord).length;
+    return wrapCell_1.wrapCell(value, columnWidth, useWrapWord).length;
 };
-
-var _default = calculateCellHeight;
-exports.default = _default;
-//# sourceMappingURL=calculateCellHeight.js.map
\ No newline at end of file
+exports.calculateCellHeight = calculateCellHeight;
diff --git a/node_modules/table/dist/calculateCellHeight.js.flow b/node_modules/table/dist/calculateCellHeight.js.flow
deleted file mode 100644
index 3eca8d7..0000000
--- a/node_modules/table/dist/calculateCellHeight.js.flow
+++ /dev/null
@@ -1,24 +0,0 @@
-import _ from 'lodash';
-import wrapCell from './wrapCell';
-
-/**
- * @param {string} value
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {number}
- */
-export default (value, columnWidth, useWrapWord = false) => {
-  if (!_.isString(value)) {
-    throw new TypeError('Value must be a string.');
-  }
-
-  if (!Number.isInteger(columnWidth)) {
-    throw new TypeError('Column width must be an integer.');
-  }
-
-  if (columnWidth < 1) {
-    throw new Error('Column width must be greater than 0.');
-  }
-
-  return wrapCell(value, columnWidth, useWrapWord).length;
-};
diff --git a/node_modules/table/dist/calculateCellHeight.js.map b/node_modules/table/dist/calculateCellHeight.js.map
deleted file mode 100644
index e1000ab..0000000
--- a/node_modules/table/dist/calculateCellHeight.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateCellHeight.js"],"names":["value","columnWidth","useWrapWord","TypeError","Number","isInteger","Error","length"],"mappings":";;;;;;;;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;6BACgBA,K,EAAOC,W,EAAaC,WAAW,GAAG,K,KAAU;AAC1D,MAAI,CAAC,wBAAWF,KAAX,CAAL,EAAwB;AACtB,UAAM,IAAIG,SAAJ,CAAc,yBAAd,CAAN;AACD;;AAED,MAAI,CAACC,MAAM,CAACC,SAAP,CAAiBJ,WAAjB,CAAL,EAAoC;AAClC,UAAM,IAAIE,SAAJ,CAAc,kCAAd,CAAN;AACD;;AAED,MAAIF,WAAW,GAAG,CAAlB,EAAqB;AACnB,UAAM,IAAIK,KAAJ,CAAU,sCAAV,CAAN;AACD;;AAED,SAAO,uBAASN,KAAT,EAAgBC,WAAhB,EAA6BC,WAA7B,EAA0CK,MAAjD;AACD,C","sourcesContent":["import _ from 'lodash';\nimport wrapCell from './wrapCell';\n\n/**\n * @param {string} value\n * @param {number} columnWidth\n * @param {boolean} useWrapWord\n * @returns {number}\n */\nexport default (value, columnWidth, useWrapWord = false) => {\n  if (!_.isString(value)) {\n    throw new TypeError('Value must be a string.');\n  }\n\n  if (!Number.isInteger(columnWidth)) {\n    throw new TypeError('Column width must be an integer.');\n  }\n\n  if (columnWidth < 1) {\n    throw new Error('Column width must be greater than 0.');\n  }\n\n  return wrapCell(value, columnWidth, useWrapWord).length;\n};\n"],"file":"calculateCellHeight.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateCellWidthIndex.js b/node_modules/table/dist/calculateCellWidthIndex.js
deleted file mode 100644
index a4df501..0000000
--- a/node_modules/table/dist/calculateCellWidthIndex.js
+++ /dev/null
@@ -1,28 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Calculates width of each cell contents.
- *
- * @param {string[]} cells
- * @returns {number[]}
- */
-const calculateCellWidthIndex = cells => {
-  return cells.map(value => {
-    return Math.max(...value.split('\n').map(line => {
-      return (0, _stringWidth.default)(line);
-    }));
-  });
-};
-
-var _default = calculateCellWidthIndex;
-exports.default = _default;
-//# sourceMappingURL=calculateCellWidthIndex.js.map
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateCellWidthIndex.js.flow b/node_modules/table/dist/calculateCellWidthIndex.js.flow
deleted file mode 100644
index e253953..0000000
--- a/node_modules/table/dist/calculateCellWidthIndex.js.flow
+++ /dev/null
@@ -1,17 +0,0 @@
-import stringWidth from 'string-width';
-
-/**
- * Calculates width of each cell contents.
- *
- * @param {string[]} cells
- * @returns {number[]}
- */
-export default (cells) => {
-  return cells.map((value) => {
-    return Math.max(
-      ...value.split('\n').map((line) => {
-        return stringWidth(line);
-      }),
-    );
-  });
-};
diff --git a/node_modules/table/dist/calculateCellWidthIndex.js.map b/node_modules/table/dist/calculateCellWidthIndex.js.map
deleted file mode 100644
index f7fd4a7..0000000
--- a/node_modules/table/dist/calculateCellWidthIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateCellWidthIndex.js"],"names":["cells","map","value","Math","max","split","line"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;gCACgBA,K,IAAU;AACxB,SAAOA,KAAK,CAACC,GAAN,CAAWC,KAAD,IAAW;AAC1B,WAAOC,IAAI,CAACC,GAAL,CACL,GAAGF,KAAK,CAACG,KAAN,CAAY,IAAZ,EAAkBJ,GAAlB,CAAuBK,IAAD,IAAU;AACjC,aAAO,0BAAYA,IAAZ,CAAP;AACD,KAFE,CADE,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["import stringWidth from 'string-width';\n\n/**\n * Calculates width of each cell contents.\n *\n * @param {string[]} cells\n * @returns {number[]}\n */\nexport default (cells) => {\n  return cells.map((value) => {\n    return Math.max(\n      ...value.split('\\n').map((line) => {\n        return stringWidth(line);\n      }),\n    );\n  });\n};\n"],"file":"calculateCellWidthIndex.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateCellWidths.d.ts b/node_modules/table/dist/calculateCellWidths.d.ts
new file mode 100644
index 0000000..677ca4e
--- /dev/null
+++ b/node_modules/table/dist/calculateCellWidths.d.ts
@@ -0,0 +1,5 @@
+import type { Cell } from './types/internal';
+/**
+ * Calculates width of each cell contents in a row.
+ */
+export declare const calculateCellWidths: (cells: Cell[]) => number[];
diff --git a/node_modules/table/dist/calculateCellWidths.js b/node_modules/table/dist/calculateCellWidths.js
new file mode 100644
index 0000000..684115d
--- /dev/null
+++ b/node_modules/table/dist/calculateCellWidths.js
@@ -0,0 +1,16 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.calculateCellWidths = void 0;
+const string_width_1 = __importDefault(require("string-width"));
+/**
+ * Calculates width of each cell contents in a row.
+ */
+const calculateCellWidths = (cells) => {
+    return cells.map((cell) => {
+        return Math.max(...cell.split('\n').map(string_width_1.default));
+    });
+};
+exports.calculateCellWidths = calculateCellWidths;
diff --git a/node_modules/table/dist/calculateColumnWidths.d.ts b/node_modules/table/dist/calculateColumnWidths.d.ts
new file mode 100644
index 0000000..7d0b006
--- /dev/null
+++ b/node_modules/table/dist/calculateColumnWidths.d.ts
@@ -0,0 +1,6 @@
+import type { Row } from './types/internal';
+declare const _default: (rows: Row[]) => number[];
+/**
+ * Produces an array of values that describe the largest value length (width) in every column.
+ */
+export default _default;
diff --git a/node_modules/table/dist/calculateColumnWidths.js b/node_modules/table/dist/calculateColumnWidths.js
new file mode 100644
index 0000000..b4f80a3
--- /dev/null
+++ b/node_modules/table/dist/calculateColumnWidths.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const calculateCellWidths_1 = require("./calculateCellWidths");
+/**
+ * Produces an array of values that describe the largest value length (width) in every column.
+ */
+exports.default = (rows) => {
+    const columnWidths = new Array(rows[0].length).fill(0);
+    rows.forEach((row) => {
+        const cellWidths = calculateCellWidths_1.calculateCellWidths(row);
+        cellWidths.forEach((cellWidth, cellIndex) => {
+            columnWidths[cellIndex] = Math.max(columnWidths[cellIndex], cellWidth);
+        });
+    });
+    return columnWidths;
+};
diff --git a/node_modules/table/dist/calculateMaximumColumnWidthIndex.js b/node_modules/table/dist/calculateMaximumColumnWidthIndex.js
deleted file mode 100644
index ea5d4b9..0000000
--- a/node_modules/table/dist/calculateMaximumColumnWidthIndex.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _calculateCellWidthIndex = _interopRequireDefault(require("./calculateCellWidthIndex"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Produces an array of values that describe the largest value length (width) in every column.
- *
- * @param {Array[]} rows
- * @returns {number[]}
- */
-const calculateMaximumColumnWidthIndex = rows => {
-  if (!rows[0]) {
-    throw new Error('Dataset must have at least one row.');
-  }
-
-  const columns = new Array(rows[0].length).fill(0);
-  rows.forEach(row => {
-    const columnWidthIndex = (0, _calculateCellWidthIndex.default)(row);
-    columnWidthIndex.forEach((valueWidth, index0) => {
-      if (columns[index0] < valueWidth) {
-        columns[index0] = valueWidth;
-      }
-    });
-  });
-  return columns;
-};
-
-var _default = calculateMaximumColumnWidthIndex;
-exports.default = _default;
-//# sourceMappingURL=calculateMaximumColumnWidthIndex.js.map
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow b/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow
deleted file mode 100644
index 5c8c109..0000000
--- a/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow
+++ /dev/null
@@ -1,27 +0,0 @@
-import calculateCellWidthIndex from './calculateCellWidthIndex';
-
-/**
- * Produces an array of values that describe the largest value length (width) in every column.
- *
- * @param {Array[]} rows
- * @returns {number[]}
- */
-export default (rows) => {
-  if (!rows[0]) {
-    throw new Error('Dataset must have at least one row.');
-  }
-
-  const columns = new Array(rows[0].length).fill(0);
-
-  rows.forEach((row) => {
-    const columnWidthIndex = calculateCellWidthIndex(row);
-
-    columnWidthIndex.forEach((valueWidth, index0) => {
-      if (columns[index0] < valueWidth) {
-        columns[index0] = valueWidth;
-      }
-    });
-  });
-
-  return columns;
-};
diff --git a/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map b/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map
deleted file mode 100644
index 10c8074..0000000
--- a/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateMaximumColumnWidthIndex.js"],"names":["rows","Error","columns","Array","length","fill","forEach","row","columnWidthIndex","valueWidth","index0"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;yCACgBA,I,IAAS;AACvB,MAAI,CAACA,IAAI,CAAC,CAAD,CAAT,EAAc;AACZ,UAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACD;;AAED,QAAMC,OAAO,GAAG,IAAIC,KAAJ,CAAUH,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAlB,EAA0BC,IAA1B,CAA+B,CAA/B,CAAhB;AAEAL,EAAAA,IAAI,CAACM,OAAL,CAAcC,GAAD,IAAS;AACpB,UAAMC,gBAAgB,GAAG,sCAAwBD,GAAxB,CAAzB;AAEAC,IAAAA,gBAAgB,CAACF,OAAjB,CAAyB,CAACG,UAAD,EAAaC,MAAb,KAAwB;AAC/C,UAAIR,OAAO,CAACQ,MAAD,CAAP,GAAkBD,UAAtB,EAAkC;AAChCP,QAAAA,OAAO,CAACQ,MAAD,CAAP,GAAkBD,UAAlB;AACD;AACF,KAJD;AAKD,GARD;AAUA,SAAOP,OAAP;AACD,C","sourcesContent":["import calculateCellWidthIndex from './calculateCellWidthIndex';\n\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n *\n * @param {Array[]} rows\n * @returns {number[]}\n */\nexport default (rows) => {\n  if (!rows[0]) {\n    throw new Error('Dataset must have at least one row.');\n  }\n\n  const columns = new Array(rows[0].length).fill(0);\n\n  rows.forEach((row) => {\n    const columnWidthIndex = calculateCellWidthIndex(row);\n\n    columnWidthIndex.forEach((valueWidth, index0) => {\n      if (columns[index0] < valueWidth) {\n        columns[index0] = valueWidth;\n      }\n    });\n  });\n\n  return columns;\n};\n"],"file":"calculateMaximumColumnWidthIndex.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateRowHeightIndex.js b/node_modules/table/dist/calculateRowHeightIndex.js
deleted file mode 100644
index d2d201c..0000000
--- a/node_modules/table/dist/calculateRowHeightIndex.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _max2 = _interopRequireDefault(require("lodash/max"));
-
-var _isBoolean2 = _interopRequireDefault(require("lodash/isBoolean"));
-
-var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
-
-var _calculateCellHeight = _interopRequireDefault(require("./calculateCellHeight"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Calculates the vertical row span index.
- *
- * @param {Array[]} rows
- * @param {object} config
- * @returns {number[]}
- */
-const calculateRowHeightIndex = (rows, config) => {
-  const tableWidth = rows[0].length;
-  const rowSpanIndex = [];
-  rows.forEach(cells => {
-    const cellHeightIndex = new Array(tableWidth).fill(1);
-    cells.forEach((value, index1) => {
-      if (!(0, _isNumber2.default)(config.columns[index1].width)) {
-        throw new TypeError('column[index].width must be a number.');
-      }
-
-      if (!(0, _isBoolean2.default)(config.columns[index1].wrapWord)) {
-        throw new TypeError('column[index].wrapWord must be a boolean.');
-      }
-
-      cellHeightIndex[index1] = (0, _calculateCellHeight.default)(value, config.columns[index1].width, config.columns[index1].wrapWord);
-    });
-    rowSpanIndex.push((0, _max2.default)(cellHeightIndex));
-  });
-  return rowSpanIndex;
-};
-
-var _default = calculateRowHeightIndex;
-exports.default = _default;
-//# sourceMappingURL=calculateRowHeightIndex.js.map
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateRowHeightIndex.js.flow b/node_modules/table/dist/calculateRowHeightIndex.js.flow
deleted file mode 100644
index 063ae4d..0000000
--- a/node_modules/table/dist/calculateRowHeightIndex.js.flow
+++ /dev/null
@@ -1,35 +0,0 @@
-import _ from 'lodash';
-import calculateCellHeight from './calculateCellHeight';
-
-/**
- * Calculates the vertical row span index.
- *
- * @param {Array[]} rows
- * @param {object} config
- * @returns {number[]}
- */
-export default (rows, config) => {
-  const tableWidth = rows[0].length;
-
-  const rowSpanIndex = [];
-
-  rows.forEach((cells) => {
-    const cellHeightIndex = new Array(tableWidth).fill(1);
-
-    cells.forEach((value, index1) => {
-      if (!_.isNumber(config.columns[index1].width)) {
-        throw new TypeError('column[index].width must be a number.');
-      }
-
-      if (!_.isBoolean(config.columns[index1].wrapWord)) {
-        throw new TypeError('column[index].wrapWord must be a boolean.');
-      }
-
-      cellHeightIndex[index1] = calculateCellHeight(value, config.columns[index1].width, config.columns[index1].wrapWord);
-    });
-
-    rowSpanIndex.push(_.max(cellHeightIndex));
-  });
-
-  return rowSpanIndex;
-};
diff --git a/node_modules/table/dist/calculateRowHeightIndex.js.map b/node_modules/table/dist/calculateRowHeightIndex.js.map
deleted file mode 100644
index 06dd11d..0000000
--- a/node_modules/table/dist/calculateRowHeightIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/calculateRowHeightIndex.js"],"names":["rows","config","tableWidth","length","rowSpanIndex","forEach","cells","cellHeightIndex","Array","fill","value","index1","columns","width","TypeError","wrapWord","push"],"mappings":";;;;;;;;;;;;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;iCACgBA,I,EAAMC,M,KAAW;AAC/B,QAAMC,UAAU,GAAGF,IAAI,CAAC,CAAD,CAAJ,CAAQG,MAA3B;AAEA,QAAMC,YAAY,GAAG,EAArB;AAEAJ,EAAAA,IAAI,CAACK,OAAL,CAAcC,KAAD,IAAW;AACtB,UAAMC,eAAe,GAAG,IAAIC,KAAJ,CAAUN,UAAV,EAAsBO,IAAtB,CAA2B,CAA3B,CAAxB;AAEAH,IAAAA,KAAK,CAACD,OAAN,CAAc,CAACK,KAAD,EAAQC,MAAR,KAAmB;AAC/B,UAAI,CAAC,wBAAWV,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBE,KAAlC,CAAL,EAA+C;AAC7C,cAAM,IAAIC,SAAJ,CAAc,uCAAd,CAAN;AACD;;AAED,UAAI,CAAC,yBAAYb,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBI,QAAnC,CAAL,EAAmD;AACjD,cAAM,IAAID,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAEDP,MAAAA,eAAe,CAACI,MAAD,CAAf,GAA0B,kCAAoBD,KAApB,EAA2BT,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBE,KAAlD,EAAyDZ,MAAM,CAACW,OAAP,CAAeD,MAAf,EAAuBI,QAAhF,CAA1B;AACD,KAVD;AAYAX,IAAAA,YAAY,CAACY,IAAb,CAAkB,mBAAMT,eAAN,CAAlB;AACD,GAhBD;AAkBA,SAAOH,YAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport calculateCellHeight from './calculateCellHeight';\n\n/**\n * Calculates the vertical row span index.\n *\n * @param {Array[]} rows\n * @param {object} config\n * @returns {number[]}\n */\nexport default (rows, config) => {\n  const tableWidth = rows[0].length;\n\n  const rowSpanIndex = [];\n\n  rows.forEach((cells) => {\n    const cellHeightIndex = new Array(tableWidth).fill(1);\n\n    cells.forEach((value, index1) => {\n      if (!_.isNumber(config.columns[index1].width)) {\n        throw new TypeError('column[index].width must be a number.');\n      }\n\n      if (!_.isBoolean(config.columns[index1].wrapWord)) {\n        throw new TypeError('column[index].wrapWord must be a boolean.');\n      }\n\n      cellHeightIndex[index1] = calculateCellHeight(value, config.columns[index1].width, config.columns[index1].wrapWord);\n    });\n\n    rowSpanIndex.push(_.max(cellHeightIndex));\n  });\n\n  return rowSpanIndex;\n};\n"],"file":"calculateRowHeightIndex.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/calculateRowHeights.d.ts b/node_modules/table/dist/calculateRowHeights.d.ts
new file mode 100644
index 0000000..27c9183
--- /dev/null
+++ b/node_modules/table/dist/calculateRowHeights.d.ts
@@ -0,0 +1,5 @@
+import type { BaseConfig, Row } from './types/internal';
+/**
+ * Produces an array of values that describe the largest value length (height) in every row.
+ */
+export declare const calculateRowHeights: (rows: Row[], config: BaseConfig) => number[];
diff --git a/node_modules/table/dist/calculateRowHeights.js b/node_modules/table/dist/calculateRowHeights.js
new file mode 100644
index 0000000..d3411f8
--- /dev/null
+++ b/node_modules/table/dist/calculateRowHeights.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.calculateRowHeights = void 0;
+const calculateCellHeight_1 = require("./calculateCellHeight");
+/**
+ * Produces an array of values that describe the largest value length (height) in every row.
+ */
+const calculateRowHeights = (rows, config) => {
+    return rows.map((row) => {
+        let rowHeight = 1;
+        row.forEach((cell, cellIndex) => {
+            const cellHeight = calculateCellHeight_1.calculateCellHeight(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);
+            rowHeight = Math.max(rowHeight, cellHeight);
+        });
+        return rowHeight;
+    });
+};
+exports.calculateRowHeights = calculateRowHeights;
diff --git a/node_modules/table/dist/createStream.d.ts b/node_modules/table/dist/createStream.d.ts
new file mode 100644
index 0000000..9c2df8e
--- /dev/null
+++ b/node_modules/table/dist/createStream.d.ts
@@ -0,0 +1,2 @@
+import type { StreamUserConfig, WritableStream } from './types/api';
+export declare const createStream: (userConfig: StreamUserConfig) => WritableStream;
diff --git a/node_modules/table/dist/createStream.js b/node_modules/table/dist/createStream.js
index 9847ec3..d941b4b 100644
--- a/node_modules/table/dist/createStream.js
+++ b/node_modules/table/dist/createStream.js
@@ -1,127 +1,72 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _mapValues2 = _interopRequireDefault(require("lodash/mapValues"));
-
-var _alignTableData = _interopRequireDefault(require("./alignTableData"));
-
-var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex"));
-
-var _drawBorder = require("./drawBorder");
-
-var _drawRow = _interopRequireDefault(require("./drawRow"));
-
-var _makeStreamConfig = _interopRequireDefault(require("./makeStreamConfig"));
-
-var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex"));
-
-var _padTableData = _interopRequireDefault(require("./padTableData"));
-
-var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData"));
-
-var _truncateTableData = _interopRequireDefault(require("./truncateTableData"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {Array} data
- * @param {object} config
- * @returns {Array}
- */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createStream = void 0;
+const alignTableData_1 = require("./alignTableData");
+const calculateRowHeights_1 = require("./calculateRowHeights");
+const drawBorder_1 = require("./drawBorder");
+const drawRow_1 = require("./drawRow");
+const makeStreamConfig_1 = require("./makeStreamConfig");
+const mapDataUsingRowHeights_1 = require("./mapDataUsingRowHeights");
+const padTableData_1 = require("./padTableData");
+const stringifyTableData_1 = require("./stringifyTableData");
+const truncateTableData_1 = require("./truncateTableData");
 const prepareData = (data, config) => {
-  let rows;
-  rows = (0, _stringifyTableData.default)(data);
-  rows = (0, _truncateTableData.default)(data, config);
-  const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config);
-  rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config);
-  rows = (0, _alignTableData.default)(rows, config);
-  rows = (0, _padTableData.default)(rows, config);
-  return rows;
+    let rows = stringifyTableData_1.stringifyTableData(data);
+    rows = truncateTableData_1.truncateTableData(rows, config);
+    const rowHeights = calculateRowHeights_1.calculateRowHeights(rows, config);
+    rows = mapDataUsingRowHeights_1.mapDataUsingRowHeights(rows, rowHeights, config);
+    rows = alignTableData_1.alignTableData(rows, config);
+    rows = padTableData_1.padTableData(rows, config);
+    return rows;
 };
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {object} config
- * @returns {undefined}
- */
-
-
-const create = (row, columnWidthIndex, config) => {
-  const rows = prepareData([row], config);
-  const body = rows.map(literalRow => {
-    return (0, _drawRow.default)(literalRow, config.border);
-  }).join('');
-  let output;
-  output = '';
-  output += (0, _drawBorder.drawBorderTop)(columnWidthIndex, config.border);
-  output += body;
-  output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
-  output = output.trimEnd();
-  process.stdout.write(output);
+const create = (row, columnWidths, config) => {
+    const rows = prepareData([row], config);
+    const body = rows.map((literalRow) => {
+        return drawRow_1.drawRow(literalRow, config);
+    }).join('');
+    let output;
+    output = '';
+    output += drawBorder_1.drawBorderTop(columnWidths, config);
+    output += body;
+    output += drawBorder_1.drawBorderBottom(columnWidths, config);
+    output = output.trimEnd();
+    process.stdout.write(output);
 };
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {object} config
- * @returns {undefined}
- */
-
-
-const append = (row, columnWidthIndex, config) => {
-  const rows = prepareData([row], config);
-  const body = rows.map(literalRow => {
-    return (0, _drawRow.default)(literalRow, config.border);
-  }).join('');
-  let output = '';
-  const bottom = (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
-
-  if (bottom !== '\n') {
-    output = '\r\u001B[K';
-  }
-
-  output += (0, _drawBorder.drawBorderJoin)(columnWidthIndex, config.border);
-  output += body;
-  output += bottom;
-  output = output.trimEnd();
-  process.stdout.write(output);
-};
-/**
- * @param {object} userConfig
- * @returns {object}
- */
-
-
-const createStream = (userConfig = {}) => {
-  const config = (0, _makeStreamConfig.default)(userConfig);
-  const columnWidthIndex = Object.values((0, _mapValues2.default)(config.columns, column => {
-    return column.width + column.paddingLeft + column.paddingRight;
-  }));
-  let empty;
-  empty = true;
-  return {
-    /**
-     * @param {string[]} row
-     * @returns {undefined}
-     */
-    write: row => {
-      if (row.length !== config.columnCount) {
-        throw new Error('Row cell count does not match the config.columnCount.');
-      }
-
-      if (empty) {
-        empty = false;
-        return create(row, columnWidthIndex, config);
-      } else {
-        return append(row, columnWidthIndex, config);
-      }
+const append = (row, columnWidths, config) => {
+    const rows = prepareData([row], config);
+    const body = rows.map((literalRow) => {
+        return drawRow_1.drawRow(literalRow, config);
+    }).join('');
+    let output = '';
+    const bottom = drawBorder_1.drawBorderBottom(columnWidths, config);
+    if (bottom !== '\n') {
+        output = '\r\u001B[K';
     }
-  };
+    output += drawBorder_1.drawBorderJoin(columnWidths, config);
+    output += body;
+    output += bottom;
+    output = output.trimEnd();
+    process.stdout.write(output);
 };
-
-var _default = createStream;
-exports.default = _default;
-//# sourceMappingURL=createStream.js.map
\ No newline at end of file
+const createStream = (userConfig) => {
+    const config = makeStreamConfig_1.makeStreamConfig(userConfig);
+    const columnWidths = Object.values(config.columns).map((column) => {
+        return column.width + column.paddingLeft + column.paddingRight;
+    });
+    let empty = true;
+    return {
+        write: (row) => {
+            if (row.length !== config.columnCount) {
+                throw new Error('Row cell count does not match the config.columnCount.');
+            }
+            if (empty) {
+                empty = false;
+                create(row, columnWidths, config);
+            }
+            else {
+                append(row, columnWidths, config);
+            }
+        },
+    };
+};
+exports.createStream = createStream;
diff --git a/node_modules/table/dist/createStream.js.flow b/node_modules/table/dist/createStream.js.flow
deleted file mode 100644
index fee2d5c..0000000
--- a/node_modules/table/dist/createStream.js.flow
+++ /dev/null
@@ -1,126 +0,0 @@
-import _ from 'lodash';
-import alignTableData from './alignTableData';
-import calculateRowHeightIndex from './calculateRowHeightIndex';
-import {
-  drawBorderBottom,
-  drawBorderJoin,
-  drawBorderTop,
-} from './drawBorder';
-import drawRow from './drawRow';
-import makeStreamConfig from './makeStreamConfig';
-import mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';
-import padTableData from './padTableData';
-import stringifyTableData from './stringifyTableData';
-import truncateTableData from './truncateTableData';
-
-/**
- * @param {Array} data
- * @param {object} config
- * @returns {Array}
- */
-const prepareData = (data, config) => {
-  let rows;
-
-  rows = stringifyTableData(data);
-
-  rows = truncateTableData(data, config);
-
-  const rowHeightIndex = calculateRowHeightIndex(rows, config);
-
-  rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);
-  rows = alignTableData(rows, config);
-  rows = padTableData(rows, config);
-
-  return rows;
-};
-
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {object} config
- * @returns {undefined}
- */
-const create = (row, columnWidthIndex, config) => {
-  const rows = prepareData([row], config);
-
-  const body = rows.map((literalRow) => {
-    return drawRow(literalRow, config.border);
-  }).join('');
-
-  let output;
-
-  output = '';
-
-  output += drawBorderTop(columnWidthIndex, config.border);
-  output += body;
-  output += drawBorderBottom(columnWidthIndex, config.border);
-
-  output = output.trimEnd();
-
-  process.stdout.write(output);
-};
-
-/**
- * @param {string[]} row
- * @param {number[]} columnWidthIndex
- * @param {object} config
- * @returns {undefined}
- */
-const append = (row, columnWidthIndex, config) => {
-  const rows = prepareData([row], config);
-
-  const body = rows.map((literalRow) => {
-    return drawRow(literalRow, config.border);
-  }).join('');
-
-  let output = '';
-  const bottom = drawBorderBottom(columnWidthIndex, config.border);
-
-  if (bottom !== '\n') {
-    output = '\r\u001B[K';
-  }
-
-  output += drawBorderJoin(columnWidthIndex, config.border);
-  output += body;
-  output += bottom;
-
-  output = output.trimEnd();
-
-  process.stdout.write(output);
-};
-
-/**
- * @param {object} userConfig
- * @returns {object}
- */
-export default (userConfig = {}) => {
-  const config = makeStreamConfig(userConfig);
-
-  const columnWidthIndex = Object.values(_.mapValues(config.columns, (column) => {
-    return column.width + column.paddingLeft + column.paddingRight;
-  }));
-
-  let empty;
-
-  empty = true;
-
-  return {
-    /**
-     * @param {string[]} row
-     * @returns {undefined}
-     */
-    write: (row) => {
-      if (row.length !== config.columnCount) {
-        throw new Error('Row cell count does not match the config.columnCount.');
-      }
-
-      if (empty) {
-        empty = false;
-
-        return create(row, columnWidthIndex, config);
-      } else {
-        return append(row, columnWidthIndex, config);
-      }
-    },
-  };
-};
diff --git a/node_modules/table/dist/createStream.js.map b/node_modules/table/dist/createStream.js.map
deleted file mode 100644
index db2abb7..0000000
--- a/node_modules/table/dist/createStream.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/createStream.js"],"names":["prepareData","data","config","rows","rowHeightIndex","create","row","columnWidthIndex","body","map","literalRow","border","join","output","trimEnd","process","stdout","write","append","bottom","userConfig","Object","values","columns","column","width","paddingLeft","paddingRight","empty","length","columnCount","Error"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport alignTableData from './alignTableData';\nimport calculateRowHeightIndex from './calculateRowHeightIndex';\nimport {\n  drawBorderBottom,\n  drawBorderJoin,\n  drawBorderTop,\n} from './drawBorder';\nimport drawRow from './drawRow';\nimport makeStreamConfig from './makeStreamConfig';\nimport mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';\nimport padTableData from './padTableData';\nimport stringifyTableData from './stringifyTableData';\nimport truncateTableData from './truncateTableData';\n\n/**\n * @param {Array} data\n * @param {object} config\n * @returns {Array}\n */\nconst prepareData = (data, config) => {\n  let rows;\n\n  rows = stringifyTableData(data);\n\n  rows = truncateTableData(data, config);\n\n  const rowHeightIndex = calculateRowHeightIndex(rows, config);\n\n  rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);\n  rows = alignTableData(rows, config);\n  rows = padTableData(rows, config);\n\n  return rows;\n};\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {object} config\n * @returns {undefined}\n */\nconst create = (row, columnWidthIndex, config) => {\n  const rows = prepareData([row], config);\n\n  const body = rows.map((literalRow) => {\n    return drawRow(literalRow, config.border);\n  }).join('');\n\n  let output;\n\n  output = '';\n\n  output += drawBorderTop(columnWidthIndex, config.border);\n  output += body;\n  output += drawBorderBottom(columnWidthIndex, config.border);\n\n  output = output.trimEnd();\n\n  process.stdout.write(output);\n};\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {object} config\n * @returns {undefined}\n */\nconst append = (row, columnWidthIndex, config) => {\n  const rows = prepareData([row], config);\n\n  const body = rows.map((literalRow) => {\n    return drawRow(literalRow, config.border);\n  }).join('');\n\n  let output = '';\n  const bottom = drawBorderBottom(columnWidthIndex, config.border);\n\n  if (bottom !== '\\n') {\n    output = '\\r\\u001B[K';\n  }\n\n  output += drawBorderJoin(columnWidthIndex, config.border);\n  output += body;\n  output += bottom;\n\n  output = output.trimEnd();\n\n  process.stdout.write(output);\n};\n\n/**\n * @param {object} userConfig\n * @returns {object}\n */\nexport default (userConfig = {}) => {\n  const config = makeStreamConfig(userConfig);\n\n  const columnWidthIndex = Object.values(_.mapValues(config.columns, (column) => {\n    return column.width + column.paddingLeft + column.paddingRight;\n  }));\n\n  let empty;\n\n  empty = true;\n\n  return {\n    /**\n     * @param {string[]} row\n     * @returns {undefined}\n     */\n    write: (row) => {\n      if (row.length !== config.columnCount) {\n        throw new Error('Row cell count does not match the config.columnCount.');\n      }\n\n      if (empty) {\n        empty = false;\n\n        return create(row, columnWidthIndex, config);\n      } else {\n        return append(row, columnWidthIndex, config);\n      }\n    },\n  };\n};\n"],"file":"createStream.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/drawBorder.d.ts b/node_modules/table/dist/drawBorder.d.ts
new file mode 100644
index 0000000..9ad5d28
--- /dev/null
+++ b/node_modules/table/dist/drawBorder.d.ts
@@ -0,0 +1,26 @@
+import type { DrawVerticalLine } from './types/api';
+import type { TableConfig, SeparatorGetter, TopBorderConfig, JoinBorderConfig, BottomBorderConfig } from './types/internal';
+declare type Separator = {
+    readonly left: string;
+    readonly right: string;
+    readonly body: string;
+    readonly join: string;
+};
+declare const drawBorder: (columnWidths: number[], config: {
+    separator: Separator;
+    drawVerticalLine: DrawVerticalLine;
+}) => string;
+declare const drawBorderTop: (columnWidths: number[], config: {
+    border: TopBorderConfig;
+    drawVerticalLine: DrawVerticalLine;
+}) => string;
+declare const drawBorderJoin: (columnWidths: number[], config: {
+    border: JoinBorderConfig;
+    drawVerticalLine: DrawVerticalLine;
+}) => string;
+declare const drawBorderBottom: (columnWidths: number[], config: {
+    border: BottomBorderConfig;
+    drawVerticalLine: DrawVerticalLine;
+}) => string;
+export declare const createTableBorderGetter: (columnWidths: number[], config: TableConfig) => SeparatorGetter;
+export { drawBorder, drawBorderBottom, drawBorderJoin, drawBorderTop, };
diff --git a/node_modules/table/dist/drawBorder.js b/node_modules/table/dist/drawBorder.js
index 67227e2..1b158d9 100644
--- a/node_modules/table/dist/drawBorder.js
+++ b/node_modules/table/dist/drawBorder.js
@@ -1,110 +1,100 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = void 0;
-
-/**
- * @typedef drawBorder~parts
- * @property {string} left
- * @property {string} right
- * @property {string} body
- * @property {string} join
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorder~parts} parts
- * @returns {string}
- */
-const drawBorder = (columnSizeIndex, parts) => {
-  const columns = columnSizeIndex.map(size => {
-    return parts.body.repeat(size);
-  }).join(parts.join);
-  return parts.left + columns + parts.right + '\n';
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = exports.createTableBorderGetter = void 0;
+const drawContent_1 = require("./drawContent");
+const drawBorder = (columnWidths, config) => {
+    const { separator, drawVerticalLine } = config;
+    const columns = columnWidths.map((size) => {
+        return config.separator.body.repeat(size);
+    });
+    return drawContent_1.drawContent(columns, {
+        drawSeparator: drawVerticalLine,
+        separatorGetter: (index, columnCount) => {
+            if (index === 0) {
+                return separator.left;
+            }
+            if (index === columnCount) {
+                return separator.right;
+            }
+            return separator.join;
+        },
+    }) + '\n';
 };
-/**
- * @typedef drawBorderTop~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderTop~parts} parts
- * @returns {string}
- */
-
-
 exports.drawBorder = drawBorder;
-
-const drawBorderTop = (columnSizeIndex, parts) => {
-  const border = drawBorder(columnSizeIndex, {
-    body: parts.topBody,
-    join: parts.topJoin,
-    left: parts.topLeft,
-    right: parts.topRight
-  });
-
-  if (border === '\n') {
-    return '';
-  }
-
-  return border;
+const drawBorderTop = (columnWidths, config) => {
+    const result = drawBorder(columnWidths, {
+        ...config,
+        separator: {
+            body: config.border.topBody,
+            join: config.border.topJoin,
+            left: config.border.topLeft,
+            right: config.border.topRight,
+        },
+    });
+    if (result === '\n') {
+        return '';
+    }
+    return result;
 };
-/**
- * @typedef drawBorderJoin~parts
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinBody
- * @property {string} joinJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderJoin~parts} parts
- * @returns {string}
- */
-
-
 exports.drawBorderTop = drawBorderTop;
-
-const drawBorderJoin = (columnSizeIndex, parts) => {
-  return drawBorder(columnSizeIndex, {
-    body: parts.joinBody,
-    join: parts.joinJoin,
-    left: parts.joinLeft,
-    right: parts.joinRight
-  });
+const drawBorderJoin = (columnWidths, config) => {
+    return drawBorder(columnWidths, {
+        ...config,
+        separator: {
+            body: config.border.joinBody,
+            join: config.border.joinJoin,
+            left: config.border.joinLeft,
+            right: config.border.joinRight,
+        },
+    });
 };
-/**
- * @typedef drawBorderBottom~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderBottom~parts} parts
- * @returns {string}
- */
-
-
 exports.drawBorderJoin = drawBorderJoin;
-
-const drawBorderBottom = (columnSizeIndex, parts) => {
-  return drawBorder(columnSizeIndex, {
-    body: parts.bottomBody,
-    join: parts.bottomJoin,
-    left: parts.bottomLeft,
-    right: parts.bottomRight
-  });
+const drawBorderBottom = (columnWidths, config) => {
+    return drawBorder(columnWidths, {
+        ...config,
+        separator: {
+            body: config.border.bottomBody,
+            join: config.border.bottomJoin,
+            left: config.border.bottomLeft,
+            right: config.border.bottomRight,
+        },
+    });
 };
-
 exports.drawBorderBottom = drawBorderBottom;
-//# sourceMappingURL=drawBorder.js.map
\ No newline at end of file
+const createTableBorderGetter = (columnWidths, config) => {
+    return (index, size) => {
+        if (!config.header) {
+            if (index === 0) {
+                return drawBorderTop(columnWidths, config);
+            }
+            if (index === size) {
+                return drawBorderBottom(columnWidths, config);
+            }
+            return drawBorderJoin(columnWidths, config);
+        }
+        // Deal with the header
+        if (index === 0) {
+            return drawBorderTop(columnWidths, {
+                ...config,
+                border: {
+                    ...config.border,
+                    topJoin: config.border.topBody,
+                },
+            });
+        }
+        if (index === 1) {
+            return drawBorderJoin(columnWidths, {
+                ...config,
+                border: {
+                    ...config.border,
+                    joinJoin: config.border.headerJoin,
+                },
+            });
+        }
+        if (index === size) {
+            return drawBorderBottom(columnWidths, config);
+        }
+        return drawBorderJoin(columnWidths, config);
+    };
+};
+exports.createTableBorderGetter = createTableBorderGetter;
diff --git a/node_modules/table/dist/drawBorder.js.flow b/node_modules/table/dist/drawBorder.js.flow
deleted file mode 100644
index 85de247..0000000
--- a/node_modules/table/dist/drawBorder.js.flow
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @typedef drawBorder~parts
- * @property {string} left
- * @property {string} right
- * @property {string} body
- * @property {string} join
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorder~parts} parts
- * @returns {string}
- */
-const drawBorder = (columnSizeIndex, parts) => {
-  const columns = columnSizeIndex
-    .map((size) => {
-      return parts.body.repeat(size);
-    })
-    .join(parts.join);
-
-  return parts.left + columns + parts.right + '\n';
-};
-
-/**
- * @typedef drawBorderTop~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderTop~parts} parts
- * @returns {string}
- */
-const drawBorderTop = (columnSizeIndex, parts) => {
-  const border = drawBorder(columnSizeIndex, {
-    body: parts.topBody,
-    join: parts.topJoin,
-    left: parts.topLeft,
-    right: parts.topRight,
-  });
-
-  if (border === '\n') {
-    return '';
-  }
-
-  return border;
-};
-
-/**
- * @typedef drawBorderJoin~parts
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinBody
- * @property {string} joinJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderJoin~parts} parts
- * @returns {string}
- */
-const drawBorderJoin = (columnSizeIndex, parts) => {
-  return drawBorder(columnSizeIndex, {
-    body: parts.joinBody,
-    join: parts.joinJoin,
-    left: parts.joinLeft,
-    right: parts.joinRight,
-  });
-};
-
-/**
- * @typedef drawBorderBottom~parts
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} topBody
- * @property {string} topJoin
- */
-
-/**
- * @param {number[]} columnSizeIndex
- * @param {drawBorderBottom~parts} parts
- * @returns {string}
- */
-const drawBorderBottom = (columnSizeIndex, parts) => {
-  return drawBorder(columnSizeIndex, {
-    body: parts.bottomBody,
-    join: parts.bottomJoin,
-    left: parts.bottomLeft,
-    right: parts.bottomRight,
-  });
-};
-
-export {
-  drawBorder,
-  drawBorderBottom,
-  drawBorderJoin,
-  drawBorderTop,
-};
diff --git a/node_modules/table/dist/drawBorder.js.map b/node_modules/table/dist/drawBorder.js.map
deleted file mode 100644
index 85d123e..0000000
--- a/node_modules/table/dist/drawBorder.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/drawBorder.js"],"names":["drawBorder","columnSizeIndex","parts","columns","map","size","body","repeat","join","left","right","drawBorderTop","border","topBody","topJoin","topLeft","topRight","drawBorderJoin","joinBody","joinJoin","joinLeft","joinRight","drawBorderBottom","bottomBody","bottomJoin","bottomLeft","bottomRight"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMA,UAAU,GAAG,CAACC,eAAD,EAAkBC,KAAlB,KAA4B;AAC7C,QAAMC,OAAO,GAAGF,eAAe,CAC5BG,GADa,CACRC,IAAD,IAAU;AACb,WAAOH,KAAK,CAACI,IAAN,CAAWC,MAAX,CAAkBF,IAAlB,CAAP;AACD,GAHa,EAIbG,IAJa,CAIRN,KAAK,CAACM,IAJE,CAAhB;AAMA,SAAON,KAAK,CAACO,IAAN,GAAaN,OAAb,GAAuBD,KAAK,CAACQ,KAA7B,GAAqC,IAA5C;AACD,CARD;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AACA,MAAMC,aAAa,GAAG,CAACV,eAAD,EAAkBC,KAAlB,KAA4B;AAChD,QAAMU,MAAM,GAAGZ,UAAU,CAACC,eAAD,EAAkB;AACzCK,IAAAA,IAAI,EAAEJ,KAAK,CAACW,OAD6B;AAEzCL,IAAAA,IAAI,EAAEN,KAAK,CAACY,OAF6B;AAGzCL,IAAAA,IAAI,EAAEP,KAAK,CAACa,OAH6B;AAIzCL,IAAAA,KAAK,EAAER,KAAK,CAACc;AAJ4B,GAAlB,CAAzB;;AAOA,MAAIJ,MAAM,KAAK,IAAf,EAAqB;AACnB,WAAO,EAAP;AACD;;AAED,SAAOA,MAAP;AACD,CAbD;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AACA,MAAMK,cAAc,GAAG,CAAChB,eAAD,EAAkBC,KAAlB,KAA4B;AACjD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACgB,QADqB;AAEjCV,IAAAA,IAAI,EAAEN,KAAK,CAACiB,QAFqB;AAGjCV,IAAAA,IAAI,EAAEP,KAAK,CAACkB,QAHqB;AAIjCV,IAAAA,KAAK,EAAER,KAAK,CAACmB;AAJoB,GAAlB,CAAjB;AAMD,CAPD;AASA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AACA,MAAMC,gBAAgB,GAAG,CAACrB,eAAD,EAAkBC,KAAlB,KAA4B;AACnD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACqB,UADqB;AAEjCf,IAAAA,IAAI,EAAEN,KAAK,CAACsB,UAFqB;AAGjCf,IAAAA,IAAI,EAAEP,KAAK,CAACuB,UAHqB;AAIjCf,IAAAA,KAAK,EAAER,KAAK,CAACwB;AAJoB,GAAlB,CAAjB;AAMD,CAPD","sourcesContent":["/**\n * @typedef drawBorder~parts\n * @property {string} left\n * @property {string} right\n * @property {string} body\n * @property {string} join\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorder~parts} parts\n * @returns {string}\n */\nconst drawBorder = (columnSizeIndex, parts) => {\n  const columns = columnSizeIndex\n    .map((size) => {\n      return parts.body.repeat(size);\n    })\n    .join(parts.join);\n\n  return parts.left + columns + parts.right + '\\n';\n};\n\n/**\n * @typedef drawBorderTop~parts\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} topBody\n * @property {string} topJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderTop~parts} parts\n * @returns {string}\n */\nconst drawBorderTop = (columnSizeIndex, parts) => {\n  const border = drawBorder(columnSizeIndex, {\n    body: parts.topBody,\n    join: parts.topJoin,\n    left: parts.topLeft,\n    right: parts.topRight,\n  });\n\n  if (border === '\\n') {\n    return '';\n  }\n\n  return border;\n};\n\n/**\n * @typedef drawBorderJoin~parts\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinBody\n * @property {string} joinJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderJoin~parts} parts\n * @returns {string}\n */\nconst drawBorderJoin = (columnSizeIndex, parts) => {\n  return drawBorder(columnSizeIndex, {\n    body: parts.joinBody,\n    join: parts.joinJoin,\n    left: parts.joinLeft,\n    right: parts.joinRight,\n  });\n};\n\n/**\n * @typedef drawBorderBottom~parts\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} topBody\n * @property {string} topJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderBottom~parts} parts\n * @returns {string}\n */\nconst drawBorderBottom = (columnSizeIndex, parts) => {\n  return drawBorder(columnSizeIndex, {\n    body: parts.bottomBody,\n    join: parts.bottomJoin,\n    left: parts.bottomLeft,\n    right: parts.bottomRight,\n  });\n};\n\nexport {\n  drawBorder,\n  drawBorderBottom,\n  drawBorderJoin,\n  drawBorderTop,\n};\n"],"file":"drawBorder.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/drawContent.d.ts b/node_modules/table/dist/drawContent.d.ts
new file mode 100644
index 0000000..6785dfe
--- /dev/null
+++ b/node_modules/table/dist/drawContent.d.ts
@@ -0,0 +1,9 @@
+declare type SeparatorConfig = {
+    drawSeparator: (index: number, size: number) => boolean;
+    separatorGetter: (index: number, size: number) => string;
+};
+/**
+ * Shared function to draw horizontal borders, rows or the entire table
+ */
+export declare const drawContent: (contents: string[], separatorConfig: SeparatorConfig) => string;
+export {};
diff --git a/node_modules/table/dist/drawContent.js b/node_modules/table/dist/drawContent.js
new file mode 100644
index 0000000..ce084dc
--- /dev/null
+++ b/node_modules/table/dist/drawContent.js
@@ -0,0 +1,26 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.drawContent = void 0;
+/**
+ * Shared function to draw horizontal borders, rows or the entire table
+ */
+const drawContent = (contents, separatorConfig) => {
+    const { separatorGetter, drawSeparator } = separatorConfig;
+    const contentSize = contents.length;
+    const result = [];
+    if (drawSeparator(0, contentSize)) {
+        result.push(separatorGetter(0, contentSize));
+    }
+    contents.forEach((content, contentIndex) => {
+        result.push(content);
+        // Only append the middle separator if the content is not the last
+        if (contentIndex + 1 < contentSize && drawSeparator(contentIndex + 1, contentSize)) {
+            result.push(separatorGetter(contentIndex + 1, contentSize));
+        }
+    });
+    if (drawSeparator(contentSize, contentSize)) {
+        result.push(separatorGetter(contentSize, contentSize));
+    }
+    return result.join('');
+};
+exports.drawContent = drawContent;
diff --git a/node_modules/table/dist/drawHeader.d.ts b/node_modules/table/dist/drawHeader.d.ts
new file mode 100644
index 0000000..4407b38
--- /dev/null
+++ b/node_modules/table/dist/drawHeader.d.ts
@@ -0,0 +1,2 @@
+import type { TableConfig } from './types/internal';
+export declare const drawHeader: (width: number, config: TableConfig) => string;
diff --git a/node_modules/table/dist/drawHeader.js b/node_modules/table/dist/drawHeader.js
new file mode 100644
index 0000000..4ef46e9
--- /dev/null
+++ b/node_modules/table/dist/drawHeader.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.drawHeader = void 0;
+const alignString_1 = require("./alignString");
+const drawRow_1 = require("./drawRow");
+const padTableData_1 = require("./padTableData");
+const truncateTableData_1 = require("./truncateTableData");
+const wrapCell_1 = require("./wrapCell");
+const drawHeader = (width, config) => {
+    if (!config.header) {
+        throw new Error('Can not draw header without header configuration');
+    }
+    const { alignment, paddingRight, paddingLeft, wrapWord } = config.header;
+    let content = config.header.content;
+    content = truncateTableData_1.truncateString(content, config.header.truncate);
+    const headerLines = wrapCell_1.wrapCell(content, width, wrapWord);
+    return headerLines.map((headerLine) => {
+        let line = alignString_1.alignString(headerLine, width, alignment);
+        line = padTableData_1.padString(line, paddingLeft, paddingRight);
+        return drawRow_1.drawRow([line], {
+            ...config,
+            drawVerticalLine: (index) => {
+                const columnCount = config.columns.length;
+                return config.drawVerticalLine(index === 0 ? 0 : columnCount, columnCount);
+            },
+        });
+    }).join('');
+};
+exports.drawHeader = drawHeader;
diff --git a/node_modules/table/dist/drawRow.d.ts b/node_modules/table/dist/drawRow.d.ts
new file mode 100644
index 0000000..1a8e3ac
--- /dev/null
+++ b/node_modules/table/dist/drawRow.d.ts
@@ -0,0 +1,6 @@
+import type { DrawVerticalLine } from './types/api';
+import type { BodyBorderConfig, Row } from './types/internal';
+export declare const drawRow: (row: Row, config: {
+    border: BodyBorderConfig;
+    drawVerticalLine: DrawVerticalLine;
+}) => string;
diff --git a/node_modules/table/dist/drawRow.js b/node_modules/table/dist/drawRow.js
index 9126c4f..7d5756b 100644
--- a/node_modules/table/dist/drawRow.js
+++ b/node_modules/table/dist/drawRow.js
@@ -1,26 +1,20 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-/**
- * @typedef {object} drawRow~border
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- */
-
-/**
- * @param {number[]} columns
- * @param {drawRow~border} border
- * @returns {string}
- */
-const drawRow = (columns, border) => {
-  return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\n';
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.drawRow = void 0;
+const drawContent_1 = require("./drawContent");
+const drawRow = (row, config) => {
+    const { border, drawVerticalLine } = config;
+    return drawContent_1.drawContent(row, {
+        drawSeparator: drawVerticalLine,
+        separatorGetter: (index, columnCount) => {
+            if (index === 0) {
+                return border.bodyLeft;
+            }
+            if (index === columnCount) {
+                return border.bodyRight;
+            }
+            return border.bodyJoin;
+        },
+    }) + '\n';
 };
-
-var _default = drawRow;
-exports.default = _default;
-//# sourceMappingURL=drawRow.js.map
\ No newline at end of file
+exports.drawRow = drawRow;
diff --git a/node_modules/table/dist/drawRow.js.flow b/node_modules/table/dist/drawRow.js.flow
deleted file mode 100644
index 978eab2..0000000
--- a/node_modules/table/dist/drawRow.js.flow
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @typedef {object} drawRow~border
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- */
-
-/**
- * @param {number[]} columns
- * @param {drawRow~border} border
- * @returns {string}
- */
-export default (columns, border) => {
-  return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\n';
-};
diff --git a/node_modules/table/dist/drawRow.js.map b/node_modules/table/dist/drawRow.js.map
deleted file mode 100644
index 5baffb1..0000000
--- a/node_modules/table/dist/drawRow.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/drawRow.js"],"names":["columns","border","bodyLeft","join","bodyJoin","bodyRight"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;iBACgBA,O,EAASC,M,KAAW;AAClC,SAAOA,MAAM,CAACC,QAAP,GAAkBF,OAAO,CAACG,IAAR,CAAaF,MAAM,CAACG,QAApB,CAAlB,GAAkDH,MAAM,CAACI,SAAzD,GAAqE,IAA5E;AACD,C","sourcesContent":["/**\n * @typedef {object} drawRow~border\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n */\n\n/**\n * @param {number[]} columns\n * @param {drawRow~border} border\n * @returns {string}\n */\nexport default (columns, border) => {\n  return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\\n';\n};\n"],"file":"drawRow.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/drawTable.d.ts b/node_modules/table/dist/drawTable.d.ts
new file mode 100644
index 0000000..357d6fe
--- /dev/null
+++ b/node_modules/table/dist/drawTable.d.ts
@@ -0,0 +1,2 @@
+import type { TableConfig, Row } from './types/internal';
+export declare const drawTable: (rows: Row[], columnWidths: number[], rowHeights: number[], config: TableConfig) => string;
diff --git a/node_modules/table/dist/drawTable.js b/node_modules/table/dist/drawTable.js
index 18c9ff6..60685dd 100644
--- a/node_modules/table/dist/drawTable.js
+++ b/node_modules/table/dist/drawTable.js
@@ -1,59 +1,38 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _drawBorder = require("./drawBorder");
-
-var _drawRow = _interopRequireDefault(require("./drawRow"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {Array} rows
- * @param {object} border
- * @param {Array} columnSizeIndex
- * @param {Array} rowSpanIndex
- * @param {Function} drawHorizontalLine
- * @param {boolean} singleLine
- * @returns {string}
- */
-const drawTable = (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => {
-  let output;
-  let realRowIndex;
-  let rowHeight;
-  const rowCount = rows.length;
-  realRowIndex = 0;
-  output = '';
-
-  if (drawHorizontalLine(realRowIndex, rowCount)) {
-    output += (0, _drawBorder.drawBorderTop)(columnSizeIndex, border);
-  }
-
-  rows.forEach((row, index0) => {
-    output += (0, _drawRow.default)(row, border);
-
-    if (!rowHeight) {
-      rowHeight = rowSpanIndex[realRowIndex];
-      realRowIndex++;
-    }
-
-    rowHeight--;
-
-    if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) {
-      output += (0, _drawBorder.drawBorderJoin)(columnSizeIndex, border);
-    }
-  });
-
-  if (drawHorizontalLine(realRowIndex, rowCount)) {
-    output += (0, _drawBorder.drawBorderBottom)(columnSizeIndex, border);
-  }
-
-  return output;
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
 };
-
-var _default = drawTable;
-exports.default = _default;
-//# sourceMappingURL=drawTable.js.map
\ No newline at end of file
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.drawTable = void 0;
+const string_width_1 = __importDefault(require("string-width"));
+const drawBorder_1 = require("./drawBorder");
+const drawContent_1 = require("./drawContent");
+const drawHeader_1 = require("./drawHeader");
+const drawRow_1 = require("./drawRow");
+const utils_1 = require("./utils");
+const drawTable = (rows, columnWidths, rowHeights, config) => {
+    const { drawHorizontalLine, singleLine, } = config;
+    const contents = utils_1.groupBySizes(rows, rowHeights).map((group) => {
+        return group.map((row) => {
+            return drawRow_1.drawRow(row, config);
+        }).join('');
+    });
+    if (config.header) {
+        // assume that topLeft/right border have width = 1
+        const headerWidth = string_width_1.default(drawRow_1.drawRow(rows[0], config)) - 2 -
+            config.header.paddingLeft - config.header.paddingRight;
+        const header = drawHeader_1.drawHeader(headerWidth, config);
+        contents.unshift(header);
+    }
+    return drawContent_1.drawContent(contents, {
+        drawSeparator: (index, size) => {
+            // Top/bottom border
+            if (index === 0 || index === size) {
+                return drawHorizontalLine(index, size);
+            }
+            return !singleLine && drawHorizontalLine(index, size);
+        },
+        separatorGetter: drawBorder_1.createTableBorderGetter(columnWidths, config),
+    });
+};
+exports.drawTable = drawTable;
diff --git a/node_modules/table/dist/drawTable.js.flow b/node_modules/table/dist/drawTable.js.flow
deleted file mode 100644
index 84707ca..0000000
--- a/node_modules/table/dist/drawTable.js.flow
+++ /dev/null
@@ -1,53 +0,0 @@
-import {
-  drawBorderTop,
-  drawBorderJoin,
-  drawBorderBottom,
-} from './drawBorder';
-import drawRow from './drawRow';
-
-/**
- * @param {Array} rows
- * @param {object} border
- * @param {Array} columnSizeIndex
- * @param {Array} rowSpanIndex
- * @param {Function} drawHorizontalLine
- * @param {boolean} singleLine
- * @returns {string}
- */
-export default (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => {
-  let output;
-  let realRowIndex;
-  let rowHeight;
-
-  const rowCount = rows.length;
-
-  realRowIndex = 0;
-
-  output = '';
-
-  if (drawHorizontalLine(realRowIndex, rowCount)) {
-    output += drawBorderTop(columnSizeIndex, border);
-  }
-
-  rows.forEach((row, index0) => {
-    output += drawRow(row, border);
-
-    if (!rowHeight) {
-      rowHeight = rowSpanIndex[realRowIndex];
-
-      realRowIndex++;
-    }
-
-    rowHeight--;
-
-    if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) {
-      output += drawBorderJoin(columnSizeIndex, border);
-    }
-  });
-
-  if (drawHorizontalLine(realRowIndex, rowCount)) {
-    output += drawBorderBottom(columnSizeIndex, border);
-  }
-
-  return output;
-};
diff --git a/node_modules/table/dist/drawTable.js.map b/node_modules/table/dist/drawTable.js.map
deleted file mode 100644
index 7bf3904..0000000
--- a/node_modules/table/dist/drawTable.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/drawTable.js"],"names":["rows","border","columnSizeIndex","rowSpanIndex","drawHorizontalLine","singleLine","output","realRowIndex","rowHeight","rowCount","length","forEach","row","index0"],"mappings":";;;;;;;AAAA;;AAKA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;mBACgBA,I,EAAMC,M,EAAQC,e,EAAiBC,Y,EAAcC,kB,EAAoBC,U,KAAe;AAC9F,MAAIC,MAAJ;AACA,MAAIC,YAAJ;AACA,MAAIC,SAAJ;AAEA,QAAMC,QAAQ,GAAGT,IAAI,CAACU,MAAtB;AAEAH,EAAAA,YAAY,GAAG,CAAf;AAEAD,EAAAA,MAAM,GAAG,EAAT;;AAEA,MAAIF,kBAAkB,CAACG,YAAD,EAAeE,QAAf,CAAtB,EAAgD;AAC9CH,IAAAA,MAAM,IAAI,+BAAcJ,eAAd,EAA+BD,MAA/B,CAAV;AACD;;AAEDD,EAAAA,IAAI,CAACW,OAAL,CAAa,CAACC,GAAD,EAAMC,MAAN,KAAiB;AAC5BP,IAAAA,MAAM,IAAI,sBAAQM,GAAR,EAAaX,MAAb,CAAV;;AAEA,QAAI,CAACO,SAAL,EAAgB;AACdA,MAAAA,SAAS,GAAGL,YAAY,CAACI,YAAD,CAAxB;AAEAA,MAAAA,YAAY;AACb;;AAEDC,IAAAA,SAAS;;AAET,QAAI,CAACH,UAAD,IAAeG,SAAS,KAAK,CAA7B,IAAkCK,MAAM,KAAKJ,QAAQ,GAAG,CAAxD,IAA6DL,kBAAkB,CAACG,YAAD,EAAeE,QAAf,CAAnF,EAA6G;AAC3GH,MAAAA,MAAM,IAAI,gCAAeJ,eAAf,EAAgCD,MAAhC,CAAV;AACD;AACF,GAdD;;AAgBA,MAAIG,kBAAkB,CAACG,YAAD,EAAeE,QAAf,CAAtB,EAAgD;AAC9CH,IAAAA,MAAM,IAAI,kCAAiBJ,eAAjB,EAAkCD,MAAlC,CAAV;AACD;;AAED,SAAOK,MAAP;AACD,C","sourcesContent":["import {\n  drawBorderTop,\n  drawBorderJoin,\n  drawBorderBottom,\n} from './drawBorder';\nimport drawRow from './drawRow';\n\n/**\n * @param {Array} rows\n * @param {object} border\n * @param {Array} columnSizeIndex\n * @param {Array} rowSpanIndex\n * @param {Function} drawHorizontalLine\n * @param {boolean} singleLine\n * @returns {string}\n */\nexport default (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => {\n  let output;\n  let realRowIndex;\n  let rowHeight;\n\n  const rowCount = rows.length;\n\n  realRowIndex = 0;\n\n  output = '';\n\n  if (drawHorizontalLine(realRowIndex, rowCount)) {\n    output += drawBorderTop(columnSizeIndex, border);\n  }\n\n  rows.forEach((row, index0) => {\n    output += drawRow(row, border);\n\n    if (!rowHeight) {\n      rowHeight = rowSpanIndex[realRowIndex];\n\n      realRowIndex++;\n    }\n\n    rowHeight--;\n\n    if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) {\n      output += drawBorderJoin(columnSizeIndex, border);\n    }\n  });\n\n  if (drawHorizontalLine(realRowIndex, rowCount)) {\n    output += drawBorderBottom(columnSizeIndex, border);\n  }\n\n  return output;\n};\n"],"file":"drawTable.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/generated/validators.d.ts b/node_modules/table/dist/generated/validators.d.ts
new file mode 100644
index 0000000..54e3584
--- /dev/null
+++ b/node_modules/table/dist/generated/validators.d.ts
@@ -0,0 +1,13 @@
+declare function validate43(data: any, { instancePath, parentData, parentDataProperty, rootData }?: {
+    instancePath?: string | undefined;
+    parentData: any;
+    parentDataProperty: any;
+    rootData?: any;
+}): boolean;
+declare function validate76(data: any, { instancePath, parentData, parentDataProperty, rootData }?: {
+    instancePath?: string | undefined;
+    parentData: any;
+    parentDataProperty: any;
+    rootData?: any;
+}): boolean;
+export { validate43 as _config_json, validate76 as _streamConfig_json };
diff --git a/node_modules/table/dist/generated/validators.js b/node_modules/table/dist/generated/validators.js
new file mode 100644
index 0000000..6291447
--- /dev/null
+++ b/node_modules/table/dist/generated/validators.js
@@ -0,0 +1,2170 @@
+"use strict";
+exports["config.json"] = validate43;
+const schema13 = {
+    "$id": "config.json",
+    "$schema": "http://json-schema.org/draft-07/schema#",
+    "type": "object",
+    "properties": {
+        "border": {
+            "$ref": "shared.json#/definitions/borders"
+        },
+        "header": {
+            "type": "object",
+            "properties": {
+                "content": {
+                    "type": "string"
+                },
+                "alignment": {
+                    "$ref": "shared.json#/definitions/alignment"
+                },
+                "wrapWord": {
+                    "type": "boolean"
+                },
+                "truncate": {
+                    "type": "integer"
+                },
+                "paddingLeft": {
+                    "type": "integer"
+                },
+                "paddingRight": {
+                    "type": "integer"
+                }
+            },
+            "required": ["content"],
+            "additionalProperties": false
+        },
+        "columns": {
+            "$ref": "shared.json#/definitions/columns"
+        },
+        "columnDefault": {
+            "$ref": "shared.json#/definitions/column"
+        },
+        "drawVerticalLine": {
+            "typeof": "function"
+        },
+        "drawHorizontalLine": {
+            "typeof": "function"
+        },
+        "singleLine": {
+            "typeof": "boolean"
+        }
+    },
+    "additionalProperties": false
+};
+const schema15 = {
+    "type": "object",
+    "properties": {
+        "topBody": {
+            "$ref": "#/definitions/border"
+        },
+        "topJoin": {
+            "$ref": "#/definitions/border"
+        },
+        "topLeft": {
+            "$ref": "#/definitions/border"
+        },
+        "topRight": {
+            "$ref": "#/definitions/border"
+        },
+        "bottomBody": {
+            "$ref": "#/definitions/border"
+        },
+        "bottomJoin": {
+            "$ref": "#/definitions/border"
+        },
+        "bottomLeft": {
+            "$ref": "#/definitions/border"
+        },
+        "bottomRight": {
+            "$ref": "#/definitions/border"
+        },
+        "bodyLeft": {
+            "$ref": "#/definitions/border"
+        },
+        "bodyRight": {
+            "$ref": "#/definitions/border"
+        },
+        "bodyJoin": {
+            "$ref": "#/definitions/border"
+        },
+        "headerJoin": {
+            "$ref": "#/definitions/border"
+        },
+        "joinBody": {
+            "$ref": "#/definitions/border"
+        },
+        "joinLeft": {
+            "$ref": "#/definitions/border"
+        },
+        "joinRight": {
+            "$ref": "#/definitions/border"
+        },
+        "joinJoin": {
+            "$ref": "#/definitions/border"
+        }
+    },
+    "additionalProperties": false
+};
+const func8 = Object.prototype.hasOwnProperty;
+const schema16 = {
+    "type": "string"
+};
+function validate46(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (typeof data !== "string") {
+        const err0 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "string"
+            },
+            message: "must be string"
+        };
+        if (vErrors === null) {
+            vErrors = [err0];
+        }
+        else {
+            vErrors.push(err0);
+        }
+        errors++;
+    }
+    validate46.errors = vErrors;
+    return errors === 0;
+}
+function validate45(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(func8.call(schema15.properties, key0))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        if (data.topBody !== undefined) {
+            if (!(validate46(data.topBody, {
+                instancePath: instancePath + "/topBody",
+                parentData: data,
+                parentDataProperty: "topBody",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.topJoin !== undefined) {
+            if (!(validate46(data.topJoin, {
+                instancePath: instancePath + "/topJoin",
+                parentData: data,
+                parentDataProperty: "topJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.topLeft !== undefined) {
+            if (!(validate46(data.topLeft, {
+                instancePath: instancePath + "/topLeft",
+                parentData: data,
+                parentDataProperty: "topLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.topRight !== undefined) {
+            if (!(validate46(data.topRight, {
+                instancePath: instancePath + "/topRight",
+                parentData: data,
+                parentDataProperty: "topRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomBody !== undefined) {
+            if (!(validate46(data.bottomBody, {
+                instancePath: instancePath + "/bottomBody",
+                parentData: data,
+                parentDataProperty: "bottomBody",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomJoin !== undefined) {
+            if (!(validate46(data.bottomJoin, {
+                instancePath: instancePath + "/bottomJoin",
+                parentData: data,
+                parentDataProperty: "bottomJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomLeft !== undefined) {
+            if (!(validate46(data.bottomLeft, {
+                instancePath: instancePath + "/bottomLeft",
+                parentData: data,
+                parentDataProperty: "bottomLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomRight !== undefined) {
+            if (!(validate46(data.bottomRight, {
+                instancePath: instancePath + "/bottomRight",
+                parentData: data,
+                parentDataProperty: "bottomRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bodyLeft !== undefined) {
+            if (!(validate46(data.bodyLeft, {
+                instancePath: instancePath + "/bodyLeft",
+                parentData: data,
+                parentDataProperty: "bodyLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bodyRight !== undefined) {
+            if (!(validate46(data.bodyRight, {
+                instancePath: instancePath + "/bodyRight",
+                parentData: data,
+                parentDataProperty: "bodyRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bodyJoin !== undefined) {
+            if (!(validate46(data.bodyJoin, {
+                instancePath: instancePath + "/bodyJoin",
+                parentData: data,
+                parentDataProperty: "bodyJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.headerJoin !== undefined) {
+            if (!(validate46(data.headerJoin, {
+                instancePath: instancePath + "/headerJoin",
+                parentData: data,
+                parentDataProperty: "headerJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinBody !== undefined) {
+            if (!(validate46(data.joinBody, {
+                instancePath: instancePath + "/joinBody",
+                parentData: data,
+                parentDataProperty: "joinBody",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinLeft !== undefined) {
+            if (!(validate46(data.joinLeft, {
+                instancePath: instancePath + "/joinLeft",
+                parentData: data,
+                parentDataProperty: "joinLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinRight !== undefined) {
+            if (!(validate46(data.joinRight, {
+                instancePath: instancePath + "/joinRight",
+                parentData: data,
+                parentDataProperty: "joinRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinJoin !== undefined) {
+            if (!(validate46(data.joinJoin, {
+                instancePath: instancePath + "/joinJoin",
+                parentData: data,
+                parentDataProperty: "joinJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+    }
+    else {
+        const err1 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err1];
+        }
+        else {
+            vErrors.push(err1);
+        }
+        errors++;
+    }
+    validate45.errors = vErrors;
+    return errors === 0;
+}
+const schema17 = {
+    "type": "string",
+    "enum": ["left", "right", "center", "justify"]
+};
+const func0 = require("ajv/dist/runtime/equal").default;
+function validate64(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (typeof data !== "string") {
+        const err0 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "string"
+            },
+            message: "must be string"
+        };
+        if (vErrors === null) {
+            vErrors = [err0];
+        }
+        else {
+            vErrors.push(err0);
+        }
+        errors++;
+    }
+    if (!((((data === "left") || (data === "right")) || (data === "center")) || (data === "justify"))) {
+        const err1 = {
+            instancePath,
+            schemaPath: "#/enum",
+            keyword: "enum",
+            params: {
+                allowedValues: schema17.enum
+            },
+            message: "must be equal to one of the allowed values"
+        };
+        if (vErrors === null) {
+            vErrors = [err1];
+        }
+        else {
+            vErrors.push(err1);
+        }
+        errors++;
+    }
+    validate64.errors = vErrors;
+    return errors === 0;
+}
+const schema18 = {
+    "oneOf": [{
+            "type": "object",
+            "patternProperties": {
+                "^[0-9]+$": {
+                    "$ref": "#/definitions/column"
+                }
+            },
+            "additionalProperties": false
+        }, {
+            "type": "array",
+            "items": {
+                "$ref": "#/definitions/column"
+            }
+        }]
+};
+const pattern0 = new RegExp("^[0-9]+$", "u");
+const schema19 = {
+    "type": "object",
+    "properties": {
+        "alignment": {
+            "$ref": "#/definitions/alignment"
+        },
+        "verticalAlignment": {
+            "type": "string",
+            "enum": ["top", "middle", "bottom"]
+        },
+        "width": {
+            "type": "integer",
+            "minimum": 1
+        },
+        "wrapWord": {
+            "type": "boolean"
+        },
+        "truncate": {
+            "type": "integer"
+        },
+        "paddingLeft": {
+            "type": "integer"
+        },
+        "paddingRight": {
+            "type": "integer"
+        }
+    },
+    "additionalProperties": false
+};
+function validate68(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (typeof data !== "string") {
+        const err0 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "string"
+            },
+            message: "must be string"
+        };
+        if (vErrors === null) {
+            vErrors = [err0];
+        }
+        else {
+            vErrors.push(err0);
+        }
+        errors++;
+    }
+    if (!((((data === "left") || (data === "right")) || (data === "center")) || (data === "justify"))) {
+        const err1 = {
+            instancePath,
+            schemaPath: "#/enum",
+            keyword: "enum",
+            params: {
+                allowedValues: schema17.enum
+            },
+            message: "must be equal to one of the allowed values"
+        };
+        if (vErrors === null) {
+            vErrors = [err1];
+        }
+        else {
+            vErrors.push(err1);
+        }
+        errors++;
+    }
+    validate68.errors = vErrors;
+    return errors === 0;
+}
+function validate67(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(((((((key0 === "alignment") || (key0 === "verticalAlignment")) || (key0 === "width")) || (key0 === "wrapWord")) || (key0 === "truncate")) || (key0 === "paddingLeft")) || (key0 === "paddingRight"))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        if (data.alignment !== undefined) {
+            if (!(validate68(data.alignment, {
+                instancePath: instancePath + "/alignment",
+                parentData: data,
+                parentDataProperty: "alignment",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.verticalAlignment !== undefined) {
+            let data1 = data.verticalAlignment;
+            if (typeof data1 !== "string") {
+                const err1 = {
+                    instancePath: instancePath + "/verticalAlignment",
+                    schemaPath: "#/properties/verticalAlignment/type",
+                    keyword: "type",
+                    params: {
+                        type: "string"
+                    },
+                    message: "must be string"
+                };
+                if (vErrors === null) {
+                    vErrors = [err1];
+                }
+                else {
+                    vErrors.push(err1);
+                }
+                errors++;
+            }
+            if (!(((data1 === "top") || (data1 === "middle")) || (data1 === "bottom"))) {
+                const err2 = {
+                    instancePath: instancePath + "/verticalAlignment",
+                    schemaPath: "#/properties/verticalAlignment/enum",
+                    keyword: "enum",
+                    params: {
+                        allowedValues: schema19.properties.verticalAlignment.enum
+                    },
+                    message: "must be equal to one of the allowed values"
+                };
+                if (vErrors === null) {
+                    vErrors = [err2];
+                }
+                else {
+                    vErrors.push(err2);
+                }
+                errors++;
+            }
+        }
+        if (data.width !== undefined) {
+            let data2 = data.width;
+            if (!(((typeof data2 == "number") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {
+                const err3 = {
+                    instancePath: instancePath + "/width",
+                    schemaPath: "#/properties/width/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err3];
+                }
+                else {
+                    vErrors.push(err3);
+                }
+                errors++;
+            }
+            if ((typeof data2 == "number") && (isFinite(data2))) {
+                if (data2 < 1 || isNaN(data2)) {
+                    const err4 = {
+                        instancePath: instancePath + "/width",
+                        schemaPath: "#/properties/width/minimum",
+                        keyword: "minimum",
+                        params: {
+                            comparison: ">=",
+                            limit: 1
+                        },
+                        message: "must be >= 1"
+                    };
+                    if (vErrors === null) {
+                        vErrors = [err4];
+                    }
+                    else {
+                        vErrors.push(err4);
+                    }
+                    errors++;
+                }
+            }
+        }
+        if (data.wrapWord !== undefined) {
+            if (typeof data.wrapWord !== "boolean") {
+                const err5 = {
+                    instancePath: instancePath + "/wrapWord",
+                    schemaPath: "#/properties/wrapWord/type",
+                    keyword: "type",
+                    params: {
+                        type: "boolean"
+                    },
+                    message: "must be boolean"
+                };
+                if (vErrors === null) {
+                    vErrors = [err5];
+                }
+                else {
+                    vErrors.push(err5);
+                }
+                errors++;
+            }
+        }
+        if (data.truncate !== undefined) {
+            let data4 = data.truncate;
+            if (!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {
+                const err6 = {
+                    instancePath: instancePath + "/truncate",
+                    schemaPath: "#/properties/truncate/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err6];
+                }
+                else {
+                    vErrors.push(err6);
+                }
+                errors++;
+            }
+        }
+        if (data.paddingLeft !== undefined) {
+            let data5 = data.paddingLeft;
+            if (!(((typeof data5 == "number") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {
+                const err7 = {
+                    instancePath: instancePath + "/paddingLeft",
+                    schemaPath: "#/properties/paddingLeft/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err7];
+                }
+                else {
+                    vErrors.push(err7);
+                }
+                errors++;
+            }
+        }
+        if (data.paddingRight !== undefined) {
+            let data6 = data.paddingRight;
+            if (!(((typeof data6 == "number") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {
+                const err8 = {
+                    instancePath: instancePath + "/paddingRight",
+                    schemaPath: "#/properties/paddingRight/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err8];
+                }
+                else {
+                    vErrors.push(err8);
+                }
+                errors++;
+            }
+        }
+    }
+    else {
+        const err9 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err9];
+        }
+        else {
+            vErrors.push(err9);
+        }
+        errors++;
+    }
+    validate67.errors = vErrors;
+    return errors === 0;
+}
+function validate66(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    const _errs0 = errors;
+    let valid0 = false;
+    let passing0 = null;
+    const _errs1 = errors;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(pattern0.test(key0))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/oneOf/0/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        for (const key1 in data) {
+            if (pattern0.test(key1)) {
+                if (!(validate67(data[key1], {
+                    instancePath: instancePath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
+                    parentData: data,
+                    parentDataProperty: key1,
+                    rootData
+                }))) {
+                    vErrors = vErrors === null ? validate67.errors : vErrors.concat(validate67.errors);
+                    errors = vErrors.length;
+                }
+            }
+        }
+    }
+    else {
+        const err1 = {
+            instancePath,
+            schemaPath: "#/oneOf/0/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err1];
+        }
+        else {
+            vErrors.push(err1);
+        }
+        errors++;
+    }
+    var _valid0 = _errs1 === errors;
+    if (_valid0) {
+        valid0 = true;
+        passing0 = 0;
+    }
+    const _errs5 = errors;
+    if (Array.isArray(data)) {
+        const len0 = data.length;
+        for (let i0 = 0; i0 < len0; i0++) {
+            if (!(validate67(data[i0], {
+                instancePath: instancePath + "/" + i0,
+                parentData: data,
+                parentDataProperty: i0,
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate67.errors : vErrors.concat(validate67.errors);
+                errors = vErrors.length;
+            }
+        }
+    }
+    else {
+        const err2 = {
+            instancePath,
+            schemaPath: "#/oneOf/1/type",
+            keyword: "type",
+            params: {
+                type: "array"
+            },
+            message: "must be array"
+        };
+        if (vErrors === null) {
+            vErrors = [err2];
+        }
+        else {
+            vErrors.push(err2);
+        }
+        errors++;
+    }
+    var _valid0 = _errs5 === errors;
+    if (_valid0 && valid0) {
+        valid0 = false;
+        passing0 = [passing0, 1];
+    }
+    else {
+        if (_valid0) {
+            valid0 = true;
+            passing0 = 1;
+        }
+    }
+    if (!valid0) {
+        const err3 = {
+            instancePath,
+            schemaPath: "#/oneOf",
+            keyword: "oneOf",
+            params: {
+                passingSchemas: passing0
+            },
+            message: "must match exactly one schema in oneOf"
+        };
+        if (vErrors === null) {
+            vErrors = [err3];
+        }
+        else {
+            vErrors.push(err3);
+        }
+        errors++;
+    }
+    else {
+        errors = _errs0;
+        if (vErrors !== null) {
+            if (_errs0) {
+                vErrors.length = _errs0;
+            }
+            else {
+                vErrors = null;
+            }
+        }
+    }
+    validate66.errors = vErrors;
+    return errors === 0;
+}
+function validate73(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(((((((key0 === "alignment") || (key0 === "verticalAlignment")) || (key0 === "width")) || (key0 === "wrapWord")) || (key0 === "truncate")) || (key0 === "paddingLeft")) || (key0 === "paddingRight"))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        if (data.alignment !== undefined) {
+            if (!(validate68(data.alignment, {
+                instancePath: instancePath + "/alignment",
+                parentData: data,
+                parentDataProperty: "alignment",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.verticalAlignment !== undefined) {
+            let data1 = data.verticalAlignment;
+            if (typeof data1 !== "string") {
+                const err1 = {
+                    instancePath: instancePath + "/verticalAlignment",
+                    schemaPath: "#/properties/verticalAlignment/type",
+                    keyword: "type",
+                    params: {
+                        type: "string"
+                    },
+                    message: "must be string"
+                };
+                if (vErrors === null) {
+                    vErrors = [err1];
+                }
+                else {
+                    vErrors.push(err1);
+                }
+                errors++;
+            }
+            if (!(((data1 === "top") || (data1 === "middle")) || (data1 === "bottom"))) {
+                const err2 = {
+                    instancePath: instancePath + "/verticalAlignment",
+                    schemaPath: "#/properties/verticalAlignment/enum",
+                    keyword: "enum",
+                    params: {
+                        allowedValues: schema19.properties.verticalAlignment.enum
+                    },
+                    message: "must be equal to one of the allowed values"
+                };
+                if (vErrors === null) {
+                    vErrors = [err2];
+                }
+                else {
+                    vErrors.push(err2);
+                }
+                errors++;
+            }
+        }
+        if (data.width !== undefined) {
+            let data2 = data.width;
+            if (!(((typeof data2 == "number") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {
+                const err3 = {
+                    instancePath: instancePath + "/width",
+                    schemaPath: "#/properties/width/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err3];
+                }
+                else {
+                    vErrors.push(err3);
+                }
+                errors++;
+            }
+            if ((typeof data2 == "number") && (isFinite(data2))) {
+                if (data2 < 1 || isNaN(data2)) {
+                    const err4 = {
+                        instancePath: instancePath + "/width",
+                        schemaPath: "#/properties/width/minimum",
+                        keyword: "minimum",
+                        params: {
+                            comparison: ">=",
+                            limit: 1
+                        },
+                        message: "must be >= 1"
+                    };
+                    if (vErrors === null) {
+                        vErrors = [err4];
+                    }
+                    else {
+                        vErrors.push(err4);
+                    }
+                    errors++;
+                }
+            }
+        }
+        if (data.wrapWord !== undefined) {
+            if (typeof data.wrapWord !== "boolean") {
+                const err5 = {
+                    instancePath: instancePath + "/wrapWord",
+                    schemaPath: "#/properties/wrapWord/type",
+                    keyword: "type",
+                    params: {
+                        type: "boolean"
+                    },
+                    message: "must be boolean"
+                };
+                if (vErrors === null) {
+                    vErrors = [err5];
+                }
+                else {
+                    vErrors.push(err5);
+                }
+                errors++;
+            }
+        }
+        if (data.truncate !== undefined) {
+            let data4 = data.truncate;
+            if (!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {
+                const err6 = {
+                    instancePath: instancePath + "/truncate",
+                    schemaPath: "#/properties/truncate/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err6];
+                }
+                else {
+                    vErrors.push(err6);
+                }
+                errors++;
+            }
+        }
+        if (data.paddingLeft !== undefined) {
+            let data5 = data.paddingLeft;
+            if (!(((typeof data5 == "number") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {
+                const err7 = {
+                    instancePath: instancePath + "/paddingLeft",
+                    schemaPath: "#/properties/paddingLeft/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err7];
+                }
+                else {
+                    vErrors.push(err7);
+                }
+                errors++;
+            }
+        }
+        if (data.paddingRight !== undefined) {
+            let data6 = data.paddingRight;
+            if (!(((typeof data6 == "number") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {
+                const err8 = {
+                    instancePath: instancePath + "/paddingRight",
+                    schemaPath: "#/properties/paddingRight/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err8];
+                }
+                else {
+                    vErrors.push(err8);
+                }
+                errors++;
+            }
+        }
+    }
+    else {
+        const err9 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err9];
+        }
+        else {
+            vErrors.push(err9);
+        }
+        errors++;
+    }
+    validate73.errors = vErrors;
+    return errors === 0;
+}
+function validate43(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    /*# sourceURL="config.json" */ ;
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(((((((key0 === "border") || (key0 === "header")) || (key0 === "columns")) || (key0 === "columnDefault")) || (key0 === "drawVerticalLine")) || (key0 === "drawHorizontalLine")) || (key0 === "singleLine"))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        if (data.border !== undefined) {
+            if (!(validate45(data.border, {
+                instancePath: instancePath + "/border",
+                parentData: data,
+                parentDataProperty: "border",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.header !== undefined) {
+            let data1 = data.header;
+            if (data1 && typeof data1 == "object" && !Array.isArray(data1)) {
+                if (data1.content === undefined) {
+                    const err1 = {
+                        instancePath: instancePath + "/header",
+                        schemaPath: "#/properties/header/required",
+                        keyword: "required",
+                        params: {
+                            missingProperty: "content"
+                        },
+                        message: "must have required property '" + "content" + "'"
+                    };
+                    if (vErrors === null) {
+                        vErrors = [err1];
+                    }
+                    else {
+                        vErrors.push(err1);
+                    }
+                    errors++;
+                }
+                for (const key1 in data1) {
+                    if (!((((((key1 === "content") || (key1 === "alignment")) || (key1 === "wrapWord")) || (key1 === "truncate")) || (key1 === "paddingLeft")) || (key1 === "paddingRight"))) {
+                        const err2 = {
+                            instancePath: instancePath + "/header",
+                            schemaPath: "#/properties/header/additionalProperties",
+                            keyword: "additionalProperties",
+                            params: {
+                                additionalProperty: key1
+                            },
+                            message: "must NOT have additional properties"
+                        };
+                        if (vErrors === null) {
+                            vErrors = [err2];
+                        }
+                        else {
+                            vErrors.push(err2);
+                        }
+                        errors++;
+                    }
+                }
+                if (data1.content !== undefined) {
+                    if (typeof data1.content !== "string") {
+                        const err3 = {
+                            instancePath: instancePath + "/header/content",
+                            schemaPath: "#/properties/header/properties/content/type",
+                            keyword: "type",
+                            params: {
+                                type: "string"
+                            },
+                            message: "must be string"
+                        };
+                        if (vErrors === null) {
+                            vErrors = [err3];
+                        }
+                        else {
+                            vErrors.push(err3);
+                        }
+                        errors++;
+                    }
+                }
+                if (data1.alignment !== undefined) {
+                    if (!(validate64(data1.alignment, {
+                        instancePath: instancePath + "/header/alignment",
+                        parentData: data1,
+                        parentDataProperty: "alignment",
+                        rootData
+                    }))) {
+                        vErrors = vErrors === null ? validate64.errors : vErrors.concat(validate64.errors);
+                        errors = vErrors.length;
+                    }
+                }
+                if (data1.wrapWord !== undefined) {
+                    if (typeof data1.wrapWord !== "boolean") {
+                        const err4 = {
+                            instancePath: instancePath + "/header/wrapWord",
+                            schemaPath: "#/properties/header/properties/wrapWord/type",
+                            keyword: "type",
+                            params: {
+                                type: "boolean"
+                            },
+                            message: "must be boolean"
+                        };
+                        if (vErrors === null) {
+                            vErrors = [err4];
+                        }
+                        else {
+                            vErrors.push(err4);
+                        }
+                        errors++;
+                    }
+                }
+                if (data1.truncate !== undefined) {
+                    let data5 = data1.truncate;
+                    if (!(((typeof data5 == "number") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {
+                        const err5 = {
+                            instancePath: instancePath + "/header/truncate",
+                            schemaPath: "#/properties/header/properties/truncate/type",
+                            keyword: "type",
+                            params: {
+                                type: "integer"
+                            },
+                            message: "must be integer"
+                        };
+                        if (vErrors === null) {
+                            vErrors = [err5];
+                        }
+                        else {
+                            vErrors.push(err5);
+                        }
+                        errors++;
+                    }
+                }
+                if (data1.paddingLeft !== undefined) {
+                    let data6 = data1.paddingLeft;
+                    if (!(((typeof data6 == "number") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {
+                        const err6 = {
+                            instancePath: instancePath + "/header/paddingLeft",
+                            schemaPath: "#/properties/header/properties/paddingLeft/type",
+                            keyword: "type",
+                            params: {
+                                type: "integer"
+                            },
+                            message: "must be integer"
+                        };
+                        if (vErrors === null) {
+                            vErrors = [err6];
+                        }
+                        else {
+                            vErrors.push(err6);
+                        }
+                        errors++;
+                    }
+                }
+                if (data1.paddingRight !== undefined) {
+                    let data7 = data1.paddingRight;
+                    if (!(((typeof data7 == "number") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))) {
+                        const err7 = {
+                            instancePath: instancePath + "/header/paddingRight",
+                            schemaPath: "#/properties/header/properties/paddingRight/type",
+                            keyword: "type",
+                            params: {
+                                type: "integer"
+                            },
+                            message: "must be integer"
+                        };
+                        if (vErrors === null) {
+                            vErrors = [err7];
+                        }
+                        else {
+                            vErrors.push(err7);
+                        }
+                        errors++;
+                    }
+                }
+            }
+            else {
+                const err8 = {
+                    instancePath: instancePath + "/header",
+                    schemaPath: "#/properties/header/type",
+                    keyword: "type",
+                    params: {
+                        type: "object"
+                    },
+                    message: "must be object"
+                };
+                if (vErrors === null) {
+                    vErrors = [err8];
+                }
+                else {
+                    vErrors.push(err8);
+                }
+                errors++;
+            }
+        }
+        if (data.columns !== undefined) {
+            if (!(validate66(data.columns, {
+                instancePath: instancePath + "/columns",
+                parentData: data,
+                parentDataProperty: "columns",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate66.errors : vErrors.concat(validate66.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.columnDefault !== undefined) {
+            if (!(validate73(data.columnDefault, {
+                instancePath: instancePath + "/columnDefault",
+                parentData: data,
+                parentDataProperty: "columnDefault",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate73.errors : vErrors.concat(validate73.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.drawVerticalLine !== undefined) {
+            if (typeof data.drawVerticalLine != "function") {
+                const err9 = {
+                    instancePath: instancePath + "/drawVerticalLine",
+                    schemaPath: "#/properties/drawVerticalLine/typeof",
+                    keyword: "typeof",
+                    params: {},
+                    message: "should pass \"typeof\" keyword validation"
+                };
+                if (vErrors === null) {
+                    vErrors = [err9];
+                }
+                else {
+                    vErrors.push(err9);
+                }
+                errors++;
+            }
+        }
+        if (data.drawHorizontalLine !== undefined) {
+            if (typeof data.drawHorizontalLine != "function") {
+                const err10 = {
+                    instancePath: instancePath + "/drawHorizontalLine",
+                    schemaPath: "#/properties/drawHorizontalLine/typeof",
+                    keyword: "typeof",
+                    params: {},
+                    message: "should pass \"typeof\" keyword validation"
+                };
+                if (vErrors === null) {
+                    vErrors = [err10];
+                }
+                else {
+                    vErrors.push(err10);
+                }
+                errors++;
+            }
+        }
+        if (data.singleLine !== undefined) {
+            if (typeof data.singleLine != "boolean") {
+                const err11 = {
+                    instancePath: instancePath + "/singleLine",
+                    schemaPath: "#/properties/singleLine/typeof",
+                    keyword: "typeof",
+                    params: {},
+                    message: "should pass \"typeof\" keyword validation"
+                };
+                if (vErrors === null) {
+                    vErrors = [err11];
+                }
+                else {
+                    vErrors.push(err11);
+                }
+                errors++;
+            }
+        }
+    }
+    else {
+        const err12 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err12];
+        }
+        else {
+            vErrors.push(err12);
+        }
+        errors++;
+    }
+    validate43.errors = vErrors;
+    return errors === 0;
+}
+exports["streamConfig.json"] = validate76;
+const schema22 = {
+    "$id": "streamConfig.json",
+    "$schema": "http://json-schema.org/draft-07/schema#",
+    "type": "object",
+    "properties": {
+        "border": {
+            "$ref": "shared.json#/definitions/borders"
+        },
+        "columns": {
+            "$ref": "shared.json#/definitions/columns"
+        },
+        "columnDefault": {
+            "$ref": "shared.json#/definitions/column"
+        },
+        "columnCount": {
+            "type": "integer",
+            "minimum": 1
+        },
+        "drawVerticalLine": {
+            "typeof": "function"
+        }
+    },
+    "required": ["columnDefault", "columnCount"],
+    "additionalProperties": false
+};
+function validate77(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(func8.call(schema15.properties, key0))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        if (data.topBody !== undefined) {
+            if (!(validate46(data.topBody, {
+                instancePath: instancePath + "/topBody",
+                parentData: data,
+                parentDataProperty: "topBody",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.topJoin !== undefined) {
+            if (!(validate46(data.topJoin, {
+                instancePath: instancePath + "/topJoin",
+                parentData: data,
+                parentDataProperty: "topJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.topLeft !== undefined) {
+            if (!(validate46(data.topLeft, {
+                instancePath: instancePath + "/topLeft",
+                parentData: data,
+                parentDataProperty: "topLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.topRight !== undefined) {
+            if (!(validate46(data.topRight, {
+                instancePath: instancePath + "/topRight",
+                parentData: data,
+                parentDataProperty: "topRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomBody !== undefined) {
+            if (!(validate46(data.bottomBody, {
+                instancePath: instancePath + "/bottomBody",
+                parentData: data,
+                parentDataProperty: "bottomBody",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomJoin !== undefined) {
+            if (!(validate46(data.bottomJoin, {
+                instancePath: instancePath + "/bottomJoin",
+                parentData: data,
+                parentDataProperty: "bottomJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomLeft !== undefined) {
+            if (!(validate46(data.bottomLeft, {
+                instancePath: instancePath + "/bottomLeft",
+                parentData: data,
+                parentDataProperty: "bottomLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bottomRight !== undefined) {
+            if (!(validate46(data.bottomRight, {
+                instancePath: instancePath + "/bottomRight",
+                parentData: data,
+                parentDataProperty: "bottomRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bodyLeft !== undefined) {
+            if (!(validate46(data.bodyLeft, {
+                instancePath: instancePath + "/bodyLeft",
+                parentData: data,
+                parentDataProperty: "bodyLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bodyRight !== undefined) {
+            if (!(validate46(data.bodyRight, {
+                instancePath: instancePath + "/bodyRight",
+                parentData: data,
+                parentDataProperty: "bodyRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.bodyJoin !== undefined) {
+            if (!(validate46(data.bodyJoin, {
+                instancePath: instancePath + "/bodyJoin",
+                parentData: data,
+                parentDataProperty: "bodyJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.headerJoin !== undefined) {
+            if (!(validate46(data.headerJoin, {
+                instancePath: instancePath + "/headerJoin",
+                parentData: data,
+                parentDataProperty: "headerJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinBody !== undefined) {
+            if (!(validate46(data.joinBody, {
+                instancePath: instancePath + "/joinBody",
+                parentData: data,
+                parentDataProperty: "joinBody",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinLeft !== undefined) {
+            if (!(validate46(data.joinLeft, {
+                instancePath: instancePath + "/joinLeft",
+                parentData: data,
+                parentDataProperty: "joinLeft",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinRight !== undefined) {
+            if (!(validate46(data.joinRight, {
+                instancePath: instancePath + "/joinRight",
+                parentData: data,
+                parentDataProperty: "joinRight",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.joinJoin !== undefined) {
+            if (!(validate46(data.joinJoin, {
+                instancePath: instancePath + "/joinJoin",
+                parentData: data,
+                parentDataProperty: "joinJoin",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
+                errors = vErrors.length;
+            }
+        }
+    }
+    else {
+        const err1 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err1];
+        }
+        else {
+            vErrors.push(err1);
+        }
+        errors++;
+    }
+    validate77.errors = vErrors;
+    return errors === 0;
+}
+function validate95(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    const _errs0 = errors;
+    let valid0 = false;
+    let passing0 = null;
+    const _errs1 = errors;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(pattern0.test(key0))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/oneOf/0/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        for (const key1 in data) {
+            if (pattern0.test(key1)) {
+                if (!(validate67(data[key1], {
+                    instancePath: instancePath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
+                    parentData: data,
+                    parentDataProperty: key1,
+                    rootData
+                }))) {
+                    vErrors = vErrors === null ? validate67.errors : vErrors.concat(validate67.errors);
+                    errors = vErrors.length;
+                }
+            }
+        }
+    }
+    else {
+        const err1 = {
+            instancePath,
+            schemaPath: "#/oneOf/0/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err1];
+        }
+        else {
+            vErrors.push(err1);
+        }
+        errors++;
+    }
+    var _valid0 = _errs1 === errors;
+    if (_valid0) {
+        valid0 = true;
+        passing0 = 0;
+    }
+    const _errs5 = errors;
+    if (Array.isArray(data)) {
+        const len0 = data.length;
+        for (let i0 = 0; i0 < len0; i0++) {
+            if (!(validate67(data[i0], {
+                instancePath: instancePath + "/" + i0,
+                parentData: data,
+                parentDataProperty: i0,
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate67.errors : vErrors.concat(validate67.errors);
+                errors = vErrors.length;
+            }
+        }
+    }
+    else {
+        const err2 = {
+            instancePath,
+            schemaPath: "#/oneOf/1/type",
+            keyword: "type",
+            params: {
+                type: "array"
+            },
+            message: "must be array"
+        };
+        if (vErrors === null) {
+            vErrors = [err2];
+        }
+        else {
+            vErrors.push(err2);
+        }
+        errors++;
+    }
+    var _valid0 = _errs5 === errors;
+    if (_valid0 && valid0) {
+        valid0 = false;
+        passing0 = [passing0, 1];
+    }
+    else {
+        if (_valid0) {
+            valid0 = true;
+            passing0 = 1;
+        }
+    }
+    if (!valid0) {
+        const err3 = {
+            instancePath,
+            schemaPath: "#/oneOf",
+            keyword: "oneOf",
+            params: {
+                passingSchemas: passing0
+            },
+            message: "must match exactly one schema in oneOf"
+        };
+        if (vErrors === null) {
+            vErrors = [err3];
+        }
+        else {
+            vErrors.push(err3);
+        }
+        errors++;
+    }
+    else {
+        errors = _errs0;
+        if (vErrors !== null) {
+            if (_errs0) {
+                vErrors.length = _errs0;
+            }
+            else {
+                vErrors = null;
+            }
+        }
+    }
+    validate95.errors = vErrors;
+    return errors === 0;
+}
+function validate99(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        for (const key0 in data) {
+            if (!(((((((key0 === "alignment") || (key0 === "verticalAlignment")) || (key0 === "width")) || (key0 === "wrapWord")) || (key0 === "truncate")) || (key0 === "paddingLeft")) || (key0 === "paddingRight"))) {
+                const err0 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err0];
+                }
+                else {
+                    vErrors.push(err0);
+                }
+                errors++;
+            }
+        }
+        if (data.alignment !== undefined) {
+            if (!(validate68(data.alignment, {
+                instancePath: instancePath + "/alignment",
+                parentData: data,
+                parentDataProperty: "alignment",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.verticalAlignment !== undefined) {
+            let data1 = data.verticalAlignment;
+            if (typeof data1 !== "string") {
+                const err1 = {
+                    instancePath: instancePath + "/verticalAlignment",
+                    schemaPath: "#/properties/verticalAlignment/type",
+                    keyword: "type",
+                    params: {
+                        type: "string"
+                    },
+                    message: "must be string"
+                };
+                if (vErrors === null) {
+                    vErrors = [err1];
+                }
+                else {
+                    vErrors.push(err1);
+                }
+                errors++;
+            }
+            if (!(((data1 === "top") || (data1 === "middle")) || (data1 === "bottom"))) {
+                const err2 = {
+                    instancePath: instancePath + "/verticalAlignment",
+                    schemaPath: "#/properties/verticalAlignment/enum",
+                    keyword: "enum",
+                    params: {
+                        allowedValues: schema19.properties.verticalAlignment.enum
+                    },
+                    message: "must be equal to one of the allowed values"
+                };
+                if (vErrors === null) {
+                    vErrors = [err2];
+                }
+                else {
+                    vErrors.push(err2);
+                }
+                errors++;
+            }
+        }
+        if (data.width !== undefined) {
+            let data2 = data.width;
+            if (!(((typeof data2 == "number") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {
+                const err3 = {
+                    instancePath: instancePath + "/width",
+                    schemaPath: "#/properties/width/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err3];
+                }
+                else {
+                    vErrors.push(err3);
+                }
+                errors++;
+            }
+            if ((typeof data2 == "number") && (isFinite(data2))) {
+                if (data2 < 1 || isNaN(data2)) {
+                    const err4 = {
+                        instancePath: instancePath + "/width",
+                        schemaPath: "#/properties/width/minimum",
+                        keyword: "minimum",
+                        params: {
+                            comparison: ">=",
+                            limit: 1
+                        },
+                        message: "must be >= 1"
+                    };
+                    if (vErrors === null) {
+                        vErrors = [err4];
+                    }
+                    else {
+                        vErrors.push(err4);
+                    }
+                    errors++;
+                }
+            }
+        }
+        if (data.wrapWord !== undefined) {
+            if (typeof data.wrapWord !== "boolean") {
+                const err5 = {
+                    instancePath: instancePath + "/wrapWord",
+                    schemaPath: "#/properties/wrapWord/type",
+                    keyword: "type",
+                    params: {
+                        type: "boolean"
+                    },
+                    message: "must be boolean"
+                };
+                if (vErrors === null) {
+                    vErrors = [err5];
+                }
+                else {
+                    vErrors.push(err5);
+                }
+                errors++;
+            }
+        }
+        if (data.truncate !== undefined) {
+            let data4 = data.truncate;
+            if (!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {
+                const err6 = {
+                    instancePath: instancePath + "/truncate",
+                    schemaPath: "#/properties/truncate/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err6];
+                }
+                else {
+                    vErrors.push(err6);
+                }
+                errors++;
+            }
+        }
+        if (data.paddingLeft !== undefined) {
+            let data5 = data.paddingLeft;
+            if (!(((typeof data5 == "number") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {
+                const err7 = {
+                    instancePath: instancePath + "/paddingLeft",
+                    schemaPath: "#/properties/paddingLeft/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err7];
+                }
+                else {
+                    vErrors.push(err7);
+                }
+                errors++;
+            }
+        }
+        if (data.paddingRight !== undefined) {
+            let data6 = data.paddingRight;
+            if (!(((typeof data6 == "number") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {
+                const err8 = {
+                    instancePath: instancePath + "/paddingRight",
+                    schemaPath: "#/properties/paddingRight/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err8];
+                }
+                else {
+                    vErrors.push(err8);
+                }
+                errors++;
+            }
+        }
+    }
+    else {
+        const err9 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err9];
+        }
+        else {
+            vErrors.push(err9);
+        }
+        errors++;
+    }
+    validate99.errors = vErrors;
+    return errors === 0;
+}
+function validate76(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) {
+    /*# sourceURL="streamConfig.json" */ ;
+    let vErrors = null;
+    let errors = 0;
+    if (data && typeof data == "object" && !Array.isArray(data)) {
+        if (data.columnDefault === undefined) {
+            const err0 = {
+                instancePath,
+                schemaPath: "#/required",
+                keyword: "required",
+                params: {
+                    missingProperty: "columnDefault"
+                },
+                message: "must have required property '" + "columnDefault" + "'"
+            };
+            if (vErrors === null) {
+                vErrors = [err0];
+            }
+            else {
+                vErrors.push(err0);
+            }
+            errors++;
+        }
+        if (data.columnCount === undefined) {
+            const err1 = {
+                instancePath,
+                schemaPath: "#/required",
+                keyword: "required",
+                params: {
+                    missingProperty: "columnCount"
+                },
+                message: "must have required property '" + "columnCount" + "'"
+            };
+            if (vErrors === null) {
+                vErrors = [err1];
+            }
+            else {
+                vErrors.push(err1);
+            }
+            errors++;
+        }
+        for (const key0 in data) {
+            if (!(((((key0 === "border") || (key0 === "columns")) || (key0 === "columnDefault")) || (key0 === "columnCount")) || (key0 === "drawVerticalLine"))) {
+                const err2 = {
+                    instancePath,
+                    schemaPath: "#/additionalProperties",
+                    keyword: "additionalProperties",
+                    params: {
+                        additionalProperty: key0
+                    },
+                    message: "must NOT have additional properties"
+                };
+                if (vErrors === null) {
+                    vErrors = [err2];
+                }
+                else {
+                    vErrors.push(err2);
+                }
+                errors++;
+            }
+        }
+        if (data.border !== undefined) {
+            if (!(validate77(data.border, {
+                instancePath: instancePath + "/border",
+                parentData: data,
+                parentDataProperty: "border",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate77.errors : vErrors.concat(validate77.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.columns !== undefined) {
+            if (!(validate95(data.columns, {
+                instancePath: instancePath + "/columns",
+                parentData: data,
+                parentDataProperty: "columns",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate95.errors : vErrors.concat(validate95.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.columnDefault !== undefined) {
+            if (!(validate99(data.columnDefault, {
+                instancePath: instancePath + "/columnDefault",
+                parentData: data,
+                parentDataProperty: "columnDefault",
+                rootData
+            }))) {
+                vErrors = vErrors === null ? validate99.errors : vErrors.concat(validate99.errors);
+                errors = vErrors.length;
+            }
+        }
+        if (data.columnCount !== undefined) {
+            let data3 = data.columnCount;
+            if (!(((typeof data3 == "number") && (!(data3 % 1) && !isNaN(data3))) && (isFinite(data3)))) {
+                const err3 = {
+                    instancePath: instancePath + "/columnCount",
+                    schemaPath: "#/properties/columnCount/type",
+                    keyword: "type",
+                    params: {
+                        type: "integer"
+                    },
+                    message: "must be integer"
+                };
+                if (vErrors === null) {
+                    vErrors = [err3];
+                }
+                else {
+                    vErrors.push(err3);
+                }
+                errors++;
+            }
+            if ((typeof data3 == "number") && (isFinite(data3))) {
+                if (data3 < 1 || isNaN(data3)) {
+                    const err4 = {
+                        instancePath: instancePath + "/columnCount",
+                        schemaPath: "#/properties/columnCount/minimum",
+                        keyword: "minimum",
+                        params: {
+                            comparison: ">=",
+                            limit: 1
+                        },
+                        message: "must be >= 1"
+                    };
+                    if (vErrors === null) {
+                        vErrors = [err4];
+                    }
+                    else {
+                        vErrors.push(err4);
+                    }
+                    errors++;
+                }
+            }
+        }
+        if (data.drawVerticalLine !== undefined) {
+            if (typeof data.drawVerticalLine != "function") {
+                const err5 = {
+                    instancePath: instancePath + "/drawVerticalLine",
+                    schemaPath: "#/properties/drawVerticalLine/typeof",
+                    keyword: "typeof",
+                    params: {},
+                    message: "should pass \"typeof\" keyword validation"
+                };
+                if (vErrors === null) {
+                    vErrors = [err5];
+                }
+                else {
+                    vErrors.push(err5);
+                }
+                errors++;
+            }
+        }
+    }
+    else {
+        const err6 = {
+            instancePath,
+            schemaPath: "#/type",
+            keyword: "type",
+            params: {
+                type: "object"
+            },
+            message: "must be object"
+        };
+        if (vErrors === null) {
+            vErrors = [err6];
+        }
+        else {
+            vErrors.push(err6);
+        }
+        errors++;
+    }
+    validate76.errors = vErrors;
+    return errors === 0;
+}
diff --git a/node_modules/table/dist/getBorderCharacters.d.ts b/node_modules/table/dist/getBorderCharacters.d.ts
new file mode 100644
index 0000000..334489b
--- /dev/null
+++ b/node_modules/table/dist/getBorderCharacters.d.ts
@@ -0,0 +1,2 @@
+import type { BorderConfig } from './types/api';
+export declare const getBorderCharacters: (name: string) => BorderConfig;
diff --git a/node_modules/table/dist/getBorderCharacters.js b/node_modules/table/dist/getBorderCharacters.js
index 00da959..3662a8a 100644
--- a/node_modules/table/dist/getBorderCharacters.js
+++ b/node_modules/table/dist/getBorderCharacters.js
@@ -1,119 +1,88 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
 /* eslint-disable sort-keys-fix/sort-keys-fix */
-
-/**
- * @typedef border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * @param {string} name
- * @returns {border}
- */
-const getBorderCharacters = name => {
-  if (name === 'honeywell') {
-    return {
-      topBody: '═',
-      topJoin: '╤',
-      topLeft: '╔',
-      topRight: '╗',
-      bottomBody: '═',
-      bottomJoin: '╧',
-      bottomLeft: '╚',
-      bottomRight: '╝',
-      bodyLeft: '║',
-      bodyRight: '║',
-      bodyJoin: '│',
-      joinBody: '─',
-      joinLeft: '╟',
-      joinRight: '╢',
-      joinJoin: '┼'
-    };
-  }
-
-  if (name === 'norc') {
-    return {
-      topBody: '─',
-      topJoin: '┬',
-      topLeft: '┌',
-      topRight: '┐',
-      bottomBody: '─',
-      bottomJoin: '┴',
-      bottomLeft: '└',
-      bottomRight: '┘',
-      bodyLeft: '│',
-      bodyRight: '│',
-      bodyJoin: '│',
-      joinBody: '─',
-      joinLeft: '├',
-      joinRight: '┤',
-      joinJoin: '┼'
-    };
-  }
-
-  if (name === 'ramac') {
-    return {
-      topBody: '-',
-      topJoin: '+',
-      topLeft: '+',
-      topRight: '+',
-      bottomBody: '-',
-      bottomJoin: '+',
-      bottomLeft: '+',
-      bottomRight: '+',
-      bodyLeft: '|',
-      bodyRight: '|',
-      bodyJoin: '|',
-      joinBody: '-',
-      joinLeft: '|',
-      joinRight: '|',
-      joinJoin: '|'
-    };
-  }
-
-  if (name === 'void') {
-    return {
-      topBody: '',
-      topJoin: '',
-      topLeft: '',
-      topRight: '',
-      bottomBody: '',
-      bottomJoin: '',
-      bottomLeft: '',
-      bottomRight: '',
-      bodyLeft: '',
-      bodyRight: '',
-      bodyJoin: '',
-      joinBody: '',
-      joinLeft: '',
-      joinRight: '',
-      joinJoin: ''
-    };
-  }
-
-  throw new Error('Unknown border template "' + name + '".');
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getBorderCharacters = void 0;
+const getBorderCharacters = (name) => {
+    if (name === 'honeywell') {
+        return {
+            topBody: '═',
+            topJoin: '╤',
+            topLeft: '╔',
+            topRight: '╗',
+            bottomBody: '═',
+            bottomJoin: '╧',
+            bottomLeft: '╚',
+            bottomRight: '╝',
+            bodyLeft: '║',
+            bodyRight: '║',
+            bodyJoin: '│',
+            headerJoin: '┬',
+            joinBody: '─',
+            joinLeft: '╟',
+            joinRight: '╢',
+            joinJoin: '┼',
+        };
+    }
+    if (name === 'norc') {
+        return {
+            topBody: '─',
+            topJoin: '┬',
+            topLeft: '┌',
+            topRight: '┐',
+            bottomBody: '─',
+            bottomJoin: '┴',
+            bottomLeft: '└',
+            bottomRight: '┘',
+            bodyLeft: '│',
+            bodyRight: '│',
+            bodyJoin: '│',
+            headerJoin: '┬',
+            joinBody: '─',
+            joinLeft: '├',
+            joinRight: '┤',
+            joinJoin: '┼',
+        };
+    }
+    if (name === 'ramac') {
+        return {
+            topBody: '-',
+            topJoin: '+',
+            topLeft: '+',
+            topRight: '+',
+            bottomBody: '-',
+            bottomJoin: '+',
+            bottomLeft: '+',
+            bottomRight: '+',
+            bodyLeft: '|',
+            bodyRight: '|',
+            bodyJoin: '|',
+            headerJoin: '+',
+            joinBody: '-',
+            joinLeft: '|',
+            joinRight: '|',
+            joinJoin: '|',
+        };
+    }
+    if (name === 'void') {
+        return {
+            topBody: '',
+            topJoin: '',
+            topLeft: '',
+            topRight: '',
+            bottomBody: '',
+            bottomJoin: '',
+            bottomLeft: '',
+            bottomRight: '',
+            bodyLeft: '',
+            bodyRight: '',
+            bodyJoin: '',
+            headerJoin: '',
+            joinBody: '',
+            joinLeft: '',
+            joinRight: '',
+            joinJoin: '',
+        };
+    }
+    throw new Error('Unknown border template "' + name + '".');
 };
-
-var _default = getBorderCharacters;
-exports.default = _default;
-//# sourceMappingURL=getBorderCharacters.js.map
\ No newline at end of file
+exports.getBorderCharacters = getBorderCharacters;
diff --git a/node_modules/table/dist/getBorderCharacters.js.flow b/node_modules/table/dist/getBorderCharacters.js.flow
deleted file mode 100644
index bc8b0f2..0000000
--- a/node_modules/table/dist/getBorderCharacters.js.flow
+++ /dev/null
@@ -1,120 +0,0 @@
-/* eslint-disable sort-keys-fix/sort-keys-fix */
-
-/**
- * @typedef border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * @param {string} name
- * @returns {border}
- */
-export default (name) => {
-  if (name === 'honeywell') {
-    return {
-      topBody: '═',
-      topJoin: '╤',
-      topLeft: '╔',
-      topRight: '╗',
-
-      bottomBody: '═',
-      bottomJoin: '╧',
-      bottomLeft: '╚',
-      bottomRight: '╝',
-
-      bodyLeft: '║',
-      bodyRight: '║',
-      bodyJoin: '│',
-
-      joinBody: '─',
-      joinLeft: '╟',
-      joinRight: '╢',
-      joinJoin: '┼',
-    };
-  }
-
-  if (name === 'norc') {
-    return {
-      topBody: '─',
-      topJoin: '┬',
-      topLeft: '┌',
-      topRight: '┐',
-
-      bottomBody: '─',
-      bottomJoin: '┴',
-      bottomLeft: '└',
-      bottomRight: '┘',
-
-      bodyLeft: '│',
-      bodyRight: '│',
-      bodyJoin: '│',
-
-      joinBody: '─',
-      joinLeft: '├',
-      joinRight: '┤',
-      joinJoin: '┼',
-    };
-  }
-
-  if (name === 'ramac') {
-    return {
-      topBody: '-',
-      topJoin: '+',
-      topLeft: '+',
-      topRight: '+',
-
-      bottomBody: '-',
-      bottomJoin: '+',
-      bottomLeft: '+',
-      bottomRight: '+',
-
-      bodyLeft: '|',
-      bodyRight: '|',
-      bodyJoin: '|',
-
-      joinBody: '-',
-      joinLeft: '|',
-      joinRight: '|',
-      joinJoin: '|',
-    };
-  }
-
-  if (name === 'void') {
-    return {
-      topBody: '',
-      topJoin: '',
-      topLeft: '',
-      topRight: '',
-
-      bottomBody: '',
-      bottomJoin: '',
-      bottomLeft: '',
-      bottomRight: '',
-
-      bodyLeft: '',
-      bodyRight: '',
-      bodyJoin: '',
-
-      joinBody: '',
-      joinLeft: '',
-      joinRight: '',
-      joinJoin: '',
-    };
-  }
-
-  throw new Error('Unknown border template "' + name + '".');
-};
diff --git a/node_modules/table/dist/getBorderCharacters.js.map b/node_modules/table/dist/getBorderCharacters.js.map
deleted file mode 100644
index 999545e..0000000
--- a/node_modules/table/dist/getBorderCharacters.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/getBorderCharacters.js"],"names":["name","topBody","topJoin","topLeft","topRight","bottomBody","bottomJoin","bottomLeft","bottomRight","bodyLeft","bodyRight","bodyJoin","joinBody","joinLeft","joinRight","joinJoin","Error"],"mappings":"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","sourcesContent":["/* eslint-disable sort-keys-fix/sort-keys-fix */\n\n/**\n * @typedef border\n * @property {string} topBody\n * @property {string} topJoin\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} bottomBody\n * @property {string} bottomJoin\n * @property {string} bottomLeft\n * @property {string} bottomRight\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n * @property {string} joinBody\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinJoin\n */\n\n/**\n * @param {string} name\n * @returns {border}\n */\nexport default (name) => {\n  if (name === 'honeywell') {\n    return {\n      topBody: '═',\n      topJoin: '╤',\n      topLeft: '╔',\n      topRight: '╗',\n\n      bottomBody: '═',\n      bottomJoin: '╧',\n      bottomLeft: '╚',\n      bottomRight: '╝',\n\n      bodyLeft: '║',\n      bodyRight: '║',\n      bodyJoin: '│',\n\n      joinBody: '─',\n      joinLeft: '╟',\n      joinRight: '╢',\n      joinJoin: '┼',\n    };\n  }\n\n  if (name === 'norc') {\n    return {\n      topBody: '─',\n      topJoin: '┬',\n      topLeft: '┌',\n      topRight: '┐',\n\n      bottomBody: '─',\n      bottomJoin: '┴',\n      bottomLeft: '└',\n      bottomRight: '┘',\n\n      bodyLeft: '│',\n      bodyRight: '│',\n      bodyJoin: '│',\n\n      joinBody: '─',\n      joinLeft: '├',\n      joinRight: '┤',\n      joinJoin: '┼',\n    };\n  }\n\n  if (name === 'ramac') {\n    return {\n      topBody: '-',\n      topJoin: '+',\n      topLeft: '+',\n      topRight: '+',\n\n      bottomBody: '-',\n      bottomJoin: '+',\n      bottomLeft: '+',\n      bottomRight: '+',\n\n      bodyLeft: '|',\n      bodyRight: '|',\n      bodyJoin: '|',\n\n      joinBody: '-',\n      joinLeft: '|',\n      joinRight: '|',\n      joinJoin: '|',\n    };\n  }\n\n  if (name === 'void') {\n    return {\n      topBody: '',\n      topJoin: '',\n      topLeft: '',\n      topRight: '',\n\n      bottomBody: '',\n      bottomJoin: '',\n      bottomLeft: '',\n      bottomRight: '',\n\n      bodyLeft: '',\n      bodyRight: '',\n      bodyJoin: '',\n\n      joinBody: '',\n      joinLeft: '',\n      joinRight: '',\n      joinJoin: '',\n    };\n  }\n\n  throw new Error('Unknown border template \"' + name + '\".');\n};\n"],"file":"getBorderCharacters.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/index.d.ts b/node_modules/table/dist/index.d.ts
new file mode 100644
index 0000000..d4cb68b
--- /dev/null
+++ b/node_modules/table/dist/index.d.ts
@@ -0,0 +1,7 @@
+import { createStream } from './createStream';
+import { getBorderCharacters } from './getBorderCharacters';
+import { table } from './table';
+
+export { createStream, getBorderCharacters, table, };
+
+export * from './types/api';
diff --git a/node_modules/table/dist/index.js b/node_modules/table/dist/index.js
index 010fbae..711de3f 100644
--- a/node_modules/table/dist/index.js
+++ b/node_modules/table/dist/index.js
@@ -1,32 +1,21 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "createStream", {
-  enumerable: true,
-  get: function () {
-    return _createStream.default;
-  }
-});
-Object.defineProperty(exports, "getBorderCharacters", {
-  enumerable: true,
-  get: function () {
-    return _getBorderCharacters.default;
-  }
-});
-Object.defineProperty(exports, "table", {
-  enumerable: true,
-  get: function () {
-    return _table.default;
-  }
-});
-
-var _createStream = _interopRequireDefault(require("./createStream"));
-
-var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
-
-var _table = _interopRequireDefault(require("./table"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-//# sourceMappingURL=index.js.map
\ No newline at end of file
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getBorderCharacters = exports.createStream = exports.table = void 0;
+// import chalk from 'chalk';
+const createStream_1 = require("./createStream");
+Object.defineProperty(exports, "createStream", { enumerable: true, get: function () { return createStream_1.createStream; } });
+const getBorderCharacters_1 = require("./getBorderCharacters");
+Object.defineProperty(exports, "getBorderCharacters", { enumerable: true, get: function () { return getBorderCharacters_1.getBorderCharacters; } });
+const table_1 = require("./table");
+Object.defineProperty(exports, "table", { enumerable: true, get: function () { return table_1.table; } });
+__exportStar(require("./types/api"), exports);
diff --git a/node_modules/table/dist/index.js.flow b/node_modules/table/dist/index.js.flow
deleted file mode 100644
index 4a47c50..0000000
--- a/node_modules/table/dist/index.js.flow
+++ /dev/null
@@ -1,9 +0,0 @@
-import createStream from './createStream';
-import getBorderCharacters from './getBorderCharacters';
-import table from './table';
-
-export {
-  table,
-  createStream,
-  getBorderCharacters,
-};
diff --git a/node_modules/table/dist/index.js.map b/node_modules/table/dist/index.js.map
deleted file mode 100644
index 30ffff4..0000000
--- a/node_modules/table/dist/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["import createStream from './createStream';\nimport getBorderCharacters from './getBorderCharacters';\nimport table from './table';\n\nexport {\n  table,\n  createStream,\n  getBorderCharacters,\n};\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/makeConfig.js b/node_modules/table/dist/makeConfig.js
deleted file mode 100644
index 8f77c63..0000000
--- a/node_modules/table/dist/makeConfig.js
+++ /dev/null
@@ -1,94 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
-
-var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
-
-var _times2 = _interopRequireDefault(require("lodash/times"));
-
-var _calculateMaximumColumnWidthIndex = _interopRequireDefault(require("./calculateMaximumColumnWidthIndex"));
-
-var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
-
-var _validateConfig = _interopRequireDefault(require("./validateConfig"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {object} border
- * @returns {object}
- */
-const makeBorder = (border = {}) => {
-  return Object.assign({}, (0, _getBorderCharacters.default)('honeywell'), border);
-};
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {object} columns
- * @param {object} columnDefault
- * @returns {object}
- */
-
-
-const makeColumns = (rows, columns = {}, columnDefault = {}) => {
-  const maximumColumnWidthIndex = (0, _calculateMaximumColumnWidthIndex.default)(rows);
-  (0, _times2.default)(rows[0].length, index => {
-    if ((0, _isUndefined2.default)(columns[index])) {
-      columns[index] = {};
-    }
-
-    columns[index] = Object.assign({
-      alignment: 'left',
-      paddingLeft: 1,
-      paddingRight: 1,
-      truncate: Number.POSITIVE_INFINITY,
-      width: maximumColumnWidthIndex[index],
-      wrapWord: false
-    }, columnDefault, columns[index]);
-  });
-  return columns;
-};
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {object} userConfig
- * @returns {object}
- */
-
-
-const makeConfig = (rows, userConfig = {}) => {
-  (0, _validateConfig.default)('config.json', userConfig);
-  const config = (0, _cloneDeep2.default)(userConfig);
-  config.border = makeBorder(config.border);
-  config.columns = makeColumns(rows, config.columns, config.columnDefault);
-
-  if (!config.drawHorizontalLine) {
-    /**
-         * @returns {boolean}
-         */
-    config.drawHorizontalLine = () => {
-      return true;
-    };
-  }
-
-  if (config.singleLine === undefined) {
-    config.singleLine = false;
-  }
-
-  return config;
-};
-
-var _default = makeConfig;
-exports.default = _default;
-//# sourceMappingURL=makeConfig.js.map
\ No newline at end of file
diff --git a/node_modules/table/dist/makeConfig.js.flow b/node_modules/table/dist/makeConfig.js.flow
deleted file mode 100644
index f661220..0000000
--- a/node_modules/table/dist/makeConfig.js.flow
+++ /dev/null
@@ -1,76 +0,0 @@
-import _ from 'lodash';
-import calculateMaximumColumnWidthIndex from './calculateMaximumColumnWidthIndex';
-import getBorderCharacters from './getBorderCharacters';
-import validateConfig from './validateConfig';
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {object} border
- * @returns {object}
- */
-const makeBorder = (border = {}) => {
-  return Object.assign({}, getBorderCharacters('honeywell'), border);
-};
-
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {object} columns
- * @param {object} columnDefault
- * @returns {object}
- */
-const makeColumns = (rows, columns = {}, columnDefault = {}) => {
-  const maximumColumnWidthIndex = calculateMaximumColumnWidthIndex(rows);
-
-  _.times(rows[0].length, (index) => {
-    if (_.isUndefined(columns[index])) {
-      columns[index] = {};
-    }
-
-    columns[index] = Object.assign({
-      alignment: 'left',
-      paddingLeft: 1,
-      paddingRight: 1,
-      truncate: Number.POSITIVE_INFINITY,
-      width: maximumColumnWidthIndex[index],
-      wrapWord: false,
-    }, columnDefault, columns[index]);
-  });
-
-  return columns;
-};
-
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {Array[]} rows
- * @param {object} userConfig
- * @returns {object}
- */
-export default (rows, userConfig = {}) => {
-  validateConfig('config.json', userConfig);
-
-  const config = _.cloneDeep(userConfig);
-
-  config.border = makeBorder(config.border);
-  config.columns = makeColumns(rows, config.columns, config.columnDefault);
-
-  if (!config.drawHorizontalLine) {
-    /**
-         * @returns {boolean}
-         */
-    config.drawHorizontalLine = () => {
-      return true;
-    };
-  }
-
-  if (config.singleLine === undefined) {
-    config.singleLine = false;
-  }
-
-  return config;
-};
diff --git a/node_modules/table/dist/makeConfig.js.map b/node_modules/table/dist/makeConfig.js.map
deleted file mode 100644
index ad0c9aa..0000000
--- a/node_modules/table/dist/makeConfig.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/makeConfig.js"],"names":["makeBorder","border","Object","assign","makeColumns","rows","columns","columnDefault","maximumColumnWidthIndex","length","index","alignment","paddingLeft","paddingRight","truncate","Number","POSITIVE_INFINITY","width","wrapWord","userConfig","config","drawHorizontalLine","singleLine","undefined"],"mappings":";;;;;;;;;;;;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,UAAU,GAAG,CAACC,MAAM,GAAG,EAAV,KAAiB;AAClC,SAAOC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,kCAAoB,WAApB,CAAlB,EAAoDF,MAApD,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMG,WAAW,GAAG,CAACC,IAAD,EAAOC,OAAO,GAAG,EAAjB,EAAqBC,aAAa,GAAG,EAArC,KAA4C;AAC9D,QAAMC,uBAAuB,GAAG,+CAAiCH,IAAjC,CAAhC;AAEA,uBAAQA,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAhB,EAAyBC,KAAD,IAAW;AACjC,QAAI,2BAAcJ,OAAO,CAACI,KAAD,CAArB,CAAJ,EAAmC;AACjCJ,MAAAA,OAAO,CAACI,KAAD,CAAP,GAAiB,EAAjB;AACD;;AAEDJ,IAAAA,OAAO,CAACI,KAAD,CAAP,GAAiBR,MAAM,CAACC,MAAP,CAAc;AAC7BQ,MAAAA,SAAS,EAAE,MADkB;AAE7BC,MAAAA,WAAW,EAAE,CAFgB;AAG7BC,MAAAA,YAAY,EAAE,CAHe;AAI7BC,MAAAA,QAAQ,EAAEC,MAAM,CAACC,iBAJY;AAK7BC,MAAAA,KAAK,EAAET,uBAAuB,CAACE,KAAD,CALD;AAM7BQ,MAAAA,QAAQ,EAAE;AANmB,KAAd,EAOdX,aAPc,EAOCD,OAAO,CAACI,KAAD,CAPR,CAAjB;AAQD,GAbD;AAeA,SAAOJ,OAAP;AACD,CAnBD;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;oBACgBD,I,EAAMc,UAAU,GAAG,E,KAAO;AACxC,+BAAe,aAAf,EAA8BA,UAA9B;AAEA,QAAMC,MAAM,GAAG,yBAAYD,UAAZ,CAAf;AAEAC,EAAAA,MAAM,CAACnB,MAAP,GAAgBD,UAAU,CAACoB,MAAM,CAACnB,MAAR,CAA1B;AACAmB,EAAAA,MAAM,CAACd,OAAP,GAAiBF,WAAW,CAACC,IAAD,EAAOe,MAAM,CAACd,OAAd,EAAuBc,MAAM,CAACb,aAA9B,CAA5B;;AAEA,MAAI,CAACa,MAAM,CAACC,kBAAZ,EAAgC;AAC9B;AACJ;AACA;AACID,IAAAA,MAAM,CAACC,kBAAP,GAA4B,MAAM;AAChC,aAAO,IAAP;AACD,KAFD;AAGD;;AAED,MAAID,MAAM,CAACE,UAAP,KAAsBC,SAA1B,EAAqC;AACnCH,IAAAA,MAAM,CAACE,UAAP,GAAoB,KAApB;AACD;;AAED,SAAOF,MAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport calculateMaximumColumnWidthIndex from './calculateMaximumColumnWidthIndex';\nimport getBorderCharacters from './getBorderCharacters';\nimport validateConfig from './validateConfig';\n\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @param {object} border\n * @returns {object}\n */\nconst makeBorder = (border = {}) => {\n  return Object.assign({}, getBorderCharacters('honeywell'), border);\n};\n\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n *\n * @param {Array[]} rows\n * @param {object} columns\n * @param {object} columnDefault\n * @returns {object}\n */\nconst makeColumns = (rows, columns = {}, columnDefault = {}) => {\n  const maximumColumnWidthIndex = calculateMaximumColumnWidthIndex(rows);\n\n  _.times(rows[0].length, (index) => {\n    if (_.isUndefined(columns[index])) {\n      columns[index] = {};\n    }\n\n    columns[index] = Object.assign({\n      alignment: 'left',\n      paddingLeft: 1,\n      paddingRight: 1,\n      truncate: Number.POSITIVE_INFINITY,\n      width: maximumColumnWidthIndex[index],\n      wrapWord: false,\n    }, columnDefault, columns[index]);\n  });\n\n  return columns;\n};\n\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n *\n * @param {Array[]} rows\n * @param {object} userConfig\n * @returns {object}\n */\nexport default (rows, userConfig = {}) => {\n  validateConfig('config.json', userConfig);\n\n  const config = _.cloneDeep(userConfig);\n\n  config.border = makeBorder(config.border);\n  config.columns = makeColumns(rows, config.columns, config.columnDefault);\n\n  if (!config.drawHorizontalLine) {\n    /**\n         * @returns {boolean}\n         */\n    config.drawHorizontalLine = () => {\n      return true;\n    };\n  }\n\n  if (config.singleLine === undefined) {\n    config.singleLine = false;\n  }\n\n  return config;\n};\n"],"file":"makeConfig.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/makeStreamConfig.d.ts b/node_modules/table/dist/makeStreamConfig.d.ts
new file mode 100644
index 0000000..177ca27
--- /dev/null
+++ b/node_modules/table/dist/makeStreamConfig.d.ts
@@ -0,0 +1,7 @@
+import type { StreamUserConfig } from './types/api';
+import type { StreamConfig } from './types/internal';
+/**
+ * Makes a new configuration object out of the userConfig object
+ * using default values for the missing configuration properties.
+ */
+export declare const makeStreamConfig: (userConfig: StreamUserConfig) => StreamConfig;
diff --git a/node_modules/table/dist/makeStreamConfig.js b/node_modules/table/dist/makeStreamConfig.js
index f36fdf3..b8ae96f 100644
--- a/node_modules/table/dist/makeStreamConfig.js
+++ b/node_modules/table/dist/makeStreamConfig.js
@@ -1,101 +1,47 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
-
-var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
-
-var _times2 = _interopRequireDefault(require("lodash/times"));
-
-var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
-
-var _validateConfig = _interopRequireDefault(require("./validateConfig"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {object} border
- * @returns {object}
- */
-const makeBorder = (border = {}) => {
-  return Object.assign({}, (0, _getBorderCharacters.default)('honeywell'), border);
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
 };
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.makeStreamConfig = void 0;
+const lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
+const utils_1 = require("./utils");
+const validateConfig_1 = require("./validateConfig");
 /**
  * Creates a configuration for every column using default
  * values for the missing configuration properties.
- *
- * @param {number} columnCount
- * @param {object} columns
- * @param {object} columnDefault
- * @returns {object}
  */
-
-
-const makeColumns = (columnCount, columns = {}, columnDefault = {}) => {
-  (0, _times2.default)(columnCount, index => {
-    if ((0, _isUndefined2.default)(columns[index])) {
-      columns[index] = {};
-    }
-
-    columns[index] = Object.assign({
-      alignment: 'left',
-      paddingLeft: 1,
-      paddingRight: 1,
-      truncate: Number.POSITIVE_INFINITY,
-      wrapWord: false
-    }, columnDefault, columns[index]);
-  });
-  return columns;
+const makeColumnsConfig = (columnCount, columns = {}, columnDefault) => {
+    return Array.from({ length: columnCount }).map((_, index) => {
+        return {
+            alignment: 'left',
+            paddingLeft: 1,
+            paddingRight: 1,
+            truncate: Number.POSITIVE_INFINITY,
+            verticalAlignment: 'top',
+            wrapWord: false,
+            ...columnDefault,
+            ...columns[index],
+        };
+    });
 };
 /**
- * @typedef {object} columnConfig
- * @property {string} alignment
- * @property {number} width
- * @property {number} truncate
- * @property {number} paddingLeft
- * @property {number} paddingRight
- */
-
-/**
- * @typedef {object} streamConfig
- * @property {columnConfig} columnDefault
- * @property {object} border
- * @property {columnConfig[]}
- * @property {number} columnCount Number of columns in the table (required).
- */
-
-/**
  * Makes a new configuration object out of the userConfig object
  * using default values for the missing configuration properties.
- *
- * @param {streamConfig} userConfig
- * @returns {object}
  */
-
-
-const makeStreamConfig = (userConfig = {}) => {
-  (0, _validateConfig.default)('streamConfig.json', userConfig);
-  const config = (0, _cloneDeep2.default)(userConfig);
-
-  if (!config.columnDefault || !config.columnDefault.width) {
-    throw new Error('Must provide config.columnDefault.width when creating a stream.');
-  }
-
-  if (!config.columnCount) {
-    throw new Error('Must provide config.columnCount.');
-  }
-
-  config.border = makeBorder(config.border);
-  config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);
-  return config;
+const makeStreamConfig = (userConfig) => {
+    validateConfig_1.validateConfig('streamConfig.json', userConfig);
+    const config = lodash_clonedeep_1.default(userConfig);
+    if (config.columnDefault.width === undefined) {
+        throw new Error('Must provide config.columnDefault.width when creating a stream.');
+    }
+    return {
+        drawVerticalLine: () => {
+            return true;
+        },
+        ...config,
+        border: utils_1.makeBorderConfig(config.border),
+        columns: makeColumnsConfig(config.columnCount, config.columns, config.columnDefault),
+    };
 };
-
-var _default = makeStreamConfig;
-exports.default = _default;
-//# sourceMappingURL=makeStreamConfig.js.map
\ No newline at end of file
+exports.makeStreamConfig = makeStreamConfig;
diff --git a/node_modules/table/dist/makeStreamConfig.js.flow b/node_modules/table/dist/makeStreamConfig.js.flow
deleted file mode 100644
index 5f361c3..0000000
--- a/node_modules/table/dist/makeStreamConfig.js.flow
+++ /dev/null
@@ -1,83 +0,0 @@
-import _ from 'lodash';
-import getBorderCharacters from './getBorderCharacters';
-import validateConfig from './validateConfig';
-
-/**
- * Merges user provided border characters with the default border ("honeywell") characters.
- *
- * @param {object} border
- * @returns {object}
- */
-const makeBorder = (border = {}) => {
-  return Object.assign({}, getBorderCharacters('honeywell'), border);
-};
-
-/**
- * Creates a configuration for every column using default
- * values for the missing configuration properties.
- *
- * @param {number} columnCount
- * @param {object} columns
- * @param {object} columnDefault
- * @returns {object}
- */
-const makeColumns = (columnCount, columns = {}, columnDefault = {}) => {
-  _.times(columnCount, (index) => {
-    if (_.isUndefined(columns[index])) {
-      columns[index] = {};
-    }
-
-    columns[index] = Object.assign({
-      alignment: 'left',
-      paddingLeft: 1,
-      paddingRight: 1,
-      truncate: Number.POSITIVE_INFINITY,
-      wrapWord: false,
-    }, columnDefault, columns[index]);
-  });
-
-  return columns;
-};
-
-/**
- * @typedef {object} columnConfig
- * @property {string} alignment
- * @property {number} width
- * @property {number} truncate
- * @property {number} paddingLeft
- * @property {number} paddingRight
- */
-
-/**
- * @typedef {object} streamConfig
- * @property {columnConfig} columnDefault
- * @property {object} border
- * @property {columnConfig[]}
- * @property {number} columnCount Number of columns in the table (required).
- */
-
-/**
- * Makes a new configuration object out of the userConfig object
- * using default values for the missing configuration properties.
- *
- * @param {streamConfig} userConfig
- * @returns {object}
- */
-export default (userConfig = {}) => {
-  validateConfig('streamConfig.json', userConfig);
-
-  const config = _.cloneDeep(userConfig);
-
-  if (!config.columnDefault || !config.columnDefault.width) {
-    throw new Error('Must provide config.columnDefault.width when creating a stream.');
-  }
-
-  if (!config.columnCount) {
-    throw new Error('Must provide config.columnCount.');
-  }
-
-  config.border = makeBorder(config.border);
-  config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);
-
-  return config;
-};
diff --git a/node_modules/table/dist/makeStreamConfig.js.map b/node_modules/table/dist/makeStreamConfig.js.map
deleted file mode 100644
index aa1f46f..0000000
--- a/node_modules/table/dist/makeStreamConfig.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/makeStreamConfig.js"],"names":["makeBorder","border","Object","assign","makeColumns","columnCount","columns","columnDefault","index","alignment","paddingLeft","paddingRight","truncate","Number","POSITIVE_INFINITY","wrapWord","userConfig","config","width","Error"],"mappings":";;;;;;;;;;;;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,UAAU,GAAG,CAACC,MAAM,GAAG,EAAV,KAAiB;AAClC,SAAOC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,kCAAoB,WAApB,CAAlB,EAAoDF,MAApD,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMG,WAAW,GAAG,CAACC,WAAD,EAAcC,OAAO,GAAG,EAAxB,EAA4BC,aAAa,GAAG,EAA5C,KAAmD;AACrE,uBAAQF,WAAR,EAAsBG,KAAD,IAAW;AAC9B,QAAI,2BAAcF,OAAO,CAACE,KAAD,CAArB,CAAJ,EAAmC;AACjCF,MAAAA,OAAO,CAACE,KAAD,CAAP,GAAiB,EAAjB;AACD;;AAEDF,IAAAA,OAAO,CAACE,KAAD,CAAP,GAAiBN,MAAM,CAACC,MAAP,CAAc;AAC7BM,MAAAA,SAAS,EAAE,MADkB;AAE7BC,MAAAA,WAAW,EAAE,CAFgB;AAG7BC,MAAAA,YAAY,EAAE,CAHe;AAI7BC,MAAAA,QAAQ,EAAEC,MAAM,CAACC,iBAJY;AAK7BC,MAAAA,QAAQ,EAAE;AALmB,KAAd,EAMdR,aANc,EAMCD,OAAO,CAACE,KAAD,CANR,CAAjB;AAOD,GAZD;AAcA,SAAOF,OAAP;AACD,CAhBD;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;0BACgBU,UAAU,GAAG,E,KAAO;AAClC,+BAAe,mBAAf,EAAoCA,UAApC;AAEA,QAAMC,MAAM,GAAG,yBAAYD,UAAZ,CAAf;;AAEA,MAAI,CAACC,MAAM,CAACV,aAAR,IAAyB,CAACU,MAAM,CAACV,aAAP,CAAqBW,KAAnD,EAA0D;AACxD,UAAM,IAAIC,KAAJ,CAAU,iEAAV,CAAN;AACD;;AAED,MAAI,CAACF,MAAM,CAACZ,WAAZ,EAAyB;AACvB,UAAM,IAAIc,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAEDF,EAAAA,MAAM,CAAChB,MAAP,GAAgBD,UAAU,CAACiB,MAAM,CAAChB,MAAR,CAA1B;AACAgB,EAAAA,MAAM,CAACX,OAAP,GAAiBF,WAAW,CAACa,MAAM,CAACZ,WAAR,EAAqBY,MAAM,CAACX,OAA5B,EAAqCW,MAAM,CAACV,aAA5C,CAA5B;AAEA,SAAOU,MAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport getBorderCharacters from './getBorderCharacters';\nimport validateConfig from './validateConfig';\n\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @param {object} border\n * @returns {object}\n */\nconst makeBorder = (border = {}) => {\n  return Object.assign({}, getBorderCharacters('honeywell'), border);\n};\n\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n *\n * @param {number} columnCount\n * @param {object} columns\n * @param {object} columnDefault\n * @returns {object}\n */\nconst makeColumns = (columnCount, columns = {}, columnDefault = {}) => {\n  _.times(columnCount, (index) => {\n    if (_.isUndefined(columns[index])) {\n      columns[index] = {};\n    }\n\n    columns[index] = Object.assign({\n      alignment: 'left',\n      paddingLeft: 1,\n      paddingRight: 1,\n      truncate: Number.POSITIVE_INFINITY,\n      wrapWord: false,\n    }, columnDefault, columns[index]);\n  });\n\n  return columns;\n};\n\n/**\n * @typedef {object} columnConfig\n * @property {string} alignment\n * @property {number} width\n * @property {number} truncate\n * @property {number} paddingLeft\n * @property {number} paddingRight\n */\n\n/**\n * @typedef {object} streamConfig\n * @property {columnConfig} columnDefault\n * @property {object} border\n * @property {columnConfig[]}\n * @property {number} columnCount Number of columns in the table (required).\n */\n\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n *\n * @param {streamConfig} userConfig\n * @returns {object}\n */\nexport default (userConfig = {}) => {\n  validateConfig('streamConfig.json', userConfig);\n\n  const config = _.cloneDeep(userConfig);\n\n  if (!config.columnDefault || !config.columnDefault.width) {\n    throw new Error('Must provide config.columnDefault.width when creating a stream.');\n  }\n\n  if (!config.columnCount) {\n    throw new Error('Must provide config.columnCount.');\n  }\n\n  config.border = makeBorder(config.border);\n  config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);\n\n  return config;\n};\n"],"file":"makeStreamConfig.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/makeTableConfig.d.ts b/node_modules/table/dist/makeTableConfig.d.ts
new file mode 100644
index 0000000..fe5bd9f
--- /dev/null
+++ b/node_modules/table/dist/makeTableConfig.d.ts
@@ -0,0 +1,7 @@
+import type { TableUserConfig } from './types/api';
+import type { Row, TableConfig } from './types/internal';
+/**
+ * Makes a new configuration object out of the userConfig object
+ * using default values for the missing configuration properties.
+ */
+export declare const makeTableConfig: (rows: Row[], userConfig?: TableUserConfig) => TableConfig;
diff --git a/node_modules/table/dist/makeTableConfig.js b/node_modules/table/dist/makeTableConfig.js
new file mode 100644
index 0000000..e37dd75
--- /dev/null
+++ b/node_modules/table/dist/makeTableConfig.js
@@ -0,0 +1,66 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.makeTableConfig = void 0;
+const lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
+const calculateColumnWidths_1 = __importDefault(require("./calculateColumnWidths"));
+const utils_1 = require("./utils");
+const validateConfig_1 = require("./validateConfig");
+/**
+ * Creates a configuration for every column using default
+ * values for the missing configuration properties.
+ */
+const makeColumnsConfig = (rows, columns, columnDefault) => {
+    const columnWidths = calculateColumnWidths_1.default(rows);
+    return rows[0].map((_, columnIndex) => {
+        return {
+            alignment: 'left',
+            paddingLeft: 1,
+            paddingRight: 1,
+            truncate: Number.POSITIVE_INFINITY,
+            verticalAlignment: 'top',
+            width: columnWidths[columnIndex],
+            wrapWord: false,
+            ...columnDefault,
+            ...columns === null || columns === void 0 ? void 0 : columns[columnIndex],
+        };
+    });
+};
+const makeHeaderConfig = (config) => {
+    if (!config.header) {
+        return undefined;
+    }
+    return {
+        alignment: 'center',
+        paddingLeft: 1,
+        paddingRight: 1,
+        truncate: Number.POSITIVE_INFINITY,
+        wrapWord: false,
+        ...config.header,
+    };
+};
+/**
+ * Makes a new configuration object out of the userConfig object
+ * using default values for the missing configuration properties.
+ */
+const makeTableConfig = (rows, userConfig = {}) => {
+    var _a, _b, _c;
+    validateConfig_1.validateConfig('config.json', userConfig);
+    const config = lodash_clonedeep_1.default(userConfig);
+    return {
+        ...config,
+        border: utils_1.makeBorderConfig(config.border),
+        columns: makeColumnsConfig(rows, config.columns, config.columnDefault),
+        drawHorizontalLine: (_a = config.drawHorizontalLine) !== null && _a !== void 0 ? _a : (() => {
+            return true;
+        }),
+        drawVerticalLine: (_b = config.drawVerticalLine) !== null && _b !== void 0 ? _b : (() => {
+            return true;
+        }),
+        header: makeHeaderConfig(config),
+        singleLine: (_c = config.singleLine) !== null && _c !== void 0 ? _c : false,
+    };
+};
+exports.makeTableConfig = makeTableConfig;
diff --git a/node_modules/table/dist/mapDataUsingRowHeightIndex.js b/node_modules/table/dist/mapDataUsingRowHeightIndex.js
deleted file mode 100644
index be1f5a1..0000000
--- a/node_modules/table/dist/mapDataUsingRowHeightIndex.js
+++ /dev/null
@@ -1,44 +0,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _flatten2 = _interopRequireDefault(require("lodash/flatten"));
-
-var _times2 = _interopRequireDefault(require("lodash/times"));
-
-var _wrapCell = _interopRequireDefault(require("./wrapCell"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {Array} unmappedRows
- * @param {number[]} rowHeightIndex
- * @param {object} config
- * @returns {Array}
- */
-const mapDataUsingRowHeightIndex = (unmappedRows, rowHeightIndex, config) => {
-  const tableWidth = unmappedRows[0].length;
-  const mappedRows = unmappedRows.map((cells, index0) => {
-    const rowHeight = (0, _times2.default)(rowHeightIndex[index0], () => {
-      return new Array(tableWidth).fill('');
-    }); // rowHeight
-    //     [{row index within rowSaw; index2}]
-    //     [{cell index within a virtual row; index1}]
-
-    cells.forEach((value, index1) => {
-      const cellLines = (0, _wrapCell.default)(value, config.columns[index1].width, config.columns[index1].wrapWord);
-      cellLines.forEach((cellLine, index2) => {
-        rowHeight[index2][index1] = cellLine;
-      });
-    });
-    return rowHeight;
-  });
-  return (0, _flatten2.default)(mappedRows);
-};
-
-var _default = mapDataUsingRowHeightIndex;
-exports.default = _default;
-//# sourceMappingURL=mapDataUsingRowHeightIndex.js.map
\ No newline at end of file
diff --git a/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow b/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow
deleted file mode 100644
index f4c08cc..0000000
--- a/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow
+++ /dev/null
@@ -1,34 +0,0 @@
-import _ from 'lodash';
-import wrapCell from './wrapCell';
-
-/**
- * @param {Array} unmappedRows
- * @param {number[]} rowHeightIndex
- * @param {object} config
- * @returns {Array}
- */
-export default (unmappedRows, rowHeightIndex, config) => {
-  const tableWidth = unmappedRows[0].length;
-
-  const mappedRows = unmappedRows.map((cells, index0) => {
-    const rowHeight = _.times(rowHeightIndex[index0], () => {
-      return new Array(tableWidth).fill('');
-    });
-
-    // rowHeight
-    //     [{row index within rowSaw; index2}]
-    //     [{cell index within a virtual row; index1}]
-
-    cells.forEach((value, index1) => {
-      const cellLines = wrapCell(value, config.columns[index1].width, config.columns[index1].wrapWord);
-
-      cellLines.forEach((cellLine, index2) => {
-        rowHeight[index2][index1] = cellLine;
-      });
-    });
-
-    return rowHeight;
-  });
-
-  return _.flatten(mappedRows);
-};
diff --git a/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map b/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map
deleted file mode 100644
index 239a35d..0000000
--- a/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/mapDataUsingRowHeightIndex.js"],"names":["unmappedRows","rowHeightIndex","config","tableWidth","length","mappedRows","map","cells","index0","rowHeight","Array","fill","forEach","value","index1","cellLines","columns","width","wrapWord","cellLine","index2"],"mappings":";;;;;;;;;;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;oCACgBA,Y,EAAcC,c,EAAgBC,M,KAAW;AACvD,QAAMC,UAAU,GAAGH,YAAY,CAAC,CAAD,CAAZ,CAAgBI,MAAnC;AAEA,QAAMC,UAAU,GAAGL,YAAY,CAACM,GAAb,CAAiB,CAACC,KAAD,EAAQC,MAAR,KAAmB;AACrD,UAAMC,SAAS,GAAG,qBAAQR,cAAc,CAACO,MAAD,CAAtB,EAAgC,MAAM;AACtD,aAAO,IAAIE,KAAJ,CAAUP,UAAV,EAAsBQ,IAAtB,CAA2B,EAA3B,CAAP;AACD,KAFiB,CAAlB,CADqD,CAKrD;AACA;AACA;;AAEAJ,IAAAA,KAAK,CAACK,OAAN,CAAc,CAACC,KAAD,EAAQC,MAAR,KAAmB;AAC/B,YAAMC,SAAS,GAAG,uBAASF,KAAT,EAAgBX,MAAM,CAACc,OAAP,CAAeF,MAAf,EAAuBG,KAAvC,EAA8Cf,MAAM,CAACc,OAAP,CAAeF,MAAf,EAAuBI,QAArE,CAAlB;AAEAH,MAAAA,SAAS,CAACH,OAAV,CAAkB,CAACO,QAAD,EAAWC,MAAX,KAAsB;AACtCX,QAAAA,SAAS,CAACW,MAAD,CAAT,CAAkBN,MAAlB,IAA4BK,QAA5B;AACD,OAFD;AAGD,KAND;AAQA,WAAOV,SAAP;AACD,GAlBkB,CAAnB;AAoBA,SAAO,uBAAUJ,UAAV,CAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport wrapCell from './wrapCell';\n\n/**\n * @param {Array} unmappedRows\n * @param {number[]} rowHeightIndex\n * @param {object} config\n * @returns {Array}\n */\nexport default (unmappedRows, rowHeightIndex, config) => {\n  const tableWidth = unmappedRows[0].length;\n\n  const mappedRows = unmappedRows.map((cells, index0) => {\n    const rowHeight = _.times(rowHeightIndex[index0], () => {\n      return new Array(tableWidth).fill('');\n    });\n\n    // rowHeight\n    //     [{row index within rowSaw; index2}]\n    //     [{cell index within a virtual row; index1}]\n\n    cells.forEach((value, index1) => {\n      const cellLines = wrapCell(value, config.columns[index1].width, config.columns[index1].wrapWord);\n\n      cellLines.forEach((cellLine, index2) => {\n        rowHeight[index2][index1] = cellLine;\n      });\n    });\n\n    return rowHeight;\n  });\n\n  return _.flatten(mappedRows);\n};\n"],"file":"mapDataUsingRowHeightIndex.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/mapDataUsingRowHeights.d.ts b/node_modules/table/dist/mapDataUsingRowHeights.d.ts
new file mode 100644
index 0000000..38c9bbb
--- /dev/null
+++ b/node_modules/table/dist/mapDataUsingRowHeights.d.ts
@@ -0,0 +1,2 @@
+import type { BaseConfig, Row } from './types/internal';
+export declare const mapDataUsingRowHeights: (unmappedRows: Row[], rowHeights: number[], config: BaseConfig) => Row[];
diff --git a/node_modules/table/dist/mapDataUsingRowHeights.js b/node_modules/table/dist/mapDataUsingRowHeights.js
new file mode 100644
index 0000000..5727681
--- /dev/null
+++ b/node_modules/table/dist/mapDataUsingRowHeights.js
@@ -0,0 +1,44 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.mapDataUsingRowHeights = void 0;
+const wrapCell_1 = require("./wrapCell");
+const createEmptyStrings = (length) => {
+    return new Array(length).fill('');
+};
+const padCellVertically = (lines, rowHeight, columnConfig) => {
+    const { verticalAlignment } = columnConfig;
+    const availableLines = rowHeight - lines.length;
+    if (verticalAlignment === 'top') {
+        return [...lines, ...createEmptyStrings(availableLines)];
+    }
+    if (verticalAlignment === 'bottom') {
+        return [...createEmptyStrings(availableLines), ...lines];
+    }
+    return [
+        ...createEmptyStrings(Math.floor(availableLines / 2)),
+        ...lines,
+        ...createEmptyStrings(Math.ceil(availableLines / 2)),
+    ];
+};
+const flatten = (array) => {
+    return [].concat(...array);
+};
+const mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => {
+    const tableWidth = unmappedRows[0].length;
+    const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => {
+        const outputRowHeight = rowHeights[unmappedRowIndex];
+        const outputRow = Array.from({ length: outputRowHeight }, () => {
+            return new Array(tableWidth).fill('');
+        });
+        unmappedRow.forEach((cell, cellIndex) => {
+            const cellLines = wrapCell_1.wrapCell(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);
+            const paddedCellLines = padCellVertically(cellLines, outputRowHeight, config.columns[cellIndex]);
+            paddedCellLines.forEach((cellLine, cellLineIndex) => {
+                outputRow[cellLineIndex][cellIndex] = cellLine;
+            });
+        });
+        return outputRow;
+    });
+    return flatten(mappedRows);
+};
+exports.mapDataUsingRowHeights = mapDataUsingRowHeights;
diff --git a/node_modules/table/dist/padTableData.d.ts b/node_modules/table/dist/padTableData.d.ts
new file mode 100644
index 0000000..6bb7336
--- /dev/null
+++ b/node_modules/table/dist/padTableData.d.ts
@@ -0,0 +1,3 @@
+import type { BaseConfig, Row } from './types/internal';
+export declare const padString: (input: string, paddingLeft: number, paddingRight: number) => string;
+export declare const padTableData: (rows: Row[], config: BaseConfig) => Row[];
diff --git a/node_modules/table/dist/padTableData.js b/node_modules/table/dist/padTableData.js
index bdf4938..c0016ab 100644
--- a/node_modules/table/dist/padTableData.js
+++ b/node_modules/table/dist/padTableData.js
@@ -1,24 +1,16 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-/**
- * @param {table~row[]} rows
- * @param {object} config
- * @returns {table~row[]}
- */
-const padTableData = (rows, config) => {
-  return rows.map(cells => {
-    return cells.map((value, index1) => {
-      const column = config.columns[index1];
-      return ' '.repeat(column.paddingLeft) + value + ' '.repeat(column.paddingRight);
-    });
-  });
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.padTableData = exports.padString = void 0;
+const padString = (input, paddingLeft, paddingRight) => {
+    return ' '.repeat(paddingLeft) + input + ' '.repeat(paddingRight);
 };
-
-var _default = padTableData;
-exports.default = _default;
-//# sourceMappingURL=padTableData.js.map
\ No newline at end of file
+exports.padString = padString;
+const padTableData = (rows, config) => {
+    return rows.map((cells) => {
+        return cells.map((cell, cellIndex) => {
+            const { paddingLeft, paddingRight } = config.columns[cellIndex];
+            return exports.padString(cell, paddingLeft, paddingRight);
+        });
+    });
+};
+exports.padTableData = padTableData;
diff --git a/node_modules/table/dist/padTableData.js.flow b/node_modules/table/dist/padTableData.js.flow
deleted file mode 100644
index a4e6b14..0000000
--- a/node_modules/table/dist/padTableData.js.flow
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @param {table~row[]} rows
- * @param {object} config
- * @returns {table~row[]}
- */
-export default (rows, config) => {
-  return rows.map((cells) => {
-    return cells.map((value, index1) => {
-      const column = config.columns[index1];
-
-      return ' '.repeat(column.paddingLeft) + value + ' '.repeat(column.paddingRight);
-    });
-  });
-};
diff --git a/node_modules/table/dist/padTableData.js.map b/node_modules/table/dist/padTableData.js.map
deleted file mode 100644
index 666312f..0000000
--- a/node_modules/table/dist/padTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/padTableData.js"],"names":["rows","config","map","cells","value","index1","column","columns","repeat","paddingLeft","paddingRight"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;sBACgBA,I,EAAMC,M,KAAW;AAC/B,SAAOD,IAAI,CAACE,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAU,CAACE,KAAD,EAAQC,MAAR,KAAmB;AAClC,YAAMC,MAAM,GAAGL,MAAM,CAACM,OAAP,CAAeF,MAAf,CAAf;AAEA,aAAO,IAAIG,MAAJ,CAAWF,MAAM,CAACG,WAAlB,IAAiCL,KAAjC,GAAyC,IAAII,MAAJ,CAAWF,MAAM,CAACI,YAAlB,CAAhD;AACD,KAJM,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["/**\n * @param {table~row[]} rows\n * @param {object} config\n * @returns {table~row[]}\n */\nexport default (rows, config) => {\n  return rows.map((cells) => {\n    return cells.map((value, index1) => {\n      const column = config.columns[index1];\n\n      return ' '.repeat(column.paddingLeft) + value + ' '.repeat(column.paddingRight);\n    });\n  });\n};\n"],"file":"padTableData.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/schemas/config.json b/node_modules/table/dist/schemas/config.json
deleted file mode 100644
index 10fc74a..0000000
--- a/node_modules/table/dist/schemas/config.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-    "$id": "config.json",
-    "$schema": "http://json-schema.org/draft-07/schema#",
-    "type": "object",
-    "properties": {
-        "border": {
-            "$ref": "shared.json#/definitions/borders"
-        },
-        "columns": {
-            "$ref": "shared.json#/definitions/columns"
-        },
-        "columnDefault": {
-            "$ref": "shared.json#/definitions/column"
-        },
-        "drawHorizontalLine": {
-            "typeof": "function"
-        },
-        "singleLine": {
-            "typeof": "boolean"
-        }
-    },
-    "additionalProperties": false
-}
diff --git a/node_modules/table/dist/schemas/shared.json b/node_modules/table/dist/schemas/shared.json
deleted file mode 100644
index 7d03f92..0000000
--- a/node_modules/table/dist/schemas/shared.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
-    "$id": "shared.json",
-    "$schema": "http://json-schema.org/draft-07/schema#",
-    "definitions": {
-        "columns": {
-            "type": "object",
-            "patternProperties": {
-                "^[0-9]+$": {
-                    "$ref": "#/definitions/column"
-                }
-            },
-            "additionalProperties": false
-        },
-        "column": {
-            "type": "object",
-            "properties": {
-                "alignment": {
-                    "type": "string",
-                    "enum": [
-                        "left",
-                        "right",
-                        "center"
-                    ]
-                },
-                "width": {
-                    "type": "number"
-                },
-                "wrapWord": {
-                    "type": "boolean"
-                },
-                "truncate": {
-                    "type": "number"
-                },
-                "paddingLeft": {
-                    "type": "number"
-                },
-                "paddingRight": {
-                    "type": "number"
-                }
-            },
-            "additionalProperties": false
-        },
-        "borders": {
-            "type": "object",
-            "properties": {
-                "topBody": {
-                    "$ref": "#/definitions/border"
-                },
-                "topJoin": {
-                    "$ref": "#/definitions/border"
-                },
-                "topLeft": {
-                    "$ref": "#/definitions/border"
-                },
-                "topRight": {
-                    "$ref": "#/definitions/border"
-                },
-                "bottomBody": {
-                    "$ref": "#/definitions/border"
-                },
-                "bottomJoin": {
-                    "$ref": "#/definitions/border"
-                },
-                "bottomLeft": {
-                    "$ref": "#/definitions/border"
-                },
-                "bottomRight": {
-                    "$ref": "#/definitions/border"
-                },
-                "bodyLeft": {
-                    "$ref": "#/definitions/border"
-                },
-                "bodyRight": {
-                    "$ref": "#/definitions/border"
-                },
-                "bodyJoin": {
-                    "$ref": "#/definitions/border"
-                },
-                "joinBody": {
-                    "$ref": "#/definitions/border"
-                },
-                "joinLeft": {
-                    "$ref": "#/definitions/border"
-                },
-                "joinRight": {
-                    "$ref": "#/definitions/border"
-                },
-                "joinJoin": {
-                    "$ref": "#/definitions/border"
-                }
-            },
-            "additionalProperties": false
-        },
-        "border": {
-            "type": "string"
-        }
-    }
-}
diff --git a/node_modules/table/dist/schemas/streamConfig.json b/node_modules/table/dist/schemas/streamConfig.json
deleted file mode 100644
index 24dfa56..0000000
--- a/node_modules/table/dist/schemas/streamConfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "$id": "streamConfig.json",
-    "$schema": "http://json-schema.org/draft-07/schema#",
-    "type": "object",
-    "properties": {
-        "border": {
-            "$ref": "shared.json#/definitions/borders"
-        },
-        "columns": {
-            "$ref": "shared.json#/definitions/columns"
-        },
-        "columnDefault": {
-            "$ref": "shared.json#/definitions/column"
-        },
-        "columnCount": {
-            "type": "number"
-        }
-    },
-    "additionalProperties": false
-}
diff --git a/node_modules/table/dist/stringifyTableData.d.ts b/node_modules/table/dist/stringifyTableData.d.ts
new file mode 100644
index 0000000..5c1270b
--- /dev/null
+++ b/node_modules/table/dist/stringifyTableData.d.ts
@@ -0,0 +1,2 @@
+import type { Row } from './types/internal';
+export declare const stringifyTableData: (rows: unknown[][]) => Row[];
diff --git a/node_modules/table/dist/stringifyTableData.js b/node_modules/table/dist/stringifyTableData.js
index 0217e3b..961b78d 100644
--- a/node_modules/table/dist/stringifyTableData.js
+++ b/node_modules/table/dist/stringifyTableData.js
@@ -1,22 +1,12 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-/**
- * Casts all cell values to a string.
- *
- * @param {table~row[]} rows
- * @returns {table~row[]}
- */
-const stringifyTableData = rows => {
-  return rows.map(cells => {
-    return cells.map(String);
-  });
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.stringifyTableData = void 0;
+const utils_1 = require("./utils");
+const stringifyTableData = (rows) => {
+    return rows.map((cells) => {
+        return cells.map((cell) => {
+            return utils_1.normalizeString(String(cell));
+        });
+    });
 };
-
-var _default = stringifyTableData;
-exports.default = _default;
-//# sourceMappingURL=stringifyTableData.js.map
\ No newline at end of file
+exports.stringifyTableData = stringifyTableData;
diff --git a/node_modules/table/dist/stringifyTableData.js.flow b/node_modules/table/dist/stringifyTableData.js.flow
deleted file mode 100644
index a4dffac..0000000
--- a/node_modules/table/dist/stringifyTableData.js.flow
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Casts all cell values to a string.
- *
- * @param {table~row[]} rows
- * @returns {table~row[]}
- */
-export default (rows) => {
-  return rows.map((cells) => {
-    return cells.map(String);
-  });
-};
diff --git a/node_modules/table/dist/stringifyTableData.js.map b/node_modules/table/dist/stringifyTableData.js.map
deleted file mode 100644
index b18605c..0000000
--- a/node_modules/table/dist/stringifyTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/stringifyTableData.js"],"names":["rows","map","cells","String"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;2BACgBA,I,IAAS;AACvB,SAAOA,IAAI,CAACC,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAUE,MAAV,CAAP;AACD,GAFM,CAAP;AAGD,C","sourcesContent":["/**\n * Casts all cell values to a string.\n *\n * @param {table~row[]} rows\n * @returns {table~row[]}\n */\nexport default (rows) => {\n  return rows.map((cells) => {\n    return cells.map(String);\n  });\n};\n"],"file":"stringifyTableData.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/table.d.ts b/node_modules/table/dist/table.d.ts
new file mode 100644
index 0000000..db1b397
--- /dev/null
+++ b/node_modules/table/dist/table.d.ts
@@ -0,0 +1,2 @@
+import type { TableUserConfig } from './types/api';
+export declare const table: (data: unknown[][], userConfig?: TableUserConfig) => string;
diff --git a/node_modules/table/dist/table.js b/node_modules/table/dist/table.js
index 8c22a6e..72c879d 100644
--- a/node_modules/table/dist/table.js
+++ b/node_modules/table/dist/table.js
@@ -1,110 +1,26 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _alignTableData = _interopRequireDefault(require("./alignTableData"));
-
-var _calculateCellWidthIndex = _interopRequireDefault(require("./calculateCellWidthIndex"));
-
-var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex"));
-
-var _drawTable = _interopRequireDefault(require("./drawTable"));
-
-var _makeConfig = _interopRequireDefault(require("./makeConfig"));
-
-var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex"));
-
-var _padTableData = _interopRequireDefault(require("./padTableData"));
-
-var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData"));
-
-var _truncateTableData = _interopRequireDefault(require("./truncateTableData"));
-
-var _validateTableData = _interopRequireDefault(require("./validateTableData"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @typedef {string} table~cell
- */
-
-/**
- * @typedef {table~cell[]} table~row
- */
-
-/**
- * @typedef {object} table~columns
- * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).
- * @property {number} width Column width (default: auto).
- * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).
- * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters
- * @property {number} paddingLeft Cell content padding width left (default: 1).
- * @property {number} paddingRight Cell content padding width right (default: 1).
- */
-
-/**
- * @typedef {object} table~border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * Used to tell whether to draw a horizontal line.
- * This callback is called for each non-content line of the table.
- * The default behavior is to always return true.
- *
- * @typedef {Function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @returns {boolean}
- */
-
-/**
- * @typedef {object} table~config
- * @property {table~border} border
- * @property {table~columns[]} columns Column specific configuration.
- * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.
- * @property {table~drawHorizontalLine} drawHorizontalLine
- * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn.
- */
-
-/**
- * Generates a text table.
- *
- * @param {table~row[]} data
- * @param {table~config} userConfig
- * @returns {string}
- */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.table = void 0;
+const alignTableData_1 = require("./alignTableData");
+const calculateCellWidths_1 = require("./calculateCellWidths");
+const calculateRowHeights_1 = require("./calculateRowHeights");
+const drawTable_1 = require("./drawTable");
+const makeTableConfig_1 = require("./makeTableConfig");
+const mapDataUsingRowHeights_1 = require("./mapDataUsingRowHeights");
+const padTableData_1 = require("./padTableData");
+const stringifyTableData_1 = require("./stringifyTableData");
+const truncateTableData_1 = require("./truncateTableData");
+const validateTableData_1 = require("./validateTableData");
 const table = (data, userConfig = {}) => {
-  let rows;
-  (0, _validateTableData.default)(data);
-  rows = (0, _stringifyTableData.default)(data);
-  const config = (0, _makeConfig.default)(rows, userConfig);
-  rows = (0, _truncateTableData.default)(data, config);
-  const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config);
-  rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config);
-  rows = (0, _alignTableData.default)(rows, config);
-  rows = (0, _padTableData.default)(rows, config);
-  const cellWidthIndex = (0, _calculateCellWidthIndex.default)(rows[0]);
-  return (0, _drawTable.default)(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine);
+    validateTableData_1.validateTableData(data);
+    let rows = stringifyTableData_1.stringifyTableData(data);
+    const config = makeTableConfig_1.makeTableConfig(rows, userConfig);
+    rows = truncateTableData_1.truncateTableData(rows, config);
+    const rowHeights = calculateRowHeights_1.calculateRowHeights(rows, config);
+    rows = mapDataUsingRowHeights_1.mapDataUsingRowHeights(rows, rowHeights, config);
+    rows = alignTableData_1.alignTableData(rows, config);
+    rows = padTableData_1.padTableData(rows, config);
+    const cellWidths = calculateCellWidths_1.calculateCellWidths(rows[0]);
+    return drawTable_1.drawTable(rows, cellWidths, rowHeights, config);
 };
-
-var _default = table;
-exports.default = _default;
-//# sourceMappingURL=table.js.map
\ No newline at end of file
+exports.table = table;
diff --git a/node_modules/table/dist/table.js.flow b/node_modules/table/dist/table.js.flow
deleted file mode 100644
index 6790e8c..0000000
--- a/node_modules/table/dist/table.js.flow
+++ /dev/null
@@ -1,96 +0,0 @@
-import alignTableData from './alignTableData';
-import calculateCellWidthIndex from './calculateCellWidthIndex';
-import calculateRowHeightIndex from './calculateRowHeightIndex';
-import drawTable from './drawTable';
-import makeConfig from './makeConfig';
-import mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';
-import padTableData from './padTableData';
-import stringifyTableData from './stringifyTableData';
-import truncateTableData from './truncateTableData';
-import validateTableData from './validateTableData';
-
-/**
- * @typedef {string} table~cell
- */
-
-/**
- * @typedef {table~cell[]} table~row
- */
-
-/**
- * @typedef {object} table~columns
- * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).
- * @property {number} width Column width (default: auto).
- * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).
- * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters
- * @property {number} paddingLeft Cell content padding width left (default: 1).
- * @property {number} paddingRight Cell content padding width right (default: 1).
- */
-
-/**
- * @typedef {object} table~border
- * @property {string} topBody
- * @property {string} topJoin
- * @property {string} topLeft
- * @property {string} topRight
- * @property {string} bottomBody
- * @property {string} bottomJoin
- * @property {string} bottomLeft
- * @property {string} bottomRight
- * @property {string} bodyLeft
- * @property {string} bodyRight
- * @property {string} bodyJoin
- * @property {string} joinBody
- * @property {string} joinLeft
- * @property {string} joinRight
- * @property {string} joinJoin
- */
-
-/**
- * Used to tell whether to draw a horizontal line.
- * This callback is called for each non-content line of the table.
- * The default behavior is to always return true.
- *
- * @typedef {Function} drawHorizontalLine
- * @param {number} index
- * @param {number} size
- * @returns {boolean}
- */
-
-/**
- * @typedef {object} table~config
- * @property {table~border} border
- * @property {table~columns[]} columns Column specific configuration.
- * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.
- * @property {table~drawHorizontalLine} drawHorizontalLine
- * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn.
- */
-
-/**
- * Generates a text table.
- *
- * @param {table~row[]} data
- * @param {table~config} userConfig
- * @returns {string}
- */
-export default (data, userConfig = {}) => {
-  let rows;
-
-  validateTableData(data);
-
-  rows = stringifyTableData(data);
-
-  const config = makeConfig(rows, userConfig);
-
-  rows = truncateTableData(data, config);
-
-  const rowHeightIndex = calculateRowHeightIndex(rows, config);
-
-  rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);
-  rows = alignTableData(rows, config);
-  rows = padTableData(rows, config);
-
-  const cellWidthIndex = calculateCellWidthIndex(rows[0]);
-
-  return drawTable(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine);
-};
diff --git a/node_modules/table/dist/table.js.map b/node_modules/table/dist/table.js.map
deleted file mode 100644
index 20eefad..0000000
--- a/node_modules/table/dist/table.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/table.js"],"names":["data","userConfig","rows","config","rowHeightIndex","cellWidthIndex","border","drawHorizontalLine","singleLine"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;eACgBA,I,EAAMC,UAAU,GAAG,E,KAAO;AACxC,MAAIC,IAAJ;AAEA,kCAAkBF,IAAlB;AAEAE,EAAAA,IAAI,GAAG,iCAAmBF,IAAnB,CAAP;AAEA,QAAMG,MAAM,GAAG,yBAAWD,IAAX,EAAiBD,UAAjB,CAAf;AAEAC,EAAAA,IAAI,GAAG,gCAAkBF,IAAlB,EAAwBG,MAAxB,CAAP;AAEA,QAAMC,cAAc,GAAG,sCAAwBF,IAAxB,EAA8BC,MAA9B,CAAvB;AAEAD,EAAAA,IAAI,GAAG,yCAA2BA,IAA3B,EAAiCE,cAAjC,EAAiDD,MAAjD,CAAP;AACAD,EAAAA,IAAI,GAAG,6BAAeA,IAAf,EAAqBC,MAArB,CAAP;AACAD,EAAAA,IAAI,GAAG,2BAAaA,IAAb,EAAmBC,MAAnB,CAAP;AAEA,QAAME,cAAc,GAAG,sCAAwBH,IAAI,CAAC,CAAD,CAA5B,CAAvB;AAEA,SAAO,wBAAUA,IAAV,EAAgBC,MAAM,CAACG,MAAvB,EAA+BD,cAA/B,EAA+CD,cAA/C,EAA+DD,MAAM,CAACI,kBAAtE,EAA0FJ,MAAM,CAACK,UAAjG,CAAP;AACD,C","sourcesContent":["import alignTableData from './alignTableData';\nimport calculateCellWidthIndex from './calculateCellWidthIndex';\nimport calculateRowHeightIndex from './calculateRowHeightIndex';\nimport drawTable from './drawTable';\nimport makeConfig from './makeConfig';\nimport mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';\nimport padTableData from './padTableData';\nimport stringifyTableData from './stringifyTableData';\nimport truncateTableData from './truncateTableData';\nimport validateTableData from './validateTableData';\n\n/**\n * @typedef {string} table~cell\n */\n\n/**\n * @typedef {table~cell[]} table~row\n */\n\n/**\n * @typedef {object} table~columns\n * @property {string} alignment Cell content alignment (enum: left, center, right) (default: left).\n * @property {number} width Column width (default: auto).\n * @property {number} truncate Number of characters are which the content will be truncated (default: Infinity).\n * @property {boolean} wrapWord When true the text is broken at the nearest space or one of the special characters\n * @property {number} paddingLeft Cell content padding width left (default: 1).\n * @property {number} paddingRight Cell content padding width right (default: 1).\n */\n\n/**\n * @typedef {object} table~border\n * @property {string} topBody\n * @property {string} topJoin\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} bottomBody\n * @property {string} bottomJoin\n * @property {string} bottomLeft\n * @property {string} bottomRight\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n * @property {string} joinBody\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinJoin\n */\n\n/**\n * Used to tell whether to draw a horizontal line.\n * This callback is called for each non-content line of the table.\n * The default behavior is to always return true.\n *\n * @typedef {Function} drawHorizontalLine\n * @param {number} index\n * @param {number} size\n * @returns {boolean}\n */\n\n/**\n * @typedef {object} table~config\n * @property {table~border} border\n * @property {table~columns[]} columns Column specific configuration.\n * @property {table~columns} columnDefault Default values for all columns. Column specific settings overwrite the default values.\n * @property {table~drawHorizontalLine} drawHorizontalLine\n * @property {table~singleLine} singleLine Horizontal lines inside the table are not drawn.\n */\n\n/**\n * Generates a text table.\n *\n * @param {table~row[]} data\n * @param {table~config} userConfig\n * @returns {string}\n */\nexport default (data, userConfig = {}) => {\n  let rows;\n\n  validateTableData(data);\n\n  rows = stringifyTableData(data);\n\n  const config = makeConfig(rows, userConfig);\n\n  rows = truncateTableData(data, config);\n\n  const rowHeightIndex = calculateRowHeightIndex(rows, config);\n\n  rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);\n  rows = alignTableData(rows, config);\n  rows = padTableData(rows, config);\n\n  const cellWidthIndex = calculateCellWidthIndex(rows[0]);\n\n  return drawTable(rows, config.border, cellWidthIndex, rowHeightIndex, config.drawHorizontalLine, config.singleLine);\n};\n"],"file":"table.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/truncateTableData.d.ts b/node_modules/table/dist/truncateTableData.d.ts
new file mode 100644
index 0000000..60bc368
--- /dev/null
+++ b/node_modules/table/dist/truncateTableData.d.ts
@@ -0,0 +1,6 @@
+import type { BaseConfig, Row } from './types/internal';
+export declare const truncateString: (input: string, length: number) => string;
+/**
+ * @todo Make it work with ASCII content.
+ */
+export declare const truncateTableData: (rows: Row[], config: BaseConfig) => Row[];
diff --git a/node_modules/table/dist/truncateTableData.js b/node_modules/table/dist/truncateTableData.js
index 3e5cbe1..5810242 100644
--- a/node_modules/table/dist/truncateTableData.js
+++ b/node_modules/table/dist/truncateTableData.js
@@ -1,30 +1,23 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _truncate2 = _interopRequireDefault(require("lodash/truncate"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.truncateTableData = exports.truncateString = void 0;
+const lodash_truncate_1 = __importDefault(require("lodash.truncate"));
+const truncateString = (input, length) => {
+    return lodash_truncate_1.default(input, { length,
+        omission: '…' });
+};
+exports.truncateString = truncateString;
 /**
  * @todo Make it work with ASCII content.
- * @param {table~row[]} rows
- * @param {object} config
- * @returns {table~row[]}
  */
 const truncateTableData = (rows, config) => {
-  return rows.map(cells => {
-    return cells.map((content, index) => {
-      return (0, _truncate2.default)(content, {
-        length: config.columns[index].truncate
-      });
+    return rows.map((cells) => {
+        return cells.map((cell, cellIndex) => {
+            return exports.truncateString(cell, config.columns[cellIndex].truncate);
+        });
     });
-  });
 };
-
-var _default = truncateTableData;
-exports.default = _default;
-//# sourceMappingURL=truncateTableData.js.map
\ No newline at end of file
+exports.truncateTableData = truncateTableData;
diff --git a/node_modules/table/dist/truncateTableData.js.flow b/node_modules/table/dist/truncateTableData.js.flow
deleted file mode 100644
index de331ab..0000000
--- a/node_modules/table/dist/truncateTableData.js.flow
+++ /dev/null
@@ -1,17 +0,0 @@
-import _ from 'lodash';
-
-/**
- * @todo Make it work with ASCII content.
- * @param {table~row[]} rows
- * @param {object} config
- * @returns {table~row[]}
- */
-export default (rows, config) => {
-  return rows.map((cells) => {
-    return cells.map((content, index) => {
-      return _.truncate(content, {
-        length: config.columns[index].truncate,
-      });
-    });
-  });
-};
diff --git a/node_modules/table/dist/truncateTableData.js.map b/node_modules/table/dist/truncateTableData.js.map
deleted file mode 100644
index 123ed1c..0000000
--- a/node_modules/table/dist/truncateTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/truncateTableData.js"],"names":["rows","config","map","cells","content","index","length","columns","truncate"],"mappings":";;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;2BACgBA,I,EAAMC,M,KAAW;AAC/B,SAAOD,IAAI,CAACE,GAAL,CAAUC,KAAD,IAAW;AACzB,WAAOA,KAAK,CAACD,GAAN,CAAU,CAACE,OAAD,EAAUC,KAAV,KAAoB;AACnC,aAAO,wBAAWD,OAAX,EAAoB;AACzBE,QAAAA,MAAM,EAAEL,MAAM,CAACM,OAAP,CAAeF,KAAf,EAAsBG;AADL,OAApB,CAAP;AAGD,KAJM,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["import _ from 'lodash';\n\n/**\n * @todo Make it work with ASCII content.\n * @param {table~row[]} rows\n * @param {object} config\n * @returns {table~row[]}\n */\nexport default (rows, config) => {\n  return rows.map((cells) => {\n    return cells.map((content, index) => {\n      return _.truncate(content, {\n        length: config.columns[index].truncate,\n      });\n    });\n  });\n};\n"],"file":"truncateTableData.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/types/api.d.ts b/node_modules/table/dist/types/api.d.ts
new file mode 100644
index 0000000..165549a
--- /dev/null
+++ b/node_modules/table/dist/types/api.d.ts
@@ -0,0 +1,114 @@
+export declare type DrawLinePredicate = (index: number, size: number) => boolean;
+export declare type DrawVerticalLine = DrawLinePredicate;
+export declare type DrawHorizontalLine = DrawLinePredicate;
+export declare type BorderUserConfig = {
+    readonly topLeft?: string;
+    readonly topRight?: string;
+    readonly topBody?: string;
+    readonly topJoin?: string;
+    readonly bottomLeft?: string;
+    readonly bottomRight?: string;
+    readonly bottomBody?: string;
+    readonly bottomJoin?: string;
+    readonly joinLeft?: string;
+    readonly joinRight?: string;
+    readonly joinBody?: string;
+    readonly joinJoin?: string;
+    readonly headerJoin?: string;
+    readonly bodyRight?: string;
+    readonly bodyLeft?: string;
+    readonly bodyJoin?: string;
+};
+export declare type BorderConfig = Required<BorderUserConfig>;
+export declare type Alignment = 'center' | 'justify' | 'left' | 'right';
+export declare type VerticalAlignment = 'bottom' | 'middle' | 'top';
+export declare type ColumnUserConfig = {
+    /**
+     * Cell content horizontal alignment (default: left)
+     */
+    readonly alignment?: Alignment;
+    /**
+     * Cell content vertical alignment (default: top)
+     */
+    readonly verticalAlignment?: VerticalAlignment;
+    /**
+     * Column width (default: auto calculation based on the cell content)
+     */
+    readonly width?: number;
+    /**
+     * Number of characters are which the content will be truncated (default: Infinity)
+     */
+    readonly truncate?: number;
+    /**
+     * Cell content padding width left (default: 1)
+     */
+    readonly paddingLeft?: number;
+    /**
+     * Cell content padding width right (default: 1)
+     */
+    readonly paddingRight?: number;
+    /**
+     * If true, the text is broken at the nearest space or one of the special characters: "\|/_.,;-"
+     */
+    readonly wrapWord?: boolean;
+};
+export declare type HeaderUserConfig = Omit<ColumnUserConfig, 'verticalAlignment' | 'width'> & {
+    readonly content: string;
+};
+export declare type BaseUserConfig = {
+    /**
+     * Custom border
+     */
+    readonly border?: BorderUserConfig;
+    /**
+     * Default values for all columns. Column specific settings overwrite the default values.
+     */
+    readonly columnDefault?: ColumnUserConfig;
+    /**
+     * Column specific configuration.
+     */
+    readonly columns?: Indexable<ColumnUserConfig>;
+    /**
+     * Used to tell whether to draw a vertical line.
+     * This callback is called for each non-content line of the table.
+     * The default behavior is to always return true.
+     */
+    readonly drawVerticalLine?: DrawVerticalLine;
+};
+export declare type TableUserConfig = BaseUserConfig & {
+    /**
+     * The header configuration
+     */
+    readonly header?: HeaderUserConfig;
+    /**
+     * Used to tell whether to draw a horizontal line.
+     * This callback is called for each non-content line of the table.
+     * The default behavior is to always return true.
+     */
+    readonly drawHorizontalLine?: DrawHorizontalLine;
+    /**
+     * Horizontal lines inside the table are not drawn.
+     */
+    readonly singleLine?: boolean;
+};
+export declare type StreamUserConfig = BaseUserConfig & {
+    /**
+     * The number of columns
+     */
+    readonly columnCount: number;
+    /**
+     * Default values for all columns. Column specific settings overwrite the default values.
+     */
+    readonly columnDefault: ColumnUserConfig & {
+        /**
+         * The default width for each column
+         */
+        readonly width: number;
+    };
+};
+export declare type WritableStream = {
+    readonly write: (rows: string[]) => void;
+};
+export declare type Indexable<T> = {
+    readonly [index: number]: T;
+};
diff --git a/node_modules/table/dist/types/api.js b/node_modules/table/dist/types/api.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/node_modules/table/dist/types/api.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/table/dist/types/internal.d.ts b/node_modules/table/dist/types/internal.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/table/dist/types/internal.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/table/dist/types/internal.js b/node_modules/table/dist/types/internal.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/node_modules/table/dist/types/internal.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/table/dist/utils.d.ts b/node_modules/table/dist/utils.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/table/dist/utils.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/table/dist/utils.js b/node_modules/table/dist/utils.js
new file mode 100644
index 0000000..2d398b0
--- /dev/null
+++ b/node_modules/table/dist/utils.js
@@ -0,0 +1,93 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = void 0;
+const slice_ansi_1 = __importDefault(require("slice-ansi"));
+const strip_ansi_1 = __importDefault(require("strip-ansi"));
+const getBorderCharacters_1 = require("./getBorderCharacters");
+/**
+ * Converts Windows-style newline to Unix-style
+ *
+ * @internal
+ */
+const normalizeString = (input) => {
+    return input.replace(/\r\n/g, '\n');
+};
+exports.normalizeString = normalizeString;
+/**
+ * Splits ansi string by newlines
+ *
+ * @internal
+ */
+const splitAnsi = (input) => {
+    const lengths = strip_ansi_1.default(input).split('\n').map(({ length }) => {
+        return length;
+    });
+    const result = [];
+    let startIndex = 0;
+    lengths.forEach((length) => {
+        result.push(length === 0 ? '' : slice_ansi_1.default(input, startIndex, startIndex + length));
+        // Plus 1 for the newline character itself
+        startIndex += length + 1;
+    });
+    return result;
+};
+exports.splitAnsi = splitAnsi;
+/**
+ * Merges user provided border characters with the default border ("honeywell") characters.
+ *
+ * @internal
+ */
+const makeBorderConfig = (border) => {
+    return {
+        ...getBorderCharacters_1.getBorderCharacters('honeywell'),
+        ...border,
+    };
+};
+exports.makeBorderConfig = makeBorderConfig;
+/**
+ * Groups the array into sub-arrays by sizes.
+ *
+ * @internal
+ * @example
+ * groupBySizes(['a', 'b', 'c', 'd', 'e'], [2, 1, 2]) = [ ['a', 'b'], ['c'], ['d', 'e'] ]
+ */
+const groupBySizes = (array, sizes) => {
+    let startIndex = 0;
+    return sizes.map((size) => {
+        const group = array.slice(startIndex, startIndex + size);
+        startIndex += size;
+        return group;
+    });
+};
+exports.groupBySizes = groupBySizes;
+/**
+ * Counts the number of continuous spaces in a string
+ *
+ * @internal
+ * @example
+ * countGroupSpaces('a  bc  de f') = 3
+ */
+const countSpaceSequence = (input) => {
+    var _a, _b;
+    return (_b = (_a = input.match(/\s+/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
+};
+exports.countSpaceSequence = countSpaceSequence;
+/**
+ * Creates the non-increasing number array given sum and length
+ * whose the difference between maximum and minimum is not greater than 1
+ *
+ * @internal
+ * @example
+ * distributeUnevenly(6, 3) = [2, 2, 2]
+ * distributeUnevenly(8, 3) = [3, 3, 2]
+ */
+const distributeUnevenly = (sum, length) => {
+    const result = Array.from({ length }).fill(Math.floor(sum / length));
+    return result.map((element, index) => {
+        return element + (index < sum % length ? 1 : 0);
+    });
+};
+exports.distributeUnevenly = distributeUnevenly;
diff --git a/node_modules/table/dist/validateConfig.d.ts b/node_modules/table/dist/validateConfig.d.ts
new file mode 100644
index 0000000..e050cad
--- /dev/null
+++ b/node_modules/table/dist/validateConfig.d.ts
@@ -0,0 +1,2 @@
+import type { TableUserConfig } from './types/api';
+export declare const validateConfig: (schemaId: 'config.json' | 'streamConfig.json', config: TableUserConfig) => void;
diff --git a/node_modules/table/dist/validateConfig.js b/node_modules/table/dist/validateConfig.js
index cdf7530..f1a743b 100644
--- a/node_modules/table/dist/validateConfig.js
+++ b/node_modules/table/dist/validateConfig.js
@@ -1,43 +1,25 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validators = _interopRequireDefault(require("../dist/validators"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// eslint-disable-next-line import/default
-
-/**
- * @param {string} schemaId
- * @param {formatData~config} config
- * @returns {undefined}
- */
-const validateConfig = (schemaId, config = {}) => {
-  const validate = _validators.default[schemaId];
-
-  if (!validate(config)) {
-    const errors = validate.errors.map(error => {
-      return {
-        dataPath: error.dataPath,
-        message: error.message,
-        params: error.params,
-        schemaPath: error.schemaPath
-      };
-    });
-    /* eslint-disable no-console */
-
-    console.log('config', config);
-    console.log('errors', errors);
-    /* eslint-enable no-console */
-
-    throw new Error('Invalid config.');
-  }
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
 };
-
-var _default = validateConfig;
-exports.default = _default;
-//# sourceMappingURL=validateConfig.js.map
\ No newline at end of file
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateConfig = void 0;
+const validators_1 = __importDefault(require("./generated/validators"));
+const validateConfig = (schemaId, config) => {
+    const validate = validators_1.default[schemaId];
+    if (!validate(config) && validate.errors) {
+        const errors = validate.errors.map((error) => {
+            return {
+                message: error.message,
+                params: error.params,
+                schemaPath: error.schemaPath,
+            };
+        });
+        /* eslint-disable no-console */
+        console.log('config', config);
+        console.log('errors', errors);
+        /* eslint-enable no-console */
+        throw new Error('Invalid config.');
+    }
+};
+exports.validateConfig = validateConfig;
diff --git a/node_modules/table/dist/validateConfig.js.flow b/node_modules/table/dist/validateConfig.js.flow
deleted file mode 100644
index a8eb2e2..0000000
--- a/node_modules/table/dist/validateConfig.js.flow
+++ /dev/null
@@ -1,28 +0,0 @@
-// eslint-disable-next-line import/default
-import validators from '../dist/validators';
-
-/**
- * @param {string} schemaId
- * @param {formatData~config} config
- * @returns {undefined}
- */
-export default (schemaId, config = {}) => {
-  const validate = validators[schemaId];
-  if (!validate(config)) {
-    const errors = validate.errors.map((error) => {
-      return {
-        dataPath: error.dataPath,
-        message: error.message,
-        params: error.params,
-        schemaPath: error.schemaPath,
-      };
-    });
-
-    /* eslint-disable no-console */
-    console.log('config', config);
-    console.log('errors', errors);
-    /* eslint-enable no-console */
-
-    throw new Error('Invalid config.');
-  }
-};
diff --git a/node_modules/table/dist/validateConfig.js.map b/node_modules/table/dist/validateConfig.js.map
deleted file mode 100644
index 153011c..0000000
--- a/node_modules/table/dist/validateConfig.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/validateConfig.js"],"names":["schemaId","config","validate","validators","errors","map","error","dataPath","message","params","schemaPath","console","log","Error"],"mappings":";;;;;;;AACA;;;;AADA;;AAGA;AACA;AACA;AACA;AACA;wBACgBA,Q,EAAUC,MAAM,GAAG,E,KAAO;AACxC,QAAMC,QAAQ,GAAGC,oBAAWH,QAAX,CAAjB;;AACA,MAAI,CAACE,QAAQ,CAACD,MAAD,CAAb,EAAuB;AACrB,UAAMG,MAAM,GAAGF,QAAQ,CAACE,MAAT,CAAgBC,GAAhB,CAAqBC,KAAD,IAAW;AAC5C,aAAO;AACLC,QAAAA,QAAQ,EAAED,KAAK,CAACC,QADX;AAELC,QAAAA,OAAO,EAAEF,KAAK,CAACE,OAFV;AAGLC,QAAAA,MAAM,EAAEH,KAAK,CAACG,MAHT;AAILC,QAAAA,UAAU,EAAEJ,KAAK,CAACI;AAJb,OAAP;AAMD,KAPc,CAAf;AASA;;AACAC,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ,EAAsBX,MAAtB;AACAU,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ,EAAsBR,MAAtB;AACA;;AAEA,UAAM,IAAIS,KAAJ,CAAU,iBAAV,CAAN;AACD;AACF,C","sourcesContent":["// eslint-disable-next-line import/default\nimport validators from '../dist/validators';\n\n/**\n * @param {string} schemaId\n * @param {formatData~config} config\n * @returns {undefined}\n */\nexport default (schemaId, config = {}) => {\n  const validate = validators[schemaId];\n  if (!validate(config)) {\n    const errors = validate.errors.map((error) => {\n      return {\n        dataPath: error.dataPath,\n        message: error.message,\n        params: error.params,\n        schemaPath: error.schemaPath,\n      };\n    });\n\n    /* eslint-disable no-console */\n    console.log('config', config);\n    console.log('errors', errors);\n    /* eslint-enable no-console */\n\n    throw new Error('Invalid config.');\n  }\n};\n"],"file":"validateConfig.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/validateTableData.d.ts b/node_modules/table/dist/validateTableData.d.ts
new file mode 100644
index 0000000..84dac05
--- /dev/null
+++ b/node_modules/table/dist/validateTableData.d.ts
@@ -0,0 +1 @@
+export declare const validateTableData: (rows: unknown[][]) => void;
diff --git a/node_modules/table/dist/validateTableData.js b/node_modules/table/dist/validateTableData.js
index 56a3e19..60ae307 100644
--- a/node_modules/table/dist/validateTableData.js
+++ b/node_modules/table/dist/validateTableData.js
@@ -1,55 +1,31 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-/**
- * @typedef {string} cell
- */
-
-/**
- * @typedef {cell[]} validateData~column
- */
-
-/**
- * @param {column[]} rows
- * @returns {undefined}
- */
-const validateTableData = rows => {
-  if (!Array.isArray(rows)) {
-    throw new TypeError('Table data must be an array.');
-  }
-
-  if (rows.length === 0) {
-    throw new Error('Table must define at least one row.');
-  }
-
-  if (rows[0].length === 0) {
-    throw new Error('Table must define at least one column.');
-  }
-
-  const columnNumber = rows[0].length;
-
-  for (const cells of rows) {
-    if (!Array.isArray(cells)) {
-      throw new TypeError('Table row data must be an array.');
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateTableData = void 0;
+const utils_1 = require("./utils");
+const validateTableData = (rows) => {
+    if (!Array.isArray(rows)) {
+        throw new TypeError('Table data must be an array.');
     }
-
-    if (cells.length !== columnNumber) {
-      throw new Error('Table must have a consistent number of cells.');
+    if (rows.length === 0) {
+        throw new Error('Table must define at least one row.');
     }
-
-    for (const cell of cells) {
-      // eslint-disable-next-line no-control-regex
-      if (/[\u0001-\u0006\u0008\u0009\u000B-\u001A]/.test(cell)) {
-        throw new Error('Table data must not contain control characters.');
-      }
+    if (rows[0].length === 0) {
+        throw new Error('Table must define at least one column.');
     }
-  }
+    const columnNumber = rows[0].length;
+    for (const row of rows) {
+        if (!Array.isArray(row)) {
+            throw new TypeError('Table row data must be an array.');
+        }
+        if (row.length !== columnNumber) {
+            throw new Error('Table must have a consistent number of cells.');
+        }
+        for (const cell of row) {
+            // eslint-disable-next-line no-control-regex
+            if (/[\u0001-\u0006\u0008\u0009\u000B-\u001A]/.test(utils_1.normalizeString(String(cell)))) {
+                throw new Error('Table data must not contain control characters.');
+            }
+        }
+    }
 };
-
-var _default = validateTableData;
-exports.default = _default;
-//# sourceMappingURL=validateTableData.js.map
\ No newline at end of file
+exports.validateTableData = validateTableData;
diff --git a/node_modules/table/dist/validateTableData.js.flow b/node_modules/table/dist/validateTableData.js.flow
deleted file mode 100644
index dcc7fc1..0000000
--- a/node_modules/table/dist/validateTableData.js.flow
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @typedef {string} cell
- */
-
-/**
- * @typedef {cell[]} validateData~column
- */
-
-/**
- * @param {column[]} rows
- * @returns {undefined}
- */
-export default (rows) => {
-  if (!Array.isArray(rows)) {
-    throw new TypeError('Table data must be an array.');
-  }
-
-  if (rows.length === 0) {
-    throw new Error('Table must define at least one row.');
-  }
-
-  if (rows[0].length === 0) {
-    throw new Error('Table must define at least one column.');
-  }
-
-  const columnNumber = rows[0].length;
-
-  for (const cells of rows) {
-    if (!Array.isArray(cells)) {
-      throw new TypeError('Table row data must be an array.');
-    }
-
-    if (cells.length !== columnNumber) {
-      throw new Error('Table must have a consistent number of cells.');
-    }
-
-    for (const cell of cells) {
-      // eslint-disable-next-line no-control-regex
-      if (/[\u0001-\u0006\u0008\u0009\u000B-\u001A]/.test(cell)) {
-        throw new Error('Table data must not contain control characters.');
-      }
-    }
-  }
-};
diff --git a/node_modules/table/dist/validateTableData.js.map b/node_modules/table/dist/validateTableData.js.map
deleted file mode 100644
index 5c3a1a0..0000000
--- a/node_modules/table/dist/validateTableData.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/validateTableData.js"],"names":["rows","Array","isArray","TypeError","length","Error","columnNumber","cells","cell","test"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;0BACgBA,I,IAAS;AACvB,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAL,EAA0B;AACxB,UAAM,IAAIG,SAAJ,CAAc,8BAAd,CAAN;AACD;;AAED,MAAIH,IAAI,CAACI,MAAL,KAAgB,CAApB,EAAuB;AACrB,UAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACD;;AAED,MAAIL,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAR,KAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIC,KAAJ,CAAU,wCAAV,CAAN;AACD;;AAED,QAAMC,YAAY,GAAGN,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAA7B;;AAEA,OAAK,MAAMG,KAAX,IAAoBP,IAApB,EAA0B;AACxB,QAAI,CAACC,KAAK,CAACC,OAAN,CAAcK,KAAd,CAAL,EAA2B;AACzB,YAAM,IAAIJ,SAAJ,CAAc,kCAAd,CAAN;AACD;;AAED,QAAII,KAAK,CAACH,MAAN,KAAiBE,YAArB,EAAmC;AACjC,YAAM,IAAID,KAAJ,CAAU,+CAAV,CAAN;AACD;;AAED,SAAK,MAAMG,IAAX,IAAmBD,KAAnB,EAA0B;AACxB;AACA,UAAI,2CAA2CE,IAA3C,CAAgDD,IAAhD,CAAJ,EAA2D;AACzD,cAAM,IAAIH,KAAJ,CAAU,iDAAV,CAAN;AACD;AACF;AACF;AACF,C","sourcesContent":["/**\n * @typedef {string} cell\n */\n\n/**\n * @typedef {cell[]} validateData~column\n */\n\n/**\n * @param {column[]} rows\n * @returns {undefined}\n */\nexport default (rows) => {\n  if (!Array.isArray(rows)) {\n    throw new TypeError('Table data must be an array.');\n  }\n\n  if (rows.length === 0) {\n    throw new Error('Table must define at least one row.');\n  }\n\n  if (rows[0].length === 0) {\n    throw new Error('Table must define at least one column.');\n  }\n\n  const columnNumber = rows[0].length;\n\n  for (const cells of rows) {\n    if (!Array.isArray(cells)) {\n      throw new TypeError('Table row data must be an array.');\n    }\n\n    if (cells.length !== columnNumber) {\n      throw new Error('Table must have a consistent number of cells.');\n    }\n\n    for (const cell of cells) {\n      // eslint-disable-next-line no-control-regex\n      if (/[\\u0001-\\u0006\\u0008\\u0009\\u000B-\\u001A]/.test(cell)) {\n        throw new Error('Table data must not contain control characters.');\n      }\n    }\n  }\n};\n"],"file":"validateTableData.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/validators.js b/node_modules/table/dist/validators.js
deleted file mode 100644
index e17b964..0000000
--- a/node_modules/table/dist/validators.js
+++ /dev/null
@@ -1,1492 +0,0 @@
-"use strict";
-exports["config.json"] = validate43;
-const schema13 = {
-    "$id": "config.json",
-    "$schema": "http://json-schema.org/draft-07/schema#",
-    "type": "object",
-    "properties": {
-        "border": {
-            "$ref": "shared.json#/definitions/borders"
-        },
-        "columns": {
-            "$ref": "shared.json#/definitions/columns"
-        },
-        "columnDefault": {
-            "$ref": "shared.json#/definitions/column"
-        },
-        "drawHorizontalLine": {
-            "typeof": "function"
-        },
-        "singleLine": {
-            "typeof": "boolean"
-        }
-    },
-    "additionalProperties": false
-};
-const schema15 = {
-    "type": "object",
-    "properties": {
-        "topBody": {
-            "$ref": "#/definitions/border"
-        },
-        "topJoin": {
-            "$ref": "#/definitions/border"
-        },
-        "topLeft": {
-            "$ref": "#/definitions/border"
-        },
-        "topRight": {
-            "$ref": "#/definitions/border"
-        },
-        "bottomBody": {
-            "$ref": "#/definitions/border"
-        },
-        "bottomJoin": {
-            "$ref": "#/definitions/border"
-        },
-        "bottomLeft": {
-            "$ref": "#/definitions/border"
-        },
-        "bottomRight": {
-            "$ref": "#/definitions/border"
-        },
-        "bodyLeft": {
-            "$ref": "#/definitions/border"
-        },
-        "bodyRight": {
-            "$ref": "#/definitions/border"
-        },
-        "bodyJoin": {
-            "$ref": "#/definitions/border"
-        },
-        "joinBody": {
-            "$ref": "#/definitions/border"
-        },
-        "joinLeft": {
-            "$ref": "#/definitions/border"
-        },
-        "joinRight": {
-            "$ref": "#/definitions/border"
-        },
-        "joinJoin": {
-            "$ref": "#/definitions/border"
-        }
-    },
-    "additionalProperties": false
-};
-const schema16 = {
-    "type": "string"
-};
-
-function validate46(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (typeof data !== "string") {
-        const err0 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "string"
-            },
-            message: "should be string"
-        };
-        if (vErrors === null) {
-            vErrors = [err0];
-        } else {
-            vErrors.push(err0);
-        }
-        errors++;
-    }
-    validate46.errors = vErrors;
-    return errors === 0;
-}
-
-function validate45(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!(schema15.properties.hasOwnProperty(key0))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.topBody !== undefined) {
-            if (!(validate46(data.topBody, {
-                    dataPath: dataPath + "/topBody",
-                    parentData: data,
-                    parentDataProperty: "topBody",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.topJoin !== undefined) {
-            if (!(validate46(data.topJoin, {
-                    dataPath: dataPath + "/topJoin",
-                    parentData: data,
-                    parentDataProperty: "topJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.topLeft !== undefined) {
-            if (!(validate46(data.topLeft, {
-                    dataPath: dataPath + "/topLeft",
-                    parentData: data,
-                    parentDataProperty: "topLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.topRight !== undefined) {
-            if (!(validate46(data.topRight, {
-                    dataPath: dataPath + "/topRight",
-                    parentData: data,
-                    parentDataProperty: "topRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomBody !== undefined) {
-            if (!(validate46(data.bottomBody, {
-                    dataPath: dataPath + "/bottomBody",
-                    parentData: data,
-                    parentDataProperty: "bottomBody",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomJoin !== undefined) {
-            if (!(validate46(data.bottomJoin, {
-                    dataPath: dataPath + "/bottomJoin",
-                    parentData: data,
-                    parentDataProperty: "bottomJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomLeft !== undefined) {
-            if (!(validate46(data.bottomLeft, {
-                    dataPath: dataPath + "/bottomLeft",
-                    parentData: data,
-                    parentDataProperty: "bottomLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomRight !== undefined) {
-            if (!(validate46(data.bottomRight, {
-                    dataPath: dataPath + "/bottomRight",
-                    parentData: data,
-                    parentDataProperty: "bottomRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bodyLeft !== undefined) {
-            if (!(validate46(data.bodyLeft, {
-                    dataPath: dataPath + "/bodyLeft",
-                    parentData: data,
-                    parentDataProperty: "bodyLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bodyRight !== undefined) {
-            if (!(validate46(data.bodyRight, {
-                    dataPath: dataPath + "/bodyRight",
-                    parentData: data,
-                    parentDataProperty: "bodyRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bodyJoin !== undefined) {
-            if (!(validate46(data.bodyJoin, {
-                    dataPath: dataPath + "/bodyJoin",
-                    parentData: data,
-                    parentDataProperty: "bodyJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinBody !== undefined) {
-            if (!(validate46(data.joinBody, {
-                    dataPath: dataPath + "/joinBody",
-                    parentData: data,
-                    parentDataProperty: "joinBody",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinLeft !== undefined) {
-            if (!(validate46(data.joinLeft, {
-                    dataPath: dataPath + "/joinLeft",
-                    parentData: data,
-                    parentDataProperty: "joinLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinRight !== undefined) {
-            if (!(validate46(data.joinRight, {
-                    dataPath: dataPath + "/joinRight",
-                    parentData: data,
-                    parentDataProperty: "joinRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinJoin !== undefined) {
-            if (!(validate46(data.joinJoin, {
-                    dataPath: dataPath + "/joinJoin",
-                    parentData: data,
-                    parentDataProperty: "joinJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-    } else {
-        const err1 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err1];
-        } else {
-            vErrors.push(err1);
-        }
-        errors++;
-    }
-    validate45.errors = vErrors;
-    return errors === 0;
-}
-const schema17 = {
-    "type": "object",
-    "patternProperties": {
-        "^[0-9]+$": {
-            "$ref": "#/definitions/column"
-        }
-    },
-    "additionalProperties": false
-};
-const pattern0 = new RegExp("^[0-9]+$", "u");
-const schema18 = {
-    "type": "object",
-    "properties": {
-        "alignment": {
-            "type": "string",
-            "enum": ["left", "right", "center"]
-        },
-        "width": {
-            "type": "number"
-        },
-        "wrapWord": {
-            "type": "boolean"
-        },
-        "truncate": {
-            "type": "number"
-        },
-        "paddingLeft": {
-            "type": "number"
-        },
-        "paddingRight": {
-            "type": "number"
-        }
-    },
-    "additionalProperties": false
-};
-const func0 = require("ajv/dist/compile/equal");
-
-function validate64(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!((((((key0 === "alignment") || (key0 === "width")) || (key0 === "wrapWord")) || (key0 === "truncate")) || (key0 === "paddingLeft")) || (key0 === "paddingRight"))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.alignment !== undefined) {
-            let data0 = data.alignment;
-            if (typeof data0 !== "string") {
-                const err1 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/alignment",
-                    schemaPath: "#/properties/alignment/type",
-                    params: {
-                        type: "string"
-                    },
-                    message: "should be string"
-                };
-                if (vErrors === null) {
-                    vErrors = [err1];
-                } else {
-                    vErrors.push(err1);
-                }
-                errors++;
-            }
-            if (!(((data0 === "left") || (data0 === "right")) || (data0 === "center"))) {
-                const err2 = {
-                    keyword: "enum",
-                    dataPath: dataPath + "/alignment",
-                    schemaPath: "#/properties/alignment/enum",
-                    params: {
-                        allowedValues: schema18.properties.alignment.enum
-                    },
-                    message: "should be equal to one of the allowed values"
-                };
-                if (vErrors === null) {
-                    vErrors = [err2];
-                } else {
-                    vErrors.push(err2);
-                }
-                errors++;
-            }
-        }
-        if (data.width !== undefined) {
-            let data1 = data.width;
-            if (!((typeof data1 == "number") && (isFinite(data1)))) {
-                const err3 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/width",
-                    schemaPath: "#/properties/width/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err3];
-                } else {
-                    vErrors.push(err3);
-                }
-                errors++;
-            }
-        }
-        if (data.wrapWord !== undefined) {
-            if (typeof data.wrapWord !== "boolean") {
-                const err4 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/wrapWord",
-                    schemaPath: "#/properties/wrapWord/type",
-                    params: {
-                        type: "boolean"
-                    },
-                    message: "should be boolean"
-                };
-                if (vErrors === null) {
-                    vErrors = [err4];
-                } else {
-                    vErrors.push(err4);
-                }
-                errors++;
-            }
-        }
-        if (data.truncate !== undefined) {
-            let data3 = data.truncate;
-            if (!((typeof data3 == "number") && (isFinite(data3)))) {
-                const err5 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/truncate",
-                    schemaPath: "#/properties/truncate/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err5];
-                } else {
-                    vErrors.push(err5);
-                }
-                errors++;
-            }
-        }
-        if (data.paddingLeft !== undefined) {
-            let data4 = data.paddingLeft;
-            if (!((typeof data4 == "number") && (isFinite(data4)))) {
-                const err6 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/paddingLeft",
-                    schemaPath: "#/properties/paddingLeft/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err6];
-                } else {
-                    vErrors.push(err6);
-                }
-                errors++;
-            }
-        }
-        if (data.paddingRight !== undefined) {
-            let data5 = data.paddingRight;
-            if (!((typeof data5 == "number") && (isFinite(data5)))) {
-                const err7 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/paddingRight",
-                    schemaPath: "#/properties/paddingRight/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err7];
-                } else {
-                    vErrors.push(err7);
-                }
-                errors++;
-            }
-        }
-    } else {
-        const err8 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err8];
-        } else {
-            vErrors.push(err8);
-        }
-        errors++;
-    }
-    validate64.errors = vErrors;
-    return errors === 0;
-}
-
-function validate63(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!(pattern0.test(key0))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        for (const key1 in data) {
-            if (pattern0.test(key1)) {
-                if (!(validate64(data[key1], {
-                        dataPath: dataPath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
-                        parentData: data,
-                        parentDataProperty: key1,
-                        rootData
-                    }))) {
-                    vErrors = vErrors === null ? validate64.errors : vErrors.concat(validate64.errors);
-                    errors = vErrors.length;
-                }
-            }
-        }
-    } else {
-        const err1 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err1];
-        } else {
-            vErrors.push(err1);
-        }
-        errors++;
-    }
-    validate63.errors = vErrors;
-    return errors === 0;
-}
-
-function validate67(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!((((((key0 === "alignment") || (key0 === "width")) || (key0 === "wrapWord")) || (key0 === "truncate")) || (key0 === "paddingLeft")) || (key0 === "paddingRight"))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.alignment !== undefined) {
-            let data0 = data.alignment;
-            if (typeof data0 !== "string") {
-                const err1 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/alignment",
-                    schemaPath: "#/properties/alignment/type",
-                    params: {
-                        type: "string"
-                    },
-                    message: "should be string"
-                };
-                if (vErrors === null) {
-                    vErrors = [err1];
-                } else {
-                    vErrors.push(err1);
-                }
-                errors++;
-            }
-            if (!(((data0 === "left") || (data0 === "right")) || (data0 === "center"))) {
-                const err2 = {
-                    keyword: "enum",
-                    dataPath: dataPath + "/alignment",
-                    schemaPath: "#/properties/alignment/enum",
-                    params: {
-                        allowedValues: schema18.properties.alignment.enum
-                    },
-                    message: "should be equal to one of the allowed values"
-                };
-                if (vErrors === null) {
-                    vErrors = [err2];
-                } else {
-                    vErrors.push(err2);
-                }
-                errors++;
-            }
-        }
-        if (data.width !== undefined) {
-            let data1 = data.width;
-            if (!((typeof data1 == "number") && (isFinite(data1)))) {
-                const err3 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/width",
-                    schemaPath: "#/properties/width/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err3];
-                } else {
-                    vErrors.push(err3);
-                }
-                errors++;
-            }
-        }
-        if (data.wrapWord !== undefined) {
-            if (typeof data.wrapWord !== "boolean") {
-                const err4 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/wrapWord",
-                    schemaPath: "#/properties/wrapWord/type",
-                    params: {
-                        type: "boolean"
-                    },
-                    message: "should be boolean"
-                };
-                if (vErrors === null) {
-                    vErrors = [err4];
-                } else {
-                    vErrors.push(err4);
-                }
-                errors++;
-            }
-        }
-        if (data.truncate !== undefined) {
-            let data3 = data.truncate;
-            if (!((typeof data3 == "number") && (isFinite(data3)))) {
-                const err5 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/truncate",
-                    schemaPath: "#/properties/truncate/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err5];
-                } else {
-                    vErrors.push(err5);
-                }
-                errors++;
-            }
-        }
-        if (data.paddingLeft !== undefined) {
-            let data4 = data.paddingLeft;
-            if (!((typeof data4 == "number") && (isFinite(data4)))) {
-                const err6 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/paddingLeft",
-                    schemaPath: "#/properties/paddingLeft/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err6];
-                } else {
-                    vErrors.push(err6);
-                }
-                errors++;
-            }
-        }
-        if (data.paddingRight !== undefined) {
-            let data5 = data.paddingRight;
-            if (!((typeof data5 == "number") && (isFinite(data5)))) {
-                const err7 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/paddingRight",
-                    schemaPath: "#/properties/paddingRight/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err7];
-                } else {
-                    vErrors.push(err7);
-                }
-                errors++;
-            }
-        }
-    } else {
-        const err8 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err8];
-        } else {
-            vErrors.push(err8);
-        }
-        errors++;
-    }
-    validate67.errors = vErrors;
-    return errors === 0;
-}
-
-function validate43(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    /*# sourceURL="config.json" */ ;
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!(((((key0 === "border") || (key0 === "columns")) || (key0 === "columnDefault")) || (key0 === "drawHorizontalLine")) || (key0 === "singleLine"))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.border !== undefined) {
-            if (!(validate45(data.border, {
-                    dataPath: dataPath + "/border",
-                    parentData: data,
-                    parentDataProperty: "border",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.columns !== undefined) {
-            if (!(validate63(data.columns, {
-                    dataPath: dataPath + "/columns",
-                    parentData: data,
-                    parentDataProperty: "columns",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate63.errors : vErrors.concat(validate63.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.columnDefault !== undefined) {
-            if (!(validate67(data.columnDefault, {
-                    dataPath: dataPath + "/columnDefault",
-                    parentData: data,
-                    parentDataProperty: "columnDefault",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate67.errors : vErrors.concat(validate67.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.drawHorizontalLine !== undefined) {
-            if (typeof data.drawHorizontalLine != "function") {
-                const err1 = {
-                    keyword: "typeof",
-                    dataPath: dataPath + "/drawHorizontalLine",
-                    schemaPath: "#/properties/drawHorizontalLine/typeof",
-                    params: {},
-                    message: "should pass \"typeof\" keyword validation"
-                };
-                if (vErrors === null) {
-                    vErrors = [err1];
-                } else {
-                    vErrors.push(err1);
-                }
-                errors++;
-            }
-        }
-        if (data.singleLine !== undefined) {
-            if (typeof data.singleLine != "boolean") {
-                const err2 = {
-                    keyword: "typeof",
-                    dataPath: dataPath + "/singleLine",
-                    schemaPath: "#/properties/singleLine/typeof",
-                    params: {},
-                    message: "should pass \"typeof\" keyword validation"
-                };
-                if (vErrors === null) {
-                    vErrors = [err2];
-                } else {
-                    vErrors.push(err2);
-                }
-                errors++;
-            }
-        }
-    } else {
-        const err3 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err3];
-        } else {
-            vErrors.push(err3);
-        }
-        errors++;
-    }
-    validate43.errors = vErrors;
-    return errors === 0;
-}
-exports["streamConfig.json"] = validate69;
-const schema20 = {
-    "$id": "streamConfig.json",
-    "$schema": "http://json-schema.org/draft-07/schema#",
-    "type": "object",
-    "properties": {
-        "border": {
-            "$ref": "shared.json#/definitions/borders"
-        },
-        "columns": {
-            "$ref": "shared.json#/definitions/columns"
-        },
-        "columnDefault": {
-            "$ref": "shared.json#/definitions/column"
-        },
-        "columnCount": {
-            "type": "number"
-        }
-    },
-    "additionalProperties": false
-};
-
-function validate70(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!(schema15.properties.hasOwnProperty(key0))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.topBody !== undefined) {
-            if (!(validate46(data.topBody, {
-                    dataPath: dataPath + "/topBody",
-                    parentData: data,
-                    parentDataProperty: "topBody",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.topJoin !== undefined) {
-            if (!(validate46(data.topJoin, {
-                    dataPath: dataPath + "/topJoin",
-                    parentData: data,
-                    parentDataProperty: "topJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.topLeft !== undefined) {
-            if (!(validate46(data.topLeft, {
-                    dataPath: dataPath + "/topLeft",
-                    parentData: data,
-                    parentDataProperty: "topLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.topRight !== undefined) {
-            if (!(validate46(data.topRight, {
-                    dataPath: dataPath + "/topRight",
-                    parentData: data,
-                    parentDataProperty: "topRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomBody !== undefined) {
-            if (!(validate46(data.bottomBody, {
-                    dataPath: dataPath + "/bottomBody",
-                    parentData: data,
-                    parentDataProperty: "bottomBody",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomJoin !== undefined) {
-            if (!(validate46(data.bottomJoin, {
-                    dataPath: dataPath + "/bottomJoin",
-                    parentData: data,
-                    parentDataProperty: "bottomJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomLeft !== undefined) {
-            if (!(validate46(data.bottomLeft, {
-                    dataPath: dataPath + "/bottomLeft",
-                    parentData: data,
-                    parentDataProperty: "bottomLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bottomRight !== undefined) {
-            if (!(validate46(data.bottomRight, {
-                    dataPath: dataPath + "/bottomRight",
-                    parentData: data,
-                    parentDataProperty: "bottomRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bodyLeft !== undefined) {
-            if (!(validate46(data.bodyLeft, {
-                    dataPath: dataPath + "/bodyLeft",
-                    parentData: data,
-                    parentDataProperty: "bodyLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bodyRight !== undefined) {
-            if (!(validate46(data.bodyRight, {
-                    dataPath: dataPath + "/bodyRight",
-                    parentData: data,
-                    parentDataProperty: "bodyRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.bodyJoin !== undefined) {
-            if (!(validate46(data.bodyJoin, {
-                    dataPath: dataPath + "/bodyJoin",
-                    parentData: data,
-                    parentDataProperty: "bodyJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinBody !== undefined) {
-            if (!(validate46(data.joinBody, {
-                    dataPath: dataPath + "/joinBody",
-                    parentData: data,
-                    parentDataProperty: "joinBody",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinLeft !== undefined) {
-            if (!(validate46(data.joinLeft, {
-                    dataPath: dataPath + "/joinLeft",
-                    parentData: data,
-                    parentDataProperty: "joinLeft",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinRight !== undefined) {
-            if (!(validate46(data.joinRight, {
-                    dataPath: dataPath + "/joinRight",
-                    parentData: data,
-                    parentDataProperty: "joinRight",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.joinJoin !== undefined) {
-            if (!(validate46(data.joinJoin, {
-                    dataPath: dataPath + "/joinJoin",
-                    parentData: data,
-                    parentDataProperty: "joinJoin",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);
-                errors = vErrors.length;
-            }
-        }
-    } else {
-        const err1 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err1];
-        } else {
-            vErrors.push(err1);
-        }
-        errors++;
-    }
-    validate70.errors = vErrors;
-    return errors === 0;
-}
-
-function validate87(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!(pattern0.test(key0))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        for (const key1 in data) {
-            if (pattern0.test(key1)) {
-                if (!(validate64(data[key1], {
-                        dataPath: dataPath + "/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),
-                        parentData: data,
-                        parentDataProperty: key1,
-                        rootData
-                    }))) {
-                    vErrors = vErrors === null ? validate64.errors : vErrors.concat(validate64.errors);
-                    errors = vErrors.length;
-                }
-            }
-        }
-    } else {
-        const err1 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err1];
-        } else {
-            vErrors.push(err1);
-        }
-        errors++;
-    }
-    validate87.errors = vErrors;
-    return errors === 0;
-}
-
-function validate90(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!((((((key0 === "alignment") || (key0 === "width")) || (key0 === "wrapWord")) || (key0 === "truncate")) || (key0 === "paddingLeft")) || (key0 === "paddingRight"))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.alignment !== undefined) {
-            let data0 = data.alignment;
-            if (typeof data0 !== "string") {
-                const err1 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/alignment",
-                    schemaPath: "#/properties/alignment/type",
-                    params: {
-                        type: "string"
-                    },
-                    message: "should be string"
-                };
-                if (vErrors === null) {
-                    vErrors = [err1];
-                } else {
-                    vErrors.push(err1);
-                }
-                errors++;
-            }
-            if (!(((data0 === "left") || (data0 === "right")) || (data0 === "center"))) {
-                const err2 = {
-                    keyword: "enum",
-                    dataPath: dataPath + "/alignment",
-                    schemaPath: "#/properties/alignment/enum",
-                    params: {
-                        allowedValues: schema18.properties.alignment.enum
-                    },
-                    message: "should be equal to one of the allowed values"
-                };
-                if (vErrors === null) {
-                    vErrors = [err2];
-                } else {
-                    vErrors.push(err2);
-                }
-                errors++;
-            }
-        }
-        if (data.width !== undefined) {
-            let data1 = data.width;
-            if (!((typeof data1 == "number") && (isFinite(data1)))) {
-                const err3 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/width",
-                    schemaPath: "#/properties/width/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err3];
-                } else {
-                    vErrors.push(err3);
-                }
-                errors++;
-            }
-        }
-        if (data.wrapWord !== undefined) {
-            if (typeof data.wrapWord !== "boolean") {
-                const err4 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/wrapWord",
-                    schemaPath: "#/properties/wrapWord/type",
-                    params: {
-                        type: "boolean"
-                    },
-                    message: "should be boolean"
-                };
-                if (vErrors === null) {
-                    vErrors = [err4];
-                } else {
-                    vErrors.push(err4);
-                }
-                errors++;
-            }
-        }
-        if (data.truncate !== undefined) {
-            let data3 = data.truncate;
-            if (!((typeof data3 == "number") && (isFinite(data3)))) {
-                const err5 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/truncate",
-                    schemaPath: "#/properties/truncate/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err5];
-                } else {
-                    vErrors.push(err5);
-                }
-                errors++;
-            }
-        }
-        if (data.paddingLeft !== undefined) {
-            let data4 = data.paddingLeft;
-            if (!((typeof data4 == "number") && (isFinite(data4)))) {
-                const err6 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/paddingLeft",
-                    schemaPath: "#/properties/paddingLeft/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err6];
-                } else {
-                    vErrors.push(err6);
-                }
-                errors++;
-            }
-        }
-        if (data.paddingRight !== undefined) {
-            let data5 = data.paddingRight;
-            if (!((typeof data5 == "number") && (isFinite(data5)))) {
-                const err7 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/paddingRight",
-                    schemaPath: "#/properties/paddingRight/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err7];
-                } else {
-                    vErrors.push(err7);
-                }
-                errors++;
-            }
-        }
-    } else {
-        const err8 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err8];
-        } else {
-            vErrors.push(err8);
-        }
-        errors++;
-    }
-    validate90.errors = vErrors;
-    return errors === 0;
-}
-
-function validate69(data, {
-    dataPath = "",
-    parentData,
-    parentDataProperty,
-    rootData = data
-} = {}) {
-    /*# sourceURL="streamConfig.json" */ ;
-    let vErrors = null;
-    let errors = 0;
-    if (data && typeof data == "object" && !Array.isArray(data)) {
-        for (const key0 in data) {
-            if (!((((key0 === "border") || (key0 === "columns")) || (key0 === "columnDefault")) || (key0 === "columnCount"))) {
-                const err0 = {
-                    keyword: "additionalProperties",
-                    dataPath,
-                    schemaPath: "#/additionalProperties",
-                    params: {
-                        additionalProperty: key0
-                    },
-                    message: "should NOT have additional properties"
-                };
-                if (vErrors === null) {
-                    vErrors = [err0];
-                } else {
-                    vErrors.push(err0);
-                }
-                errors++;
-            }
-        }
-        if (data.border !== undefined) {
-            if (!(validate70(data.border, {
-                    dataPath: dataPath + "/border",
-                    parentData: data,
-                    parentDataProperty: "border",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.columns !== undefined) {
-            if (!(validate87(data.columns, {
-                    dataPath: dataPath + "/columns",
-                    parentData: data,
-                    parentDataProperty: "columns",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.columnDefault !== undefined) {
-            if (!(validate90(data.columnDefault, {
-                    dataPath: dataPath + "/columnDefault",
-                    parentData: data,
-                    parentDataProperty: "columnDefault",
-                    rootData
-                }))) {
-                vErrors = vErrors === null ? validate90.errors : vErrors.concat(validate90.errors);
-                errors = vErrors.length;
-            }
-        }
-        if (data.columnCount !== undefined) {
-            let data3 = data.columnCount;
-            if (!((typeof data3 == "number") && (isFinite(data3)))) {
-                const err1 = {
-                    keyword: "type",
-                    dataPath: dataPath + "/columnCount",
-                    schemaPath: "#/properties/columnCount/type",
-                    params: {
-                        type: "number"
-                    },
-                    message: "should be number"
-                };
-                if (vErrors === null) {
-                    vErrors = [err1];
-                } else {
-                    vErrors.push(err1);
-                }
-                errors++;
-            }
-        }
-    } else {
-        const err2 = {
-            keyword: "type",
-            dataPath,
-            schemaPath: "#/type",
-            params: {
-                type: "object"
-            },
-            message: "should be object"
-        };
-        if (vErrors === null) {
-            vErrors = [err2];
-        } else {
-            vErrors.push(err2);
-        }
-        errors++;
-    }
-    validate69.errors = vErrors;
-    return errors === 0;
-}
\ No newline at end of file
diff --git a/node_modules/table/dist/wrapCell.d.ts b/node_modules/table/dist/wrapCell.d.ts
new file mode 100644
index 0000000..52d7299
--- /dev/null
+++ b/node_modules/table/dist/wrapCell.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Wrap a single cell value into a list of lines
+ *
+ * Always wraps on newlines, for the remainder uses either word or string wrapping
+ * depending on user configuration.
+ *
+ */
+export declare const wrapCell: (cellValue: string, cellWidth: number, useWrapWord: boolean) => string[];
diff --git a/node_modules/table/dist/wrapCell.js b/node_modules/table/dist/wrapCell.js
index 3bddc4c..64229d25 100644
--- a/node_modules/table/dist/wrapCell.js
+++ b/node_modules/table/dist/wrapCell.js
@@ -1,48 +1,32 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _wrapString = _interopRequireDefault(require("./wrapString"));
-
-var _wrapWord = _interopRequireDefault(require("./wrapWord"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.wrapCell = void 0;
+const utils_1 = require("./utils");
+const wrapString_1 = require("./wrapString");
+const wrapWord_1 = require("./wrapWord");
 /**
  * Wrap a single cell value into a list of lines
  *
  * Always wraps on newlines, for the remainder uses either word or string wrapping
  * depending on user configuration.
  *
- * @param {string} cellValue
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {Array}
  */
-const wrapCell = (cellValue, columnWidth, useWrapWord) => {
-  // First split on literal newlines
-  const cellLines = cellValue.split('\n'); // Then iterate over the list and word-wrap every remaining line if necessary.
-
-  for (let lineNr = 0; lineNr < cellLines.length;) {
-    let lineChunks;
-
-    if (useWrapWord) {
-      lineChunks = (0, _wrapWord.default)(cellLines[lineNr], columnWidth);
-    } else {
-      lineChunks = (0, _wrapString.default)(cellLines[lineNr], columnWidth);
-    } // Replace our original array element with whatever the wrapping returned
-
-
-    cellLines.splice(lineNr, 1, ...lineChunks);
-    lineNr += lineChunks.length;
-  }
-
-  return cellLines;
+const wrapCell = (cellValue, cellWidth, useWrapWord) => {
+    // First split on literal newlines
+    const cellLines = utils_1.splitAnsi(cellValue);
+    // Then iterate over the list and word-wrap every remaining line if necessary.
+    for (let lineNr = 0; lineNr < cellLines.length;) {
+        let lineChunks;
+        if (useWrapWord) {
+            lineChunks = wrapWord_1.wrapWord(cellLines[lineNr], cellWidth);
+        }
+        else {
+            lineChunks = wrapString_1.wrapString(cellLines[lineNr], cellWidth);
+        }
+        // Replace our original array element with whatever the wrapping returned
+        cellLines.splice(lineNr, 1, ...lineChunks);
+        lineNr += lineChunks.length;
+    }
+    return cellLines;
 };
-
-var _default = wrapCell;
-exports.default = _default;
-//# sourceMappingURL=wrapCell.js.map
\ No newline at end of file
+exports.wrapCell = wrapCell;
diff --git a/node_modules/table/dist/wrapCell.js.flow b/node_modules/table/dist/wrapCell.js.flow
deleted file mode 100644
index 0c66260..0000000
--- a/node_modules/table/dist/wrapCell.js.flow
+++ /dev/null
@@ -1,35 +0,0 @@
-import wrapString from './wrapString';
-import wrapWord from './wrapWord';
-
-/**
- * Wrap a single cell value into a list of lines
- *
- * Always wraps on newlines, for the remainder uses either word or string wrapping
- * depending on user configuration.
- *
- * @param {string} cellValue
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {Array}
- */
-export default (cellValue, columnWidth, useWrapWord) => {
-  // First split on literal newlines
-  const cellLines = cellValue.split('\n');
-
-  // Then iterate over the list and word-wrap every remaining line if necessary.
-  for (let lineNr = 0; lineNr < cellLines.length;) {
-    let lineChunks;
-
-    if (useWrapWord) {
-      lineChunks = wrapWord(cellLines[lineNr], columnWidth);
-    } else {
-      lineChunks = wrapString(cellLines[lineNr], columnWidth);
-    }
-
-    // Replace our original array element with whatever the wrapping returned
-    cellLines.splice(lineNr, 1, ...lineChunks);
-    lineNr += lineChunks.length;
-  }
-
-  return cellLines;
-};
diff --git a/node_modules/table/dist/wrapCell.js.map b/node_modules/table/dist/wrapCell.js.map
deleted file mode 100644
index f7d23ae..0000000
--- a/node_modules/table/dist/wrapCell.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/wrapCell.js"],"names":["cellValue","columnWidth","useWrapWord","cellLines","split","lineNr","length","lineChunks","splice"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;kBACgBA,S,EAAWC,W,EAAaC,W,KAAgB;AACtD;AACA,QAAMC,SAAS,GAAGH,SAAS,CAACI,KAAV,CAAgB,IAAhB,CAAlB,CAFsD,CAItD;;AACA,OAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGF,SAAS,CAACG,MAAxC,GAAiD;AAC/C,QAAIC,UAAJ;;AAEA,QAAIL,WAAJ,EAAiB;AACfK,MAAAA,UAAU,GAAG,uBAASJ,SAAS,CAACE,MAAD,CAAlB,EAA4BJ,WAA5B,CAAb;AACD,KAFD,MAEO;AACLM,MAAAA,UAAU,GAAG,yBAAWJ,SAAS,CAACE,MAAD,CAApB,EAA8BJ,WAA9B,CAAb;AACD,KAP8C,CAS/C;;;AACAE,IAAAA,SAAS,CAACK,MAAV,CAAiBH,MAAjB,EAAyB,CAAzB,EAA4B,GAAGE,UAA/B;AACAF,IAAAA,MAAM,IAAIE,UAAU,CAACD,MAArB;AACD;;AAED,SAAOH,SAAP;AACD,C","sourcesContent":["import wrapString from './wrapString';\nimport wrapWord from './wrapWord';\n\n/**\n * Wrap a single cell value into a list of lines\n *\n * Always wraps on newlines, for the remainder uses either word or string wrapping\n * depending on user configuration.\n *\n * @param {string} cellValue\n * @param {number} columnWidth\n * @param {boolean} useWrapWord\n * @returns {Array}\n */\nexport default (cellValue, columnWidth, useWrapWord) => {\n  // First split on literal newlines\n  const cellLines = cellValue.split('\\n');\n\n  // Then iterate over the list and word-wrap every remaining line if necessary.\n  for (let lineNr = 0; lineNr < cellLines.length;) {\n    let lineChunks;\n\n    if (useWrapWord) {\n      lineChunks = wrapWord(cellLines[lineNr], columnWidth);\n    } else {\n      lineChunks = wrapString(cellLines[lineNr], columnWidth);\n    }\n\n    // Replace our original array element with whatever the wrapping returned\n    cellLines.splice(lineNr, 1, ...lineChunks);\n    lineNr += lineChunks.length;\n  }\n\n  return cellLines;\n};\n"],"file":"wrapCell.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/wrapString.d.ts b/node_modules/table/dist/wrapString.d.ts
new file mode 100644
index 0000000..849e174
--- /dev/null
+++ b/node_modules/table/dist/wrapString.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Creates an array of strings split into groups the length of size.
+ * This function works with strings that contain ASCII characters.
+ *
+ * wrapText is different from would-be "chunk" implementation
+ * in that whitespace characters that occur on a chunk size limit are trimmed.
+ *
+ */
+export declare const wrapString: (subject: string, size: number) => string[];
diff --git a/node_modules/table/dist/wrapString.js b/node_modules/table/dist/wrapString.js
index c0dd8c8..08fcc3f 100644
--- a/node_modules/table/dist/wrapString.js
+++ b/node_modules/table/dist/wrapString.js
@@ -1,16 +1,11 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _sliceAnsi = _interopRequireDefault(require("slice-ansi"));
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.wrapString = void 0;
+const slice_ansi_1 = __importDefault(require("slice-ansi"));
+const string_width_1 = __importDefault(require("string-width"));
 /**
  * Creates an array of strings split into groups the length of size.
  * This function works with strings that contain ASCII characters.
@@ -18,23 +13,14 @@
  * wrapText is different from would-be "chunk" implementation
  * in that whitespace characters that occur on a chunk size limit are trimmed.
  *
- * @param {string} subject
- * @param {number} size
- * @returns {Array}
  */
 const wrapString = (subject, size) => {
-  let subjectSlice;
-  subjectSlice = subject;
-  const chunks = [];
-
-  do {
-    chunks.push((0, _sliceAnsi.default)(subjectSlice, 0, size));
-    subjectSlice = (0, _sliceAnsi.default)(subjectSlice, size).trim();
-  } while ((0, _stringWidth.default)(subjectSlice));
-
-  return chunks;
+    let subjectSlice = subject;
+    const chunks = [];
+    do {
+        chunks.push(slice_ansi_1.default(subjectSlice, 0, size));
+        subjectSlice = slice_ansi_1.default(subjectSlice, size).trim();
+    } while (string_width_1.default(subjectSlice));
+    return chunks;
 };
-
-var _default = wrapString;
-exports.default = _default;
-//# sourceMappingURL=wrapString.js.map
\ No newline at end of file
+exports.wrapString = wrapString;
diff --git a/node_modules/table/dist/wrapString.js.flow b/node_modules/table/dist/wrapString.js.flow
deleted file mode 100644
index bbb4072..0000000
--- a/node_modules/table/dist/wrapString.js.flow
+++ /dev/null
@@ -1,29 +0,0 @@
-import slice from 'slice-ansi';
-import stringWidth from 'string-width';
-
-/**
- * Creates an array of strings split into groups the length of size.
- * This function works with strings that contain ASCII characters.
- *
- * wrapText is different from would-be "chunk" implementation
- * in that whitespace characters that occur on a chunk size limit are trimmed.
- *
- * @param {string} subject
- * @param {number} size
- * @returns {Array}
- */
-export default (subject, size) => {
-  let subjectSlice;
-
-  subjectSlice = subject;
-
-  const chunks = [];
-
-  do {
-    chunks.push(slice(subjectSlice, 0, size));
-
-    subjectSlice = slice(subjectSlice, size).trim();
-  } while (stringWidth(subjectSlice));
-
-  return chunks;
-};
diff --git a/node_modules/table/dist/wrapString.js.map b/node_modules/table/dist/wrapString.js.map
deleted file mode 100644
index 8cd8d7f..0000000
--- a/node_modules/table/dist/wrapString.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/wrapString.js"],"names":["subject","size","subjectSlice","chunks","push","trim"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;oBACgBA,O,EAASC,I,KAAS;AAChC,MAAIC,YAAJ;AAEAA,EAAAA,YAAY,GAAGF,OAAf;AAEA,QAAMG,MAAM,GAAG,EAAf;;AAEA,KAAG;AACDA,IAAAA,MAAM,CAACC,IAAP,CAAY,wBAAMF,YAAN,EAAoB,CAApB,EAAuBD,IAAvB,CAAZ;AAEAC,IAAAA,YAAY,GAAG,wBAAMA,YAAN,EAAoBD,IAApB,EAA0BI,IAA1B,EAAf;AACD,GAJD,QAIS,0BAAYH,YAAZ,CAJT;;AAMA,SAAOC,MAAP;AACD,C","sourcesContent":["import slice from 'slice-ansi';\nimport stringWidth from 'string-width';\n\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n * @param {string} subject\n * @param {number} size\n * @returns {Array}\n */\nexport default (subject, size) => {\n  let subjectSlice;\n\n  subjectSlice = subject;\n\n  const chunks = [];\n\n  do {\n    chunks.push(slice(subjectSlice, 0, size));\n\n    subjectSlice = slice(subjectSlice, size).trim();\n  } while (stringWidth(subjectSlice));\n\n  return chunks;\n};\n"],"file":"wrapString.js"}
\ No newline at end of file
diff --git a/node_modules/table/dist/wrapWord.d.ts b/node_modules/table/dist/wrapWord.d.ts
new file mode 100644
index 0000000..083da4d
--- /dev/null
+++ b/node_modules/table/dist/wrapWord.d.ts
@@ -0,0 +1 @@
+export declare const wrapWord: (input: string, size: number) => string[];
diff --git a/node_modules/table/dist/wrapWord.js b/node_modules/table/dist/wrapWord.js
index 790b20b..1f2da3c 100644
--- a/node_modules/table/dist/wrapWord.js
+++ b/node_modules/table/dist/wrapWord.js
@@ -1,47 +1,41 @@
 "use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _sliceAnsi = _interopRequireDefault(require("slice-ansi"));
-
-var _stringWidth = _interopRequireDefault(require("string-width"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * @param {string} input
- * @param {number} size
- * @returns {Array}
- */
-const wrapWord = (input, size) => {
-  let subject;
-  subject = input;
-  const chunks = []; // https://regex101.com/r/gY5kZ1/1
-
-  const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
-
-  do {
-    let chunk;
-    chunk = subject.match(re);
-
-    if (chunk) {
-      chunk = chunk[0];
-      subject = (0, _sliceAnsi.default)(subject, (0, _stringWidth.default)(chunk));
-      chunk = chunk.trim();
-    } else {
-      chunk = (0, _sliceAnsi.default)(subject, 0, size);
-      subject = (0, _sliceAnsi.default)(subject, size);
-    }
-
-    chunks.push(chunk);
-  } while ((0, _stringWidth.default)(subject));
-
-  return chunks;
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
 };
-
-var _default = wrapWord;
-exports.default = _default;
-//# sourceMappingURL=wrapWord.js.map
\ No newline at end of file
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.wrapWord = void 0;
+const slice_ansi_1 = __importDefault(require("slice-ansi"));
+const strip_ansi_1 = __importDefault(require("strip-ansi"));
+const calculateStringLengths = (input, size) => {
+    let subject = strip_ansi_1.default(input);
+    const chunks = [];
+    // https://regex101.com/r/gY5kZ1/1
+    const re = new RegExp('(^.{1,' + String(size) + '}(\\s+|$))|(^.{1,' + String(size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
+    do {
+        let chunk;
+        const match = re.exec(subject);
+        if (match) {
+            chunk = match[0];
+            subject = subject.slice(chunk.length);
+            const trimmedLength = chunk.trim().length;
+            const offset = chunk.length - trimmedLength;
+            chunks.push([trimmedLength, offset]);
+        }
+        else {
+            chunk = subject.slice(0, size);
+            subject = subject.slice(size);
+            chunks.push([chunk.length, 0]);
+        }
+    } while (subject.length);
+    return chunks;
+};
+const wrapWord = (input, size) => {
+    const result = [];
+    let startIndex = 0;
+    calculateStringLengths(input, size).forEach(([length, offset]) => {
+        result.push(slice_ansi_1.default(input, startIndex, startIndex + length));
+        startIndex += length + offset;
+    });
+    return result;
+};
+exports.wrapWord = wrapWord;
diff --git a/node_modules/table/dist/wrapWord.js.flow b/node_modules/table/dist/wrapWord.js.flow
deleted file mode 100644
index 02a8d45..0000000
--- a/node_modules/table/dist/wrapWord.js.flow
+++ /dev/null
@@ -1,39 +0,0 @@
-import slice from 'slice-ansi';
-import stringWidth from 'string-width';
-
-/**
- * @param {string} input
- * @param {number} size
- * @returns {Array}
- */
-export default (input, size) => {
-  let subject;
-
-  subject = input;
-
-  const chunks = [];
-
-  // https://regex101.com/r/gY5kZ1/1
-  const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
-
-  do {
-    let chunk;
-
-    chunk = subject.match(re);
-
-    if (chunk) {
-      chunk = chunk[0];
-
-      subject = slice(subject, stringWidth(chunk));
-
-      chunk = chunk.trim();
-    } else {
-      chunk = slice(subject, 0, size);
-      subject = slice(subject, size);
-    }
-
-    chunks.push(chunk);
-  } while (stringWidth(subject));
-
-  return chunks;
-};
diff --git a/node_modules/table/dist/wrapWord.js.map b/node_modules/table/dist/wrapWord.js.map
deleted file mode 100644
index 2f2e575..0000000
--- a/node_modules/table/dist/wrapWord.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/wrapWord.js"],"names":["input","size","subject","chunks","re","RegExp","chunk","match","trim","push"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;kBACgBA,K,EAAOC,I,KAAS;AAC9B,MAAIC,OAAJ;AAEAA,EAAAA,OAAO,GAAGF,KAAV;AAEA,QAAMG,MAAM,GAAG,EAAf,CAL8B,CAO9B;;AACA,QAAMC,EAAE,GAAG,IAAIC,MAAJ,CAAW,WAAWJ,IAAX,GAAkB,mBAAlB,IAAyCA,IAAI,GAAG,CAAhD,IAAqD,wBAAhE,CAAX;;AAEA,KAAG;AACD,QAAIK,KAAJ;AAEAA,IAAAA,KAAK,GAAGJ,OAAO,CAACK,KAAR,CAAcH,EAAd,CAAR;;AAEA,QAAIE,KAAJ,EAAW;AACTA,MAAAA,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAb;AAEAJ,MAAAA,OAAO,GAAG,wBAAMA,OAAN,EAAe,0BAAYI,KAAZ,CAAf,CAAV;AAEAA,MAAAA,KAAK,GAAGA,KAAK,CAACE,IAAN,EAAR;AACD,KAND,MAMO;AACLF,MAAAA,KAAK,GAAG,wBAAMJ,OAAN,EAAe,CAAf,EAAkBD,IAAlB,CAAR;AACAC,MAAAA,OAAO,GAAG,wBAAMA,OAAN,EAAeD,IAAf,CAAV;AACD;;AAEDE,IAAAA,MAAM,CAACM,IAAP,CAAYH,KAAZ;AACD,GAjBD,QAiBS,0BAAYJ,OAAZ,CAjBT;;AAmBA,SAAOC,MAAP;AACD,C","sourcesContent":["import slice from 'slice-ansi';\nimport stringWidth from 'string-width';\n\n/**\n * @param {string} input\n * @param {number} size\n * @returns {Array}\n */\nexport default (input, size) => {\n  let subject;\n\n  subject = input;\n\n  const chunks = [];\n\n  // https://regex101.com/r/gY5kZ1/1\n  const re = new RegExp('(^.{1,' + size + '}(\\\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n\n  do {\n    let chunk;\n\n    chunk = subject.match(re);\n\n    if (chunk) {\n      chunk = chunk[0];\n\n      subject = slice(subject, stringWidth(chunk));\n\n      chunk = chunk.trim();\n    } else {\n      chunk = slice(subject, 0, size);\n      subject = slice(subject, size);\n    }\n\n    chunks.push(chunk);\n  } while (stringWidth(subject));\n\n  return chunks;\n};\n"],"file":"wrapWord.js"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/.tonic_example.js b/node_modules/table/node_modules/ajv/.runkit_example.js
similarity index 79%
rename from node_modules/table/node_modules/ajv/.tonic_example.js
rename to node_modules/table/node_modules/ajv/.runkit_example.js
index 7579d21..0d578d5 100644
--- a/node_modules/table/node_modules/ajv/.tonic_example.js
+++ b/node_modules/table/node_modules/ajv/.runkit_example.js
@@ -1,11 +1,14 @@
-const Ajv = require("ajv").default
+const Ajv = require("ajv")
 const ajv = new Ajv({allErrors: true})
 
 const schema = {
+  type: "object",
   properties: {
     foo: {type: "string"},
     bar: {type: "number", maximum: 3},
   },
+  required: ["foo", "bar"],
+  additionalProperties: false,
 }
 
 const validate = ajv.compile(schema)
diff --git a/node_modules/table/node_modules/ajv/README.md b/node_modules/table/node_modules/ajv/README.md
index 3f459a7..269f260 100644
--- a/node_modules/table/node_modules/ajv/README.md
+++ b/node_modules/table/node_modules/ajv/README.md
@@ -2,15 +2,14 @@
 
 &nbsp;
 
-# Ajv: Another JSON schema validator
+# Ajv JSON schema validator
 
-Super fast JSON validator for Node.js and browser.
+The fastest JSON validator for Node.js and browser.
 
-Supports JSON Schema draft-06/07/2019-09 (draft-04 is supported in [version 6](https://github.com/ajv-validator/ajv/tree/v6)) and JSON Type Definition [RFC8927](https://datatracker.ietf.org/doc/rfc8927/).
+Supports JSON Schema draft-06/07/2019-09/2020-12 (draft-04 is supported in [version 6](https://github.com/ajv-validator/ajv/tree/v6)) and JSON Type Definition [RFC8927](https://datatracker.ietf.org/doc/rfc8927/).
 
 [![build](https://github.com/ajv-validator/ajv/workflows/build/badge.svg)](https://github.com/ajv-validator/ajv/actions?query=workflow%3Abuild)
 [![npm](https://img.shields.io/npm/v/ajv.svg)](https://www.npmjs.com/package/ajv)
-[![npm (beta)](https://img.shields.io/npm/v/ajv/beta)](https://www.npmjs.com/package/ajv)
 [![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/ajv)
 [![Coverage Status](https://coveralls.io/repos/github/ajv-validator/ajv/badge.svg?branch=master)](https://coveralls.io/github/ajv-validator/ajv?branch=master)
 [![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
@@ -20,132 +19,43 @@
 
 [<img src="https://ajv.js.org/img/mozilla.svg" width="45%">](https://www.mozilla.org)<img src="https://ajv.js.org/img/gap.svg" width="8%">[<img src="https://ajv.js.org/img/reserved.svg" width="45%">](https://opencollective.com/ajv)
 
-## Using version 7
+## Ajv online event - May 20, 10am PT / 6pm UK
 
-Ajv version 7 has these new features:
+We will talk about:
+- new features of Ajv version 8.
+- the improvements sponsored by Mozilla's MOSS grant.
+- how Ajv is used in JavaScript applications.
 
-- NEW: support of JSON Type Definition [RFC8927](https://datatracker.ietf.org/doc/rfc8927/) (from [v7.1.0](https://github.com/ajv-validator/ajv-keywords/releases/tag/v7.1.0)), including generation of [serializers](./docs/api.md#jtd-serialize) and [parsers](./docs/api.md#jtd-parse) from JTD schemas that are more efficient than native JSON serialization/parsing, combining JSON string parsing and validation in one function.
-- support of JSON Schema draft-2019-09 features: [`unevaluatedProperties`](./docs/json-schema.md#unevaluatedproperties) and [`unevaluatedItems`](./docs/json-schema.md#unevaluateditems), [dynamic recursive references](./docs/guide/combining-schemas.md#extending-recursive-schemas) and other [additional keywords](./docs/json-schema.md#json-schema-draft-2019-09).
-- to reduce the mistakes in JSON schemas and unexpected validation results, [strict mode](./docs/strict-mode.md) is added - it prohibits ignored or ambiguous JSON Schema elements.
-- to make code injection from untrusted schemas impossible, [code generation](./docs/codegen.md) is fully re-written to be safe and to allow code optimization (compiled schema code size is reduced by more than 10%).
-- to simplify Ajv extensions, the new keyword API that is used by pre-defined keywords is available to user-defined keywords - it is much easier to define any keywords now, especially with subschemas. [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package was updated to use the new API (in [v4.0.0](https://github.com/ajv-validator/ajv-keywords/releases/tag/v4.0.0))
-- schemas are compiled to ES6 code (ES5 code generation is also supported with an option).
-- to improve reliability and maintainability the code is migrated to TypeScript.
+Speakers:
+- [Evgeny Poberezkin](https://github.com/epoberezkin), the creator of Ajv.
+- [Mehan Jayasuriya](https://github.com/mehan), Program Officer at Mozilla Foundation, leading the [MOSS](https://www.mozilla.org/en-US/moss/) and other programs investing in the open source and community ecosystems.
+- [Matteo Collina](https://github.com/mcollina), Technical Director at NearForm and Node.js Technical Steering Committee member, creator of Fastify web framework.
+- [Kin Lane](https://github.com/kinlane), Chief Evangelist at Postman. Studying the tech, business & politics of APIs since 2010. Presidential Innovation Fellow during the Obama administration.
+- [Ulysse Carion](https://github.com/ucarion), the creator of JSON Type Definition specification.
 
-**Please note**:
+[Gajus Kuizinas](https://github.com/gajus) will host the event.
 
-- the support for JSON-Schema draft-04 is removed - if you have schemas using "id" attributes you have to replace them with "\$id" (or continue using [Ajv v6](https://github.com/ajv-validator/ajv/tree/v6) that will be supported until 02/28/2021).
-- all formats are separated to ajv-formats package - they have to be explicitly added if you use them.
-
-See [release notes](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0) for the details.
-
-To install the new version:
-
-```bash
-npm install ajv
-```
-
-See [Getting started](#usage) for code example.
+Please [register here](https://us02web.zoom.us/webinar/register/2716192553618/WN_erJ_t4ICTHOnGC1SOybNnw).
 
 ## Contributing
 
 More than 100 people contributed to Ajv, and we would love to have you join the development. We welcome implementing new features that will benefit many users and ideas to improve our documentation.
 
-At Ajv, we are committed to creating more equitable and inclusive spaces for our community and team members to contribute to discussions that affect both this project and our ongoing work in the open source ecosystem.
+Please review [Contributing guidelines](./CONTRIBUTING.md) and [Code components](https://ajv.js.org/components.html).
 
-We strive to create an environment of respect and healthy discourse by setting standards for our interactions and we expect it from all members of our community - from long term project member to first time visitor. For more information, review our [code of conduct](./CODE_OF_CONDUCT.md) and values.
+## Documentation
 
-<Contributors />
+All documentation is available on the [Ajv website](https://ajv.js.org).
 
-### How we make decisions
-
-We value conscious curation of our library size, and balancing performance and functionality. To that end, we cannot accept every suggestion. When evaluating pull requests we consider:
-
-- Will this benefit many users or a niche use case?
-- How will this impact the performance of Ajv?
-- How will this expand our library size?
-
-To help us evaluate and understand, when you submit an issue and pull request:
-
-- Explain why this feature is important to the user base
-- Include documentation
-- Include test coverage with any new feature implementations
-
-Please include documentation and test coverage with any new feature implementations.
-
-To run tests:
-
-```bash
-npm install
-git submodule update --init
-npm test
-```
-
-`npm run build` - compiles typescript to `dist` folder.
-
-Please also review [Contributing guidelines](./CONTRIBUTING.md) and [Code components](./docs/components.md).
-
-## Contents
-
-- [Platinum sponsors](#platinum-sponsors)
-- [Using version 7](#using-version-7)
-- [Contributing](#contributing)
-- [Mozilla MOSS grant and OpenJS Foundation](#mozilla-moss-grant-and-openjs-foundation)
-- [Sponsors](#sponsors)
-- [Performance](#performance)
-- [Features](#features)
-- [Getting started](#usage)
-- [Choosing schema language: JSON Schema vs JSON Type Definition](./docs/guide/schema-language.md#comparison)
-- [Frequently Asked Questions](./docs/faq.md)
-- [Using in browser](./docs/guide/environments.md#browsers)
-  - [Content Security Policy](./docs/security.md#content-security-policy)
-- [Using in ES5 environment](./docs/guide/environments.md#es5-environments)
-- [Command line interface](./docs/guide/environments.md#command-line-interface)
-- [API reference](./docs/api.md)
-  - [Methods](./docs/api.md#ajv-constructor-and-methods)
-  - [Options](./docs/api.md#options)
-  - [Validation errors](./docs/api.md#validation-errors)
-- NEW: [Strict mode](./docs/strict-mode.md#strict-mode)
-  - [Prohibit ignored keywords](./docs/strict-mode.md#prohibit-ignored-keywords)
-  - [Prevent unexpected validation](./docs/strict-mode.md#prevent-unexpected-validation)
-  - [Strict types](./docs/strict-mode.md#strict-types)
-  - [Strict number validation](./docs/strict-mode.md#strict-number-validation)
-- [Validation guide](./docs/guide/getting-started.md)
-  - [Getting started](./docs/guide/getting-started.md)
-  - [Validating formats](./docs/guide/formats.md)
-  - [Modular schemas](./docs/guide/combining-schemas.md): [combining with \$ref](./docs/guide/combining-schemas#ref), [\$data reference](./docs/guide/combining-schemas.md#data-reference), [$merge and $patch](./docs/guide/combining-schemas#merge-and-patch-keywords)
-  - [Asynchronous schema compilation](./docs/guide/managing-schemas.md#asynchronous-schema-compilation)
-  - [Standalone validation code](./docs/standalone.md)
-  - [Asynchronous validation](./docs/guide/async-validation.md)
-  - [Modifying data](./docs/guide/modifying-data.md): [additional properties](./docs/guide/modifying-data.md#removing-additional-properties), [defaults](./docs/guide/modifying-data.md#assigning-defaults), [type coercion](./docs/guide/modifying-data.md#coercing-data-types)
-- [Extending Ajv](#extending-ajv)
-  - User-defined keywords:
-    - [basics](./docs/guide/user-keywords.md)
-    - [guide](./docs/keywords.md)
-  - [Plugins](#plugins)
-  - [Related packages](#related-packages)
-- [Security considerations](./docs/security.md)
-  - [Security contact](./docs/security.md#security-contact)
-  - [Untrusted schemas](./docs/security.md#untrusted-schemas)
-  - [Circular references in objects](./docs/security.md#circular-references-in-javascript-objects)
-  - [Trusted schemas](./docs/security.md#security-risks-of-trusted-schemas)
-  - [ReDoS attack](./docs/security.md#redos-attack)
-  - [Content Security Policy](./docs/security.md#content-security-policy)
-- [Some packages using Ajv](#some-packages-using-ajv)
-- [Changes history](#changes-history)
-- [Support, Code of conduct, Contacts, License](#open-source-software-support)
-
-## Mozilla MOSS grant and OpenJS Foundation
-
-[<img src="https://ajv.js.org/img/mozilla.svg" width="240" height="68">](https://www.mozilla.org/en-US/moss/)<img src="https://ajv.js.org/img/gap.svg" width="5%">[<img src="https://ajv.js.org/img/openjs.png" width="220" height="68">](https://openjsf.org/blog/2020/08/14/ajv-joins-openjs-foundation-as-an-incubation-project/)
-
-Ajv has been awarded a grant from Mozilla’s [Open Source Support (MOSS) program](https://www.mozilla.org/en-US/moss/) in the “Foundational Technology” track! It will sponsor the development of Ajv support of [JSON Schema version 2019-09](https://tools.ietf.org/html/draft-handrews-json-schema-02) and of [JSON Type Definition (RFC8927)](https://datatracker.ietf.org/doc/rfc8927/).
-
-Ajv also joined [OpenJS Foundation](https://openjsf.org/) – having this support will help ensure the longevity and stability of Ajv for all its users.
-
-This [blog post](https://www.poberezkin.com/posts/2020-08-14-ajv-json-validator-mozilla-open-source-grant-openjs-foundation.html) has more details.
-
-I am looking for the long term maintainers of Ajv – working with [ReadySet](https://www.thereadyset.co/), also sponsored by Mozilla, to establish clear guidelines for the role of a "maintainer" and the contribution standards, and to encourage a wider, more inclusive, contribution from the community.
+Some useful site links:
+- [Getting started](https://ajv.js.org/guide/getting-started.html)
+- [JSON Schema vs JSON Type Definition](https://ajv.js.org/guide/schema-language.html)
+- [API reference](https://ajv.js.org/api.html)
+- [Strict mode](https://ajv.js.org/strict-mode.html)
+- [Standalone validation code](https://ajv.js.org/standalone.html)
+- [Security considerations](https://ajv.js.org/security.html)
+- [Command line interface](https://ajv.js.org/packages/ajv-cli.html)
+- [Frequently Asked Questions](https://ajv.js.org/faq.html)
 
 ## <a name="sponsors"></a>Please [sponsor Ajv development](https://github.com/sponsors/epoberezkin)
 
@@ -188,40 +98,40 @@
 
 Performance of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark):
 
-[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:|djv|ajv|json-schema-validator-generator|jsen|is-my-json-valid|themis|z-schema|jsck|skeemas|json-schema-library|tv4&chd=t:100,98,72.1,66.8,50.1,15.1,6.1,3.8,1.2,0.7,0.2)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
+[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=62,4,1&chs=600x416&chxl=-1:|ajv|@exodus&#x2F;schemasafe|is-my-json-valid|djv|@cfworker&#x2F;json-schema|jsonschema&chd=t:100,69.2,51.5,13.1,5.1,1.2)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
 
 ## Features
 
-- Ajv implements JSON Schema [draft-06/07/2019-09](http://json-schema.org/) standards (draft-04 is supported in v6):
-  - all validation keywords (see [JSON Schema validation keywords](./docs/json-schema.md))
-  - keyword "nullable" from [Open API 3 specification](https://swagger.io/docs/specification/data-models/data-types/).
+- Ajv implements JSON Schema [draft-06/07/2019-09/2020-12](http://json-schema.org/) standards (draft-04 is supported in v6):
+  - all validation keywords (see [JSON Schema validation keywords](https://ajv.js.org/json-schema.html))
+  - [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md) extensions:
+    - NEW: keyword [discriminator](https://ajv.js.org/json-schema.md#discriminator).
+    - keyword [nullable](https://ajv.js.org/json-schema.md#nullable).
   - full support of remote references (remote schemas have to be added with `addSchema` or compiled to be available)
-  - support of circular references between schemas
+  - support of recursive references between schemas
   - correct string lengths for strings with unicode pairs
-  - [formats](#formats) defined by JSON Schema draft-07 standard (with [ajv-formats](https://github.com/ajv-validator/ajv-formats) plugin) and additional formats (can be turned off)
-  - [validates schemas against meta-schema](./docs/api.md#api-validateschema)
+  - JSON Schema [formats](https://ajv.js.org/guide/formats.html) (with [ajv-formats](https://github.com/ajv-validator/ajv-formats) plugin).
+  - [validates schemas against meta-schema](https://ajv.js.org/api.html#api-validateschema)
 - NEW: supports [JSON Type Definition](https://datatracker.ietf.org/doc/rfc8927/):
-  - all forms (see [JSON Type Definition schema forms](./docs/json-type-definition.md))
+  - all keywords (see [JSON Type Definition schema forms](https://ajv.js.org/json-type-definition.html))
   - meta-schema for JTD schemas
   - "union" keyword and user-defined keywords (can be used inside "metadata" member of the schema)
-- supports [browsers](#using-in-browser) and Node.js 0.10-14.x
-- [asynchronous loading](./docs/guide/managing-schemas.md#asynchronous-schema-compilation) of referenced schemas during compilation
-- "All errors" validation mode with [option allErrors](./docs/api.md#options)
-- [error messages with parameters](./docs/api.md#validation-errors) describing error reasons to allow error message generation
+- supports [browsers](https://ajv.js.org/guide/environments.html#browsers) and Node.js 10.x - current
+- [asynchronous loading](https://ajv.js.org/guide/managing-schemas.html#asynchronous-schema-loading) of referenced schemas during compilation
+- "All errors" validation mode with [option allErrors](https://ajv.js.org/options.html#allerrors)
+- [error messages with parameters](https://ajv.js.org/api.html#validation-errors) describing error reasons to allow error message generation
 - i18n error messages support with [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) package
-- [removing-additional-properties](./docs/guide/modifying-data.md#removing-additional-properties)
-- [assigning defaults](./docs/guide/modifying-data.md#assigning-defaults) to missing properties and items
-- [coercing data](./docs/guide/modifying-data.md#coercing-data-types) to the types specified in `type` keywords
-- [user-defined keywords](#user-defined-keywords)
-- draft-06/07 keywords `const`, `contains`, `propertyNames` and `if/then/else`
-- draft-06 boolean schemas (`true`/`false` as a schema to always pass/fail).
+- [removing-additional-properties](https://ajv.js.org/guide/modifying-data.html#removing-additional-properties)
+- [assigning defaults](https://ajv.js.org/guide/modifying-data.html#assigning-defaults) to missing properties and items
+- [coercing data](https://ajv.js.org/guide/modifying-data.html#coercing-data-types) to the types specified in `type` keywords
+- [user-defined keywords](https://ajv.js.org/guide/user-keywords.html)
 - additional extension keywords with [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package
-- [\$data reference](./docs/guide/combining-schemas.md#data-reference) to use values from the validated data as values for the schema keywords
-- [asynchronous validation](./docs/api.md#asynchronous-validation) of user-defined formats and keywords
+- [\$data reference](https://ajv.js.org/guide/combining-schemas.html#data-reference) to use values from the validated data as values for the schema keywords
+- [asynchronous validation](https://ajv.js.org/guide/async-validation.html) of user-defined formats and keywords
 
 ## Install
 
-To install version 7:
+To install version 8:
 
 ```
 npm install ajv
@@ -237,76 +147,34 @@
 // or ESM/TypeScript import
 import Ajv from "ajv"
 // Node.js require:
-const Ajv = require("ajv").default
+const Ajv = require("ajv")
 
 const ajv = new Ajv() // options can be passed, e.g. {allErrors: true}
+
+const schema = {
+  type: "object",
+  properties: {
+    foo: {type: "integer"},
+    bar: {type: "string"}
+  },
+  required: ["foo"],
+  additionalProperties: false,
+}
+
 const validate = ajv.compile(schema)
 const valid = validate(data)
 if (!valid) console.log(validate.errors)
 ```
 
-See more examples in [Guide: getting started](./docs/guide/getting-started.md)
-
-## Extending Ajv
-
-### User defined keywords
-
-See section in [data validation](./docs/guide/user-keywords.md) and the [detailed guide](./docs/keywords.md).
-
-### Plugins
-
-Ajv can be extended with plugins that add keywords, formats or functions to process generated code. When such plugin is published as npm package it is recommended that it follows these conventions:
-
-- it exports a function that accepts ajv instance as the first parameter - it allows using plugins with [ajv-cli](#command-line-interface).
-- this function returns the same instance to allow chaining.
-- this function can accept an optional configuration as the second parameter.
-
-You can import `Plugin` interface from ajv if you use Typescript.
-
-If you have published a useful plugin please submit a PR to add it to the next section.
-
-### Related packages
-
-- [ajv-bsontype](https://github.com/BoLaMN/ajv-bsontype) - plugin to validate mongodb's bsonType formats
-- [ajv-cli](https://github.com/jessedc/ajv-cli) - command line interface
-- [ajv-formats](https://github.com/ajv-validator/ajv-formats) - formats defined in JSON Schema specification
-- [ajv-errors](https://github.com/ajv-validator/ajv-errors) - plugin for defining error messages in the schema
-- [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) - internationalised error messages
-- [ajv-istanbul](https://github.com/ajv-validator/ajv-istanbul) - plugin to instrument generated validation code to measure test coverage of your schemas
-- [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) - plugin with additional validation keywords (select, typeof, etc.)
-- [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) - plugin with keywords $merge and $patch
-- [ajv-formats-draft2019](https://github.com/luzlab/ajv-formats-draft2019) - format validators for draft2019 that aren't included in [ajv-formats](https://github.com/ajv-validator/ajv-formats) (ie. `idn-hostname`, `idn-email`, `iri`, `iri-reference` and `duration`)
-
-## Some packages using Ajv
-
-- [webpack](https://github.com/webpack/webpack) - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser
-- [jsonscript-js](https://github.com/JSONScript/jsonscript-js) - the interpreter for [JSONScript](http://www.jsonscript.org) - scripted processing of existing endpoints and services
-- [osprey-method-handler](https://github.com/mulesoft-labs/osprey-method-handler) - Express middleware for validating requests and responses based on a RAML method object, used in [osprey](https://github.com/mulesoft/osprey) - validating API proxy generated from a RAML definition
-- [har-validator](https://github.com/ahmadnassri/har-validator) - HTTP Archive (HAR) validator
-- [jsoneditor](https://github.com/josdejong/jsoneditor) - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org
-- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - a web tool to validate JSON/YAML document against a single JSON Schema http://jsonschemalint.com
-- [objection](https://github.com/vincit/objection.js) - SQL-friendly ORM for Node.js
-- [table](https://github.com/gajus/table) - formats data into a string table
-- [ripple-lib](https://github.com/ripple/ripple-lib) - a JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser
-- [restbase](https://github.com/wikimedia/restbase) - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content
-- [hippie-swagger](https://github.com/CacheControl/hippie-swagger) - [Hippie](https://github.com/vesln/hippie) wrapper that provides end to end API testing with swagger validation
-- [react-form-controlled](https://github.com/seeden/react-form-controlled) - React controlled form components with validation
-- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - a schema definition module for RabbitMQ graphs and messages
-- [@query/schema](https://www.npmjs.com/package/@query/schema) - stream filtering with a URI-safe query syntax parsing to JSON Schema
-- [chai-ajv-json-schema](https://github.com/peon374/chai-ajv-json-schema) - chai plugin to us JSON Schema with expect in mocha tests
-- [grunt-jsonschema-ajv](https://github.com/SignpostMarv/grunt-jsonschema-ajv) - Grunt plugin for validating files against JSON Schema
-- [extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin) - extract text from bundle into a file
-- [electron-builder](https://github.com/electron-userland/electron-builder) - a solution to package and build a ready for distribution Electron app
-- [addons-linter](https://github.com/mozilla/addons-linter) - Mozilla Add-ons Linter
-- [gh-pages-generator](https://github.com/epoberezkin/gh-pages-generator) - multi-page site generator converting markdown files to GitHub pages
-- [ESLint](https://github.com/eslint/eslint) - the pluggable linting utility for JavaScript and JSX
-- [Spectral](https://github.com/stoplightio/spectral) - the customizable linting utility for JSON/YAML, OpenAPI, AsyncAPI, and JSON Schema
+Learn how to use Ajv and see more examples in the [Guide: getting started](https://ajv.js.org/guide/getting-started.html)
 
 ## Changes history
 
 See [https://github.com/ajv-validator/ajv/releases](https://github.com/ajv-validator/ajv/releases)
 
-**Please note**: [Changes in version 7.0.0](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0)
+**Please note**: [Changes in version 8.0.0](https://github.com/ajv-validator/ajv/releases/tag/v8.0.0)
+
+[Version 7.0.0](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0)
 
 [Version 6.0.0](https://github.com/ajv-validator/ajv/releases/tag/v6.0.0).
 
diff --git a/node_modules/table/node_modules/ajv/dist/2019.d.ts b/node_modules/table/node_modules/ajv/dist/2019.d.ts
index 3059a66..5a391dd 100644
--- a/node_modules/table/node_modules/ajv/dist/2019.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/2019.d.ts
@@ -1,17 +1,17 @@
-export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, ErrorObject, ErrorNoParams, } from "./types";
-export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
-export { SchemaCxt, SchemaObjCxt } from "./compile";
-import KeywordCxt from "./compile/context";
-export { KeywordCxt };
-export { DefinedError } from "./vocabularies/errors";
-export { JSONType } from "./compile/rules";
-export { JSONSchemaType } from "./types/json-schema";
-export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
 import type { AnySchemaObject } from "./types";
 import AjvCore, { Options } from "./core";
-export default class Ajv2019 extends AjvCore {
+declare class Ajv2019 extends AjvCore {
     constructor(opts?: Options);
     _addVocabularies(): void;
     _addDefaultMetaSchema(): void;
     defaultMeta(): string | AnySchemaObject | undefined;
 }
+export default Ajv2019;
+export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, ErrorObject, ErrorNoParams, } from "./types";
+export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
+export { SchemaCxt, SchemaObjCxt } from "./compile";
+export { KeywordCxt } from "./compile/validate";
+export { DefinedError } from "./vocabularies/errors";
+export { JSONType } from "./compile/rules";
+export { JSONSchemaType } from "./types/json-schema";
+export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
diff --git a/node_modules/table/node_modules/ajv/dist/2019.js b/node_modules/table/node_modules/ajv/dist/2019.js
index afb7be6..89d7853 100644
--- a/node_modules/table/node_modules/ajv/dist/2019.js
+++ b/node_modules/table/node_modules/ajv/dist/2019.js
@@ -1,20 +1,12 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;
-const context_1 = require("./compile/context");
-exports.KeywordCxt = context_1.default;
-var codegen_1 = require("./compile/codegen");
-Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
-Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
-Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
-Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
-Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
-Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
 const core_1 = require("./core");
 const draft7_1 = require("./vocabularies/draft7");
 const dynamic_1 = require("./vocabularies/dynamic");
 const next_1 = require("./vocabularies/next");
 const unevaluated_1 = require("./vocabularies/unevaluated");
+const discriminator_1 = require("./vocabularies/discriminator");
 const json_schema_2019_09_1 = require("./refs/json-schema-2019-09");
 const META_SCHEMA_ID = "https://json-schema.org/draft/2019-09/schema";
 class Ajv2019 extends core_1.default {
@@ -32,6 +24,8 @@
         draft7_1.default.forEach((v) => this.addVocabulary(v));
         this.addVocabulary(next_1.default);
         this.addVocabulary(unevaluated_1.default);
+        if (this.opts.discriminator)
+            this.addKeyword(discriminator_1.default);
     }
     _addDefaultMetaSchema() {
         super._addDefaultMetaSchema();
@@ -46,5 +40,16 @@
             super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));
     }
 }
+module.exports = exports = Ajv2019;
+Object.defineProperty(exports, "__esModule", { value: true });
 exports.default = Ajv2019;
+var validate_1 = require("./compile/validate");
+Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });
+var codegen_1 = require("./compile/codegen");
+Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
+Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
+Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
+Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
+Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
+Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
 //# sourceMappingURL=2019.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/2019.js.map b/node_modules/table/node_modules/ajv/dist/2019.js.map
index e36dc48..8e4e87c 100644
--- a/node_modules/table/node_modules/ajv/dist/2019.js.map
+++ b/node_modules/table/node_modules/ajv/dist/2019.js.map
@@ -1 +1 @@
-{"version":3,"file":"2019.js","sourceRoot":"","sources":["../lib/2019.ts"],"names":[],"mappings":";;;AAuBA,+CAA0C;AAClC,qBADD,iBAAU,CACC;AAIlB,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA;AAGnD,iCAAuC;AAEvC,kDAAsD;AACtD,oDAAsD;AACtD,8CAAgD;AAChD,4DAA8D;AAC9D,oEAA0D;AAE1D,MAAM,cAAc,GAAG,8CAA8C,CAAA;AAErE,MAAqB,OAAQ,SAAQ,cAAO;IAC1C,YAAY,OAAgB,EAAE;QAC5B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QACrC,gBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;QAClC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAC3C,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,6BAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,cAAc,CAAA;IAC7D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;CACF;AA9BD,0BA8BC"}
\ No newline at end of file
+{"version":3,"file":"2019.js","sourceRoot":"","sources":["../lib/2019.ts"],"names":[],"mappings":";;;AACA,iCAAuC;AAEvC,kDAAsD;AACtD,oDAAsD;AACtD,8CAAgD;AAChD,4DAA8D;AAC9D,gEAAwD;AACxD,oEAA0D;AAE1D,MAAM,cAAc,GAAG,8CAA8C,CAAA;AAErE,MAAM,OAAQ,SAAQ,cAAO;IAC3B,YAAY,OAAgB,EAAE;QAC5B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QACrC,gBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;QAClC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAA;QACzC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,UAAU,CAAC,uBAAa,CAAC,CAAA;IAC7D,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,6BAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,cAAc,CAAA;IAC7D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAClC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAA;AAE3D,kBAAe,OAAO,CAAA;AAyBtB,+CAA6C;AAArC,sGAAA,UAAU,OAAA;AAIlB,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/2020.d.ts b/node_modules/table/node_modules/ajv/dist/2020.d.ts
new file mode 100644
index 0000000..21bae8f
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/2020.d.ts
@@ -0,0 +1,17 @@
+import type { AnySchemaObject } from "./types";
+import AjvCore, { Options } from "./core";
+declare class Ajv2020 extends AjvCore {
+    constructor(opts?: Options);
+    _addVocabularies(): void;
+    _addDefaultMetaSchema(): void;
+    defaultMeta(): string | AnySchemaObject | undefined;
+}
+export default Ajv2020;
+export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, ErrorObject, ErrorNoParams, } from "./types";
+export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
+export { SchemaCxt, SchemaObjCxt } from "./compile";
+export { KeywordCxt } from "./compile/validate";
+export { DefinedError } from "./vocabularies/errors";
+export { JSONType } from "./compile/rules";
+export { JSONSchemaType } from "./types/json-schema";
+export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
diff --git a/node_modules/table/node_modules/ajv/dist/2020.js b/node_modules/table/node_modules/ajv/dist/2020.js
new file mode 100644
index 0000000..bdd1dd6
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/2020.js
@@ -0,0 +1,49 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;
+const core_1 = require("./core");
+const draft2020_1 = require("./vocabularies/draft2020");
+const discriminator_1 = require("./vocabularies/discriminator");
+const json_schema_2020_12_1 = require("./refs/json-schema-2020-12");
+const META_SCHEMA_ID = "https://json-schema.org/draft/2020-12/schema";
+class Ajv2020 extends core_1.default {
+    constructor(opts = {}) {
+        super({
+            ...opts,
+            dynamicRef: true,
+            next: true,
+            unevaluated: true,
+        });
+    }
+    _addVocabularies() {
+        super._addVocabularies();
+        draft2020_1.default.forEach((v) => this.addVocabulary(v));
+        if (this.opts.discriminator)
+            this.addKeyword(discriminator_1.default);
+    }
+    _addDefaultMetaSchema() {
+        super._addDefaultMetaSchema();
+        const { $data, meta } = this.opts;
+        if (!meta)
+            return;
+        json_schema_2020_12_1.default.call(this, $data);
+        this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID;
+    }
+    defaultMeta() {
+        return (this.opts.defaultMeta =
+            super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));
+    }
+}
+module.exports = exports = Ajv2020;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.default = Ajv2020;
+var validate_1 = require("./compile/validate");
+Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });
+var codegen_1 = require("./compile/codegen");
+Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
+Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
+Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
+Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
+Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
+Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
+//# sourceMappingURL=2020.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/2020.js.map b/node_modules/table/node_modules/ajv/dist/2020.js.map
new file mode 100644
index 0000000..9223935
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/2020.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"2020.js","sourceRoot":"","sources":["../lib/2020.ts"],"names":[],"mappings":";;;AACA,iCAAuC;AAEvC,wDAA4D;AAC5D,gEAAwD;AACxD,oEAA0D;AAE1D,MAAM,cAAc,GAAG,8CAA8C,CAAA;AAErE,MAAM,OAAQ,SAAQ,cAAO;IAC3B,YAAY,OAAgB,EAAE;QAC5B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,mBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,UAAU,CAAC,uBAAa,CAAC,CAAA;IAC7D,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,6BAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,cAAc,CAAA;IAC7D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAClC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAA;AAE3D,kBAAe,OAAO,CAAA;AAyBtB,+CAA6C;AAArC,sGAAA,UAAU,OAAA;AAIlB,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/ajv.d.ts b/node_modules/table/node_modules/ajv/dist/ajv.d.ts
index 2123215..ce43bbf 100644
--- a/node_modules/table/node_modules/ajv/dist/ajv.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/ajv.d.ts
@@ -1,16 +1,16 @@
-export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, SchemaValidateFunction, ErrorObject, ErrorNoParams, } from "./types";
-export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
-export { SchemaCxt, SchemaObjCxt } from "./compile";
-import KeywordCxt from "./compile/context";
-export { KeywordCxt };
-export { DefinedError } from "./vocabularies/errors";
-export { JSONType } from "./compile/rules";
-export { JSONSchemaType } from "./types/json-schema";
-export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
 import type { AnySchemaObject } from "./types";
 import AjvCore from "./core";
-export default class Ajv extends AjvCore {
+declare class Ajv extends AjvCore {
     _addVocabularies(): void;
     _addDefaultMetaSchema(): void;
     defaultMeta(): string | AnySchemaObject | undefined;
 }
+export default Ajv;
+export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, SchemaValidateFunction, ErrorObject, ErrorNoParams, } from "./types";
+export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
+export { SchemaCxt, SchemaObjCxt } from "./compile";
+export { KeywordCxt } from "./compile/validate";
+export { DefinedError } from "./vocabularies/errors";
+export { JSONType } from "./compile/rules";
+export { JSONSchemaType } from "./types/json-schema";
+export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
diff --git a/node_modules/table/node_modules/ajv/dist/ajv.js b/node_modules/table/node_modules/ajv/dist/ajv.js
index 8aa6397..219bcf0 100644
--- a/node_modules/table/node_modules/ajv/dist/ajv.js
+++ b/node_modules/table/node_modules/ajv/dist/ajv.js
@@ -1,17 +1,9 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;
-const context_1 = require("./compile/context");
-exports.KeywordCxt = context_1.default;
-var codegen_1 = require("./compile/codegen");
-Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
-Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
-Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
-Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
-Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
-Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
 const core_1 = require("./core");
 const draft7_1 = require("./vocabularies/draft7");
+const discriminator_1 = require("./vocabularies/discriminator");
 const draft7MetaSchema = require("./refs/json-schema-draft-07.json");
 const META_SUPPORT_DATA = ["/properties"];
 const META_SCHEMA_ID = "http://json-schema.org/draft-07/schema";
@@ -19,6 +11,8 @@
     _addVocabularies() {
         super._addVocabularies();
         draft7_1.default.forEach((v) => this.addVocabulary(v));
+        if (this.opts.discriminator)
+            this.addKeyword(discriminator_1.default);
     }
     _addDefaultMetaSchema() {
         super._addDefaultMetaSchema();
@@ -35,5 +29,16 @@
             super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));
     }
 }
+module.exports = exports = Ajv;
+Object.defineProperty(exports, "__esModule", { value: true });
 exports.default = Ajv;
+var validate_1 = require("./compile/validate");
+Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });
+var codegen_1 = require("./compile/codegen");
+Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
+Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
+Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
+Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
+Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
+Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
 //# sourceMappingURL=ajv.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/ajv.js.map b/node_modules/table/node_modules/ajv/dist/ajv.js.map
index 76b6078..18006d4 100644
--- a/node_modules/table/node_modules/ajv/dist/ajv.js.map
+++ b/node_modules/table/node_modules/ajv/dist/ajv.js.map
@@ -1 +1 @@
-{"version":3,"file":"ajv.js","sourceRoot":"","sources":["../lib/ajv.ts"],"names":[],"mappings":";;;AAwBA,+CAA0C;AAClC,qBADD,iBAAU,CACC;AAIlB,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA;AAGnD,iCAA4B;AAC5B,kDAAsD;AACtD,qEAAoE;AAEpE,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAA;AAEzC,MAAM,cAAc,GAAG,wCAAwC,CAAA;AAE/D,MAAqB,GAAI,SAAQ,cAAO;IACtC,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,gBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;YAChC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YAC3D,CAAC,CAAC,gBAAgB,CAAA;QACpB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,cAAc,CAAA;IAC7D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;CACF;AApBD,sBAoBC"}
\ No newline at end of file
+{"version":3,"file":"ajv.js","sourceRoot":"","sources":["../lib/ajv.ts"],"names":[],"mappings":";;;AACA,iCAA4B;AAC5B,kDAAsD;AACtD,gEAAwD;AACxD,qEAAoE;AAEpE,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAA;AAEzC,MAAM,cAAc,GAAG,wCAAwC,CAAA;AAE/D,MAAM,GAAI,SAAQ,cAAO;IACvB,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,gBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,UAAU,CAAC,uBAAa,CAAC,CAAA;IAC7D,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;YAChC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YAC3D,CAAC,CAAC,gBAAgB,CAAA;QACpB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,cAAc,CAAA;IAC7D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,GAAG,CAAA;AAC9B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAA;AAE3D,kBAAe,GAAG,CAAA;AA0BlB,+CAA6C;AAArC,sGAAA,UAAU,OAAA;AAIlB,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/codegen/code.d.ts b/node_modules/table/node_modules/ajv/dist/compile/codegen/code.d.ts
index 73d55d0..78fca4d 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/codegen/code.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/codegen/code.d.ts
@@ -35,4 +35,5 @@
 export declare function stringify(x: unknown): Code;
 export declare function safeStringify(x: unknown): string;
 export declare function getProperty(key: Code | string | number): Code;
+export declare function regexpCode(rx: RegExp): Code;
 export {};
diff --git a/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js b/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js
index 24ad5c1..cf3cdb5 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js
@@ -1,6 +1,6 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;
+exports.regexpCode = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;
 class _CodeOrName {
 }
 exports._CodeOrName = _CodeOrName;
@@ -140,4 +140,8 @@
     return typeof key == "string" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;
 }
 exports.getProperty = getProperty;
+function regexpCode(rx) {
+    return new _Code(rx.toString());
+}
+exports.regexpCode = regexpCode;
 //# sourceMappingURL=code.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js.map b/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js.map
index c4ab69a..3422d25 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/codegen/code.js.map
@@ -1 +1 @@
-{"version":3,"file":"code.js","sourceRoot":"","sources":["../../../lib/compile/codegen/code.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"code.js","sourceRoot":"","sources":["../../../lib/compile/codegen/code.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/codegen/index.d.ts b/node_modules/table/node_modules/ajv/dist/compile/codegen/index.d.ts
index 434d69c..db9101d 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/codegen/index.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/codegen/index.d.ts
@@ -1,7 +1,7 @@
 import type { ScopeValueSets, NameValue, ValueScope, ValueScopeName } from "./scope";
 import { _Code, Code, Name } from "./code";
 import { Scope } from "./scope";
-export { _, str, strConcat, nil, getProperty, stringify, Name, Code } from "./code";
+export { _, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code } from "./code";
 export { Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds } from "./scope";
 export declare type SafeExpr = Code | number | boolean | null;
 export declare type Block = Code | (() => void);
diff --git a/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js b/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js
index d2ff464..0667fb6 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js
@@ -1,6 +1,6 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;
+exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;
 const code_1 = require("./code");
 const scope_1 = require("./scope");
 var code_2 = require("./code");
@@ -10,6 +10,7 @@
 Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return code_2.nil; } });
 Object.defineProperty(exports, "getProperty", { enumerable: true, get: function () { return code_2.getProperty; } });
 Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return code_2.stringify; } });
+Object.defineProperty(exports, "regexpCode", { enumerable: true, get: function () { return code_2.regexpCode; } });
 Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return code_2.Name; } });
 var scope_2 = require("./scope");
 Object.defineProperty(exports, "Scope", { enumerable: true, get: function () { return scope_2.Scope; } });
diff --git a/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js.map b/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js.map
index edccb88..060753a 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/codegen/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/compile/codegen/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/compile/codegen/index.ts"],"names":[],"mappings":";;;AACA,iCAA8F;AAC9F,mCAAuC;AAEvC,+BAA6F;AAArF,yFAAA,CAAC,OAAA;AAAE,2FAAA,GAAG,OAAA;AAAE,iGAAA,SAAS,OAAA;AAAE,2FAAA,GAAG,OAAA;AAAE,mGAAA,WAAW,OAAA;AAAE,iGAAA,SAAS,OAAA;AAAE,kGAAA,UAAU,OAAA;AAAE,4FAAA,IAAI,OAAA;AACxE,iCAA+F;AAAvF,8FAAA,KAAK,OAAA;AAAc,mGAAA,UAAU,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAkB,iGAAA,QAAQ,OAAA;AAQlE,QAAA,SAAS,GAAG;IACvB,EAAE,EAAE,IAAI,YAAK,CAAC,GAAG,CAAC;IAClB,GAAG,EAAE,IAAI,YAAK,CAAC,IAAI,CAAC;IACpB,EAAE,EAAE,IAAI,YAAK,CAAC,GAAG,CAAC;IAClB,GAAG,EAAE,IAAI,YAAK,CAAC,IAAI,CAAC;IACpB,EAAE,EAAE,IAAI,YAAK,CAAC,KAAK,CAAC;IACpB,GAAG,EAAE,IAAI,YAAK,CAAC,KAAK,CAAC;IACrB,GAAG,EAAE,IAAI,YAAK,CAAC,GAAG,CAAC;IACnB,EAAE,EAAE,IAAI,YAAK,CAAC,IAAI,CAAC;IACnB,GAAG,EAAE,IAAI,YAAK,CAAC,IAAI,CAAC;IACpB,GAAG,EAAE,IAAI,YAAK,CAAC,GAAG,CAAC;CACpB,CAAA;AAED,MAAe,IAAI;IAGjB,aAAa;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,MAAiB,EAAE,UAAqB;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;CAKF;AAED,MAAM,GAAI,SAAQ,IAAI;IACpB,YAA6B,OAAa,EAAmB,IAAU,EAAU,GAAc;QAC7F,KAAK,EAAE,CAAA;QADoB,YAAO,GAAP,OAAO,CAAM;QAAmB,SAAI,GAAJ,IAAI,CAAM;QAAU,QAAG,GAAH,GAAG,CAAW;IAE/F,CAAC;IAED,MAAM,CAAC,EAAC,GAAG,EAAE,EAAE,EAAY;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;QAC1D,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;IAC9C,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAM;QACjC,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACjE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,YAAY,kBAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,CAAC;CACF;AAED,MAAM,MAAO,SAAQ,IAAI;IACvB,YAAqB,GAAS,EAAS,GAAa,EAAmB,WAAqB;QAC1F,KAAK,EAAE,CAAA;QADY,QAAG,GAAH,GAAG,CAAM;QAAS,QAAG,GAAH,GAAG,CAAU;QAAmB,gBAAW,GAAX,WAAW,CAAU;IAE5F,CAAC;IAED,MAAM,CAAC,EAAC,EAAE,EAAY;QACpB,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA;IAC1C,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;QAClD,IAAI,IAAI,CAAC,GAAG,YAAY,WAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAM;QACjF,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,YAAY,WAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,CAAA;QACjE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACtC,CAAC;CACF;AAED,MAAM,QAAS,SAAQ,MAAM;IAC3B,YAAY,GAAS,EAAmB,EAAQ,EAAE,GAAa,EAAE,WAAqB;QACpF,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;QADU,OAAE,GAAF,EAAE,CAAM;IAEhD,CAAC;IAED,MAAM,CAAC,EAAC,EAAE,EAAY;QACpB,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA;IACpD,CAAC;CACF;AAED,MAAM,KAAM,SAAQ,IAAI;IAEtB,YAAqB,KAAW;QAC9B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAM;QADvB,UAAK,GAAc,EAAE,CAAA;IAG9B,CAAC;IAED,MAAM,CAAC,EAAC,EAAE,EAAY;QACpB,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,KAAM,SAAQ,IAAI;IAEtB,YAAqB,KAAY;QAC/B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAO;QADxB,UAAK,GAAc,EAAE,CAAA;IAG9B,CAAC;IAED,MAAM,CAAC,EAAC,EAAE,EAAY;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAChD,OAAO,QAAQ,KAAK,GAAG,GAAG,EAAE,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,KAAM,SAAQ,IAAI;IACtB,YAAqB,KAAW;QAC9B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAM;IAEhC,CAAC;IAED,MAAM,CAAC,EAAC,EAAE,EAAY;QACpB,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,CAAA;IACpC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACzB,CAAC;CACF;AAED,MAAM,OAAQ,SAAQ,IAAI;IACxB,YAAoB,IAAc;QAChC,KAAK,EAAE,CAAA;QADW,SAAI,GAAJ,IAAI,CAAU;IAElC,CAAC;IAED,MAAM,CAAC,EAAC,EAAE,EAAY;QACpB,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1C,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;QAClD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,YAAY,kBAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,CAAC;CACF;AAED,MAAe,UAAW,SAAQ,IAAI;IACpC,YAAqB,QAAqB,EAAE;QAC1C,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAkB;IAE5C,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,aAAa;QACX,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QACpB,OAAO,CAAC,EAAE,EAAE;YACV,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;YAClC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;iBACzC,IAAI,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;;gBACnB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACxB;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5C,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;QAClD,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QACpB,OAAO,CAAC,EAAE,EAAE;YACV,mDAAmD;YACnD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;gBAAE,SAAQ;YAC/C,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;YAC7B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IACjF,CAAC;CAKF;AAED,MAAe,SAAU,SAAQ,UAAU;IACzC,MAAM,CAAC,IAAe;QACpB,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAA;IAC3D,CAAC;CACF;AAED,MAAM,IAAK,SAAQ,UAAU;CAAG;AAEhC,MAAM,IAAK,SAAQ,SAAS;;AACV,SAAI,GAAG,MAAM,CAAA;AAG/B,MAAM,EAAG,SAAQ,SAAS;IAGxB,YAAoB,SAAyB,EAAE,KAAmB;QAChE,KAAK,CAAC,KAAK,CAAC,CAAA;QADM,cAAS,GAAT,SAAS,CAAgB;IAE7C,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACvD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa;QACX,KAAK,CAAC,aAAa,EAAE,CAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;QAC3B,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAA,CAAC,uBAAuB;QAC5D,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QACjB,IAAI,CAAC,EAAE;YACL,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,CAAA;YAC5B,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAuB,CAAA;SAC5E;QACD,IAAI,CAAC,EAAE;YACL,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YACxD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YAClC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;SAC1D;QACD,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;;QAClD,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACtD,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAM;QACjE,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,OAAO,KAAK,CAAA;IACd,CAAC;;AA1Ce,OAAI,GAAG,IAAI,CAAA;AAiD7B,MAAe,GAAI,SAAQ,SAAS;;AAClB,QAAI,GAAG,KAAK,CAAA;AAG9B,MAAM,OAAQ,SAAQ,GAAG;IACvB,YAAoB,SAAe;QACjC,KAAK,EAAE,CAAA;QADW,cAAS,GAAT,SAAS,CAAM;IAEnC,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,OAAO,OAAO,IAAI,CAAC,SAAS,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAM;QAClD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACpD,CAAC;CACF;AAED,MAAM,QAAS,SAAQ,GAAG;IACxB,YACmB,OAAa,EACb,IAAU,EACV,IAAc,EACd,EAAY;QAE7B,KAAK,EAAE,CAAA;QALU,YAAO,GAAP,OAAO,CAAM;QACb,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAU;QACd,OAAE,GAAF,EAAE,CAAU;IAG/B,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;QACtD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,IAAI,CAAA;QAC7B,OAAO,OAAO,OAAO,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzF,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAClD,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAQ,SAAQ,GAAG;IACvB,YACmB,IAAiB,EACjB,OAAa,EACb,IAAU,EACnB,QAAc;QAEtB,KAAK,EAAE,CAAA;QALU,SAAI,GAAJ,IAAI,CAAa;QACjB,YAAO,GAAP,OAAO,CAAM;QACb,SAAI,GAAJ,IAAI,CAAM;QACnB,aAAQ,GAAR,QAAQ,CAAM;IAGxB,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,OAAO,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/F,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAM;QAClD,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,CAAC;CACF;AAED,MAAM,IAAK,SAAQ,SAAS;IAE1B,YAAmB,IAAU,EAAS,IAAU,EAAS,KAAe;QACtE,KAAK,EAAE,CAAA;QADU,SAAI,GAAJ,IAAI,CAAM;QAAS,SAAI,GAAJ,IAAI,CAAM;QAAS,UAAK,GAAL,KAAK,CAAU;IAExE,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;QACzC,OAAO,GAAG,MAAM,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5E,CAAC;;AARe,SAAI,GAAG,MAAM,CAAA;AAW/B,MAAM,MAAO,SAAQ,UAAU;IAG7B,MAAM,CAAC,IAAe;QACpB,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;;AAJe,WAAI,GAAG,QAAQ,CAAA;AAOjC,MAAM,GAAI,SAAQ,SAAS;IAIzB,MAAM,CAAC,IAAe;QACpB,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa;;QACX,KAAK,CAAC,aAAa,EAAE,CAAA;QACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,EAAuB,CAAA;QAChD,MAAA,IAAI,CAAC,OAAO,0CAAE,aAAa,EAAyB,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,SAAoB;;QAClD,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACrC,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAC3C,MAAA,IAAI,CAAC,OAAO,0CAAE,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,IAAI,IAAI,CAAC,KAAK;YAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACjD,IAAI,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACrD,OAAO,KAAK,CAAA;IACd,CAAC;CAKF;AAED,MAAM,KAAM,SAAQ,SAAS;IAE3B,YAAqB,KAAW;QAC9B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAM;IAEhC,CAAC;IAED,MAAM,CAAC,IAAe;QACpB,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;;AAPe,UAAI,GAAG,OAAO,CAAA;AAUhC,MAAM,OAAQ,SAAQ,SAAS;IAE7B,MAAM,CAAC,IAAe;QACpB,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;;AAHe,YAAI,GAAG,SAAS,CAAA;AAiClC,MAAa,OAAO;IASlB,YAAY,QAAoB,EAAE,OAAuB,EAAE;QANlD,YAAO,GAAmB,EAAE,CAAA;QAEpB,iBAAY,GAAa,EAAE,CAAA;QAC3B,eAAU,GAAc,EAAE,CAAA;QAIzC,IAAI,CAAC,IAAI,GAAG,EAAC,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAC,CAAA;QACjD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAK,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,6CAA6C;IAC7C,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,qEAAqE;IACrE,UAAU,CAAC,YAAqC,EAAE,KAAgB;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;QAC/E,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,QAAiB;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,8FAA8F;IAC9F,qEAAqE;IACrE,SAAS,CAAC,SAAe;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAEO,IAAI,CACV,OAAa,EACb,YAA2B,EAC3B,GAAc,EACd,QAAkB;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QAClE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,YAA2B,EAAE,GAAa,EAAE,SAAmB;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAChE,CAAC;IAED,iEAAiE;IACjE,GAAG,CAAC,YAA2B,EAAE,GAAc,EAAE,SAAmB;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAC9D,CAAC;IAED,6CAA6C;IAC7C,GAAG,CAAC,YAA2B,EAAE,GAAc,EAAE,SAAmB;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAC9D,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,GAAS,EAAE,GAAa,EAAE,WAAqB;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,YAAY;IACZ,GAAG,CAAC,GAAS,EAAE,GAAa;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,iBAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,CAAmB;QACtB,IAAI,OAAO,CAAC,IAAI,UAAU;YAAE,CAAC,EAAE,CAAA;aAC1B,IAAI,CAAC,KAAK,UAAG;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,GAAG,SAA+C;QACvD,MAAM,IAAI,GAAe,CAAC,GAAG,CAAC,CAAA;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE;YACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,iBAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACxB;SACF;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,IAAI,YAAK,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,kFAAkF;IAClF,EAAE,CAAC,SAAyB,EAAE,QAAgB,EAAE,QAAgB;QAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;QAElC,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;SAClD;aAAM,IAAI,QAAQ,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;SAC5B;aAAM,IAAI,QAAQ,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;SAC5D;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,SAAyB;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,6DAA6D;IAC7D,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,qEAAqE;IACrE,KAAK;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IAEO,IAAI,CAAC,IAAS,EAAE,OAAe;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+DAA+D;IAC/D,GAAG,CAAC,SAAe,EAAE,OAAe;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,wCAAwC;IACxC,QAAQ,CACN,YAA2B,EAC3B,IAAc,EACd,EAAY,EACZ,OAA8B,EAC9B,UAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAQ,CAAC,GAAG;QAE3D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,kEAAkE;IAClE,KAAK,CACH,YAA2B,EAC3B,QAAc,EACd,OAA6B,EAC7B,UAAgB,gBAAQ,CAAC,KAAK;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,QAAQ,YAAY,WAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,QAAC,CAAA,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBACpD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAC,CAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACnF,CAAC;IAED,sBAAsB;IACtB,4EAA4E;IAC5E,KAAK,CACH,YAA2B,EAC3B,GAAS,EACT,OAA6B,EAC7B,UAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAQ,CAAC,KAAK;QAE7D,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,QAAC,CAAA,eAAe,GAAG,GAAG,EAAE,OAAO,CAAC,CAAA;SACjE;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,iBAAiB;IACjB,MAAM;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,KAAW;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,KAAY;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,qBAAqB;IACrB,MAAM,CAAC,KAAuB;QAC5B,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QACtF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,kBAAkB;IAClB,GAAG,CAAC,OAAc,EAAE,SAA6B,EAAE,WAAmB;QACpE,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QAC/F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClB,IAAI,SAAS,EAAE;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;YAC9C,SAAS,CAAC,KAAK,CAAC,CAAA;SACjB;QACD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;YAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;SACvB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,KAAW;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,IAAY,EAAE,SAAkB;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,uCAAuC;IACvC,QAAQ,CAAC,SAAkB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;QACnC,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAA;QACxC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,EAAE;YACrE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,OAAO,SAAS,WAAW,CAAC,CAAA;SACvF;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,IAAU,EAAE,OAAa,UAAG,EAAE,KAAe,EAAE,QAAgB;QAClE,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;QAC5C,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0BAA0B;IAC1B,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,QAAQ,CAAC,CAAC,GAAG,CAAC;QACZ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;YAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;SAC5D;IACH,CAAC;IAEO,SAAS,CAAC,IAAc;QAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,UAAU,CAAC,IAAoB;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAEO,aAAa,CAAC,EAAoB,EAAE,EAAqB;QAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QACxB,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YACjB,OAAO,IAAI,CAAA;SACZ;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAA;IACtF,CAAC;IAEO,SAAS,CAAC,IAAe;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QACxB,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QACD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,CAAA;IAC/B,CAAC;IAED,IAAY,SAAS;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,IAAY,SAAS,CAAC,IAAgB;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC1B,CAAC;CAKF;AAtUD,0BAsUC;AAED,SAAS,QAAQ,CAAC,KAAgB,EAAE,IAAe;IACjD,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAgB,EAAE,IAAc;IACpD,OAAO,IAAI,YAAY,kBAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAC1E,CAAC;AAGD,SAAS,YAAY,CAAC,IAAc,EAAE,KAAgB,EAAE,SAAoB;IAC1E,IAAI,IAAI,YAAY,WAAI;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACnC,OAAO,IAAI,YAAK,CACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAiB,EAAE,CAAoB,EAAE,EAAE;QAC7D,IAAI,CAAC,YAAY,WAAI;YAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QACzC,IAAI,CAAC,YAAY,YAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;;YAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,EAAE,CAAC,CACP,CAAA;IAED,SAAS,WAAW,CAAC,CAAO;QAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACnD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACnB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,SAAS,WAAW,CAAC,CAAW;QAC9B,OAAO,CACL,CAAC,YAAY,YAAK;YAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,WAAI,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,CACjF,CACF,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,IAAe;IACtD,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACnE,CAAC;AAGD,SAAgB,GAAG,CAAC,CAAkB;IACpC,OAAO,OAAO,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAC,CAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;AACzF,CAAC;AAFD,kBAEC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAS,CAAC,GAAG,CAAC,CAAA;AAEtC,wDAAwD;AACxD,SAAgB,GAAG,CAAC,GAAG,IAAY;IACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC;AAFD,kBAEC;AAED,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAS,CAAC,EAAE,CAAC,CAAA;AAEpC,uDAAuD;AACvD,SAAgB,EAAE,CAAC,GAAG,IAAY;IAChC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC;AAFD,gBAEC;AAID,SAAS,OAAO,CAAC,EAAQ;IACvB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,UAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,UAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAC,CAAA,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACjF,CAAC;AAED,SAAS,GAAG,CAAC,CAAO;IAClB,OAAO,CAAC,YAAY,WAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAC,CAAA,IAAI,CAAC,GAAG,CAAA;AAC1C,CAAC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/context.d.ts b/node_modules/table/node_modules/ajv/dist/compile/context.d.ts
deleted file mode 100644
index cd88648..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/context.d.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import type { AddedKeywordDefinition, KeywordErrorCxt, KeywordCxtParams, AnySchemaObject } from "../types";
-import { SchemaCxt, SchemaObjCxt } from "./index";
-import { JSONType } from "./rules";
-import { CodeGen, Code, Name } from "./codegen";
-import { SubschemaArgs } from "./subschema";
-export default class KeywordCxt implements KeywordErrorCxt {
-    readonly gen: CodeGen;
-    readonly allErrors?: boolean;
-    readonly keyword: string;
-    readonly data: Name;
-    readonly $data?: string | false;
-    schema: any;
-    readonly schemaValue: Code | number | boolean;
-    readonly schemaCode: Code | number | boolean;
-    readonly schemaType: JSONType[];
-    readonly parentSchema: AnySchemaObject;
-    readonly errsCount?: Name;
-    params: KeywordCxtParams;
-    readonly it: SchemaObjCxt;
-    readonly def: AddedKeywordDefinition;
-    constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string);
-    result(condition: Code, successAction?: () => void, failAction?: () => void): void;
-    pass(condition: Code, failAction?: () => void): void;
-    fail(condition?: Code): void;
-    fail$data(condition: Code): void;
-    error(append?: true): void;
-    $dataError(): void;
-    reset(): void;
-    ok(cond: Code | boolean): void;
-    setParams(obj: KeywordCxtParams, assign?: true): void;
-    block$data(valid: Name, codeBlock: () => void, $dataValid?: Code): void;
-    check$data(valid?: Name, $dataValid?: Code): void;
-    invalid$data(): Code;
-    subschema(appl: SubschemaArgs, valid: Name): SchemaCxt;
-    mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void;
-    mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void;
-}
-export declare function getData($data: string, { dataLevel, dataNames, dataPathArr }: SchemaCxt): Code | number;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/context.js b/node_modules/table/node_modules/ajv/dist/compile/context.js
deleted file mode 100644
index 17dd9ba..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/context.js
+++ /dev/null
@@ -1,240 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getData = void 0;
-const dataType_1 = require("./validate/dataType");
-const util_1 = require("./util");
-const errors_1 = require("./errors");
-const codegen_1 = require("./codegen");
-const names_1 = require("./names");
-const subschema_1 = require("./subschema");
-class KeywordCxt {
-    constructor(it, def, keyword) {
-        validateKeywordUsage(it, def, keyword);
-        this.gen = it.gen;
-        this.allErrors = it.allErrors;
-        this.keyword = keyword;
-        this.data = it.data;
-        this.schema = it.schema[keyword];
-        this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;
-        this.schemaValue = util_1.schemaRefOrVal(it, this.schema, keyword, this.$data);
-        this.schemaType = def.schemaType;
-        this.parentSchema = it.schema;
-        this.params = {};
-        this.it = it;
-        this.def = def;
-        if (this.$data) {
-            this.schemaCode = it.gen.const("vSchema", getData(this.$data, it));
-        }
-        else {
-            this.schemaCode = this.schemaValue;
-            if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {
-                throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);
-            }
-        }
-        if ("code" in def ? def.trackErrors : def.errors !== false) {
-            this.errsCount = it.gen.const("_errs", names_1.default.errors);
-        }
-    }
-    result(condition, successAction, failAction) {
-        this.gen.if(codegen_1.not(condition));
-        if (failAction)
-            failAction();
-        else
-            this.error();
-        if (successAction) {
-            this.gen.else();
-            successAction();
-            if (this.allErrors)
-                this.gen.endIf();
-        }
-        else {
-            if (this.allErrors)
-                this.gen.endIf();
-            else
-                this.gen.else();
-        }
-    }
-    pass(condition, failAction) {
-        this.result(condition, undefined, failAction);
-    }
-    fail(condition) {
-        if (condition === undefined) {
-            this.error();
-            if (!this.allErrors)
-                this.gen.if(false); // this branch will be removed by gen.optimize
-            return;
-        }
-        this.gen.if(condition);
-        this.error();
-        if (this.allErrors)
-            this.gen.endIf();
-        else
-            this.gen.else();
-    }
-    fail$data(condition) {
-        if (!this.$data)
-            return this.fail(condition);
-        const { schemaCode } = this;
-        this.fail(codegen_1._ `${schemaCode} !== undefined && (${codegen_1.or(this.invalid$data(), condition)})`);
-    }
-    error(append) {
-        ;
-        (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error);
-    }
-    $dataError() {
-        errors_1.reportError(this, this.def.$dataError || errors_1.keyword$DataError);
-    }
-    reset() {
-        if (this.errsCount === undefined)
-            throw new Error('add "trackErrors" to keyword definition');
-        errors_1.resetErrorsCount(this.gen, this.errsCount);
-    }
-    ok(cond) {
-        if (!this.allErrors)
-            this.gen.if(cond);
-    }
-    setParams(obj, assign) {
-        if (assign)
-            Object.assign(this.params, obj);
-        else
-            this.params = obj;
-    }
-    block$data(valid, codeBlock, $dataValid = codegen_1.nil) {
-        this.gen.block(() => {
-            this.check$data(valid, $dataValid);
-            codeBlock();
-        });
-    }
-    check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {
-        if (!this.$data)
-            return;
-        const { gen, schemaCode, schemaType, def } = this;
-        gen.if(codegen_1.or(codegen_1._ `${schemaCode} === undefined`, $dataValid));
-        if (valid !== codegen_1.nil)
-            gen.assign(valid, true);
-        if (schemaType.length || def.validateSchema) {
-            gen.elseIf(this.invalid$data());
-            this.$dataError();
-            if (valid !== codegen_1.nil)
-                gen.assign(valid, false);
-        }
-        gen.else();
-    }
-    invalid$data() {
-        const { gen, schemaCode, schemaType, def, it } = this;
-        return codegen_1.or(wrong$DataType(), invalid$DataSchema());
-        function wrong$DataType() {
-            if (schemaType.length) {
-                /* istanbul ignore if */
-                if (!(schemaCode instanceof codegen_1.Name))
-                    throw new Error("ajv implementation error");
-                const st = Array.isArray(schemaType) ? schemaType : [schemaType];
-                return codegen_1._ `${dataType_1.checkDataTypes(st, schemaCode, it.opts.strict, dataType_1.DataType.Wrong)}`;
-            }
-            return codegen_1.nil;
-        }
-        function invalid$DataSchema() {
-            if (def.validateSchema) {
-                const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema }); // TODO value.code for standalone
-                return codegen_1._ `!${validateSchemaRef}(${schemaCode})`;
-            }
-            return codegen_1.nil;
-        }
-    }
-    subschema(appl, valid) {
-        return subschema_1.applySubschema(this.it, appl, valid);
-    }
-    mergeEvaluated(schemaCxt, toName) {
-        const { it, gen } = this;
-        if (!it.opts.unevaluated)
-            return;
-        if (it.props !== true && schemaCxt.props !== undefined) {
-            it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);
-        }
-        if (it.items !== true && schemaCxt.items !== undefined) {
-            it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);
-        }
-    }
-    mergeValidEvaluated(schemaCxt, valid) {
-        const { it, gen } = this;
-        if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {
-            gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));
-            return true;
-        }
-    }
-}
-exports.default = KeywordCxt;
-function validSchemaType(schema, schemaType, allowUndefined = false) {
-    // TODO add tests
-    return (!schemaType.length ||
-        schemaType.some((st) => st === "array"
-            ? Array.isArray(schema)
-            : st === "object"
-                ? schema && typeof schema == "object" && !Array.isArray(schema)
-                : typeof schema == st || (allowUndefined && typeof schema == "undefined")));
-}
-function validateKeywordUsage({ schema, opts, self }, def, keyword) {
-    /* istanbul ignore if */
-    if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {
-        throw new Error("ajv implementation error");
-    }
-    const deps = def.dependencies;
-    if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {
-        throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);
-    }
-    if (def.validateSchema) {
-        const valid = def.validateSchema(schema[keyword]);
-        if (!valid) {
-            const msg = "keyword value is invalid: " + self.errorsText(def.validateSchema.errors);
-            if (opts.validateSchema === "log")
-                self.logger.error(msg);
-            else
-                throw new Error(msg);
-        }
-    }
-}
-const JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
-const RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
-function getData($data, { dataLevel, dataNames, dataPathArr }) {
-    let jsonPointer;
-    let data;
-    if ($data === "")
-        return names_1.default.rootData;
-    if ($data[0] === "/") {
-        if (!JSON_POINTER.test($data))
-            throw new Error(`Invalid JSON-pointer: ${$data}`);
-        jsonPointer = $data;
-        data = names_1.default.rootData;
-    }
-    else {
-        const matches = RELATIVE_JSON_POINTER.exec($data);
-        if (!matches)
-            throw new Error(`Invalid JSON-pointer: ${$data}`);
-        const up = +matches[1];
-        jsonPointer = matches[2];
-        if (jsonPointer === "#") {
-            if (up >= dataLevel)
-                throw new Error(errorMsg("property/index", up));
-            return dataPathArr[dataLevel - up];
-        }
-        if (up > dataLevel)
-            throw new Error(errorMsg("data", up));
-        data = dataNames[dataLevel - up];
-        if (!jsonPointer)
-            return data;
-    }
-    let expr = data;
-    const segments = jsonPointer.split("/");
-    for (const segment of segments) {
-        if (segment) {
-            data = codegen_1._ `${data}${codegen_1.getProperty(util_1.unescapeJsonPointer(segment))}`;
-            expr = codegen_1._ `${expr} && ${data}`;
-        }
-    }
-    return expr;
-    function errorMsg(pointerType, up) {
-        return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;
-    }
-}
-exports.getData = getData;
-//# sourceMappingURL=context.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/context.js.map b/node_modules/table/node_modules/ajv/dist/compile/context.js.map
deleted file mode 100644
index 97d3683..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/context.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"context.js","sourceRoot":"","sources":["../../lib/compile/context.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/equal.d.ts b/node_modules/table/node_modules/ajv/dist/compile/equal.d.ts
deleted file mode 100644
index b1c21f8..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/equal.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-declare const _exports: (a: any, b: any) => boolean;
-export = _exports;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/equal.js b/node_modules/table/node_modules/ajv/dist/compile/equal.js
deleted file mode 100644
index e5b45c3..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/equal.js
+++ /dev/null
@@ -1,5 +0,0 @@
-"use strict";
-// do NOT remove this file - it would break pre-compiled schemas
-// https://github.com/ajv-validator/ajv/issues/889
-module.exports = require("fast-deep-equal");
-//# sourceMappingURL=equal.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/equal.js.map b/node_modules/table/node_modules/ajv/dist/compile/equal.js.map
deleted file mode 100644
index e9d4172..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/equal.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"equal.js","sourceRoot":"","sources":["../../lib/compile/equal.js"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,kDAAkD;AAClD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/error_classes.d.ts b/node_modules/table/node_modules/ajv/dist/compile/error_classes.d.ts
deleted file mode 100644
index a3fca52..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/error_classes.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import type { ErrorObject } from "../types";
-export declare class ValidationError extends Error {
-    readonly errors: Partial<ErrorObject>[];
-    readonly ajv: true;
-    readonly validation: true;
-    constructor(errors: Partial<ErrorObject>[]);
-}
-export declare class MissingRefError extends Error {
-    readonly missingRef: string;
-    readonly missingSchema: string;
-    constructor(baseId: string, ref: string, msg?: string);
-}
diff --git a/node_modules/table/node_modules/ajv/dist/compile/error_classes.js b/node_modules/table/node_modules/ajv/dist/compile/error_classes.js
deleted file mode 100644
index ef39107..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/error_classes.js
+++ /dev/null
@@ -1,25 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.MissingRefError = exports.ValidationError = void 0;
-const resolve_1 = require("./resolve");
-class ValidationError extends Error {
-    constructor(errors) {
-        super("validation failed");
-        this.errors = errors;
-        this.ajv = this.validation = true;
-    }
-}
-exports.ValidationError = ValidationError;
-class MissingRefError extends Error {
-    constructor(baseId, ref, msg) {
-        super(msg || `can't resolve reference ${ref} from id ${baseId}`);
-        this.missingRef = resolve_1.resolveUrl(baseId, ref);
-        this.missingSchema = resolve_1.normalizeId(resolve_1.getFullPath(this.missingRef));
-    }
-}
-exports.MissingRefError = MissingRefError;
-module.exports = {
-    ValidationError,
-    MissingRefError,
-};
-//# sourceMappingURL=error_classes.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/error_classes.js.map b/node_modules/table/node_modules/ajv/dist/compile/error_classes.js.map
deleted file mode 100644
index 47db57c..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/error_classes.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"error_classes.js","sourceRoot":"","sources":["../../lib/compile/error_classes.ts"],"names":[],"mappings":";;;AACA,uCAA8D;AAE9D,MAAa,eAAgB,SAAQ,KAAK;IAKxC,YAAY,MAA8B;QACxC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACnC,CAAC;CACF;AAVD,0CAUC;AAED,MAAa,eAAgB,SAAQ,KAAK;IAIxC,YAAY,MAAc,EAAE,GAAW,EAAE,GAAY;QACnD,KAAK,CAAC,GAAG,IAAI,2BAA2B,GAAG,YAAY,MAAM,EAAE,CAAC,CAAA;QAChE,IAAI,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,aAAa,GAAG,qBAAW,CAAC,qBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAChE,CAAC;CACF;AATD,0CASC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,eAAe;IACf,eAAe;CAChB,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/errors.d.ts b/node_modules/table/node_modules/ajv/dist/compile/errors.d.ts
index 3063dc1..74eef7e 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/errors.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/errors.d.ts
@@ -1,8 +1,13 @@
 import type { KeywordErrorCxt, KeywordErrorDefinition } from "../types";
-import { CodeGen, Name } from "./codegen";
+import { CodeGen, Code, Name } from "./codegen";
 export declare const keywordError: KeywordErrorDefinition;
 export declare const keyword$DataError: KeywordErrorDefinition;
-export declare function reportError(cxt: KeywordErrorCxt, error?: KeywordErrorDefinition, overrideAllErrors?: boolean): void;
-export declare function reportExtraError(cxt: KeywordErrorCxt, error?: KeywordErrorDefinition): void;
+export interface ErrorPaths {
+    instancePath?: Code;
+    schemaPath?: string;
+    parentSchema?: boolean;
+}
+export declare function reportError(cxt: KeywordErrorCxt, error?: KeywordErrorDefinition, errorPaths?: ErrorPaths, overrideAllErrors?: boolean): void;
+export declare function reportExtraError(cxt: KeywordErrorCxt, error?: KeywordErrorDefinition, errorPaths?: ErrorPaths): void;
 export declare function resetErrorsCount(gen: CodeGen, errsCount: Name): void;
 export declare function extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }: KeywordErrorCxt): void;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/errors.js b/node_modules/table/node_modules/ajv/dist/compile/errors.js
index fa886d8..0dcf28b 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/errors.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/errors.js
@@ -2,6 +2,7 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;
 const codegen_1 = require("./codegen");
+const util_1 = require("./util");
 const names_1 = require("./names");
 exports.keywordError = {
     message: ({ keyword }) => codegen_1.str `should pass "${keyword}" keyword validation`,
@@ -11,10 +12,10 @@
         ? codegen_1.str `"${keyword}" keyword must be ${schemaType} ($data)`
         : codegen_1.str `"${keyword}" keyword is invalid ($data)`,
 };
-function reportError(cxt, error = exports.keywordError, overrideAllErrors) {
+function reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {
     const { it } = cxt;
     const { gen, compositeRule, allErrors } = it;
-    const errObj = errorObjectCode(cxt, error);
+    const errObj = errorObjectCode(cxt, error, errorPaths);
     if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {
         addError(gen, errObj);
     }
@@ -23,10 +24,10 @@
     }
 }
 exports.reportError = reportError;
-function reportExtraError(cxt, error = exports.keywordError) {
+function reportExtraError(cxt, error = exports.keywordError, errorPaths) {
     const { it } = cxt;
     const { gen, compositeRule, allErrors } = it;
-    const errObj = errorObjectCode(cxt, error);
+    const errObj = errorObjectCode(cxt, error, errorPaths);
     addError(gen, errObj);
     if (!(compositeRule || allErrors)) {
         returnErrors(it, names_1.default.vErrors);
@@ -45,7 +46,7 @@
     const err = gen.name("err");
     gen.forRange("i", errsCount, names_1.default.errors, (i) => {
         gen.const(err, codegen_1._ `${names_1.default.vErrors}[${i}]`);
-        gen.if(codegen_1._ `${err}.dataPath === undefined`, () => gen.assign(codegen_1._ `${err}.dataPath`, codegen_1.strConcat(names_1.default.dataPath, it.errorPath)));
+        gen.if(codegen_1._ `${err}.instancePath === undefined`, () => gen.assign(codegen_1._ `${err}.instancePath`, codegen_1.strConcat(names_1.default.instancePath, it.errorPath)));
         gen.assign(codegen_1._ `${err}.schemaPath`, codegen_1.str `${it.errSchemaPath}/${keyword}`);
         if (it.opts.verbose) {
             gen.assign(codegen_1._ `${err}.schema`, schemaValue);
@@ -77,45 +78,46 @@
     message: new codegen_1.Name("message"),
     schema: new codegen_1.Name("schema"),
     parentSchema: new codegen_1.Name("parentSchema"),
-    // JTD error properties
-    instancePath: new codegen_1.Name("instancePath"),
 };
-function errorObjectCode(cxt, error) {
-    const { createErrors, opts } = cxt.it;
+function errorObjectCode(cxt, error, errorPaths) {
+    const { createErrors } = cxt.it;
     if (createErrors === false)
         return codegen_1._ `{}`;
-    return (opts.jtd && !opts.ajvErrors ? jtdErrorObject : ajvErrorObject)(cxt, error);
+    return errorObject(cxt, error, errorPaths);
 }
-function jtdErrorObject(cxt, { message }) {
-    const { gen, keyword, it } = cxt;
-    const { errorPath, errSchemaPath, opts } = it;
+function errorObject(cxt, error, errorPaths = {}) {
+    const { gen, it } = cxt;
     const keyValues = [
-        [E.instancePath, codegen_1.strConcat(names_1.default.dataPath, errorPath)],
-        [E.schemaPath, codegen_1.str `${errSchemaPath}/${keyword}`],
+        errorInstancePath(it, errorPaths),
+        errorSchemaPath(cxt, errorPaths),
     ];
-    if (opts.messages) {
-        keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]);
-    }
+    extraErrorProps(cxt, error, keyValues);
     return gen.object(...keyValues);
 }
-function ajvErrorObject(cxt, error) {
-    const { gen, keyword, data, schemaValue, it } = cxt;
-    const { topSchemaRef, schemaPath, errorPath, errSchemaPath, propertyName, opts } = it;
-    const { params, message } = error;
-    const keyValues = [
-        [E.keyword, keyword],
-        [names_1.default.dataPath, codegen_1.strConcat(names_1.default.dataPath, errorPath)],
-        [E.schemaPath, codegen_1.str `${errSchemaPath}/${keyword}`],
-        [E.params, typeof params == "function" ? params(cxt) : params || codegen_1._ `{}`],
-    ];
-    if (propertyName)
-        keyValues.push([E.propertyName, propertyName]);
+function errorInstancePath({ errorPath }, { instancePath }) {
+    const instPath = instancePath
+        ? codegen_1.str `${errorPath}${util_1.getErrorPath(instancePath, util_1.Type.Str)}`
+        : errorPath;
+    return [names_1.default.instancePath, codegen_1.strConcat(names_1.default.instancePath, instPath)];
+}
+function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {
+    let schPath = parentSchema ? errSchemaPath : codegen_1.str `${errSchemaPath}/${keyword}`;
+    if (schemaPath) {
+        schPath = codegen_1.str `${schPath}${util_1.getErrorPath(schemaPath, util_1.Type.Str)}`;
+    }
+    return [E.schemaPath, schPath];
+}
+function extraErrorProps(cxt, { params, message }, keyValues) {
+    const { keyword, data, schemaValue, it } = cxt;
+    const { opts, propertyName, topSchemaRef, schemaPath } = it;
+    keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || codegen_1._ `{}`]);
     if (opts.messages) {
         keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]);
     }
     if (opts.verbose) {
         keyValues.push([E.schema, schemaValue], [E.parentSchema, codegen_1._ `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);
     }
-    return gen.object(...keyValues);
+    if (propertyName)
+        keyValues.push([E.propertyName, propertyName]);
 }
 //# sourceMappingURL=errors.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/errors.js.map b/node_modules/table/node_modules/ajv/dist/compile/errors.js.map
index bf58729..a6c1030 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/errors.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/errors.js.map
@@ -1 +1 @@
-{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/compile/errors.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/compile/errors.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/index.d.ts b/node_modules/table/node_modules/ajv/dist/compile/index.d.ts
index b8715aa..5729196 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/index.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/index.d.ts
@@ -46,6 +46,7 @@
     readonly schema: AnySchema;
     readonly root?: SchemaEnv;
     readonly baseId?: string;
+    readonly schemaPath?: string;
     readonly localRefs?: LocalRefs;
     readonly meta?: boolean;
 }
@@ -53,6 +54,7 @@
     readonly schema: AnySchema;
     readonly root: SchemaEnv;
     baseId: string;
+    schemaPath?: string;
     localRefs?: LocalRefs;
     readonly meta?: boolean;
     readonly $async?: boolean;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/index.js b/node_modules/table/node_modules/ajv/dist/compile/index.js
index 1e3d4d9..a74adf2 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/index.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/index.js
@@ -2,7 +2,7 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;
 const codegen_1 = require("./codegen");
-const error_classes_1 = require("./error_classes");
+const validation_error_1 = require("../runtime/validation_error");
 const names_1 = require("./names");
 const resolve_1 = require("./resolve");
 const util_1 = require("./util");
@@ -19,6 +19,7 @@
         this.schema = env.schema;
         this.root = env.root || this;
         this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : resolve_1.normalizeId(schema === null || schema === void 0 ? void 0 : schema.$id);
+        this.schemaPath = env.schemaPath;
         this.localRefs = env.localRefs;
         this.meta = env.meta;
         this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;
@@ -41,8 +42,8 @@
     let _ValidationError;
     if (sch.$async) {
         _ValidationError = gen.scopeValue("Error", {
-            ref: error_classes_1.ValidationError,
-            code: codegen_1._ `require("ajv/dist/compile/error_classes").ValidationError`,
+            ref: validation_error_1.default,
+            code: codegen_1._ `require("ajv/dist/runtime/validation_error").default`,
         });
     }
     const validateName = gen.scopeName("validate");
@@ -68,7 +69,7 @@
         rootId,
         baseId: sch.baseId || rootId,
         schemaPath: codegen_1.nil,
-        errSchemaPath: this.opts.jtd ? "" : "#",
+        errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"),
         errorPath: codegen_1._ `""`,
         opts: this.opts,
         self: this,
diff --git a/node_modules/table/node_modules/ajv/dist/compile/index.js.map b/node_modules/table/node_modules/ajv/dist/compile/index.js.map
index 4408527..5de0c74 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/index.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/compile/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/compile/index.ts"],"names":[],"mappings":";;;AAUA,uCAAgF;AAChF,kEAAyD;AACzD,mCAAuB;AACvB,uCAAkG;AAClG,iCAA6D;AAC7D,yCAA+C;AAC/C,8BAA6B;AAwD7B,MAAa,SAAS;IAiBpB,YAAY,GAAkB;;QATrB,SAAI,GAAe,EAAE,CAAA;QACrB,mBAAc,GAA6B,EAAE,CAAA;QASpD,IAAI,MAAmC,CAAA;QACvC,IAAI,OAAO,GAAG,CAAC,MAAM,IAAI,QAAQ;YAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;QACtD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAA,GAAG,CAAC,MAAM,mCAAI,qBAAW,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,CAAA;QACpD,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;IAChB,CAAC;CACF;AA7BD,8BA6BC;AAED,mBAAmB;AACnB,oBAAoB;AAEpB,+BAA+B;AAC/B,SAAgB,aAAa,CAAY,GAAc;IACrD,sCAAsC;IACtC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC/C,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,MAAM,GAAG,qBAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,4CAA4C;IACxF,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IACnC,MAAM,EAAC,aAAa,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;IACjC,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC,CAAA;IAChE,IAAI,gBAAgB,CAAA;IACpB,IAAI,GAAG,CAAC,MAAM,EAAE;QACd,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE;YACzC,GAAG,EAAE,0BAAe;YACpB,IAAI,EAAE,WAAC,CAAA,sDAAsD;SAC9D,CAAC,CAAA;KACH;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAC9C,GAAG,CAAC,YAAY,GAAG,YAAY,CAAA;IAE/B,MAAM,SAAS,GAAc;QAC3B,GAAG;QACH,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;QAC9B,IAAI,EAAE,eAAC,CAAC,IAAI;QACZ,UAAU,EAAE,eAAC,CAAC,UAAU;QACxB,kBAAkB,EAAE,eAAC,CAAC,kBAAkB;QACxC,SAAS,EAAE,CAAC,eAAC,CAAC,IAAI,CAAC;QACnB,WAAW,EAAE,CAAC,aAAG,CAAC;QAClB,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;QACb,iBAAiB,EAAE,IAAI,GAAG,EAAU;QACpC,YAAY,EAAE,GAAG,CAAC,UAAU,CAC1B,QAAQ,EACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI;YAC5B,CAAC,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAC;YAChD,CAAC,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAC,CACtB;QACD,YAAY;QACZ,eAAe,EAAE,gBAAgB;QACjC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG;QACd,MAAM;QACN,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM;QAC5B,UAAU,EAAE,aAAG;QACf,aAAa,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3D,SAAS,EAAE,WAAC,CAAA,IAAI;QAChB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI;KACX,CAAA;IAED,IAAI,UAA8B,CAAA;IAClC,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,+BAAoB,CAAC,SAAS,CAAC,CAAA;QAC/B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,kBAAkB;QAClB,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QACnC,UAAU,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,eAAC,CAAC,KAAK,CAAC,UAAU,YAAY,EAAE,CAAA;QAC9D,6EAA6E;QAC7E,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAChF,2CAA2C;QAC3C,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,GAAG,eAAC,CAAC,IAAI,EAAE,EAAE,GAAG,eAAC,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAwB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAC,CAAC,CAAA;QAE/C,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;QAC5B,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAA;QACxB,IAAI,GAAG,CAAC,MAAM;YAAG,QAAkC,CAAC,MAAM,GAAG,IAAI,CAAA;QACjE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YAClC,QAAQ,CAAC,MAAM,GAAG,EAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,EAAC,CAAA;SACzE;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACzB,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,SAAS,CAAA;YAChC,QAAQ,CAAC,SAAS,GAAG;gBACnB,KAAK,EAAE,KAAK,YAAY,cAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;gBAChD,KAAK,EAAE,KAAK,YAAY,cAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;gBAChD,YAAY,EAAE,KAAK,YAAY,cAAI;gBACnC,YAAY,EAAE,KAAK,YAAY,cAAI;aACpC,CAAA;YACD,IAAI,QAAQ,CAAC,MAAM;gBAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,mBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;SAC/E;QACD,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACvB,OAAO,GAAG,CAAA;KACX;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,GAAG,CAAC,QAAQ,CAAA;QACnB,OAAO,GAAG,CAAC,YAAY,CAAA;QACvB,IAAI,UAAU;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAA;QACvF,sDAAsD;QACtD,MAAM,CAAC,CAAA;KACR;YAAS;QACR,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KAC/B;AACH,CAAC;AA5FD,sCA4FC;AAED,SAAgB,UAAU,CAExB,IAAe,EACf,MAAc,EACd,GAAW;;IAEX,GAAG,GAAG,oBAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAG,GAAG,CAAC,CAAA,CAAC,6CAA6C;QAClF,IAAI,MAAM;YAAE,IAAI,GAAG,IAAI,SAAS,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;KACzD;IAED,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC5D,CAAC;AAlBD,gCAkBC;AAED,SAAS,eAAe,CAAY,GAAc;IAChD,IAAI,mBAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAA;IAClE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC3D,CAAC;AAED,6DAA6D;AAC7D,SAAgB,kBAAkB,CAAY,MAAiB;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;QACpC,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;YAAE,OAAO,GAAG,CAAA;KAC3C;AACH,CAAC;AAJD,gDAIC;AAED,SAAS,aAAa,CAAC,EAAa,EAAE,EAAa;IACjD,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAA;AAClF,CAAC;AAED,4CAA4C;AAC5C,qFAAqF;AACrF,SAAS,OAAO,CAEd,IAAe,EAAE,2DAA2D;AAC5E,GAAW,CAAC,uBAAuB;;IAEnC,IAAI,GAAG,CAAA;IACP,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ;QAAE,GAAG,GAAG,GAAG,CAAA;IAC3D,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;AACxE,CAAC;AAED,sCAAsC;AACtC,SAAgB,aAAa,CAE3B,IAAe,EAAE,kFAAkF;AACnG,GAAW,CAAC,uBAAuB;;IAEnC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,MAAM,OAAO,GAAG,sBAAY,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,MAAM,GAAG,qBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,gGAAgG;IAChG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,MAAM,EAAE;QAC7D,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;KAC1C;IAED,MAAM,EAAE,GAAG,qBAAW,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;QAC/B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,IAAI,OAAO,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,KAAK,QAAQ;YAAE,OAAM;QAC3C,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;KACzC;IAED,IAAI,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,KAAK,QAAQ;QAAE,OAAM;IAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC1D,IAAI,EAAE,KAAK,qBAAW,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,EAAC,MAAM,EAAC,GAAG,QAAQ,CAAA;QACzB,IAAI,MAAM,CAAC,GAAG;YAAE,MAAM,GAAG,oBAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACvD,OAAO,IAAI,SAAS,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;KAC7C;IACD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC;AA7BD,sCA6BC;AAED,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,YAAY;IACZ,mBAAmB;IACnB,MAAM;IACN,cAAc;IACd,aAAa;CACd,CAAC,CAAA;AAEF,SAAS,cAAc,CAErB,SAA4B,EAC5B,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAY;;IAEjC,IAAI,CAAA,MAAA,SAAS,CAAC,QAAQ,0CAAG,CAAC,CAAC,MAAK,GAAG;QAAE,OAAM;IAC3C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACzD,IAAI,OAAO,MAAM,IAAI,SAAS;YAAE,OAAM;QACtC,MAAM,GAAG,MAAM,CAAC,uBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,6DAA6D;QAC7D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE;YAC9E,MAAM,GAAG,oBAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;SACxC;KACF;IACD,IAAI,GAA0B,CAAA;IAC9B,IAAI,OAAO,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,2BAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QAC1F,MAAM,IAAI,GAAG,oBAAU,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;KAC3C;IACD,+EAA+E;IAC/E,6CAA6C;IAC7C,GAAG,GAAG,GAAG,IAAI,IAAI,SAAS,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;IAClD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAA;IAC9C,OAAO,SAAS,CAAA;AAClB,CAAC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js b/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js
index f1427d6..aa0be5b 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js
@@ -3,14 +3,14 @@
 const types_1 = require("./types");
 const __1 = require("..");
 const codegen_1 = require("../codegen");
-const error_classes_1 = require("../error_classes");
+const ref_error_1 = require("../ref_error");
 const names_1 = require("../names");
 const code_1 = require("../../vocabularies/code");
 const ref_1 = require("../../vocabularies/jtd/ref");
 const type_1 = require("../../vocabularies/jtd/type");
 const parseJson_1 = require("../../runtime/parseJson");
 const util_1 = require("../util");
-const timestamp_1 = require("../timestamp");
+const timestamp_1 = require("../../runtime/timestamp");
 const genParse = {
     elements: parseElements,
     values: parseValues,
@@ -231,7 +231,7 @@
         case "timestamp": {
             // TODO parse timestamp?
             parseString(cxt);
-            const vts = util_1.func(gen, timestamp_1.default);
+            const vts = util_1.useFunc(gen, timestamp_1.default);
             gen.if(codegen_1._ `!${vts}(${data})`, () => parsingError(cxt, codegen_1.str `invalid timestamp`));
             break;
         }
@@ -282,7 +282,7 @@
     const { ref } = schema;
     const refSchema = definitions[ref];
     if (!refSchema)
-        throw new error_classes_1.MissingRefError("", ref, `No definition ${ref}`);
+        throw new ref_error_1.default("", ref, `No definition ${ref}`);
     if (!ref_1.hasRef(refSchema))
         return parseCode({ ...cxt, schema: refSchema });
     const { root } = schemaEnv;
@@ -298,11 +298,7 @@
     parseWith(cxt, parseJson_1.parseJson);
 }
 function parseWith(cxt, parseFunc, args) {
-    const f = cxt.gen.scopeValue("func", {
-        ref: parseFunc,
-        code: parseFunc.code,
-    });
-    partialParse(cxt, f, args);
+    partialParse(cxt, util_1.useFunc(cxt.gen, parseFunc), args);
 }
 function partialParse(cxt, parseFunc, args) {
     const { gen, data } = cxt;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js.map b/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js.map
index 726f71a..16a6a0d 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/jtd/parse.js.map
@@ -1 +1 @@
-{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../lib/compile/jtd/parse.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../lib/compile/jtd/parse.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js b/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js
index 26148fe..69f0f56 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js
@@ -3,10 +3,11 @@
 const types_1 = require("./types");
 const __1 = require("..");
 const codegen_1 = require("../codegen");
-const error_classes_1 = require("../error_classes");
+const ref_error_1 = require("../ref_error");
 const names_1 = require("../names");
 const code_1 = require("../../vocabularies/code");
 const ref_1 = require("../../vocabularies/jtd/ref");
+const util_1 = require("../util");
 const quote_1 = require("../../runtime/quote");
 const genSerialize = {
     elements: serializeElements,
@@ -186,7 +187,7 @@
     }
 }
 function serializeString({ gen, data }) {
-    gen.add(names_1.default.json, codegen_1._ `${quoteFunc(gen)}(${data})`);
+    gen.add(names_1.default.json, codegen_1._ `${util_1.useFunc(gen, quote_1.default)}(${data})`);
 }
 function serializeNumber({ gen, data }) {
     gen.add(names_1.default.json, codegen_1._ `"" + ${data}`);
@@ -196,7 +197,7 @@
     const { ref } = schema;
     const refSchema = definitions[ref];
     if (!refSchema)
-        throw new error_classes_1.MissingRefError("", ref, `No definition ${ref}`);
+        throw new ref_error_1.default("", ref, `No definition ${ref}`);
     if (!ref_1.hasRef(refSchema))
         return serializeCode({ ...cxt, schema: refSchema });
     const { root } = schemaEnv;
@@ -214,10 +215,4 @@
 function addComma({ gen }, first) {
     gen.if(first, () => gen.assign(first, false), () => gen.add(names_1.default.json, codegen_1.str `,`));
 }
-function quoteFunc(gen) {
-    return gen.scopeValue("func", {
-        ref: quote_1.default,
-        code: codegen_1._ `require("ajv/dist/runtime/quote").default`,
-    });
-}
 //# sourceMappingURL=serialize.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js.map b/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js.map
index 6d96872..b3b9c30 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/jtd/serialize.js.map
@@ -1 +1 @@
-{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../lib/compile/jtd/serialize.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../lib/compile/jtd/serialize.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/names.d.ts b/node_modules/table/node_modules/ajv/dist/compile/names.d.ts
index 4a3a705..5740e82 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/names.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/names.d.ts
@@ -2,7 +2,7 @@
 declare const names: {
     data: Name;
     valCxt: Name;
-    dataPath: Name;
+    instancePath: Name;
     parentData: Name;
     parentDataProperty: Name;
     rootData: Name;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/names.js b/node_modules/table/node_modules/ajv/dist/compile/names.js
index 02e80b8..015334b 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/names.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/names.js
@@ -6,7 +6,7 @@
     data: new codegen_1.Name("data"),
     // args passed from referencing schema
     valCxt: new codegen_1.Name("valCxt"),
-    dataPath: new codegen_1.Name("dataPath"),
+    instancePath: new codegen_1.Name("instancePath"),
     parentData: new codegen_1.Name("parentData"),
     parentDataProperty: new codegen_1.Name("parentDataProperty"),
     rootData: new codegen_1.Name("rootData"),
diff --git a/node_modules/table/node_modules/ajv/dist/compile/names.js.map b/node_modules/table/node_modules/ajv/dist/compile/names.js.map
index 658e2f5..9bbe8e2 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/names.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/names.js.map
@@ -1 +1 @@
-{"version":3,"file":"names.js","sourceRoot":"","sources":["../../lib/compile/names.ts"],"names":[],"mappings":";;AAAA,uCAA8B;AAE9B,MAAM,KAAK,GAAG;IACZ,gCAAgC;IAChC,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,sCAAsC;IACtC,MAAM,EAAE,IAAI,cAAI,CAAC,QAAQ,CAAC;IAC1B,QAAQ,EAAE,IAAI,cAAI,CAAC,UAAU,CAAC;IAC9B,UAAU,EAAE,IAAI,cAAI,CAAC,YAAY,CAAC;IAClC,kBAAkB,EAAE,IAAI,cAAI,CAAC,oBAAoB,CAAC;IAClD,QAAQ,EAAE,IAAI,cAAI,CAAC,UAAU,CAAC;IAC9B,cAAc,EAAE,IAAI,cAAI,CAAC,gBAAgB,CAAC;IAC1C,4BAA4B;IAC5B,OAAO,EAAE,IAAI,cAAI,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,IAAI,cAAI,CAAC,QAAQ,CAAC;IAC1B,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,YAAY;IACZ,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,KAAK,EAAE,IAAI,cAAI,CAAC,OAAO,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,OAAO,EAAE,IAAI,cAAI,CAAC,SAAS,CAAC;IAC5B,OAAO,EAAE,IAAI,cAAI,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,IAAI,cAAI,CAAC,UAAU,CAAC;CAC/B,CAAA;AAED,kBAAe,KAAK,CAAA"}
\ No newline at end of file
+{"version":3,"file":"names.js","sourceRoot":"","sources":["../../lib/compile/names.ts"],"names":[],"mappings":";;AAAA,uCAA8B;AAE9B,MAAM,KAAK,GAAG;IACZ,gCAAgC;IAChC,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,sCAAsC;IACtC,MAAM,EAAE,IAAI,cAAI,CAAC,QAAQ,CAAC;IAC1B,YAAY,EAAE,IAAI,cAAI,CAAC,cAAc,CAAC;IACtC,UAAU,EAAE,IAAI,cAAI,CAAC,YAAY,CAAC;IAClC,kBAAkB,EAAE,IAAI,cAAI,CAAC,oBAAoB,CAAC;IAClD,QAAQ,EAAE,IAAI,cAAI,CAAC,UAAU,CAAC;IAC9B,cAAc,EAAE,IAAI,cAAI,CAAC,gBAAgB,CAAC;IAC1C,4BAA4B;IAC5B,OAAO,EAAE,IAAI,cAAI,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,IAAI,cAAI,CAAC,QAAQ,CAAC;IAC1B,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,YAAY;IACZ,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,KAAK,EAAE,IAAI,cAAI,CAAC,OAAO,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,IAAI,cAAI,CAAC,MAAM,CAAC;IACtB,OAAO,EAAE,IAAI,cAAI,CAAC,SAAS,CAAC;IAC5B,OAAO,EAAE,IAAI,cAAI,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,IAAI,cAAI,CAAC,UAAU,CAAC;CAC/B,CAAA;AAED,kBAAe,KAAK,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/ref_error.d.ts b/node_modules/table/node_modules/ajv/dist/compile/ref_error.d.ts
new file mode 100644
index 0000000..33e06e6
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/compile/ref_error.d.ts
@@ -0,0 +1,5 @@
+export default class MissingRefError extends Error {
+    readonly missingRef: string;
+    readonly missingSchema: string;
+    constructor(baseId: string, ref: string, msg?: string);
+}
diff --git a/node_modules/table/node_modules/ajv/dist/compile/ref_error.js b/node_modules/table/node_modules/ajv/dist/compile/ref_error.js
new file mode 100644
index 0000000..b4c8cc3
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/compile/ref_error.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const resolve_1 = require("./resolve");
+class MissingRefError extends Error {
+    constructor(baseId, ref, msg) {
+        super(msg || `can't resolve reference ${ref} from id ${baseId}`);
+        this.missingRef = resolve_1.resolveUrl(baseId, ref);
+        this.missingSchema = resolve_1.normalizeId(resolve_1.getFullPath(this.missingRef));
+    }
+}
+exports.default = MissingRefError;
+//# sourceMappingURL=ref_error.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/ref_error.js.map b/node_modules/table/node_modules/ajv/dist/compile/ref_error.js.map
new file mode 100644
index 0000000..d57dfb3
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/compile/ref_error.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ref_error.js","sourceRoot":"","sources":["../../lib/compile/ref_error.ts"],"names":[],"mappings":";;AAAA,uCAA8D;AAE9D,MAAqB,eAAgB,SAAQ,KAAK;IAIhD,YAAY,MAAc,EAAE,GAAW,EAAE,GAAY;QACnD,KAAK,CAAC,GAAG,IAAI,2BAA2B,GAAG,YAAY,MAAM,EAAE,CAAC,CAAA;QAChE,IAAI,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,aAAa,GAAG,qBAAW,CAAC,qBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAChE,CAAC;CACF;AATD,kCASC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/subschema.d.ts b/node_modules/table/node_modules/ajv/dist/compile/subschema.d.ts
deleted file mode 100644
index b99d524..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/subschema.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import type { AnySchema } from "../types";
-import type { SchemaObjCxt, SchemaCxt } from "./index";
-import { Code, Name } from "./codegen";
-import { JSONType } from "./rules";
-export declare enum Type {
-    Num = 0,
-    Str = 1
-}
-export declare type SubschemaArgs = Partial<{
-    keyword: string;
-    schemaProp: string | number;
-    schema: AnySchema;
-    schemaPath: Code;
-    errSchemaPath: string;
-    topSchemaRef: Code;
-    data: Name | Code;
-    dataProp: Code | string | number;
-    dataTypes: JSONType[];
-    definedProperties: Set<string>;
-    propertyName: Name;
-    dataPropType: Type;
-    jtdDiscriminator: string;
-    jtdMetadata: boolean;
-    compositeRule: true;
-    createErrors: boolean;
-    allErrors: boolean;
-}>;
-export declare function applySubschema(it: SchemaObjCxt, appl: SubschemaArgs, valid: Name): SchemaCxt;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/subschema.js.map b/node_modules/table/node_modules/ajv/dist/compile/subschema.js.map
deleted file mode 100644
index 27a2587..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/subschema.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"subschema.js","sourceRoot":"","sources":["../../lib/compile/subschema.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/timestamp.js.map b/node_modules/table/node_modules/ajv/dist/compile/timestamp.js.map
deleted file mode 100644
index dd2a1b6..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/timestamp.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../lib/compile/timestamp.ts"],"names":[],"mappings":";;AAAA,uCAA2B;AAE3B,MAAM,SAAS,GAAG,gGAAgG,CAAA;AAClH,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAEhE,SAAwB,cAAc,CAAC,GAAW;IAChD,iDAAiD;IACjD,MAAM,OAAO,GAAoB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,MAAM,GAAG,GAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,OAAO,CACL,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,CAAC;QACN,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACX,4DAA4D;YAC5D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;YACnC,cAAc;YACd,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CACvD,CAAA;AACH,CAAC;AAvBD,iCAuBC;AAED,cAAc,CAAC,IAAI,GAAG,WAAC,CAAA,+CAA+C,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/ucs2length.d.ts b/node_modules/table/node_modules/ajv/dist/compile/ucs2length.d.ts
deleted file mode 100644
index b51c234..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/ucs2length.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default function ucs2length(str: string): number;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/util.d.ts b/node_modules/table/node_modules/ajv/dist/compile/util.d.ts
index e10a27e..17042cf 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/util.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/util.d.ts
@@ -28,7 +28,13 @@
 export declare function setEvaluated(gen: CodeGen, props: Name, ps: {
     [K in string]?: true;
 }): void;
-export declare function func(gen: CodeGen, f: {
-    code: Code;
+export declare function useFunc(gen: CodeGen, f: {
+    code: string;
 }): Name;
+export declare enum Type {
+    Num = 0,
+    Str = 1
+}
+export declare function getErrorPath(dataProp: Name | string | number, dataPropType?: Type, jsPropertySyntax?: boolean): Code | string;
+export declare function checkStrictMode(it: SchemaCxt, msg: string, mode?: boolean | "log"): void;
 export {};
diff --git a/node_modules/table/node_modules/ajv/dist/compile/util.js b/node_modules/table/node_modules/ajv/dist/compile/util.js
index 35b4e43..b877ea7 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/util.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/util.js
@@ -1,8 +1,8 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.func = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;
+exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;
 const codegen_1 = require("./codegen");
-const validate_1 = require("./validate");
+const code_1 = require("./codegen/code");
 // TODO refactor to use Set
 function toHash(arr) {
     const hash = {};
@@ -22,14 +22,14 @@
 exports.alwaysValidSchema = alwaysValidSchema;
 function checkUnknownRules(it, schema = it.schema) {
     const { opts, self } = it;
-    if (!opts.strict)
+    if (!opts.strictSchema)
         return;
     if (typeof schema === "boolean")
         return;
     const rules = self.RULES.keywords;
     for (const key in schema) {
         if (!rules[key])
-            validate_1.checkStrictMode(it, `unknown keyword: "${key}"`);
+            checkStrictMode(it, `unknown keyword: "${key}"`);
     }
 }
 exports.checkUnknownRules = checkUnknownRules;
@@ -138,11 +138,41 @@
     Object.keys(ps).forEach((p) => gen.assign(codegen_1._ `${props}${codegen_1.getProperty(p)}`, true));
 }
 exports.setEvaluated = setEvaluated;
-function func(gen, f) {
+const snippets = {};
+function useFunc(gen, f) {
     return gen.scopeValue("func", {
         ref: f,
-        code: f.code,
+        code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),
     });
 }
-exports.func = func;
+exports.useFunc = useFunc;
+var Type;
+(function (Type) {
+    Type[Type["Num"] = 0] = "Num";
+    Type[Type["Str"] = 1] = "Str";
+})(Type = exports.Type || (exports.Type = {}));
+function getErrorPath(dataProp, dataPropType, jsPropertySyntax) {
+    // let path
+    if (dataProp instanceof codegen_1.Name) {
+        const isNumber = dataPropType === Type.Num;
+        return jsPropertySyntax
+            ? isNumber
+                ? codegen_1._ `"[" + ${dataProp} + "]"`
+                : codegen_1._ `"['" + ${dataProp} + "']"`
+            : isNumber
+                ? codegen_1._ `"/" + ${dataProp}`
+                : codegen_1._ `"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`; // TODO maybe use global escapePointer
+    }
+    return jsPropertySyntax ? codegen_1.getProperty(dataProp).toString() : "/" + escapeJsonPointer(dataProp);
+}
+exports.getErrorPath = getErrorPath;
+function checkStrictMode(it, msg, mode = it.opts.strictSchema) {
+    if (!mode)
+        return;
+    msg = `strict mode: ${msg}`;
+    if (mode === true)
+        throw new Error(msg);
+    it.self.logger.warn(msg);
+}
+exports.checkStrictMode = checkStrictMode;
 //# sourceMappingURL=util.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/util.js.map b/node_modules/table/node_modules/ajv/dist/compile/util.js.map
index 128e00b..46a9949 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/util.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/util.js.map
@@ -1 +1 @@
-{"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/compile/util.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/compile/util.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js b/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js
index 52919a9..42fdd1f 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js
@@ -45,6 +45,6 @@
         params: {},
         it,
     };
-    errors_1.reportError(cxt, boolError, overrideAllErrors);
+    errors_1.reportError(cxt, boolError, undefined, overrideAllErrors);
 }
 //# sourceMappingURL=boolSchema.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js.map
index 4a6fd9b..3b92ecc 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/boolSchema.js.map
@@ -1 +1 @@
-{"version":3,"file":"boolSchema.js","sourceRoot":"","sources":["../../../lib/compile/validate/boolSchema.ts"],"names":[],"mappings":";;;AAEA,sCAAqC;AACrC,wCAAkC;AAClC,oCAAwB;AAExB,MAAM,SAAS,GAA2B;IACxC,OAAO,EAAE,yBAAyB;CACnC,CAAA;AAED,SAAgB,oBAAoB,CAAC,EAAa;IAChD,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,EAAE,CAAA;IACtC,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;KAC5B;SAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;QAC9D,GAAG,CAAC,MAAM,CAAC,eAAC,CAAC,IAAI,CAAC,CAAA;KACnB;SAAM;QACL,GAAG,CAAC,MAAM,CAAC,WAAC,CAAA,GAAG,YAAY,SAAS,EAAE,IAAI,CAAC,CAAA;QAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KACjB;AACH,CAAC;AAVD,oDAUC;AAED,SAAgB,iBAAiB,CAAC,EAAa,EAAE,KAAW;IAC1D,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,EAAE,CAAA;IACxB,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA,CAAC,WAAW;QACjC,gBAAgB,CAAC,EAAE,CAAC,CAAA;KACrB;SAAM;QACL,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA,CAAC,WAAW;KACjC;AACH,CAAC;AARD,8CAQC;AAED,SAAS,gBAAgB,CAAC,EAAa,EAAE,iBAA2B;IAClE,MAAM,EAAC,GAAG,EAAE,IAAI,EAAC,GAAG,EAAE,CAAA;IACtB,sFAAsF;IACtF,MAAM,GAAG,GAAoB;QAC3B,GAAG;QACH,OAAO,EAAE,cAAc;QACvB,IAAI;QACJ,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;QACV,EAAE;KACH,CAAA;IACD,oBAAW,CAAC,GAAG,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;AAChD,CAAC"}
\ No newline at end of file
+{"version":3,"file":"boolSchema.js","sourceRoot":"","sources":["../../../lib/compile/validate/boolSchema.ts"],"names":[],"mappings":";;;AAEA,sCAAqC;AACrC,wCAAkC;AAClC,oCAAwB;AAExB,MAAM,SAAS,GAA2B;IACxC,OAAO,EAAE,yBAAyB;CACnC,CAAA;AAED,SAAgB,oBAAoB,CAAC,EAAa;IAChD,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,EAAE,CAAA;IACtC,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;KAC5B;SAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;QAC9D,GAAG,CAAC,MAAM,CAAC,eAAC,CAAC,IAAI,CAAC,CAAA;KACnB;SAAM;QACL,GAAG,CAAC,MAAM,CAAC,WAAC,CAAA,GAAG,YAAY,SAAS,EAAE,IAAI,CAAC,CAAA;QAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KACjB;AACH,CAAC;AAVD,oDAUC;AAED,SAAgB,iBAAiB,CAAC,EAAa,EAAE,KAAW;IAC1D,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,EAAE,CAAA;IACxB,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA,CAAC,WAAW;QACjC,gBAAgB,CAAC,EAAE,CAAC,CAAA;KACrB;SAAM;QACL,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA,CAAC,WAAW;KACjC;AACH,CAAC;AARD,8CAQC;AAED,SAAS,gBAAgB,CAAC,EAAa,EAAE,iBAA2B;IAClE,MAAM,EAAC,GAAG,EAAE,IAAI,EAAC,GAAG,EAAE,CAAA;IACtB,sFAAsF;IACtF,MAAM,GAAG,GAAoB;QAC3B,GAAG;QACH,OAAO,EAAE,cAAc;QACvB,IAAI;QACJ,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;QACV,EAAE;KACH,CAAA;IACD,oBAAW,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;AAC3D,CAAC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js b/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js
index 89dee09..6319e76 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js
@@ -41,7 +41,7 @@
     const checkTypes = types.length > 0 &&
         !(coerceTo.length === 0 && types.length === 1 && applicability_1.schemaHasRulesForType(it, types[0]));
     if (checkTypes) {
-        const wrongType = checkDataTypes(types, data, opts.strict, DataType.Wrong);
+        const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);
         gen.if(wrongType, () => {
             if (coerceTo.length)
                 coerceData(it, types, coerceTo);
@@ -66,7 +66,7 @@
         gen.if(codegen_1._ `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen
             .assign(data, codegen_1._ `${data}[0]`)
             .assign(dataType, codegen_1._ `typeof ${data}`)
-            .if(checkDataTypes(types, data, opts.strict), () => gen.assign(coerced, data)));
+            .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));
     }
     gen.if(codegen_1._ `${coerced} !== undefined`);
     for (const t of coerceTo) {
@@ -176,7 +176,7 @@
 }
 exports.checkDataTypes = checkDataTypes;
 const typeError = {
-    message: ({ schema }) => codegen_1.str `should be ${schema}`,
+    message: ({ schema }) => `must be ${schema}`,
     params: ({ schema, schemaValue }) => typeof schema == "string" ? codegen_1._ `{type: ${schema}}` : codegen_1._ `{type: ${schemaValue}}`,
 };
 function reportTypeError(it) {
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js.map
index f33013e..f25ee4c 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/dataType.js.map
@@ -1 +1 @@
-{"version":3,"file":"dataType.js","sourceRoot":"","sources":["../../../lib/compile/validate/dataType.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"dataType.js","sourceRoot":"","sources":["../../../lib/compile/validate/dataType.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js b/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js
index 542e05a..41ca3fd 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js
@@ -2,7 +2,7 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.assignDefaults = void 0;
 const codegen_1 = require("../codegen");
-const _1 = require(".");
+const util_1 = require("../util");
 function assignDefaults(it, ty) {
     const { properties, items } = it.schema;
     if (ty === "object" && properties) {
@@ -21,7 +21,7 @@
         return;
     const childData = codegen_1._ `${data}${codegen_1.getProperty(prop)}`;
     if (compositeRule) {
-        _1.checkStrictMode(it, `default is ignored for: ${childData}`);
+        util_1.checkStrictMode(it, `default is ignored for: ${childData}`);
         return;
     }
     let condition = codegen_1._ `${childData} === undefined`;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js.map
index 8efc19d..a4e3e74 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/defaults.js.map
@@ -1 +1 @@
-{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../lib/compile/validate/defaults.ts"],"names":[],"mappings":";;;AACA,wCAAoD;AACpD,wBAAiC;AAEjC,SAAgB,cAAc,CAAC,EAAgB,EAAE,EAAW;IAC1D,MAAM,EAAC,UAAU,EAAE,KAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAA;IACrC,IAAI,EAAE,KAAK,QAAQ,IAAI,UAAU,EAAE;QACjC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;SAChD;KACF;SAAM,IAAI,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;KACrE;AACH,CAAC;AATD,wCASC;AAED,SAAS,aAAa,CAAC,EAAgB,EAAE,IAAqB,EAAE,YAAqB;IACnF,MAAM,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAC,GAAG,EAAE,CAAA;IAC3C,IAAI,YAAY,KAAK,SAAS;QAAE,OAAM;IACtC,MAAM,SAAS,GAAG,WAAC,CAAA,GAAG,IAAI,GAAG,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAA;IAChD,IAAI,aAAa,EAAE;QACjB,kBAAe,CAAC,EAAE,EAAE,2BAA2B,SAAS,EAAE,CAAC,CAAA;QAC3D,OAAM;KACP;IAED,IAAI,SAAS,GAAG,WAAC,CAAA,GAAG,SAAS,gBAAgB,CAAA;IAC7C,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;QAChC,SAAS,GAAG,WAAC,CAAA,GAAG,SAAS,OAAO,SAAS,gBAAgB,SAAS,SAAS,CAAA;KAC5E;IACD,iCAAiC;IACjC,2FAA2F;IAC3F,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,WAAC,CAAA,GAAG,SAAS,MAAM,mBAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;AACjE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../lib/compile/validate/defaults.ts"],"names":[],"mappings":";;;AACA,wCAAoD;AACpD,kCAAuC;AAEvC,SAAgB,cAAc,CAAC,EAAgB,EAAE,EAAW;IAC1D,MAAM,EAAC,UAAU,EAAE,KAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAA;IACrC,IAAI,EAAE,KAAK,QAAQ,IAAI,UAAU,EAAE;QACjC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;SAChD;KACF;SAAM,IAAI,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;KACrE;AACH,CAAC;AATD,wCASC;AAED,SAAS,aAAa,CAAC,EAAgB,EAAE,IAAqB,EAAE,YAAqB;IACnF,MAAM,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAC,GAAG,EAAE,CAAA;IAC3C,IAAI,YAAY,KAAK,SAAS;QAAE,OAAM;IACtC,MAAM,SAAS,GAAG,WAAC,CAAA,GAAG,IAAI,GAAG,qBAAW,CAAC,IAAI,CAAC,EAAE,CAAA;IAChD,IAAI,aAAa,EAAE;QACjB,sBAAe,CAAC,EAAE,EAAE,2BAA2B,SAAS,EAAE,CAAC,CAAA;QAC3D,OAAM;KACP;IAED,IAAI,SAAS,GAAG,WAAC,CAAA,GAAG,SAAS,gBAAgB,CAAA;IAC7C,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;QAChC,SAAS,GAAG,WAAC,CAAA,GAAG,SAAS,OAAO,SAAS,gBAAgB,SAAS,SAAS,CAAA;KAC5E;IACD,iCAAiC;IACjC,2FAA2F;IAC3F,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,WAAC,CAAA,GAAG,SAAS,MAAM,mBAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;AACjE,CAAC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/index.d.ts b/node_modules/table/node_modules/ajv/dist/compile/validate/index.d.ts
index bd81b15..1dd71b5 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/index.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/index.d.ts
@@ -1,6 +1,41 @@
-import type { SchemaCxt } from "..";
-import { Name } from "../codegen";
+import type { AddedKeywordDefinition, AnySchemaObject, KeywordErrorCxt, KeywordCxtParams } from "../../types";
+import type { SchemaCxt, SchemaObjCxt } from "..";
+import { SubschemaArgs } from "./subschema";
+import { Code, Name, CodeGen } from "../codegen";
+import type { JSONType } from "../rules";
+import { ErrorPaths } from "../errors";
 export declare function validateFunctionCode(it: SchemaCxt): void;
-export declare function subschemaCode(it: SchemaCxt, valid: Name): void;
-export declare function schemaCxtHasRules({ schema, self }: SchemaCxt): boolean;
-export declare function checkStrictMode(it: SchemaCxt, msg: string, mode?: boolean | "log"): void;
+export declare class KeywordCxt implements KeywordErrorCxt {
+    readonly gen: CodeGen;
+    readonly allErrors?: boolean;
+    readonly keyword: string;
+    readonly data: Name;
+    readonly $data?: string | false;
+    schema: any;
+    readonly schemaValue: Code | number | boolean;
+    readonly schemaCode: Code | number | boolean;
+    readonly schemaType: JSONType[];
+    readonly parentSchema: AnySchemaObject;
+    readonly errsCount?: Name;
+    params: KeywordCxtParams;
+    readonly it: SchemaObjCxt;
+    readonly def: AddedKeywordDefinition;
+    constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string);
+    result(condition: Code, successAction?: () => void, failAction?: () => void): void;
+    pass(condition: Code, failAction?: () => void): void;
+    fail(condition?: Code): void;
+    fail$data(condition: Code): void;
+    error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void;
+    private _error;
+    $dataError(): void;
+    reset(): void;
+    ok(cond: Code | boolean): void;
+    setParams(obj: KeywordCxtParams, assign?: true): void;
+    block$data(valid: Name, codeBlock: () => void, $dataValid?: Code): void;
+    check$data(valid?: Name, $dataValid?: Code): void;
+    invalid$data(): Code;
+    subschema(appl: SubschemaArgs, valid: Name): SchemaCxt;
+    mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void;
+    mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void;
+}
+export declare function getData($data: string, { dataLevel, dataNames, dataPathArr }: SchemaCxt): Code | number;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/index.js b/node_modules/table/node_modules/ajv/dist/compile/validate/index.js
index eb26357..074ff49 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/index.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/index.js
@@ -1,13 +1,18 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.checkStrictMode = exports.schemaCxtHasRules = exports.subschemaCode = exports.validateFunctionCode = void 0;
+exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;
 const boolSchema_1 = require("./boolSchema");
 const dataType_1 = require("./dataType");
-const iterate_1 = require("./iterate");
+const applicability_1 = require("./applicability");
+const dataType_2 = require("./dataType");
+const defaults_1 = require("./defaults");
+const keyword_1 = require("./keyword");
+const subschema_1 = require("./subschema");
 const codegen_1 = require("../codegen");
 const names_1 = require("../names");
 const resolve_1 = require("../resolve");
 const util_1 = require("../util");
+const errors_1 = require("../errors");
 // schema compilation - generates validation function, subschemaCode (below) is used for subschemas
 function validateFunctionCode(it) {
     if (isSchemaObj(it)) {
@@ -33,18 +38,18 @@
     }
 }
 function destructureValCxt(opts) {
-    return codegen_1._ `{${names_1.default.dataPath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? codegen_1._ `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;
+    return codegen_1._ `{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? codegen_1._ `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;
 }
 function destructureValCxtES5(gen, opts) {
     gen.if(names_1.default.valCxt, () => {
-        gen.var(names_1.default.dataPath, codegen_1._ `${names_1.default.valCxt}.${names_1.default.dataPath}`);
+        gen.var(names_1.default.instancePath, codegen_1._ `${names_1.default.valCxt}.${names_1.default.instancePath}`);
         gen.var(names_1.default.parentData, codegen_1._ `${names_1.default.valCxt}.${names_1.default.parentData}`);
         gen.var(names_1.default.parentDataProperty, codegen_1._ `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);
         gen.var(names_1.default.rootData, codegen_1._ `${names_1.default.valCxt}.${names_1.default.rootData}`);
         if (opts.dynamicRef)
             gen.var(names_1.default.dynamicAnchors, codegen_1._ `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);
     }, () => {
-        gen.var(names_1.default.dataPath, codegen_1._ `""`);
+        gen.var(names_1.default.instancePath, codegen_1._ `""`);
         gen.var(names_1.default.parentData, codegen_1._ `undefined`);
         gen.var(names_1.default.parentDataProperty, codegen_1._ `undefined`);
         gen.var(names_1.default.rootData, names_1.default.data);
@@ -90,7 +95,6 @@
     }
     boolSchema_1.boolOrEmptySchema(it, valid);
 }
-exports.subschemaCode = subschemaCode;
 function schemaCxtHasRules({ schema, self }) {
     if (typeof schema == "boolean")
         return !schema;
@@ -99,7 +103,6 @@
             return true;
     return false;
 }
-exports.schemaCxtHasRules = schemaCxtHasRules;
 function isSchemaObj(it) {
     return typeof it.schema != "boolean";
 }
@@ -108,7 +111,7 @@
     if (opts.$comment && schema.$comment)
         commentKeyword(it);
     updateContext(it);
-    checkAsync(it);
+    checkAsyncSchema(it);
     const errsCount = gen.const("_errs", names_1.default.errors);
     typeAndKeywords(it, errsCount);
     // TODO var
@@ -120,10 +123,10 @@
 }
 function typeAndKeywords(it, errsCount) {
     if (it.opts.jtd)
-        return iterate_1.schemaKeywords(it, [], false, errsCount);
+        return schemaKeywords(it, [], false, errsCount);
     const types = dataType_1.getSchemaTypes(it.schema);
     const checkedTypes = dataType_1.coerceAndCheckDataType(it, types);
-    iterate_1.schemaKeywords(it, types, !checkedTypes, errsCount);
+    schemaKeywords(it, types, !checkedTypes, errsCount);
 }
 function checkRefsAndKeywords(it) {
     const { schema, errSchemaPath, opts, self } = it;
@@ -133,15 +136,15 @@
 }
 function checkNoDefault(it) {
     const { schema, opts } = it;
-    if (schema.default !== undefined && opts.useDefaults && opts.strict) {
-        checkStrictMode(it, "default is ignored in the schema root");
+    if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {
+        util_1.checkStrictMode(it, "default is ignored in the schema root");
     }
 }
 function updateContext(it) {
     if (it.schema.$id)
         it.baseId = resolve_1.resolveUrl(it.baseId, it.schema.$id);
 }
-function checkAsync(it) {
+function checkAsyncSchema(it) {
     if (it.schema.$async && !it.schemaEnv.$async)
         throw new Error("async schema in sync schema");
 }
@@ -175,13 +178,330 @@
     if (items instanceof codegen_1.Name)
         gen.assign(codegen_1._ `${evaluated}.items`, items);
 }
-function checkStrictMode(it, msg, mode = it.opts.strict) {
-    if (!mode)
+function schemaKeywords(it, types, typeErrors, errsCount) {
+    const { gen, schema, data, allErrors, opts, self } = it;
+    const { RULES } = self;
+    if (schema.$ref && (opts.ignoreKeywordsWithRef || !util_1.schemaHasRulesButRef(schema, RULES))) {
+        gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition)); // TODO typecast
         return;
-    msg = `strict mode: ${msg}`;
-    if (mode === true)
-        throw new Error(msg);
-    it.self.logger.warn(msg);
+    }
+    if (!opts.jtd)
+        checkStrictTypes(it, types);
+    gen.block(() => {
+        for (const group of RULES.rules)
+            groupKeywords(group);
+        groupKeywords(RULES.post);
+    });
+    function groupKeywords(group) {
+        if (!applicability_1.shouldUseGroup(schema, group))
+            return;
+        if (group.type) {
+            gen.if(dataType_2.checkDataType(group.type, data, opts.strictNumbers));
+            iterateKeywords(it, group);
+            if (types.length === 1 && types[0] === group.type && typeErrors) {
+                gen.else();
+                dataType_2.reportTypeError(it);
+            }
+            gen.endIf();
+        }
+        else {
+            iterateKeywords(it, group);
+        }
+        // TODO make it "ok" call?
+        if (!allErrors)
+            gen.if(codegen_1._ `${names_1.default.errors} === ${errsCount || 0}`);
+    }
 }
-exports.checkStrictMode = checkStrictMode;
+function iterateKeywords(it, group) {
+    const { gen, schema, opts: { useDefaults }, } = it;
+    if (useDefaults)
+        defaults_1.assignDefaults(it, group.type);
+    gen.block(() => {
+        for (const rule of group.rules) {
+            if (applicability_1.shouldUseRule(schema, rule)) {
+                keywordCode(it, rule.keyword, rule.definition, group.type);
+            }
+        }
+    });
+}
+function checkStrictTypes(it, types) {
+    if (it.schemaEnv.meta || !it.opts.strictTypes)
+        return;
+    checkContextTypes(it, types);
+    if (!it.opts.allowUnionTypes)
+        checkMultipleTypes(it, types);
+    checkKeywordTypes(it, it.dataTypes);
+}
+function checkContextTypes(it, types) {
+    if (!types.length)
+        return;
+    if (!it.dataTypes.length) {
+        it.dataTypes = types;
+        return;
+    }
+    types.forEach((t) => {
+        if (!includesType(it.dataTypes, t)) {
+            strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`);
+        }
+    });
+    it.dataTypes = it.dataTypes.filter((t) => includesType(types, t));
+}
+function checkMultipleTypes(it, ts) {
+    if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) {
+        strictTypesError(it, "use allowUnionTypes to allow union type keyword");
+    }
+}
+function checkKeywordTypes(it, ts) {
+    const rules = it.self.RULES.all;
+    for (const keyword in rules) {
+        const rule = rules[keyword];
+        if (typeof rule == "object" && applicability_1.shouldUseRule(it.schema, rule)) {
+            const { type } = rule.definition;
+            if (type.length && !type.some((t) => hasApplicableType(ts, t))) {
+                strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`);
+            }
+        }
+    }
+}
+function hasApplicableType(schTs, kwdT) {
+    return schTs.includes(kwdT) || (kwdT === "number" && schTs.includes("integer"));
+}
+function includesType(ts, t) {
+    return ts.includes(t) || (t === "integer" && ts.includes("number"));
+}
+function strictTypesError(it, msg) {
+    const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;
+    msg += ` at "${schemaPath}" (strictTypes)`;
+    util_1.checkStrictMode(it, msg, it.opts.strictTypes);
+}
+class KeywordCxt {
+    constructor(it, def, keyword) {
+        keyword_1.validateKeywordUsage(it, def, keyword);
+        this.gen = it.gen;
+        this.allErrors = it.allErrors;
+        this.keyword = keyword;
+        this.data = it.data;
+        this.schema = it.schema[keyword];
+        this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;
+        this.schemaValue = util_1.schemaRefOrVal(it, this.schema, keyword, this.$data);
+        this.schemaType = def.schemaType;
+        this.parentSchema = it.schema;
+        this.params = {};
+        this.it = it;
+        this.def = def;
+        if (this.$data) {
+            this.schemaCode = it.gen.const("vSchema", getData(this.$data, it));
+        }
+        else {
+            this.schemaCode = this.schemaValue;
+            if (!keyword_1.validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {
+                throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);
+            }
+        }
+        if ("code" in def ? def.trackErrors : def.errors !== false) {
+            this.errsCount = it.gen.const("_errs", names_1.default.errors);
+        }
+    }
+    result(condition, successAction, failAction) {
+        this.gen.if(codegen_1.not(condition));
+        if (failAction)
+            failAction();
+        else
+            this.error();
+        if (successAction) {
+            this.gen.else();
+            successAction();
+            if (this.allErrors)
+                this.gen.endIf();
+        }
+        else {
+            if (this.allErrors)
+                this.gen.endIf();
+            else
+                this.gen.else();
+        }
+    }
+    pass(condition, failAction) {
+        this.result(condition, undefined, failAction);
+    }
+    fail(condition) {
+        if (condition === undefined) {
+            this.error();
+            if (!this.allErrors)
+                this.gen.if(false); // this branch will be removed by gen.optimize
+            return;
+        }
+        this.gen.if(condition);
+        this.error();
+        if (this.allErrors)
+            this.gen.endIf();
+        else
+            this.gen.else();
+    }
+    fail$data(condition) {
+        if (!this.$data)
+            return this.fail(condition);
+        const { schemaCode } = this;
+        this.fail(codegen_1._ `${schemaCode} !== undefined && (${codegen_1.or(this.invalid$data(), condition)})`);
+    }
+    error(append, errorParams, errorPaths) {
+        if (errorParams) {
+            this.setParams(errorParams);
+            this._error(append, errorPaths);
+            this.setParams({});
+            return;
+        }
+        this._error(append, errorPaths);
+    }
+    _error(append, errorPaths) {
+        ;
+        (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);
+    }
+    $dataError() {
+        errors_1.reportError(this, this.def.$dataError || errors_1.keyword$DataError);
+    }
+    reset() {
+        if (this.errsCount === undefined)
+            throw new Error('add "trackErrors" to keyword definition');
+        errors_1.resetErrorsCount(this.gen, this.errsCount);
+    }
+    ok(cond) {
+        if (!this.allErrors)
+            this.gen.if(cond);
+    }
+    setParams(obj, assign) {
+        if (assign)
+            Object.assign(this.params, obj);
+        else
+            this.params = obj;
+    }
+    block$data(valid, codeBlock, $dataValid = codegen_1.nil) {
+        this.gen.block(() => {
+            this.check$data(valid, $dataValid);
+            codeBlock();
+        });
+    }
+    check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {
+        if (!this.$data)
+            return;
+        const { gen, schemaCode, schemaType, def } = this;
+        gen.if(codegen_1.or(codegen_1._ `${schemaCode} === undefined`, $dataValid));
+        if (valid !== codegen_1.nil)
+            gen.assign(valid, true);
+        if (schemaType.length || def.validateSchema) {
+            gen.elseIf(this.invalid$data());
+            this.$dataError();
+            if (valid !== codegen_1.nil)
+                gen.assign(valid, false);
+        }
+        gen.else();
+    }
+    invalid$data() {
+        const { gen, schemaCode, schemaType, def, it } = this;
+        return codegen_1.or(wrong$DataType(), invalid$DataSchema());
+        function wrong$DataType() {
+            if (schemaType.length) {
+                /* istanbul ignore if */
+                if (!(schemaCode instanceof codegen_1.Name))
+                    throw new Error("ajv implementation error");
+                const st = Array.isArray(schemaType) ? schemaType : [schemaType];
+                return codegen_1._ `${dataType_2.checkDataTypes(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;
+            }
+            return codegen_1.nil;
+        }
+        function invalid$DataSchema() {
+            if (def.validateSchema) {
+                const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema }); // TODO value.code for standalone
+                return codegen_1._ `!${validateSchemaRef}(${schemaCode})`;
+            }
+            return codegen_1.nil;
+        }
+    }
+    subschema(appl, valid) {
+        const subschema = subschema_1.getSubschema(this.it, appl);
+        subschema_1.extendSubschemaData(subschema, this.it, appl);
+        subschema_1.extendSubschemaMode(subschema, appl);
+        const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };
+        subschemaCode(nextContext, valid);
+        return nextContext;
+    }
+    mergeEvaluated(schemaCxt, toName) {
+        const { it, gen } = this;
+        if (!it.opts.unevaluated)
+            return;
+        if (it.props !== true && schemaCxt.props !== undefined) {
+            it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);
+        }
+        if (it.items !== true && schemaCxt.items !== undefined) {
+            it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);
+        }
+    }
+    mergeValidEvaluated(schemaCxt, valid) {
+        const { it, gen } = this;
+        if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {
+            gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));
+            return true;
+        }
+    }
+}
+exports.KeywordCxt = KeywordCxt;
+function keywordCode(it, keyword, def, ruleType) {
+    const cxt = new KeywordCxt(it, def, keyword);
+    if ("code" in def) {
+        def.code(cxt, ruleType);
+    }
+    else if (cxt.$data && def.validate) {
+        keyword_1.funcKeywordCode(cxt, def);
+    }
+    else if ("macro" in def) {
+        keyword_1.macroKeywordCode(cxt, def);
+    }
+    else if (def.compile || def.validate) {
+        keyword_1.funcKeywordCode(cxt, def);
+    }
+}
+const JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
+const RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
+function getData($data, { dataLevel, dataNames, dataPathArr }) {
+    let jsonPointer;
+    let data;
+    if ($data === "")
+        return names_1.default.rootData;
+    if ($data[0] === "/") {
+        if (!JSON_POINTER.test($data))
+            throw new Error(`Invalid JSON-pointer: ${$data}`);
+        jsonPointer = $data;
+        data = names_1.default.rootData;
+    }
+    else {
+        const matches = RELATIVE_JSON_POINTER.exec($data);
+        if (!matches)
+            throw new Error(`Invalid JSON-pointer: ${$data}`);
+        const up = +matches[1];
+        jsonPointer = matches[2];
+        if (jsonPointer === "#") {
+            if (up >= dataLevel)
+                throw new Error(errorMsg("property/index", up));
+            return dataPathArr[dataLevel - up];
+        }
+        if (up > dataLevel)
+            throw new Error(errorMsg("data", up));
+        data = dataNames[dataLevel - up];
+        if (!jsonPointer)
+            return data;
+    }
+    let expr = data;
+    const segments = jsonPointer.split("/");
+    for (const segment of segments) {
+        if (segment) {
+            data = codegen_1._ `${data}${codegen_1.getProperty(util_1.unescapeJsonPointer(segment))}`;
+            expr = codegen_1._ `${expr} && ${data}`;
+        }
+    }
+    return expr;
+    function errorMsg(pointerType, up) {
+        return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;
+    }
+}
+exports.getData = getData;
 //# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/index.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/index.js.map
index c207811..bbf6496 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/index.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/compile/validate/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/compile/validate/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.d.ts b/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.d.ts
deleted file mode 100644
index 3e1db8f..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import type { SchemaObjCxt } from "..";
-import type { JSONType } from "../rules";
-import { Name } from "../codegen";
-export declare function schemaKeywords(it: SchemaObjCxt, types: JSONType[], typeErrors: boolean, errsCount?: Name): void;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js b/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js
deleted file mode 100644
index cabe37a..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js
+++ /dev/null
@@ -1,109 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.schemaKeywords = void 0;
-const applicability_1 = require("./applicability");
-const dataType_1 = require("./dataType");
-const defaults_1 = require("./defaults");
-const keyword_1 = require("./keyword");
-const util_1 = require("../util");
-const _1 = require(".");
-const codegen_1 = require("../codegen");
-const names_1 = require("../names");
-function schemaKeywords(it, types, typeErrors, errsCount) {
-    const { gen, schema, data, allErrors, opts, self } = it;
-    const { RULES } = self;
-    if (schema.$ref && (opts.ignoreKeywordsWithRef || !util_1.schemaHasRulesButRef(schema, RULES))) {
-        gen.block(() => keyword_1.keywordCode(it, "$ref", RULES.all.$ref.definition)); // TODO typecast
-        return;
-    }
-    if (!opts.jtd)
-        checkStrictTypes(it, types);
-    gen.block(() => {
-        for (const group of RULES.rules)
-            groupKeywords(group);
-        groupKeywords(RULES.post);
-    });
-    function groupKeywords(group) {
-        if (!applicability_1.shouldUseGroup(schema, group))
-            return;
-        if (group.type) {
-            gen.if(dataType_1.checkDataType(group.type, data, opts.strict));
-            iterateKeywords(it, group);
-            if (types.length === 1 && types[0] === group.type && typeErrors) {
-                gen.else();
-                dataType_1.reportTypeError(it);
-            }
-            gen.endIf();
-        }
-        else {
-            iterateKeywords(it, group);
-        }
-        // TODO make it "ok" call?
-        if (!allErrors)
-            gen.if(codegen_1._ `${names_1.default.errors} === ${errsCount || 0}`);
-    }
-}
-exports.schemaKeywords = schemaKeywords;
-function iterateKeywords(it, group) {
-    const { gen, schema, opts: { useDefaults }, } = it;
-    if (useDefaults)
-        defaults_1.assignDefaults(it, group.type);
-    gen.block(() => {
-        for (const rule of group.rules) {
-            if (applicability_1.shouldUseRule(schema, rule)) {
-                keyword_1.keywordCode(it, rule.keyword, rule.definition, group.type);
-            }
-        }
-    });
-}
-function checkStrictTypes(it, types) {
-    if (it.schemaEnv.meta || !it.opts.strictTypes)
-        return;
-    checkContextTypes(it, types);
-    if (!it.opts.allowUnionTypes)
-        checkMultipleTypes(it, types);
-    checkKeywordTypes(it, it.dataTypes);
-}
-function checkContextTypes(it, types) {
-    if (!types.length)
-        return;
-    if (!it.dataTypes.length) {
-        it.dataTypes = types;
-        return;
-    }
-    types.forEach((t) => {
-        if (!includesType(it.dataTypes, t)) {
-            strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`);
-        }
-    });
-    it.dataTypes = it.dataTypes.filter((t) => includesType(types, t));
-}
-function checkMultipleTypes(it, ts) {
-    if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) {
-        strictTypesError(it, "use allowUnionTypes to allow union type keyword");
-    }
-}
-function checkKeywordTypes(it, ts) {
-    const rules = it.self.RULES.all;
-    for (const keyword in rules) {
-        const rule = rules[keyword];
-        if (typeof rule == "object" && applicability_1.shouldUseRule(it.schema, rule)) {
-            const { type } = rule.definition;
-            if (type.length && !type.some((t) => hasApplicableType(ts, t))) {
-                strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`);
-            }
-        }
-    }
-}
-function hasApplicableType(schTs, kwdT) {
-    return schTs.includes(kwdT) || (kwdT === "number" && schTs.includes("integer"));
-}
-function includesType(ts, t) {
-    return ts.includes(t) || (t === "integer" && ts.includes("number"));
-}
-function strictTypesError(it, msg) {
-    const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;
-    msg += ` at "${schemaPath}" (strictTypes)`;
-    _1.checkStrictMode(it, msg, it.opts.strictTypes);
-}
-//# sourceMappingURL=iterate.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js.map
deleted file mode 100644
index 061dd32..0000000
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"iterate.js","sourceRoot":"","sources":["../../../lib/compile/validate/iterate.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.d.ts b/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.d.ts
index a04e946..d15cee8 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.d.ts
@@ -1,4 +1,8 @@
-import type { AddedKeywordDefinition } from "../../types";
+import type { KeywordCxt } from ".";
+import type { AddedKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition } from "../../types";
 import type { SchemaObjCxt } from "..";
 import type { JSONType } from "../rules";
-export declare function keywordCode(it: SchemaObjCxt, keyword: string, def: AddedKeywordDefinition, ruleType?: JSONType): void;
+export declare function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void;
+export declare function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void;
+export declare function validSchemaType(schema: unknown, schemaType: JSONType[], allowUndefined?: boolean): boolean;
+export declare function validateKeywordUsage({ schema, opts, self, errSchemaPath }: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string): void;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js b/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js
index 2d67b19..47f6176 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js
@@ -1,27 +1,10 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.keywordCode = void 0;
-const context_1 = require("../context");
-const errors_1 = require("../errors");
-const code_1 = require("../../vocabularies/code");
+exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;
 const codegen_1 = require("../codegen");
 const names_1 = require("../names");
-function keywordCode(it, keyword, def, ruleType) {
-    const cxt = new context_1.default(it, def, keyword);
-    if ("code" in def) {
-        def.code(cxt, ruleType);
-    }
-    else if (cxt.$data && def.validate) {
-        funcKeywordCode(cxt, def);
-    }
-    else if ("macro" in def) {
-        macroKeywordCode(cxt, def);
-    }
-    else if (def.compile || def.validate) {
-        funcKeywordCode(cxt, def);
-    }
-}
-exports.keywordCode = keywordCode;
+const code_1 = require("../../vocabularies/code");
+const errors_1 = require("../errors");
 function macroKeywordCode(cxt, def) {
     const { gen, keyword, schema, parentSchema, it } = cxt;
     const macroSchema = def.macro.call(it.self, schema, parentSchema, it);
@@ -38,10 +21,11 @@
     }, valid);
     cxt.pass(valid, () => cxt.error(true));
 }
+exports.macroKeywordCode = macroKeywordCode;
 function funcKeywordCode(cxt, def) {
     var _a;
     const { gen, keyword, schema, parentSchema, $data, it } = cxt;
-    checkAsync(it, def);
+    checkAsyncKeyword(it, def);
     const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;
     const validateRef = useKeyword(gen, keyword, validate);
     const valid = gen.let("valid");
@@ -82,6 +66,7 @@
         gen.if(codegen_1.not((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);
     }
 }
+exports.funcKeywordCode = funcKeywordCode;
 function modifyData(cxt) {
     const { gen, data, it } = cxt;
     gen.if(it.parentData, () => gen.assign(data, codegen_1._ `${it.parentData}[${it.parentDataProperty}]`));
@@ -95,7 +80,7 @@
         errors_1.extendErrors(cxt);
     }, () => cxt.error());
 }
-function checkAsync({ schemaEnv }, def) {
+function checkAsyncKeyword({ schemaEnv }, def) {
     if (def.async && !schemaEnv.$async)
         throw new Error("async keyword in sync schema");
 }
@@ -104,4 +89,36 @@
         throw new Error(`keyword "${keyword}" failed to compile`);
     return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: codegen_1.stringify(result) });
 }
+function validSchemaType(schema, schemaType, allowUndefined = false) {
+    // TODO add tests
+    return (!schemaType.length ||
+        schemaType.some((st) => st === "array"
+            ? Array.isArray(schema)
+            : st === "object"
+                ? schema && typeof schema == "object" && !Array.isArray(schema)
+                : typeof schema == st || (allowUndefined && typeof schema == "undefined")));
+}
+exports.validSchemaType = validSchemaType;
+function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {
+    /* istanbul ignore if */
+    if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {
+        throw new Error("ajv implementation error");
+    }
+    const deps = def.dependencies;
+    if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {
+        throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);
+    }
+    if (def.validateSchema) {
+        const valid = def.validateSchema(schema[keyword]);
+        if (!valid) {
+            const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` +
+                self.errorsText(def.validateSchema.errors);
+            if (opts.validateSchema === "log")
+                self.logger.error(msg);
+            else
+                throw new Error(msg);
+        }
+    }
+}
+exports.validateKeywordUsage = validateKeywordUsage;
 //# sourceMappingURL=keyword.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js.map
index 0fb2bae..4e8e8c1 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js.map
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/keyword.js.map
@@ -1 +1 @@
-{"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../../lib/compile/validate/keyword.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../../lib/compile/validate/keyword.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.d.ts b/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.d.ts
new file mode 100644
index 0000000..8544271
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.d.ts
@@ -0,0 +1,47 @@
+import type { AnySchema } from "../../types";
+import type { SchemaObjCxt } from "..";
+import { Code, Name } from "../codegen";
+import { Type } from "../util";
+import type { JSONType } from "../rules";
+export interface SubschemaContext {
+    schema: AnySchema;
+    schemaPath: Code;
+    errSchemaPath: string;
+    topSchemaRef?: Code;
+    errorPath?: Code;
+    dataLevel?: number;
+    dataTypes?: JSONType[];
+    data?: Name;
+    parentData?: Name;
+    parentDataProperty?: Code | number;
+    dataNames?: Name[];
+    dataPathArr?: (Code | number)[];
+    propertyName?: Name;
+    jtdDiscriminator?: string;
+    jtdMetadata?: boolean;
+    compositeRule?: true;
+    createErrors?: boolean;
+    allErrors?: boolean;
+}
+export declare type SubschemaArgs = Partial<{
+    keyword: string;
+    schemaProp: string | number;
+    schema: AnySchema;
+    schemaPath: Code;
+    errSchemaPath: string;
+    topSchemaRef: Code;
+    data: Name | Code;
+    dataProp: Code | string | number;
+    dataTypes: JSONType[];
+    definedProperties: Set<string>;
+    propertyName: Name;
+    dataPropType: Type;
+    jtdDiscriminator: string;
+    jtdMetadata: boolean;
+    compositeRule: true;
+    createErrors: boolean;
+    allErrors: boolean;
+}>;
+export declare function getSubschema(it: SchemaObjCxt, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }: SubschemaArgs): SubschemaContext;
+export declare function extendSubschemaData(subschema: SubschemaContext, it: SchemaObjCxt, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }: SubschemaArgs): void;
+export declare function extendSubschemaMode(subschema: SubschemaContext, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }: SubschemaArgs): void;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/subschema.js b/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js
similarity index 69%
rename from node_modules/table/node_modules/ajv/dist/compile/subschema.js
rename to node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js
index 3004484..5fab01d 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/subschema.js
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js
@@ -1,23 +1,8 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.applySubschema = exports.Type = void 0;
-const validate_1 = require("./validate");
-const util_1 = require("./util");
-const codegen_1 = require("./codegen");
-var Type;
-(function (Type) {
-    Type[Type["Num"] = 0] = "Num";
-    Type[Type["Str"] = 1] = "Str";
-})(Type = exports.Type || (exports.Type = {}));
-function applySubschema(it, appl, valid) {
-    const subschema = getSubschema(it, appl);
-    extendSubschemaData(subschema, it, appl);
-    extendSubschemaMode(subschema, appl);
-    const nextContext = { ...it, ...subschema, items: undefined, props: undefined };
-    validate_1.subschemaCode(nextContext, valid);
-    return nextContext;
-}
-exports.applySubschema = applySubschema;
+exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;
+const codegen_1 = require("../codegen");
+const util_1 = require("../util");
 function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {
     if (keyword !== undefined && schema !== undefined) {
         throw new Error('both "keyword" and "schema" passed, only one allowed');
@@ -49,6 +34,7 @@
     }
     throw new Error('either "keyword" or "schema" must be passed');
 }
+exports.getSubschema = getSubschema;
 function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {
     if (data !== undefined && dataProp !== undefined) {
         throw new Error('both "data" and "dataProp" passed, only one allowed');
@@ -58,7 +44,7 @@
         const { errorPath, dataPathArr, opts } = it;
         const nextData = gen.let("data", codegen_1._ `${it.data}${codegen_1.getProperty(dataProp)}`, true);
         dataContextProps(nextData);
-        subschema.errorPath = codegen_1.str `${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`;
+        subschema.errorPath = codegen_1.str `${errorPath}${util_1.getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`;
         subschema.parentDataProperty = codegen_1._ `${dataProp}`;
         subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];
     }
@@ -80,6 +66,7 @@
         subschema.dataNames = [...it.dataNames, _nextData];
     }
 }
+exports.extendSubschemaData = extendSubschemaData;
 function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {
     if (compositeRule !== undefined)
         subschema.compositeRule = compositeRule;
@@ -90,18 +77,5 @@
     subschema.jtdDiscriminator = jtdDiscriminator; // not inherited
     subschema.jtdMetadata = jtdMetadata; // not inherited
 }
-function getErrorPath(dataProp, dataPropType, jsPropertySyntax) {
-    // let path
-    if (dataProp instanceof codegen_1.Name) {
-        const isNumber = dataPropType === Type.Num;
-        return jsPropertySyntax
-            ? isNumber
-                ? codegen_1._ `"[" + ${dataProp} + "]"`
-                : codegen_1._ `"['" + ${dataProp} + "']"`
-            : isNumber
-                ? codegen_1._ `"/" + ${dataProp}`
-                : codegen_1._ `"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`; // TODO maybe use global escapePointer
-    }
-    return jsPropertySyntax ? codegen_1.getProperty(dataProp).toString() : "/" + util_1.escapeJsonPointer(dataProp);
-}
+exports.extendSubschemaMode = extendSubschemaMode;
 //# sourceMappingURL=subschema.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js.map b/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js.map
new file mode 100644
index 0000000..3a48929
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/compile/validate/subschema.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"subschema.js","sourceRoot":"","sources":["../../../lib/compile/validate/subschema.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/core.d.ts b/node_modules/table/node_modules/ajv/dist/core.d.ts
index ad03f03..09045bd 100644
--- a/node_modules/table/node_modules/ajv/dist/core.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/core.d.ts
@@ -4,23 +4,25 @@
     (ajv: Ajv, options?: Opts): Ajv;
     [prop: string]: any;
 }
-import KeywordCxt from "./compile/context";
-export { KeywordCxt };
+export { KeywordCxt } from "./compile/validate";
 export { DefinedError } from "./vocabularies/errors";
 export { JSONType } from "./compile/rules";
 export { JSONSchemaType } from "./types/json-schema";
-export { JTDSchemaType } from "./types/jtd-schema";
+export { JTDSchemaType, SomeJTDSchemaType, JTDDataType } from "./types/jtd-schema";
 export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
 import type { Schema, AnySchema, AnySchemaObject, SchemaObject, AsyncSchema, Vocabulary, KeywordDefinition, AddedKeywordDefinition, AnyValidateFunction, ValidateFunction, AsyncValidateFunction, ErrorObject, Format, AddedFormat } from "./types";
 import type { JSONSchemaType } from "./types/json-schema";
-import type { JTDSchemaType } from "./types/jtd-schema";
-import { ValidationError, MissingRefError } from "./compile/error_classes";
+import type { JTDSchemaType, SomeJTDSchemaType, JTDDataType } from "./types/jtd-schema";
+import ValidationError from "./runtime/validation_error";
+import MissingRefError from "./compile/ref_error";
 import { ValidationRules } from "./compile/rules";
 import { SchemaEnv } from "./compile";
 import { Code, ValueScope } from "./compile/codegen";
 export declare type Options = CurrentOptions & DeprecatedOptions;
 export interface CurrentOptions {
     strict?: boolean | "log";
+    strictSchema?: boolean | "log";
+    strictNumbers?: boolean | "log";
     strictTypes?: boolean | "log";
     strictTuples?: boolean | "log";
     strictRequired?: boolean | "log";
@@ -30,6 +32,8 @@
     $data?: boolean;
     allErrors?: boolean;
     verbose?: boolean;
+    discriminator?: boolean;
+    unicodeRegExp?: boolean;
     $comment?: true | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown);
     formats?: {
         [Name in string]?: Format;
@@ -47,6 +51,8 @@
     unevaluated?: boolean;
     dynamicRef?: boolean;
     jtd?: boolean;
+    /** (JTD only) Accepted Javascript types for `timestamp` type */
+    timestamp?: "string" | "date";
     meta?: SchemaObject | boolean;
     defaultMeta?: string | AnySchemaObject;
     validateSchema?: boolean | "log";
@@ -59,7 +65,6 @@
     multipleOfPrecision?: number;
     messages?: boolean;
     code?: CodeOptions;
-    ajvErrors?: boolean;
 }
 export interface CodeOptions {
     es5?: boolean;
@@ -81,7 +86,7 @@
     unicode?: boolean;
 }
 declare type RequiredInstanceOptions = {
-    [K in "strict" | "strictTypes" | "strictTuples" | "inlineRefs" | "loopRequired" | "loopEnum" | "meta" | "messages" | "addUsedSchema" | "validateSchema" | "validateFormats"]: NonNullable<Options[K]>;
+    [K in "strictSchema" | "strictNumbers" | "strictTypes" | "strictTuples" | "strictRequired" | "inlineRefs" | "loopRequired" | "loopEnum" | "meta" | "messages" | "addUsedSchema" | "validateSchema" | "validateFormats" | "unicodeRegExp"]: NonNullable<Options[K]>;
 } & {
     code: InstanceCodeOptions;
 };
@@ -120,10 +125,12 @@
     validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>;
     validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T;
     validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T;
+    validate<N extends never, T extends SomeJTDSchemaType>(schema: T, data: unknown): data is JTDDataType<T>;
     validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>;
     validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>;
     compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
     compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
+    compile<N extends never, T extends SomeJTDSchemaType>(schema: T, _meta?: boolean): ValidateFunction<JTDDataType<T>>;
     compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>;
     compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>;
     compileAsync<T = unknown>(schema: SchemaObject | JSONSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
@@ -148,7 +155,7 @@
     { separator, dataVar }?: ErrorsTextOptions): string;
     $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject;
     private _removeAllSchemas;
-    _addSchema(schema: AnySchema, meta?: boolean, validateSchema?: boolean | "log", addSchema?: boolean): SchemaEnv;
+    _addSchema(schema: AnySchema, meta?: boolean, baseId?: string, validateSchema?: boolean | "log", addSchema?: boolean): SchemaEnv;
     private _checkUnique;
     private _compileSchemaEnv;
     private _compileMetaSchema;
diff --git a/node_modules/table/node_modules/ajv/dist/core.js b/node_modules/table/node_modules/ajv/dist/core.js
index d115771..a1aae13 100644
--- a/node_modules/table/node_modules/ajv/dist/core.js
+++ b/node_modules/table/node_modules/ajv/dist/core.js
@@ -1,8 +1,8 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;
-const context_1 = require("./compile/context");
-exports.KeywordCxt = context_1.default;
+var validate_1 = require("./compile/validate");
+Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });
 var codegen_1 = require("./compile/codegen");
 Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
 Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
@@ -10,7 +10,8 @@
 Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
 Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
 Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
-const error_classes_1 = require("./compile/error_classes");
+const validation_error_1 = require("./runtime/validation_error");
+const ref_error_1 = require("./compile/ref_error");
 const rules_1 = require("./compile/rules");
 const compile_1 = require("./compile");
 const codegen_2 = require("./compile/codegen");
@@ -43,39 +44,43 @@
     missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.",
     processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`",
     sourceCode: "Use option `code: {source: true}`",
-    schemaId: "JSON Schema draft-04 is not supported in Ajv v7.",
+    schemaId: "JSON Schema draft-04 is not supported in Ajv v7/8.",
     strictDefaults: "It is default now, see option `strict`.",
     strictKeywords: "It is default now, see option `strict`.",
-    strictNumbers: "It is default now, see option `strict`.",
     uniqueItems: '"uniqueItems" keyword is always validated.',
     unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",
     cache: "Map is used as cache, schema object as key.",
     serialize: "Map is used as cache, schema object as key.",
+    ajvErrors: "It is default now, see option `strict`.",
 };
 const deprecatedOptions = {
     ignoreKeywordsWithRef: "",
     jsPropertySyntax: "",
     unicode: '"minLength"/"maxLength" account for unicode characters by default.',
 };
+const MAX_EXPRESSION = 200;
+// eslint-disable-next-line complexity
 function requiredOptions(o) {
-    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
-    const strict = (_a = o.strict) !== null && _a !== void 0 ? _a : true;
-    const strictLog = strict ? "log" : false;
-    const _optz = (_b = o.code) === null || _b === void 0 ? void 0 : _b.optimize;
+    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
+    const s = o.strict;
+    const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;
     const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;
     return {
-        strict,
-        strictTypes: (_c = o.strictTypes) !== null && _c !== void 0 ? _c : strictLog,
-        strictTuples: (_d = o.strictTuples) !== null && _d !== void 0 ? _d : strictLog,
+        strictSchema: (_c = (_b = o.strictSchema) !== null && _b !== void 0 ? _b : s) !== null && _c !== void 0 ? _c : true,
+        strictNumbers: (_e = (_d = o.strictNumbers) !== null && _d !== void 0 ? _d : s) !== null && _e !== void 0 ? _e : true,
+        strictTypes: (_g = (_f = o.strictTypes) !== null && _f !== void 0 ? _f : s) !== null && _g !== void 0 ? _g : "log",
+        strictTuples: (_j = (_h = o.strictTuples) !== null && _h !== void 0 ? _h : s) !== null && _j !== void 0 ? _j : "log",
+        strictRequired: (_l = (_k = o.strictRequired) !== null && _k !== void 0 ? _k : s) !== null && _l !== void 0 ? _l : false,
         code: o.code ? { ...o.code, optimize } : { optimize },
-        loopRequired: (_e = o.loopRequired) !== null && _e !== void 0 ? _e : Infinity,
-        loopEnum: (_f = o.loopEnum) !== null && _f !== void 0 ? _f : Infinity,
-        meta: (_g = o.meta) !== null && _g !== void 0 ? _g : true,
-        messages: (_h = o.messages) !== null && _h !== void 0 ? _h : true,
-        inlineRefs: (_j = o.inlineRefs) !== null && _j !== void 0 ? _j : true,
-        addUsedSchema: (_k = o.addUsedSchema) !== null && _k !== void 0 ? _k : true,
-        validateSchema: (_l = o.validateSchema) !== null && _l !== void 0 ? _l : true,
-        validateFormats: (_m = o.validateFormats) !== null && _m !== void 0 ? _m : true,
+        loopRequired: (_m = o.loopRequired) !== null && _m !== void 0 ? _m : MAX_EXPRESSION,
+        loopEnum: (_o = o.loopEnum) !== null && _o !== void 0 ? _o : MAX_EXPRESSION,
+        meta: (_p = o.meta) !== null && _p !== void 0 ? _p : true,
+        messages: (_q = o.messages) !== null && _q !== void 0 ? _q : true,
+        inlineRefs: (_r = o.inlineRefs) !== null && _r !== void 0 ? _r : true,
+        addUsedSchema: (_s = o.addUsedSchema) !== null && _s !== void 0 ? _s : true,
+        validateSchema: (_t = o.validateSchema) !== null && _t !== void 0 ? _t : true,
+        validateFormats: (_u = o.validateFormats) !== null && _u !== void 0 ? _u : true,
+        unicodeRegExp: (_v = o.unicodeRegExp) !== null && _v !== void 0 ? _v : true,
     };
 }
 class Ajv {
@@ -161,7 +166,7 @@
                 return this._compileSchemaEnv(sch);
             }
             catch (e) {
-                if (!(e instanceof error_classes_1.MissingRefError))
+                if (!(e instanceof ref_error_1.default))
                     throw e;
                 checkLoaded.call(this, e);
                 await loadMissingSchema.call(this, e.missingSchema);
@@ -207,11 +212,11 @@
         if (typeof schema === "object") {
             id = schema.$id;
             if (id !== undefined && typeof id != "string")
-                throw new Error("schema id must be string");
+                throw new Error("schema $id must be string");
         }
         key = resolve_1.normalizeId(key || id);
         this._checkUnique(key);
-        this.schemas[key] = this._addSchema(schema, _meta, _validateSchema, true);
+        this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);
         return this;
     }
     // Add schema that will be used to validate other schemas
@@ -373,7 +378,7 @@
         if (!errors || errors.length === 0)
             return "No errors";
         return errors
-            .map((e) => `${dataVar}${e.dataPath} ${e.message}`)
+            .map((e) => `${dataVar}${e.instancePath} ${e.message}`)
             .reduce((text, msg) => text + separator + msg);
     }
     $dataMetaSchema(metaSchema, keywordsJsonPointers) {
@@ -410,8 +415,12 @@
             }
         }
     }
-    _addSchema(schema, meta, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {
-        if (typeof schema != "object") {
+    _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {
+        let id;
+        if (typeof schema == "object") {
+            id = schema.$id;
+        }
+        else {
             if (this.opts.jtd)
                 throw new Error("schema must be object");
             else if (typeof schema != "boolean")
@@ -421,14 +430,14 @@
         if (sch !== undefined)
             return sch;
         const localRefs = resolve_1.getSchemaRefs.call(this, schema);
-        sch = new compile_1.SchemaEnv({ schema, meta, localRefs });
+        baseId = resolve_1.normalizeId(id || baseId);
+        sch = new compile_1.SchemaEnv({ schema, meta, baseId, localRefs });
         this._cache.set(sch.schema, sch);
-        const id = sch.baseId;
-        if (addSchema && !id.startsWith("#")) {
+        if (addSchema && !baseId.startsWith("#")) {
             // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)
-            if (id)
-                this._checkUnique(id);
-            this.refs[id] = sch;
+            if (baseId)
+                this._checkUnique(baseId);
+            this.refs[baseId] = sch;
         }
         if (validateSchema)
             this.validateSchema(schema, true);
@@ -461,8 +470,8 @@
     }
 }
 exports.default = Ajv;
-Ajv.ValidationError = error_classes_1.ValidationError;
-Ajv.MissingRefError = error_classes_1.MissingRefError;
+Ajv.ValidationError = validation_error_1.default;
+Ajv.MissingRefError = ref_error_1.default;
 function checkOptions(checkOpts, options, msg, log = "error") {
     for (const key in checkOpts) {
         const opt = key;
diff --git a/node_modules/table/node_modules/ajv/dist/core.js.map b/node_modules/table/node_modules/ajv/dist/core.js.map
index 51a04ad..1de7b71 100644
--- a/node_modules/table/node_modules/ajv/dist/core.js.map
+++ b/node_modules/table/node_modules/ajv/dist/core.js.map
@@ -1 +1 @@
-{"version":3,"file":"core.js","sourceRoot":"","sources":["../lib/core.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"core.js","sourceRoot":"","sources":["../lib/core.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/jtd.d.ts b/node_modules/table/node_modules/ajv/dist/jtd.d.ts
index 72bc0de..0caf84b 100644
--- a/node_modules/table/node_modules/ajv/dist/jtd.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/jtd.d.ts
@@ -1,21 +1,13 @@
-export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, ErrorObject, ErrorNoParams, JTDParser, } from "./types";
-export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
-export { SchemaCxt, SchemaObjCxt } from "./compile";
-import KeywordCxt from "./compile/context";
-export { KeywordCxt };
-export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
 import type { AnySchemaObject, SchemaObject, JTDParser } from "./types";
-import type { JTDSchemaType, JTDDataType } from "./types/jtd-schema";
-export { JTDSchemaType, JTDDataType };
+import type { JTDSchemaType, SomeJTDSchemaType, JTDDataType } from "./types/jtd-schema";
 import AjvCore, { CurrentOptions } from "./core";
-export declare type JTDOptions = CurrentOptions & {
-    strictTypes?: never;
-    strictTuples?: never;
+declare type JTDOptions = CurrentOptions & {
+    strict?: never;
     allowMatchingProperties?: never;
     allowUnionTypes?: never;
     validateFormats?: never;
     $data?: never;
-    verbose?: never;
+    verbose?: boolean;
     $comment?: never;
     formats?: never;
     loadSchema?: never;
@@ -29,9 +21,8 @@
     inlineRefs?: boolean;
     loopRequired?: never;
     multipleOfPrecision?: never;
-    ajvErrors?: boolean;
 };
-export default class Ajv extends AjvCore {
+declare class Ajv extends AjvCore {
     constructor(opts?: JTDOptions);
     _addVocabularies(): void;
     _addDefaultMetaSchema(): void;
@@ -43,3 +34,12 @@
     private _compileSerializer;
     private _compileParser;
 }
+export default Ajv;
+export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, ErrorObject, ErrorNoParams, JTDParser, } from "./types";
+export { Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions } from "./core";
+export { SchemaCxt, SchemaObjCxt } from "./compile";
+export { KeywordCxt } from "./compile/validate";
+export { JTDErrorObject } from "./vocabularies/jtd";
+export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
+export { JTDSchemaType, SomeJTDSchemaType, JTDDataType };
+export { JTDOptions };
diff --git a/node_modules/table/node_modules/ajv/dist/jtd.js b/node_modules/table/node_modules/ajv/dist/jtd.js
index 32f2581..dfb34dd 100644
--- a/node_modules/table/node_modules/ajv/dist/jtd.js
+++ b/node_modules/table/node_modules/ajv/dist/jtd.js
@@ -1,30 +1,17 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;
-const context_1 = require("./compile/context");
-exports.KeywordCxt = context_1.default;
-// export {DefinedError} from "./vocabularies/errors"
-var codegen_1 = require("./compile/codegen");
-Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
-Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
-Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
-Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
-Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
-Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
 const core_1 = require("./core");
 const jtd_1 = require("./vocabularies/jtd");
 const jtd_schema_1 = require("./refs/jtd-schema");
 const serialize_1 = require("./compile/jtd/serialize");
 const parse_1 = require("./compile/jtd/parse");
-// const META_SUPPORT_DATA = ["/properties"]
 const META_SCHEMA_ID = "JTD-meta-schema";
 class Ajv extends core_1.default {
     constructor(opts = {}) {
-        var _a;
         super({
             ...opts,
             jtd: true,
-            messages: (_a = opts.messages) !== null && _a !== void 0 ? _a : false,
         });
     }
     _addVocabularies() {
@@ -64,5 +51,16 @@
         return sch.parse;
     }
 }
+module.exports = exports = Ajv;
+Object.defineProperty(exports, "__esModule", { value: true });
 exports.default = Ajv;
+var validate_1 = require("./compile/validate");
+Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });
+var codegen_1 = require("./compile/codegen");
+Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } });
+Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } });
+Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } });
+Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } });
+Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } });
+Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } });
 //# sourceMappingURL=jtd.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/jtd.js.map b/node_modules/table/node_modules/ajv/dist/jtd.js.map
index 01adb1b..6f25378 100644
--- a/node_modules/table/node_modules/ajv/dist/jtd.js.map
+++ b/node_modules/table/node_modules/ajv/dist/jtd.js.map
@@ -1 +1 @@
-{"version":3,"file":"jtd.js","sourceRoot":"","sources":["../lib/jtd.ts"],"names":[],"mappings":";;;AAwBA,+CAA0C;AAClC,qBADD,iBAAU,CACC;AAClB,qDAAqD;AACrD,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA;AAKnD,iCAA8C;AAC9C,4CAA8C;AAC9C,kDAA6C;AAC7C,uDAAuD;AACvD,+CAA+C;AAG/C,4CAA4C;AAE5C,MAAM,cAAc,GAAG,iBAAiB,CAAA;AA8BxC,MAAqB,GAAI,SAAQ,cAAO;IACtC,YAAY,OAAmB,EAAE;;QAC/B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,KAAK;SACjC,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QAC3B,IAAI,CAAC,aAAa,CAAC,oBAAa,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;IAC1D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;IAMD,iBAAiB,CAAc,MAAoB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACtD,CAAC;IAMD,aAAa,CAAc,MAAoB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAiB,CAAA;IAChE,CAAC;IAEO,kBAAkB,CAAI,GAAc;QAC1C,mBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAG,GAAG,CAAC,MAA0B,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QACpF,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC/D,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAEO,cAAc,CAAC,GAAc;QACnC,eAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAG,GAAG,CAAC,MAA0B,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QAChF,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC3D,OAAO,GAAG,CAAC,KAAK,CAAA;IAClB,CAAC;CACF;AAxDD,sBAwDC"}
\ No newline at end of file
+{"version":3,"file":"jtd.js","sourceRoot":"","sources":["../lib/jtd.ts"],"names":[],"mappings":";;;AAEA,iCAA8C;AAC9C,4CAA8C;AAC9C,kDAA6C;AAC7C,uDAAuD;AACvD,+CAA+C;AAG/C,MAAM,cAAc,GAAG,iBAAiB,CAAA;AA4BxC,MAAM,GAAI,SAAQ,cAAO;IACvB,YAAY,OAAmB,EAAE;QAC/B,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,GAAG,EAAE,IAAI;SACV,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,KAAK,CAAC,gBAAgB,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QAC3B,IAAI,CAAC,aAAa,CAAC,oBAAa,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;IAC1D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzF,CAAC;IAMD,iBAAiB,CAAc,MAAoB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACtD,CAAC;IAMD,aAAa,CAAc,MAAoB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAiB,CAAA;IAChE,CAAC;IAEO,kBAAkB,CAAI,GAAc;QAC1C,mBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAG,GAAG,CAAC,MAA0B,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QACpF,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC/D,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAEO,cAAc,CAAC,GAAc;QACnC,eAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAG,GAAG,CAAC,MAA0B,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QAChF,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC3D,OAAO,GAAG,CAAC,KAAK,CAAA;IAClB,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,GAAG,CAAA;AAC9B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAA;AAE3D,kBAAe,GAAG,CAAA;AA0BlB,+CAA6C;AAArC,sGAAA,UAAU,OAAA;AAElB,6CAA6F;AAArF,4FAAA,CAAC,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,8FAAA,GAAG,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAQ,kGAAA,OAAO,OAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js
index 1477536..e864962 100644
--- a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js
@@ -1,23 +1,23 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const metaSchema = require("./schema.json");
-const metaApplicator = require("./meta/applicator.json");
-const metaContent = require("./meta/content.json");
-const metaCore = require("./meta/core.json");
-const metaFormat = require("./meta/format.json");
-const metaMetadata = require("./meta/meta-data.json");
-const metaValidation = require("./meta/validation.json");
+const applicator = require("./meta/applicator.json");
+const content = require("./meta/content.json");
+const core = require("./meta/core.json");
+const format = require("./meta/format.json");
+const metadata = require("./meta/meta-data.json");
+const validation = require("./meta/validation.json");
 const META_SUPPORT_DATA = ["/properties"];
 function addMetaSchema2019($data) {
     ;
     [
         metaSchema,
-        metaApplicator,
-        metaContent,
-        metaCore,
-        with$data(this, metaFormat),
-        metaMetadata,
-        with$data(this, metaValidation),
+        applicator,
+        content,
+        core,
+        with$data(this, format),
+        metadata,
+        with$data(this, validation),
     ].forEach((sch) => this.addMetaSchema(sch, undefined, false));
     return this;
     function with$data(ajv, sch) {
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map
index 7bf6333..9b8a36d 100644
--- a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/refs/json-schema-2019-09/index.ts"],"names":[],"mappings":";;AAEA,4CAA2C;AAC3C,yDAAwD;AACxD,mDAAkD;AAClD,6CAA4C;AAC5C,iDAAgD;AAChD,sDAAqD;AACrD,yDAAwD;AAExD,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAA;AAEzC,SAAwB,iBAAiB,CAAY,KAAe;IAClE,CAAC;IAAA;QACC,UAAU;QACV,cAAc;QACd,WAAW;QACX,QAAQ;QACR,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;QAC3B,YAAY;QACZ,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC;KAChC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7D,OAAO,IAAI,CAAA;IAEX,SAAS,SAAS,CAAC,GAAQ,EAAE,GAAoB;QAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAClE,CAAC;AACH,CAAC;AAfD,oCAeC"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/refs/json-schema-2019-09/index.ts"],"names":[],"mappings":";;AAEA,4CAA2C;AAC3C,qDAAoD;AACpD,+CAA8C;AAC9C,yCAAwC;AACxC,6CAA4C;AAC5C,kDAAiD;AACjD,qDAAoD;AAEpD,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAA;AAEzC,SAAwB,iBAAiB,CAAY,KAAe;IAClE,CAAC;IAAA;QACC,UAAU;QACV,UAAU;QACV,OAAO;QACP,IAAI;QACJ,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;QACvB,QAAQ;QACR,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;KAC5B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7D,OAAO,IAAI,CAAA;IAEX,SAAS,SAAS,CAAC,GAAQ,EAAE,GAAoB;QAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAClE,CAAC;AACH,CAAC;AAfD,oCAeC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts
new file mode 100644
index 0000000..c232ab0
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts
@@ -0,0 +1,2 @@
+import type Ajv from "../../core";
+export default function addMetaSchema2020(this: Ajv, $data?: boolean): Ajv;
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js
new file mode 100644
index 0000000..d925675
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const metaSchema = require("./schema.json");
+const applicator = require("./meta/applicator.json");
+const unevaluated = require("./meta/unevaluated.json");
+const content = require("./meta/content.json");
+const core = require("./meta/core.json");
+const format = require("./meta/format-annotation.json");
+const metadata = require("./meta/meta-data.json");
+const validation = require("./meta/validation.json");
+const META_SUPPORT_DATA = ["/properties"];
+function addMetaSchema2020($data) {
+    ;
+    [
+        metaSchema,
+        applicator,
+        unevaluated,
+        content,
+        core,
+        with$data(this, format),
+        metadata,
+        with$data(this, validation),
+    ].forEach((sch) => this.addMetaSchema(sch, undefined, false));
+    return this;
+    function with$data(ajv, sch) {
+        return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch;
+    }
+}
+exports.default = addMetaSchema2020;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map
new file mode 100644
index 0000000..eb90027
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/refs/json-schema-2020-12/index.ts"],"names":[],"mappings":";;AAEA,4CAA2C;AAC3C,qDAAoD;AACpD,uDAAsD;AACtD,+CAA8C;AAC9C,yCAAwC;AACxC,wDAAuD;AACvD,kDAAiD;AACjD,qDAAoD;AAEpD,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAA;AAEzC,SAAwB,iBAAiB,CAAY,KAAe;IAClE,CAAC;IAAA;QACC,UAAU;QACV,UAAU;QACV,WAAW;QACX,OAAO;QACP,IAAI;QACJ,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;QACvB,QAAQ;QACR,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;KAC5B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7D,OAAO,IAAI,CAAA;IAEX,SAAS,SAAS,CAAC,GAAQ,EAAE,GAAoB;QAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAClE,CAAC;AACH,CAAC;AAhBD,oCAgBC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json
new file mode 100644
index 0000000..674c913
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json
@@ -0,0 +1,48 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/applicator",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/applicator": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Applicator vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "prefixItems": {"$ref": "#/$defs/schemaArray"},
+    "items": {"$dynamicRef": "#meta"},
+    "contains": {"$dynamicRef": "#meta"},
+    "additionalProperties": {"$dynamicRef": "#meta"},
+    "properties": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "default": {}
+    },
+    "patternProperties": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "propertyNames": {"format": "regex"},
+      "default": {}
+    },
+    "dependentSchemas": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "default": {}
+    },
+    "propertyNames": {"$dynamicRef": "#meta"},
+    "if": {"$dynamicRef": "#meta"},
+    "then": {"$dynamicRef": "#meta"},
+    "else": {"$dynamicRef": "#meta"},
+    "allOf": {"$ref": "#/$defs/schemaArray"},
+    "anyOf": {"$ref": "#/$defs/schemaArray"},
+    "oneOf": {"$ref": "#/$defs/schemaArray"},
+    "not": {"$dynamicRef": "#meta"}
+  },
+  "$defs": {
+    "schemaArray": {
+      "type": "array",
+      "minItems": 1,
+      "items": {"$dynamicRef": "#meta"}
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json
new file mode 100644
index 0000000..2ae23dd
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json
@@ -0,0 +1,17 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/content",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/content": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Content vocabulary meta-schema",
+
+  "type": ["object", "boolean"],
+  "properties": {
+    "contentEncoding": {"type": "string"},
+    "contentMediaType": {"type": "string"},
+    "contentSchema": {"$dynamicRef": "#meta"}
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json
new file mode 100644
index 0000000..4c8e5cb
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json
@@ -0,0 +1,51 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/core",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/core": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Core vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "$id": {
+      "$ref": "#/$defs/uriReferenceString",
+      "$comment": "Non-empty fragments not allowed.",
+      "pattern": "^[^#]*#?$"
+    },
+    "$schema": {"$ref": "#/$defs/uriString"},
+    "$ref": {"$ref": "#/$defs/uriReferenceString"},
+    "$anchor": {"$ref": "#/$defs/anchorString"},
+    "$dynamicRef": {"$ref": "#/$defs/uriReferenceString"},
+    "$dynamicAnchor": {"$ref": "#/$defs/anchorString"},
+    "$vocabulary": {
+      "type": "object",
+      "propertyNames": {"$ref": "#/$defs/uriString"},
+      "additionalProperties": {
+        "type": "boolean"
+      }
+    },
+    "$comment": {
+      "type": "string"
+    },
+    "$defs": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"}
+    }
+  },
+  "$defs": {
+    "anchorString": {
+      "type": "string",
+      "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
+    },
+    "uriString": {
+      "type": "string",
+      "format": "uri"
+    },
+    "uriReferenceString": {
+      "type": "string",
+      "format": "uri-reference"
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json
new file mode 100644
index 0000000..83c26e3
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json
@@ -0,0 +1,14 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/format-annotation": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Format vocabulary meta-schema for annotation results",
+  "type": ["object", "boolean"],
+  "properties": {
+    "format": {"type": "string"}
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json
new file mode 100644
index 0000000..11946fb
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json
@@ -0,0 +1,37 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/meta-data": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Meta-data vocabulary meta-schema",
+
+  "type": ["object", "boolean"],
+  "properties": {
+    "title": {
+      "type": "string"
+    },
+    "description": {
+      "type": "string"
+    },
+    "default": true,
+    "deprecated": {
+      "type": "boolean",
+      "default": false
+    },
+    "readOnly": {
+      "type": "boolean",
+      "default": false
+    },
+    "writeOnly": {
+      "type": "boolean",
+      "default": false
+    },
+    "examples": {
+      "type": "array",
+      "items": true
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json
new file mode 100644
index 0000000..5e4b203
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json
@@ -0,0 +1,15 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/unevaluated": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Unevaluated applicator vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "unevaluatedItems": {"$dynamicRef": "#meta"},
+    "unevaluatedProperties": {"$dynamicRef": "#meta"}
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json
new file mode 100644
index 0000000..e0ae13d
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json
@@ -0,0 +1,90 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/validation",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/validation": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Validation vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "type": {
+      "anyOf": [
+        {"$ref": "#/$defs/simpleTypes"},
+        {
+          "type": "array",
+          "items": {"$ref": "#/$defs/simpleTypes"},
+          "minItems": 1,
+          "uniqueItems": true
+        }
+      ]
+    },
+    "const": true,
+    "enum": {
+      "type": "array",
+      "items": true
+    },
+    "multipleOf": {
+      "type": "number",
+      "exclusiveMinimum": 0
+    },
+    "maximum": {
+      "type": "number"
+    },
+    "exclusiveMaximum": {
+      "type": "number"
+    },
+    "minimum": {
+      "type": "number"
+    },
+    "exclusiveMinimum": {
+      "type": "number"
+    },
+    "maxLength": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minLength": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
+    "pattern": {
+      "type": "string",
+      "format": "regex"
+    },
+    "maxItems": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minItems": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
+    "uniqueItems": {
+      "type": "boolean",
+      "default": false
+    },
+    "maxContains": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minContains": {
+      "$ref": "#/$defs/nonNegativeInteger",
+      "default": 1
+    },
+    "maxProperties": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minProperties": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
+    "required": {"$ref": "#/$defs/stringArray"},
+    "dependentRequired": {
+      "type": "object",
+      "additionalProperties": {
+        "$ref": "#/$defs/stringArray"
+      }
+    }
+  },
+  "$defs": {
+    "nonNegativeInteger": {
+      "type": "integer",
+      "minimum": 0
+    },
+    "nonNegativeIntegerDefault0": {
+      "$ref": "#/$defs/nonNegativeInteger",
+      "default": 0
+    },
+    "simpleTypes": {
+      "enum": ["array", "boolean", "integer", "null", "number", "object", "string"]
+    },
+    "stringArray": {
+      "type": "array",
+      "items": {"type": "string"},
+      "uniqueItems": true,
+      "default": []
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json
new file mode 100644
index 0000000..1c68270
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json
@@ -0,0 +1,55 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/schema",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/core": true,
+    "https://json-schema.org/draft/2020-12/vocab/applicator": true,
+    "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
+    "https://json-schema.org/draft/2020-12/vocab/validation": true,
+    "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
+    "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
+    "https://json-schema.org/draft/2020-12/vocab/content": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Core and Validation specifications meta-schema",
+  "allOf": [
+    {"$ref": "meta/core"},
+    {"$ref": "meta/applicator"},
+    {"$ref": "meta/unevaluated"},
+    {"$ref": "meta/validation"},
+    {"$ref": "meta/meta-data"},
+    {"$ref": "meta/format-annotation"},
+    {"$ref": "meta/content"}
+  ],
+  "type": ["object", "boolean"],
+  "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
+  "properties": {
+    "definitions": {
+      "$comment": "\"definitions\" has been replaced by \"$defs\".",
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "deprecated": true,
+      "default": {}
+    },
+    "dependencies": {
+      "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
+      "type": "object",
+      "additionalProperties": {
+        "anyOf": [{"$dynamicRef": "#meta"}, {"$ref": "meta/validation#/$defs/stringArray"}]
+      },
+      "deprecated": true,
+      "default": {}
+    },
+    "$recursiveAnchor": {
+      "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
+      "$ref": "meta/core#/$defs/anchorString",
+      "deprecated": true
+    },
+    "$recursiveRef": {
+      "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
+      "$ref": "meta/core#/$defs/uriReferenceString",
+      "deprecated": true
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/equal.d.ts b/node_modules/table/node_modules/ajv/dist/runtime/equal.d.ts
new file mode 100644
index 0000000..56149ea
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/equal.d.ts
@@ -0,0 +1,6 @@
+import * as equal from "fast-deep-equal";
+declare type Equal = typeof equal & {
+    code: string;
+};
+declare const _default: Equal;
+export default _default;
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/equal.js b/node_modules/table/node_modules/ajv/dist/runtime/equal.js
new file mode 100644
index 0000000..774bba0
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/equal.js
@@ -0,0 +1,7 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+// https://github.com/ajv-validator/ajv/issues/889
+const equal = require("fast-deep-equal");
+equal.code = 'require("ajv/dist/runtime/equal").default';
+exports.default = equal;
+//# sourceMappingURL=equal.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/equal.js.map b/node_modules/table/node_modules/ajv/dist/runtime/equal.js.map
new file mode 100644
index 0000000..0e17901
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/equal.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"equal.js","sourceRoot":"","sources":["../../lib/runtime/equal.ts"],"names":[],"mappings":";;AAAA,kDAAkD;AAClD,yCAAwC;AAGtC,KAAe,CAAC,IAAI,GAAG,2CAA2C,CAAA;AAEpE,kBAAe,KAAc,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/parseJson.d.ts b/node_modules/table/node_modules/ajv/dist/runtime/parseJson.d.ts
index e3cb93c..85f1d56 100644
--- a/node_modules/table/node_modules/ajv/dist/runtime/parseJson.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/runtime/parseJson.d.ts
@@ -2,17 +2,17 @@
 export declare namespace parseJson {
     var message: string | undefined;
     var position: number;
-    var code: import("../compile/codegen/code")._Code;
+    var code: string;
 }
 export declare function parseJsonNumber(s: string, pos: number, maxDigits?: number): number | undefined;
 export declare namespace parseJsonNumber {
     var message: string | undefined;
     var position: number;
-    var code: import("../compile/codegen/code")._Code;
+    var code: string;
 }
 export declare function parseJsonString(s: string, pos: number): string | undefined;
 export declare namespace parseJsonString {
     var message: string | undefined;
     var position: number;
-    var code: import("../compile/codegen/code")._Code;
+    var code: string;
 }
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js b/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js
index cd4b8c1..2576a6e 100644
--- a/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js
+++ b/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js
@@ -1,7 +1,6 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.parseJsonString = exports.parseJsonNumber = exports.parseJson = void 0;
-const codegen_1 = require("../compile/codegen");
 const rxParseJson = /position\s(\d+)$/;
 function parseJson(s, pos) {
     let endPos;
@@ -35,7 +34,7 @@
 exports.parseJson = parseJson;
 parseJson.message = undefined;
 parseJson.position = 0;
-parseJson.code = codegen_1._ `require("ajv/dist/runtime/parseJson").parseJson`;
+parseJson.code = 'require("ajv/dist/runtime/parseJson").parseJson';
 function parseJsonNumber(s, pos, maxDigits) {
     let numStr = "";
     let c;
@@ -97,7 +96,7 @@
 exports.parseJsonNumber = parseJsonNumber;
 parseJsonNumber.message = undefined;
 parseJsonNumber.position = 0;
-parseJsonNumber.code = codegen_1._ `require("ajv/dist/runtime/parseJson").parseJsonNumber`;
+parseJsonNumber.code = 'require("ajv/dist/runtime/parseJson").parseJsonNumber';
 const escapedChars = {
     b: "\b",
     f: "\f",
@@ -179,5 +178,5 @@
 exports.parseJsonString = parseJsonString;
 parseJsonString.message = undefined;
 parseJsonString.position = 0;
-parseJsonString.code = codegen_1._ `require("ajv/dist/runtime/parseJson").parseJsonString`;
+parseJsonString.code = 'require("ajv/dist/runtime/parseJson").parseJsonString';
 //# sourceMappingURL=parseJson.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js.map b/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js.map
index 7098463..a13a1f0 100644
--- a/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js.map
+++ b/node_modules/table/node_modules/ajv/dist/runtime/parseJson.js.map
@@ -1 +1 @@
-{"version":3,"file":"parseJson.js","sourceRoot":"","sources":["../../lib/runtime/parseJson.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"parseJson.js","sourceRoot":"","sources":["../../lib/runtime/parseJson.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/quote.d.ts b/node_modules/table/node_modules/ajv/dist/runtime/quote.d.ts
index ec03ebf..0579dd3 100644
--- a/node_modules/table/node_modules/ajv/dist/runtime/quote.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/runtime/quote.d.ts
@@ -1 +1,5 @@
-export default function quote(s: string): string;
+declare function quote(s: string): string;
+declare namespace quote {
+    var code: string;
+}
+export default quote;
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/quote.js b/node_modules/table/node_modules/ajv/dist/runtime/quote.js
index 3612805..9e81ca2 100644
--- a/node_modules/table/node_modules/ajv/dist/runtime/quote.js
+++ b/node_modules/table/node_modules/ajv/dist/runtime/quote.js
@@ -25,4 +25,5 @@
         '"');
 }
 exports.default = quote;
+quote.code = 'require("ajv/dist/runtime/quote").default';
 //# sourceMappingURL=quote.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/quote.js.map b/node_modules/table/node_modules/ajv/dist/runtime/quote.js.map
index 27d322f..49e32d0 100644
--- a/node_modules/table/node_modules/ajv/dist/runtime/quote.js.map
+++ b/node_modules/table/node_modules/ajv/dist/runtime/quote.js.map
@@ -1 +1 @@
-{"version":3,"file":"quote.js","sourceRoot":"","sources":["../../lib/runtime/quote.ts"],"names":[],"mappings":";;AAAA,2EAA2E;AAC3E,MAAM,WAAW,GAAG,iIAAiI,CAAA;AAErJ,MAAM,OAAO,GAA6B;IACxC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACb,CAAA;AAED,SAAwB,KAAK,CAAC,CAAS;IACrC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAA;IACzB,OAAO,CACL,GAAG;QACH,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;gBACpB,OAAO,OAAO,CAAC,KAAK,QAAQ;oBAC1B,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;QACN,GAAG,CACJ,CAAA;AACH,CAAC;AAdD,wBAcC"}
\ No newline at end of file
+{"version":3,"file":"quote.js","sourceRoot":"","sources":["../../lib/runtime/quote.ts"],"names":[],"mappings":";;AAAA,2EAA2E;AAC3E,MAAM,WAAW,GAAG,iIAAiI,CAAA;AAErJ,MAAM,OAAO,GAA6B;IACxC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACb,CAAA;AAED,SAAwB,KAAK,CAAC,CAAS;IACrC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAA;IACzB,OAAO,CACL,GAAG;QACH,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;gBACpB,OAAO,OAAO,CAAC,KAAK,QAAQ;oBAC1B,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;QACN,GAAG,CACJ,CAAA;AACH,CAAC;AAdD,wBAcC;AAED,KAAK,CAAC,IAAI,GAAG,2CAA2C,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/timestamp.d.ts b/node_modules/table/node_modules/ajv/dist/runtime/timestamp.d.ts
similarity index 72%
rename from node_modules/table/node_modules/ajv/dist/compile/timestamp.d.ts
rename to node_modules/table/node_modules/ajv/dist/runtime/timestamp.d.ts
index ee14c37..11512b6 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/timestamp.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/runtime/timestamp.d.ts
@@ -1,5 +1,5 @@
 declare function validTimestamp(str: string): boolean;
 declare namespace validTimestamp {
-    var code: import("./codegen/code")._Code;
+    var code: string;
 }
 export default validTimestamp;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/timestamp.js b/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js
similarity index 89%
rename from node_modules/table/node_modules/ajv/dist/compile/timestamp.js
rename to node_modules/table/node_modules/ajv/dist/runtime/timestamp.js
index f280d4f..470abf6 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/timestamp.js
+++ b/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js
@@ -1,6 +1,5 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-const codegen_1 = require("./codegen");
 const DATE_TIME = /^(\d\d\d\d)-(\d\d)-(\d\d)(?:t|\s)(\d\d):(\d\d):(\d\d)(?:\.\d+)?(?:z|([+-]\d\d)(?::?(\d\d))?)$/i;
 const DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 function validTimestamp(str) {
@@ -27,5 +26,5 @@
             (hr - tzH === 23 && min - tzM === 59 && sec === 60)));
 }
 exports.default = validTimestamp;
-validTimestamp.code = codegen_1._ `require("ajv/dist/compile/timestamp").default`;
+validTimestamp.code = 'require("ajv/dist/runtime/timestamp").default';
 //# sourceMappingURL=timestamp.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js.map b/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js.map
new file mode 100644
index 0000000..b6f4dd1
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/timestamp.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../lib/runtime/timestamp.ts"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,gGAAgG,CAAA;AAClH,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAEhE,SAAwB,cAAc,CAAC,GAAW;IAChD,iDAAiD;IACjD,MAAM,OAAO,GAAoB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,MAAM,GAAG,GAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,OAAO,CACL,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,CAAC;QACN,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACX,4DAA4D;YAC5D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;YACnC,cAAc;YACd,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CACvD,CAAA;AACH,CAAC;AAvBD,iCAuBC;AAED,cAAc,CAAC,IAAI,GAAG,+CAA+C,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.d.ts b/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.d.ts
new file mode 100644
index 0000000..ecbee69
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.d.ts
@@ -0,0 +1,5 @@
+declare function ucs2length(str: string): number;
+declare namespace ucs2length {
+    var code: string;
+}
+export default ucs2length;
diff --git a/node_modules/table/node_modules/ajv/dist/compile/ucs2length.js b/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js
similarity index 91%
rename from node_modules/table/node_modules/ajv/dist/compile/ucs2length.js
rename to node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js
index ba94608..92ea0c0 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/ucs2length.js
+++ b/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js
@@ -20,4 +20,5 @@
     return length;
 }
 exports.default = ucs2length;
+ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default';
 //# sourceMappingURL=ucs2length.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/compile/ucs2length.js.map b/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js.map
similarity index 81%
rename from node_modules/table/node_modules/ajv/dist/compile/ucs2length.js.map
rename to node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js.map
index 5792bfa..7c7f788 100644
--- a/node_modules/table/node_modules/ajv/dist/compile/ucs2length.js.map
+++ b/node_modules/table/node_modules/ajv/dist/runtime/ucs2length.js.map
@@ -1 +1 @@
-{"version":3,"file":"ucs2length.js","sourceRoot":"","sources":["../../lib/compile/ucs2length.ts"],"names":[],"mappings":";;AAAA,qDAAqD;AACrD,iEAAiE;AACjE,SAAwB,UAAU,CAAC,GAAW;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IACtB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAa,CAAA;IACjB,OAAO,GAAG,GAAG,GAAG,EAAE;QAChB,MAAM,EAAE,CAAA;QACR,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7B,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE;YACnD,gDAAgD;YAChD,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,MAAM;gBAAE,GAAG,EAAE,CAAA,CAAC,gBAAgB;SACxD;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAfD,6BAeC"}
\ No newline at end of file
+{"version":3,"file":"ucs2length.js","sourceRoot":"","sources":["../../lib/runtime/ucs2length.ts"],"names":[],"mappings":";;AAAA,qDAAqD;AACrD,iEAAiE;AACjE,SAAwB,UAAU,CAAC,GAAW;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IACtB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAa,CAAA;IACjB,OAAO,GAAG,GAAG,GAAG,EAAE;QAChB,MAAM,EAAE,CAAA;QACR,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7B,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE;YACnD,gDAAgD;YAChD,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,MAAM;gBAAE,GAAG,EAAE,CAAA,CAAC,gBAAgB;SACxD;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAfD,6BAeC;AAED,UAAU,CAAC,IAAI,GAAG,gDAAgD,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/validation_error.d.ts b/node_modules/table/node_modules/ajv/dist/runtime/validation_error.d.ts
new file mode 100644
index 0000000..b0ee969
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/validation_error.d.ts
@@ -0,0 +1,7 @@
+import type { ErrorObject } from "../types";
+export default class ValidationError extends Error {
+    readonly errors: Partial<ErrorObject>[];
+    readonly ajv: true;
+    readonly validation: true;
+    constructor(errors: Partial<ErrorObject>[]);
+}
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js b/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js
new file mode 100644
index 0000000..353502c
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class ValidationError extends Error {
+    constructor(errors) {
+        super("validation failed");
+        this.errors = errors;
+        this.ajv = this.validation = true;
+    }
+}
+exports.default = ValidationError;
+//# sourceMappingURL=validation_error.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js.map b/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js.map
new file mode 100644
index 0000000..70206fb
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"validation_error.js","sourceRoot":"","sources":["../../lib/runtime/validation_error.ts"],"names":[],"mappings":";;AAEA,MAAqB,eAAgB,SAAQ,KAAK;IAKhD,YAAY,MAA8B;QACxC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACnC,CAAC;CACF;AAVD,kCAUC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/types/index.d.ts b/node_modules/table/node_modules/ajv/dist/types/index.d.ts
index 79237c4..6581cef 100644
--- a/node_modules/table/node_modules/ajv/dist/types/index.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/types/index.d.ts
@@ -1,7 +1,7 @@
 import type { CodeGen, Code, Name, ScopeValueSets, ValueScopeName } from "../compile/codegen";
 import type { SchemaEnv, SchemaCxt, SchemaObjCxt } from "../compile";
 import type { JSONType } from "../compile/rules";
-import type KeywordCxt from "../compile/context";
+import type { KeywordCxt } from "../compile/validate";
 import type Ajv from "../core";
 interface _SchemaObject {
     $id?: string;
@@ -30,7 +30,7 @@
     evaluated?: Code;
 }
 export interface DataValidationCxt<T extends string | number = string | number> {
-    dataPath: string;
+    instancePath: string;
     parentData: {
         [K in T]: any;
     };
@@ -70,8 +70,7 @@
 export declare type AnyValidateFunction<T = any> = ValidateFunction<T> | AsyncValidateFunction<T>;
 export interface ErrorObject<K extends string = string, P = Record<string, any>, S = unknown> {
     keyword: K;
-    dataPath: string;
-    instancePath?: string;
+    instancePath: string;
     schemaPath: string;
     params: P;
     propertyName?: string;
@@ -128,7 +127,7 @@
     schemaType: JSONType[];
 };
 export interface KeywordErrorDefinition {
-    message: string | Code | ((cxt: KeywordErrorCxt) => Code);
+    message: string | Code | ((cxt: KeywordErrorCxt) => string | Code);
     params?: Code | ((cxt: KeywordErrorCxt) => Code);
 }
 export declare type Vocabulary = (KeywordDefinition | string)[];
diff --git a/node_modules/table/node_modules/ajv/dist/types/json-schema.d.ts b/node_modules/table/node_modules/ajv/dist/types/json-schema.d.ts
index 597b8da..698a3ef 100644
--- a/node_modules/table/node_modules/ajv/dist/types/json-schema.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/types/json-schema.d.ts
@@ -1,26 +1,39 @@
-export declare type SomeJSONSchema = JSONSchemaType<Known, true>;
-export declare type PartialSchema<T> = Partial<JSONSchemaType<T, true>>;
-declare type JSONType<T extends string, _partial extends boolean> = _partial extends true ? T | undefined : T;
-export declare type JSONSchemaType<T, _partial extends boolean = false> = (T extends number ? {
-    type: JSONType<"number" | "integer", _partial>;
+declare type StrictNullChecksWrapper<Name extends string, Type> = undefined extends null ? `strictNullChecks must be true in tsconfig to use ${Name}` : Type;
+export declare type SomeJSONSchema = UncheckedJSONSchemaType<Known, true>;
+declare type UncheckedPartialSchema<T> = Partial<UncheckedJSONSchemaType<T, true>>;
+export declare type PartialSchema<T> = StrictNullChecksWrapper<"PartialSchema", UncheckedPartialSchema<T>>;
+declare type JSONType<T extends string, IsPartial extends boolean> = IsPartial extends true ? T | undefined : T;
+interface NumberKeywords {
     minimum?: number;
     maximum?: number;
     exclusiveMinimum?: number;
     exclusiveMaximum?: number;
     multipleOf?: number;
     format?: string;
-} : T extends string ? {
-    type: JSONType<"string", _partial>;
+}
+interface StringKeywords {
     minLength?: number;
     maxLength?: number;
     pattern?: string;
     format?: string;
-} : T extends boolean ? {
+}
+declare type UncheckedJSONSchemaType<T, IsPartial extends boolean> = (// these two unions allow arbitrary unions of types
+{
+    anyOf: readonly UncheckedJSONSchemaType<T, IsPartial>[];
+} | {
+    oneOf: readonly UncheckedJSONSchemaType<T, IsPartial>[];
+} | ({
+    type: (T extends number ? JSONType<"number" | "integer", IsPartial> : T extends string ? JSONType<"string", IsPartial> : T extends boolean ? JSONType<"boolean", IsPartial> : never)[];
+} & (T extends number ? NumberKeywords : T extends string ? StringKeywords : T extends boolean ? unknown : never)) | ((T extends number ? {
+    type: JSONType<"number" | "integer", IsPartial>;
+} & NumberKeywords : T extends string ? {
+    type: JSONType<"string", IsPartial>;
+} & StringKeywords : T extends boolean ? {
     type: "boolean";
 } : T extends [any, ...any[]] ? {
-    type: JSONType<"array", _partial>;
+    type: JSONType<"array", IsPartial>;
     items: {
-        readonly [K in keyof T]-?: JSONSchemaType<T[K]> & Nullable<T[K]>;
+        readonly [K in keyof T]-?: UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>;
     } & {
         length: T["length"];
     };
@@ -30,9 +43,9 @@
 } | {
     additionalItems: false;
 }) : T extends readonly any[] ? {
-    type: JSONType<"array", _partial>;
-    items: JSONSchemaType<T[0]>;
-    contains?: PartialSchema<T[0]>;
+    type: JSONType<"array", IsPartial>;
+    items: UncheckedJSONSchemaType<T[0], false>;
+    contains?: UncheckedPartialSchema<T[0]>;
     minItems?: number;
     maxItems?: number;
     minContains?: number;
@@ -40,57 +53,68 @@
     uniqueItems?: true;
     additionalItems?: never;
 } : T extends Record<string, any> ? {
-    type: JSONType<"object", _partial>;
-    required: _partial extends true ? Readonly<(keyof T)[]> : Readonly<RequiredMembers<T>[]>;
-    additionalProperties?: boolean | JSONSchemaType<T[string]>;
-    unevaluatedProperties?: boolean | JSONSchemaType<T[string]>;
-    properties?: _partial extends true ? Partial<PropertiesSchema<T>> : PropertiesSchema<T>;
+    type: JSONType<"object", IsPartial>;
+    additionalProperties?: boolean | UncheckedJSONSchemaType<T[string], false>;
+    unevaluatedProperties?: boolean | UncheckedJSONSchemaType<T[string], false>;
+    properties?: IsPartial extends true ? Partial<UncheckedPropertiesSchema<T>> : UncheckedPropertiesSchema<T>;
     patternProperties?: {
-        [Pattern in string]?: JSONSchemaType<T[string]>;
+        [Pattern in string]?: UncheckedJSONSchemaType<T[string], false>;
     };
-    propertyNames?: JSONSchemaType<string>;
+    propertyNames?: Omit<UncheckedJSONSchemaType<string, false>, "type"> & {
+        type?: "string";
+    };
     dependencies?: {
-        [K in keyof T]?: Readonly<(keyof T)[]> | PartialSchema<T>;
+        [K in keyof T]?: Readonly<(keyof T)[]> | UncheckedPartialSchema<T>;
     };
     dependentRequired?: {
         [K in keyof T]?: Readonly<(keyof T)[]>;
     };
     dependentSchemas?: {
-        [K in keyof T]?: PartialSchema<T>;
+        [K in keyof T]?: UncheckedPartialSchema<T>;
     };
     minProperties?: number;
     maxProperties?: number;
-} : T extends null ? {
+} & (IsPartial extends true ? {
+    required: Readonly<(keyof T)[]>;
+} : [UncheckedRequiredMembers<T>] extends [never] ? {
+    required?: Readonly<UncheckedRequiredMembers<T>[]>;
+} : {
+    required: Readonly<UncheckedRequiredMembers<T>[]>;
+}) : T extends null ? {
     nullable: true;
 } : never) & {
+    allOf?: Readonly<UncheckedPartialSchema<T>[]>;
+    anyOf?: Readonly<UncheckedPartialSchema<T>[]>;
+    oneOf?: Readonly<UncheckedPartialSchema<T>[]>;
+    if?: UncheckedPartialSchema<T>;
+    then?: UncheckedPartialSchema<T>;
+    else?: UncheckedPartialSchema<T>;
+    not?: UncheckedPartialSchema<T>;
+})) & {
     [keyword: string]: any;
     $id?: string;
     $ref?: string;
     $defs?: {
-        [Key in string]?: JSONSchemaType<Known, true>;
+        [Key in string]?: UncheckedJSONSchemaType<Known, true>;
     };
     definitions?: {
-        [Key in string]?: JSONSchemaType<Known, true>;
+        [Key in string]?: UncheckedJSONSchemaType<Known, true>;
     };
-    allOf?: Readonly<PartialSchema<T>[]>;
-    anyOf?: Readonly<PartialSchema<T>[]>;
-    oneOf?: Readonly<PartialSchema<T>[]>;
-    if?: PartialSchema<T>;
-    then?: PartialSchema<T>;
-    else?: PartialSchema<T>;
-    not?: PartialSchema<T>;
 };
+export declare type JSONSchemaType<T> = StrictNullChecksWrapper<"JSONSchemaType", UncheckedJSONSchemaType<T, false>>;
 declare type Known = KnownRecord | [Known, ...Known[]] | Known[] | number | string | boolean | null;
 interface KnownRecord extends Record<string, Known> {
 }
-export declare type PropertiesSchema<T> = {
-    [K in keyof T]-?: (JSONSchemaType<T[K]> & Nullable<T[K]>) | {
+declare type UncheckedPropertiesSchema<T> = {
+    [K in keyof T]-?: (UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>) | {
         $ref: string;
     };
 };
-export declare type RequiredMembers<T> = {
+export declare type PropertiesSchema<T> = StrictNullChecksWrapper<"PropertiesSchema", UncheckedPropertiesSchema<T>>;
+declare type UncheckedRequiredMembers<T> = {
     [K in keyof T]-?: undefined extends T[K] ? never : K;
 }[keyof T];
+export declare type RequiredMembers<T> = StrictNullChecksWrapper<"RequiredMembers", UncheckedRequiredMembers<T>>;
 declare type Nullable<T> = undefined extends T ? {
     nullable: true;
     const?: never;
diff --git a/node_modules/table/node_modules/ajv/dist/types/jtd-schema.d.ts b/node_modules/table/node_modules/ajv/dist/types/jtd-schema.d.ts
index d06b3a2..2a8abb5 100644
--- a/node_modules/table/node_modules/ajv/dist/types/jtd-schema.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/types/jtd-schema.d.ts
@@ -1,3 +1,35 @@
+/** numeric strings */
+declare type NumberType = "float32" | "float64" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32";
+/** string strings */
+declare type StringType = "string" | "timestamp";
+/** Generic JTD Schema without inference of the represented type */
+export declare type SomeJTDSchemaType = (// ref
+{
+    ref: string;
+} | {
+    type: NumberType | StringType | "boolean";
+} | {
+    enum: string[];
+} | {
+    elements: SomeJTDSchemaType;
+} | {
+    values: SomeJTDSchemaType;
+} | {
+    properties: Record<string, SomeJTDSchemaType>;
+    optionalProperties?: Record<string, SomeJTDSchemaType>;
+    additionalProperties?: boolean;
+} | {
+    properties?: Record<string, SomeJTDSchemaType>;
+    optionalProperties: Record<string, SomeJTDSchemaType>;
+    additionalProperties?: boolean;
+} | {
+    discriminator: string;
+    mapping: Record<string, SomeJTDSchemaType>;
+} | {}) & {
+    nullable?: boolean;
+    metadata?: Record<string, unknown>;
+    definitions?: Record<string, SomeJTDSchemaType>;
+};
 /** required keys of an object, not undefined */
 declare type RequiredKeys<T> = {
     [K in keyof T]-?: undefined extends T[K] ? never : K;
@@ -23,10 +55,6 @@
 declare type IsValues<T> = false extends IsUnion<Exclude<T, null>> ? TypeEquality<keyof Exclude<T, null>, string> : false;
 /** true if type is a proeprties type and Union is false, or type is a discriminator type and Union is true */
 declare type IsRecord<T, Union extends boolean> = Union extends IsUnion<Exclude<T, null>> ? null extends EnumString<keyof Exclude<T, null>> ? false : true : false;
-/** numeric strings */
-declare type NumberType = "float32" | "float64" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32";
-/** string strings */
-declare type StringType = "string" | "timestamp";
 /** actual schema */
 export declare type JTDSchemaType<T, D extends Record<string, unknown> = Record<string, never>> = (// refs - where null wasn't specified, must match exactly
 (null extends EnumString<keyof D> ? never : ({
@@ -56,7 +84,7 @@
 } : true extends IsElements<Exclude<T, null>> ? T extends readonly (infer E)[] ? {
     elements: JTDSchemaType<E, D>;
 } : never : true extends IsValues<T> ? T extends Record<string, infer V> ? {
-    values: JTDSchemaType<V>;
+    values: JTDSchemaType<V, D>;
 } : never : true extends IsRecord<T, false> ? ([RequiredKeys<Exclude<T, null>>] extends [never] ? {
     properties?: Record<string, never>;
 } : {
@@ -92,9 +120,13 @@
 };
 declare type JTDDataDef<S, D extends Record<string, unknown>> = (S extends {
     ref: string;
-} ? JTDDataDef<D[S["ref"]], D> : S extends {
+} ? D extends {
+    [K in S["ref"]]: infer V;
+} ? JTDDataDef<V, D> : never : S extends {
     type: NumberType;
 } ? number : S extends {
+    type: "boolean";
+} ? boolean : S extends {
     type: "string";
 } ? string : S extends {
     type: "timestamp";
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts
index e4a3cac..89a73f8 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts
@@ -1,6 +1,8 @@
 import type { CodeKeywordDefinition, ErrorObject, AnySchema } from "../../types";
+import type { KeywordCxt } from "../../compile/validate";
 export declare type AdditionalItemsError = ErrorObject<"additionalItems", {
     limit: number;
 }, AnySchema>;
 declare const def: CodeKeywordDefinition;
+export declare function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
index 76f8aab..587a8bc 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
@@ -1,11 +1,10 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateAdditionalItems = void 0;
 const codegen_1 = require("../../compile/codegen");
-const subschema_1 = require("../../compile/subschema");
 const util_1 = require("../../compile/util");
-const validate_1 = require("../../compile/validate");
 const error = {
-    message: ({ params: { len } }) => codegen_1.str `should NOT have more than ${len} items`,
+    message: ({ params: { len } }) => codegen_1.str `must NOT have more than ${len} items`,
     params: ({ params: { len } }) => codegen_1._ `{limit: ${len}}`,
 };
 const def = {
@@ -15,31 +14,36 @@
     before: "uniqueItems",
     error,
     code(cxt) {
-        const { gen, schema, parentSchema, data, it } = cxt;
+        const { parentSchema, it } = cxt;
         const { items } = parentSchema;
         if (!Array.isArray(items)) {
-            validate_1.checkStrictMode(it, '"additionalItems" is ignored when "items" is not an array of schemas');
+            util_1.checkStrictMode(it, '"additionalItems" is ignored when "items" is not an array of schemas');
             return;
         }
-        it.items = true;
-        const len = gen.const("len", codegen_1._ `${data}.length`);
-        if (schema === false) {
-            cxt.setParams({ len: items.length });
-            cxt.pass(codegen_1._ `${len} <= ${items.length}`);
-        }
-        else if (typeof schema == "object" && !util_1.alwaysValidSchema(it, schema)) {
-            const valid = gen.var("valid", codegen_1._ `${len} <= ${items.length}`); // TODO var
-            gen.if(codegen_1.not(valid), () => validateItems(valid));
-            cxt.ok(valid);
-        }
-        function validateItems(valid) {
-            gen.forRange("i", items.length, len, (i) => {
-                cxt.subschema({ keyword: "additionalItems", dataProp: i, dataPropType: subschema_1.Type.Num }, valid);
-                if (!it.allErrors)
-                    gen.if(codegen_1.not(valid), () => gen.break());
-            });
-        }
+        validateAdditionalItems(cxt, items);
     },
 };
+function validateAdditionalItems(cxt, items) {
+    const { gen, schema, data, keyword, it } = cxt;
+    it.items = true;
+    const len = gen.const("len", codegen_1._ `${data}.length`);
+    if (schema === false) {
+        cxt.setParams({ len: items.length });
+        cxt.pass(codegen_1._ `${len} <= ${items.length}`);
+    }
+    else if (typeof schema == "object" && !util_1.alwaysValidSchema(it, schema)) {
+        const valid = gen.var("valid", codegen_1._ `${len} <= ${items.length}`); // TODO var
+        gen.if(codegen_1.not(valid), () => validateItems(valid));
+        cxt.ok(valid);
+    }
+    function validateItems(valid) {
+        gen.forRange("i", items.length, len, (i) => {
+            cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);
+            if (!it.allErrors)
+                gen.if(codegen_1.not(valid), () => gen.break());
+        });
+    }
+}
+exports.validateAdditionalItems = validateAdditionalItems;
 exports.default = def;
 //# sourceMappingURL=additionalItems.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map
index f590f36..5038c7f 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map
@@ -1 +1 @@
-{"version":3,"file":"additionalItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/additionalItems.ts"],"names":[],"mappings":";;AAOA,mDAAuD;AACvD,uDAA4C;AAC5C,6CAAoD;AACpD,qDAAsD;AAItD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,6BAA6B,GAAG,QAAQ;IACzE,MAAM,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,GAAG,GAAG;CAChD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,iBAA0B;IACnC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,MAAM,EAAE,aAAa;IACrB,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACjD,MAAM,EAAC,KAAK,EAAC,GAAG,YAAY,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,0BAAe,CAAC,EAAE,EAAE,sEAAsE,CAAC,CAAA;YAC3F,OAAM;SACP;QACD,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;QACf,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;QAC/C,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,GAAG,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAA;YAClC,GAAG,CAAC,IAAI,CAAC,WAAC,CAAA,GAAG,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;SACvC;aAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACtE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,WAAC,CAAA,GAAG,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA,CAAC,WAAW;YACxE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;SACd;QAED,SAAS,aAAa,CAAC,KAAW;YAChC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;gBACzC,GAAG,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,gBAAI,CAAC,GAAG,EAAC,EAAE,KAAK,CAAC,CAAA;gBACvF,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YAC1D,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"additionalItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/additionalItems.ts"],"names":[],"mappings":";;;AAOA,mDAAuD;AACvD,6CAA2E;AAI3E,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,2BAA2B,GAAG,QAAQ;IACvE,MAAM,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,GAAG,GAAG;CAChD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,iBAA0B;IACnC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,MAAM,EAAE,aAAa;IACrB,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,YAAY,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC9B,MAAM,EAAC,KAAK,EAAC,GAAG,YAAY,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,sBAAe,CAAC,EAAE,EAAE,sEAAsE,CAAC,CAAA;YAC3F,OAAM;SACP;QACD,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACrC,CAAC;CACF,CAAA;AAED,SAAgB,uBAAuB,CAAC,GAAe,EAAE,KAAkB;IACzE,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;IAC5C,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;IACf,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;IAC/C,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,GAAG,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAA;QAClC,GAAG,CAAC,IAAI,CAAC,WAAC,CAAA,GAAG,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;KACvC;SAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QACtE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,WAAC,CAAA,GAAG,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA,CAAC,WAAW;QACxE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;KACd;IAED,SAAS,aAAa,CAAC,KAAW;QAChC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;YACzC,GAAG,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,WAAI,CAAC,GAAG,EAAC,EAAE,KAAK,CAAC,CAAA;YACpE,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAnBD,0DAmBC;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
index bd8264b..09da854 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
@@ -3,10 +3,9 @@
 const code_1 = require("../code");
 const codegen_1 = require("../../compile/codegen");
 const names_1 = require("../../compile/names");
-const subschema_1 = require("../../compile/subschema");
 const util_1 = require("../../compile/util");
 const error = {
-    message: "should NOT have additional properties",
+    message: "must NOT have additional properties",
     params: ({ params }) => codegen_1._ `{additionalProperty: ${params.additionalProperty}}`,
 };
 const def = {
@@ -51,7 +50,7 @@
                 definedProp = codegen_1.nil;
             }
             if (patProps.length) {
-                definedProp = codegen_1.or(definedProp, ...patProps.map((p) => codegen_1._ `${code_1.usePattern(gen, p)}.test(${key})`));
+                definedProp = codegen_1.or(definedProp, ...patProps.map((p) => codegen_1._ `${code_1.usePattern(cxt, p)}.test(${key})`));
             }
             return codegen_1.not(definedProp);
         }
@@ -90,7 +89,7 @@
             const subschema = {
                 keyword: "additionalProperties",
                 dataProp: key,
-                dataPropType: subschema_1.Type.Str,
+                dataPropType: util_1.Type.Str,
             };
             if (errors === false) {
                 Object.assign(subschema, {
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map
index 18b5704..7d161a1 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map
@@ -1 +1 @@
-{"version":3,"file":"additionalProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/additionalProperties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"additionalProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/additionalProperties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js
index 784c475..66cfce2 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js
@@ -6,9 +6,7 @@
     schemaType: "array",
     trackErrors: true,
     code: code_1.validateUnion,
-    error: {
-        message: "should match some schema in anyOf",
-    },
+    error: { message: "must match a schema in anyOf" },
 };
 exports.default = def;
 //# sourceMappingURL=anyOf.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map
index 40f726f..537ffcb 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map
@@ -1 +1 @@
-{"version":3,"file":"anyOf.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/anyOf.ts"],"names":[],"mappings":";;AACA,kCAAqC;AAIrC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,oBAAa;IACnB,KAAK,EAAE;QACL,OAAO,EAAE,mCAAmC;KAC7C;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"anyOf.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/anyOf.ts"],"names":[],"mappings":";;AACA,kCAAqC;AAIrC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,oBAAa;IACnB,KAAK,EAAE,EAAC,OAAO,EAAE,8BAA8B,EAAC;CACjD,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js
index cece62b..4c254a5 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js
@@ -1,13 +1,11 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
-const subschema_1 = require("../../compile/subschema");
 const util_1 = require("../../compile/util");
-const validate_1 = require("../../compile/validate");
 const error = {
     message: ({ params: { min, max } }) => max === undefined
-        ? codegen_1.str `should contain at least ${min} valid item(s)`
-        : codegen_1.str `should contain at least ${min} and no more than ${max} valid item(s)`,
+        ? codegen_1.str `must contain at least ${min} valid item(s)`
+        : codegen_1.str `must contain at least ${min} and no more than ${max} valid item(s)`,
     params: ({ params: { min, max } }) => max === undefined ? codegen_1._ `{minContains: ${min}}` : codegen_1._ `{minContains: ${min}, maxContains: ${max}}`,
 };
 const def = {
@@ -32,11 +30,11 @@
         const len = gen.const("len", codegen_1._ `${data}.length`);
         cxt.setParams({ min, max });
         if (max === undefined && min === 0) {
-            validate_1.checkStrictMode(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`);
+            util_1.checkStrictMode(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`);
             return;
         }
         if (max !== undefined && min > max) {
-            validate_1.checkStrictMode(it, `"minContains" > "maxContains" is always invalid`);
+            util_1.checkStrictMode(it, `"minContains" > "maxContains" is always invalid`);
             cxt.fail();
             return;
         }
@@ -64,7 +62,7 @@
                 cxt.subschema({
                     keyword: "contains",
                     dataProp: i,
-                    dataPropType: subschema_1.Type.Num,
+                    dataPropType: util_1.Type.Num,
                     compositeRule: true,
                 }, _valid);
                 block();
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js.map
index 8622f74..4e46683 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/contains.js.map
@@ -1 +1 @@
-{"version":3,"file":"contains.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/contains.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"contains.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/contains.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts
index b86db1a..b28cfe4 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts
@@ -1,5 +1,5 @@
 import type { CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition, SchemaMap, AnySchema } from "../../types";
-import type KeywordCxt from "../../compile/context";
+import type { KeywordCxt } from "../../compile/validate";
 export declare type PropertyDependencies = {
     [K in string]?: string[];
 };
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js
index af1479f..ba968df 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js
@@ -7,7 +7,7 @@
 exports.error = {
     message: ({ params: { property, depsCount, deps } }) => {
         const property_ies = depsCount === 1 ? "property" : "properties";
-        return codegen_1.str `should have ${property_ies} ${deps} when property ${property} is present`;
+        return codegen_1.str `must have ${property_ies} ${deps} when property ${property} is present`;
     },
     params: ({ params: { property, depsCount, deps, missingProperty } }) => codegen_1._ `{property: ${property},
     missingProperty: ${missingProperty},
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map
index e0896c2..ba4bb31 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map
@@ -1 +1 @@
-{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/dependencies.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/dependencies.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js
index 79bfee8..507686f 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js
@@ -2,9 +2,8 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
 const util_1 = require("../../compile/util");
-const validate_1 = require("../../compile/validate");
 const error = {
-    message: ({ params }) => codegen_1.str `should match "${params.ifClause}" schema`,
+    message: ({ params }) => codegen_1.str `must match "${params.ifClause}" schema`,
     params: ({ params }) => codegen_1._ `{failingKeyword: ${params.ifClause}}`,
 };
 const def = {
@@ -15,7 +14,7 @@
     code(cxt) {
         const { gen, parentSchema, it } = cxt;
         if (parentSchema.then === undefined && parentSchema.else === undefined) {
-            validate_1.checkStrictMode(it, '"if" without "then" and "else" is ignored');
+            util_1.checkStrictMode(it, '"if" without "then" and "else" is ignored');
         }
         const hasThen = hasSchema(it, "then");
         const hasElse = hasSchema(it, "else");
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js.map
index a2dbde7..4e3c533 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/if.js.map
@@ -1 +1 @@
-{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/if.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/if.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.d.ts
index b082073..f45239b 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.d.ts
@@ -1,5 +1,6 @@
 import type { ErrorNoParams, Vocabulary } from "../../types";
 import { AdditionalItemsError } from "./additionalItems";
+import { ItemsError } from "./items2020";
 import { ContainsError } from "./contains";
 import { DependenciesError } from "./dependencies";
 import { PropertyNamesError } from "./propertyNames";
@@ -8,6 +9,5 @@
 import { AnyOfError } from "./anyOf";
 import { OneOfError } from "./oneOf";
 import { IfKeywordError } from "./if";
-declare const applicator: Vocabulary;
-export default applicator;
-export declare type ApplicatorKeywordError = ErrorNoParams<"false schema"> | AdditionalItemsError | ContainsError | AdditionalPropertiesError | DependenciesError | IfKeywordError | AnyOfError | OneOfError | NotKeywordError | PropertyNamesError;
+export default function getApplicator(draft2020?: boolean): Vocabulary;
+export declare type ApplicatorKeywordError = ErrorNoParams<"false schema"> | AdditionalItemsError | ItemsError | ContainsError | AdditionalPropertiesError | DependenciesError | IfKeywordError | AnyOfError | OneOfError | NotKeywordError | PropertyNamesError;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js
index a4fa170..cf592f2 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js
@@ -1,7 +1,9 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const additionalItems_1 = require("./additionalItems");
+const prefixItems_1 = require("./prefixItems");
 const items_1 = require("./items");
+const items2020_1 = require("./items2020");
 const contains_1 = require("./contains");
 const dependencies_1 = require("./dependencies");
 const propertyNames_1 = require("./propertyNames");
@@ -14,24 +16,29 @@
 const allOf_1 = require("./allOf");
 const if_1 = require("./if");
 const thenElse_1 = require("./thenElse");
-const applicator = [
-    // any
-    not_1.default,
-    anyOf_1.default,
-    oneOf_1.default,
-    allOf_1.default,
-    if_1.default,
-    thenElse_1.default,
+function getApplicator(draft2020 = false) {
+    const applicator = [
+        // any
+        not_1.default,
+        anyOf_1.default,
+        oneOf_1.default,
+        allOf_1.default,
+        if_1.default,
+        thenElse_1.default,
+        // object
+        propertyNames_1.default,
+        additionalProperties_1.default,
+        dependencies_1.default,
+        properties_1.default,
+        patternProperties_1.default,
+    ];
     // array
-    additionalItems_1.default,
-    items_1.default,
-    contains_1.default,
-    // object
-    propertyNames_1.default,
-    additionalProperties_1.default,
-    dependencies_1.default,
-    properties_1.default,
-    patternProperties_1.default,
-];
-exports.default = applicator;
+    if (draft2020)
+        applicator.push(prefixItems_1.default, items2020_1.default);
+    else
+        applicator.push(additionalItems_1.default, items_1.default);
+    applicator.push(contains_1.default);
+    return applicator;
+}
+exports.default = getApplicator;
 //# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js.map
index 0334201..ebcb853 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/index.ts"],"names":[],"mappings":";;AACA,uDAAuE;AACvE,mCAA2B;AAC3B,yCAAkD;AAClD,iDAA8D;AAC9D,mDAAiE;AACjE,iEAAsF;AACtF,6CAAqC;AACrC,2DAAmD;AACnD,+BAAiD;AACjD,mCAAyC;AACzC,mCAAyC;AACzC,mCAA2B;AAC3B,6BAA8C;AAC9C,yCAAiC;AAEjC,MAAM,UAAU,GAAe;IAC7B,MAAM;IACN,aAAU;IACV,eAAK;IACL,eAAK;IACL,eAAK;IACL,YAAS;IACT,kBAAQ;IACR,QAAQ;IACR,yBAAe;IACf,eAAK;IACL,kBAAQ;IACR,SAAS;IACT,uBAAa;IACb,8BAAoB;IACpB,sBAAY;IACZ,oBAAU;IACV,2BAAiB;CAClB,CAAA;AAED,kBAAe,UAAU,CAAA"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/index.ts"],"names":[],"mappings":";;AACA,uDAAuE;AACvE,+CAAuC;AACvC,mCAA2B;AAC3B,2CAAiD;AACjD,yCAAkD;AAClD,iDAA8D;AAC9D,mDAAiE;AACjE,iEAAsF;AACtF,6CAAqC;AACrC,2DAAmD;AACnD,+BAAiD;AACjD,mCAAyC;AACzC,mCAAyC;AACzC,mCAA2B;AAC3B,6BAA8C;AAC9C,yCAAiC;AAEjC,SAAwB,aAAa,CAAC,SAAS,GAAG,KAAK;IACrD,MAAM,UAAU,GAAG;QACjB,MAAM;QACN,aAAU;QACV,eAAK;QACL,eAAK;QACL,eAAK;QACL,YAAS;QACT,kBAAQ;QACR,SAAS;QACT,uBAAa;QACb,8BAAoB;QACpB,sBAAY;QACZ,oBAAU;QACV,2BAAiB;KAClB,CAAA;IACD,QAAQ;IACR,IAAI,SAAS;QAAE,UAAU,CAAC,IAAI,CAAC,qBAAW,EAAE,mBAAS,CAAC,CAAA;;QACjD,UAAU,CAAC,IAAI,CAAC,yBAAe,EAAE,eAAK,CAAC,CAAA;IAC5C,UAAU,CAAC,IAAI,CAAC,kBAAQ,CAAC,CAAA;IACzB,OAAO,UAAU,CAAA;AACnB,CAAC;AArBD,gCAqBC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.d.ts
index cde2aa2..8e608ca 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.d.ts
@@ -1,3 +1,5 @@
-import type { CodeKeywordDefinition } from "../../types";
+import type { CodeKeywordDefinition, AnySchema } from "../../types";
+import type { KeywordCxt } from "../../compile/validate";
 declare const def: CodeKeywordDefinition;
+export declare function validateTuple(cxt: KeywordCxt, extraItems: string, schArr?: AnySchema[]): void;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js
index ecc6f1a..3e6af92 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js
@@ -1,8 +1,8 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateTuple = void 0;
 const codegen_1 = require("../../compile/codegen");
 const util_1 = require("../../compile/util");
-const validate_1 = require("../../compile/validate");
 const code_1 = require("../code");
 const def = {
     keyword: "items",
@@ -10,42 +10,43 @@
     schemaType: ["object", "array", "boolean"],
     before: "uniqueItems",
     code(cxt) {
-        const { gen, schema, it } = cxt;
-        if (Array.isArray(schema)) {
-            if (it.opts.unevaluated && schema.length && it.items !== true) {
-                it.items = util_1.mergeEvaluated.items(gen, schema.length, it.items);
-            }
-            validateTuple(schema);
-        }
-        else {
-            it.items = true;
-            if (util_1.alwaysValidSchema(it, schema))
-                return;
-            cxt.ok(code_1.validateArray(cxt));
-        }
-        function validateTuple(schArr) {
-            const { parentSchema, data } = cxt;
-            if (it.opts.strictTuples && !fullTupleSchema(schArr.length, parentSchema)) {
-                const msg = `"items" is ${schArr.length}-tuple, but minItems or maxItems/additionalItems are not specified or different`;
-                validate_1.checkStrictMode(it, msg, it.opts.strictTuples);
-            }
-            const valid = gen.name("valid");
-            const len = gen.const("len", codegen_1._ `${data}.length`);
-            schArr.forEach((sch, i) => {
-                if (util_1.alwaysValidSchema(it, sch))
-                    return;
-                gen.if(codegen_1._ `${len} > ${i}`, () => cxt.subschema({
-                    keyword: "items",
-                    schemaProp: i,
-                    dataProp: i,
-                }, valid));
-                cxt.ok(valid);
-            });
-        }
+        const { schema, it } = cxt;
+        if (Array.isArray(schema))
+            return validateTuple(cxt, "additionalItems", schema);
+        it.items = true;
+        if (util_1.alwaysValidSchema(it, schema))
+            return;
+        cxt.ok(code_1.validateArray(cxt));
     },
 };
-function fullTupleSchema(len, sch) {
-    return len === sch.minItems && (len === sch.maxItems || sch.additionalItems === false);
+function validateTuple(cxt, extraItems, schArr = cxt.schema) {
+    const { gen, parentSchema, data, keyword, it } = cxt;
+    checkStrictTuple(parentSchema);
+    if (it.opts.unevaluated && schArr.length && it.items !== true) {
+        it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);
+    }
+    const valid = gen.name("valid");
+    const len = gen.const("len", codegen_1._ `${data}.length`);
+    schArr.forEach((sch, i) => {
+        if (util_1.alwaysValidSchema(it, sch))
+            return;
+        gen.if(codegen_1._ `${len} > ${i}`, () => cxt.subschema({
+            keyword,
+            schemaProp: i,
+            dataProp: i,
+        }, valid));
+        cxt.ok(valid);
+    });
+    function checkStrictTuple(sch) {
+        const { opts, errSchemaPath } = it;
+        const l = schArr.length;
+        const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);
+        if (opts.strictTuples && !fullTuple) {
+            const msg = `"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`;
+            util_1.checkStrictMode(it, msg, opts.strictTuples);
+        }
+    }
 }
+exports.validateTuple = validateTuple;
 exports.default = def;
 //# sourceMappingURL=items.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js.map
index 89bfdfe..cdddc1f 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items.js.map
@@ -1 +1 @@
-{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/items.ts"],"names":[],"mappings":";;AAEA,mDAAuC;AACvC,6CAAoE;AACpE,qDAAsD;AACtD,kCAAqC;AAErC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IAC1C,MAAM,EAAE,aAAa;IACrB,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE;gBAC7D,EAAE,CAAC,KAAK,GAAG,qBAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;aAC9D;YACD,aAAa,CAAC,MAAM,CAAC,CAAA;SACtB;aAAM;YACL,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;YACf,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;gBAAE,OAAM;YACzC,GAAG,CAAC,EAAE,CAAC,oBAAa,CAAC,GAAG,CAAC,CAAC,CAAA;SAC3B;QAED,SAAS,aAAa,CAAC,MAAmB;YACxC,MAAM,EAAC,YAAY,EAAE,IAAI,EAAC,GAAG,GAAG,CAAA;YAChC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;gBACzE,MAAM,GAAG,GAAG,cAAc,MAAM,CAAC,MAAM,iFAAiF,CAAA;gBACxH,0BAAe,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;aAC/C;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;YAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAc,EAAE,CAAS,EAAE,EAAE;gBAC3C,IAAI,wBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC;oBAAE,OAAM;gBACtC,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAC5B,GAAG,CAAC,SAAS,CACX;oBACE,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,CAAC;oBACb,QAAQ,EAAE,CAAC;iBACZ,EACD,KAAK,CACN,CACF,CAAA;gBACD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,GAAQ;IAC5C,OAAO,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,KAAK,KAAK,CAAC,CAAA;AACxF,CAAC;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/items.ts"],"names":[],"mappings":";;;AAEA,mDAAuC;AACvC,6CAAqF;AACrF,kCAAqC;AAErC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IAC1C,MAAM,EAAE,aAAa;IACrB,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAA;QAC/E,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;QACf,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,GAAG,CAAC,EAAE,CAAC,oBAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5B,CAAC;CACF,CAAA;AAED,SAAgB,aAAa,CAC3B,GAAe,EACf,UAAkB,EAClB,SAAsB,GAAG,CAAC,MAAM;IAEhC,MAAM,EAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;IAClD,gBAAgB,CAAC,YAAY,CAAC,CAAA;IAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE;QAC7D,EAAE,CAAC,KAAK,GAAG,qBAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;KAC9D;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;IAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAc,EAAE,CAAS,EAAE,EAAE;QAC3C,IAAI,wBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC;YAAE,OAAM;QACtC,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAC5B,GAAG,CAAC,SAAS,CACX;YACE,OAAO;YACP,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;SACZ,EACD,KAAK,CACN,CACF,CAAA;QACD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,SAAS,gBAAgB,CAAC,GAAoB;QAC5C,MAAM,EAAC,IAAI,EAAE,aAAa,EAAC,GAAG,EAAE,CAAA;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;QACvB,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAA;QACzF,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,OAAO,QAAQ,CAAC,oCAAoC,UAAU,4CAA4C,aAAa,GAAG,CAAA;YAC1I,sBAAe,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;SAC5C;IACH,CAAC;AACH,CAAC;AApCD,sCAoCC;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts
new file mode 100644
index 0000000..4168c7f
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts
@@ -0,0 +1,6 @@
+import type { CodeKeywordDefinition, ErrorObject, AnySchema } from "../../types";
+export declare type ItemsError = ErrorObject<"items", {
+    limit: number;
+}, AnySchema>;
+declare const def: CodeKeywordDefinition;
+export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js
new file mode 100644
index 0000000..cd5c5c4
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const codegen_1 = require("../../compile/codegen");
+const util_1 = require("../../compile/util");
+const code_1 = require("../code");
+const additionalItems_1 = require("./additionalItems");
+const error = {
+    message: ({ params: { len } }) => codegen_1.str `must NOT have more than ${len} items`,
+    params: ({ params: { len } }) => codegen_1._ `{limit: ${len}}`,
+};
+const def = {
+    keyword: "items",
+    type: "array",
+    schemaType: ["object", "boolean"],
+    before: "uniqueItems",
+    error,
+    code(cxt) {
+        const { schema, parentSchema, it } = cxt;
+        const { prefixItems } = parentSchema;
+        it.items = true;
+        if (util_1.alwaysValidSchema(it, schema))
+            return;
+        if (prefixItems)
+            additionalItems_1.validateAdditionalItems(cxt, prefixItems);
+        else
+            cxt.ok(code_1.validateArray(cxt));
+    },
+};
+exports.default = def;
+//# sourceMappingURL=items2020.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map
new file mode 100644
index 0000000..f478fe4
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"items2020.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/items2020.ts"],"names":[],"mappings":";;AAOA,mDAA4C;AAC5C,6CAAoD;AACpD,kCAAqC;AACrC,uDAAyD;AAIzD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,2BAA2B,GAAG,QAAQ;IACvE,MAAM,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,GAAG,GAAG;CAChD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,MAAM,EAAE,aAAa;IACrB,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACtC,MAAM,EAAC,WAAW,EAAC,GAAG,YAAY,CAAA;QAClC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;QACf,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,IAAI,WAAW;YAAE,yCAAuB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;;YACrD,GAAG,CAAC,EAAE,CAAC,oBAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IACjC,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js
index 6e7f363..60ad2b9 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js
@@ -20,9 +20,7 @@
         }, valid);
         cxt.result(valid, () => cxt.error(), () => cxt.reset());
     },
-    error: {
-        message: "should NOT be valid",
-    },
+    error: { message: "must NOT be valid" },
 };
 exports.default = def;
 //# sourceMappingURL=not.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js.map
index f08e193..ad22e7b 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/not.js.map
@@ -1 +1 @@
-{"version":3,"file":"not.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/not.ts"],"names":[],"mappings":";;AAEA,6CAAoD;AAIpD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,WAAW,EAAE,IAAI;IACjB,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC7B,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACjC,GAAG,CAAC,IAAI,EAAE,CAAA;YACV,OAAM;SACP;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,GAAG,CAAC,SAAS,CACX;YACE,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,KAAK;SACjB,EACD,KAAK,CACN,CAAA;QAED,GAAG,CAAC,MAAM,CACR,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EACjB,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAClB,CAAA;IACH,CAAC;IACD,KAAK,EAAE;QACL,OAAO,EAAE,qBAAqB;KAC/B;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"not.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/not.ts"],"names":[],"mappings":";;AAEA,6CAAoD;AAIpD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,WAAW,EAAE,IAAI;IACjB,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC7B,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACjC,GAAG,CAAC,IAAI,EAAE,CAAA;YACV,OAAM;SACP;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,GAAG,CAAC,SAAS,CACX;YACE,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,KAAK;SACjB,EACD,KAAK,CACN,CAAA;QAED,GAAG,CAAC,MAAM,CACR,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EACjB,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAClB,CAAA;IACH,CAAC;IACD,KAAK,EAAE,EAAC,OAAO,EAAE,mBAAmB,EAAC;CACtC,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js
index 21135cd..8fa5b0b 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js
@@ -3,7 +3,7 @@
 const codegen_1 = require("../../compile/codegen");
 const util_1 = require("../../compile/util");
 const error = {
-    message: "should match exactly one schema in oneOf",
+    message: "must match exactly one schema in oneOf",
     params: ({ params }) => codegen_1._ `{passingSchemas: ${params.passing}}`,
 };
 const def = {
@@ -12,10 +12,12 @@
     trackErrors: true,
     error,
     code(cxt) {
-        const { gen, schema, it } = cxt;
+        const { gen, schema, parentSchema, it } = cxt;
         /* istanbul ignore if */
         if (!Array.isArray(schema))
             throw new Error("ajv implementation error");
+        if (it.opts.discriminator && parentSchema.discriminator)
+            return;
         const schArr = schema;
         const valid = gen.let("valid", false);
         const passing = gen.let("passing", null);
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map
index a188a6e..43dffd3 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map
@@ -1 +1 @@
-{"version":3,"file":"oneOf.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/oneOf.ts"],"names":[],"mappings":";;AAOA,mDAA6C;AAC7C,6CAAoD;AASpD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,0CAA0C;IACnD,MAAM,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,oBAAoB,MAAM,CAAC,OAAO,GAAG;CAC7D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,IAAI;IACjB,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC7B,wBAAwB;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACvE,MAAM,MAAM,GAAgB,MAAM,CAAA;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnC,GAAG,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,CAAC,CAAA;QACxB,2GAA2G;QAE3G,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAExB,GAAG,CAAC,MAAM,CACR,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EACjB,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CACtB,CAAA;QAED,SAAS,aAAa;YACpB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAc,EAAE,CAAS,EAAE,EAAE;gBAC3C,IAAI,MAA6B,CAAA;gBACjC,IAAI,wBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE;oBAC9B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;iBACxB;qBAAM;oBACL,MAAM,GAAG,GAAG,CAAC,SAAS,CACpB;wBACE,OAAO,EAAE,OAAO;wBAChB,UAAU,EAAE,CAAC;wBACb,aAAa,EAAE,IAAI;qBACpB,EACD,QAAQ,CACT,CAAA;iBACF;gBAED,IAAI,CAAC,GAAG,CAAC,EAAE;oBACT,GAAG;yBACA,EAAE,CAAC,WAAC,CAAA,GAAG,QAAQ,OAAO,KAAK,EAAE,CAAC;yBAC9B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;yBACpB,MAAM,CAAC,OAAO,EAAE,WAAC,CAAA,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC;yBACtC,IAAI,EAAE,CAAA;iBACV;gBAED,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACpB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;oBACtB,IAAI,MAAM;wBAAE,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,cAAI,CAAC,CAAA;gBAC9C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"oneOf.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/oneOf.ts"],"names":[],"mappings":";;AAOA,mDAA6C;AAC7C,6CAAoD;AASpD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,wCAAwC;IACjD,MAAM,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,oBAAoB,MAAM,CAAC,OAAO,GAAG;CAC7D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,IAAI;IACjB,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC3C,wBAAwB;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACvE,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa;YAAE,OAAM;QAC/D,MAAM,MAAM,GAAgB,MAAM,CAAA;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnC,GAAG,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,CAAC,CAAA;QACxB,2GAA2G;QAE3G,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAExB,GAAG,CAAC,MAAM,CACR,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EACjB,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CACtB,CAAA;QAED,SAAS,aAAa;YACpB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAc,EAAE,CAAS,EAAE,EAAE;gBAC3C,IAAI,MAA6B,CAAA;gBACjC,IAAI,wBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE;oBAC9B,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;iBACxB;qBAAM;oBACL,MAAM,GAAG,GAAG,CAAC,SAAS,CACpB;wBACE,OAAO,EAAE,OAAO;wBAChB,UAAU,EAAE,CAAC;wBACb,aAAa,EAAE,IAAI;qBACpB,EACD,QAAQ,CACT,CAAA;iBACF;gBAED,IAAI,CAAC,GAAG,CAAC,EAAE;oBACT,GAAG;yBACA,EAAE,CAAC,WAAC,CAAA,GAAG,QAAQ,OAAO,KAAK,EAAE,CAAC;yBAC9B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;yBACpB,MAAM,CAAC,OAAO,EAAE,WAAC,CAAA,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC;yBACtC,IAAI,EAAE,CAAA;iBACV;gBAED,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACpB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;oBACtB,IAAI,MAAM;wBAAE,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,cAAI,CAAC,CAAA;gBAC9C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
index 5b188c2..ff68c82 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
@@ -2,9 +2,8 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const code_1 = require("../code");
 const codegen_1 = require("../../compile/codegen");
-const subschema_1 = require("../../compile/subschema");
-const validate_1 = require("../../compile/validate");
 const util_1 = require("../../compile/util");
+const util_2 = require("../../compile/util");
 const def = {
     keyword: "patternProperties",
     type: "object",
@@ -16,10 +15,10 @@
         // TODO mark properties matching patterns with always valid schemas as evaluated
         if (patterns.length === 0)
             return;
-        const checkProperties = opts.strict && !opts.allowMatchingProperties && parentSchema.properties;
+        const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;
         const valid = gen.name("valid");
         if (it.props !== true && !(it.props instanceof codegen_1.Name)) {
-            it.props = util_1.evaluatedPropsToName(gen, it.props);
+            it.props = util_2.evaluatedPropsToName(gen, it.props);
         }
         const { props } = it;
         validatePatternProperties();
@@ -40,18 +39,18 @@
         function checkMatchingProperties(pat) {
             for (const prop in checkProperties) {
                 if (new RegExp(pat).test(prop)) {
-                    validate_1.checkStrictMode(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);
+                    util_1.checkStrictMode(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);
                 }
             }
         }
         function validateProperties(pat) {
             gen.forIn("key", data, (key) => {
-                gen.if(codegen_1._ `${code_1.usePattern(gen, pat)}.test(${key})`, () => {
+                gen.if(codegen_1._ `${code_1.usePattern(cxt, pat)}.test(${key})`, () => {
                     cxt.subschema({
                         keyword: "patternProperties",
                         schemaProp: pat,
                         dataProp: key,
-                        dataPropType: subschema_1.Type.Str,
+                        dataPropType: util_2.Type.Str,
                     }, valid);
                     if (it.opts.unevaluated && props !== true) {
                         gen.assign(codegen_1._ `${props}[${key}]`, true);
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map
index 9d13424..b38f061 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map
@@ -1 +1 @@
-{"version":3,"file":"patternProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/patternProperties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"patternProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/patternProperties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts
new file mode 100644
index 0000000..cde2aa2
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts
@@ -0,0 +1,3 @@
+import type { CodeKeywordDefinition } from "../../types";
+declare const def: CodeKeywordDefinition;
+export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
new file mode 100644
index 0000000..4f3b4cb
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const items_1 = require("./items");
+const def = {
+    keyword: "prefixItems",
+    type: "array",
+    schemaType: ["array"],
+    before: "uniqueItems",
+    code: (cxt) => items_1.validateTuple(cxt, "items"),
+};
+exports.default = def;
+//# sourceMappingURL=prefixItems.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map
new file mode 100644
index 0000000..19b10cf
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"prefixItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/prefixItems.ts"],"names":[],"mappings":";;AACA,mCAAqC;AAErC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAa,CAAC,GAAG,EAAE,OAAO,CAAC;CAC3C,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js
index 7d127ae..ff93495 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js
@@ -1,6 +1,6 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-const context_1 = require("../../compile/context");
+const validate_1 = require("../../compile/validate");
 const code_1 = require("../code");
 const util_1 = require("../../compile/util");
 const additionalProperties_1 = require("./additionalProperties");
@@ -11,7 +11,7 @@
     code(cxt) {
         const { gen, schema, parentSchema, data, it } = cxt;
         if (it.opts.removeAdditional === "all" && parentSchema.additionalProperties === undefined) {
-            additionalProperties_1.default.code(new context_1.default(it, additionalProperties_1.default, "additionalProperties"));
+            additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, "additionalProperties"));
         }
         const allProps = code_1.allSchemaProperties(schema);
         for (const prop of allProps) {
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js.map
index a82ec8c..b8c7aa2 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/properties.js.map
@@ -1 +1 @@
-{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/properties.ts"],"names":[],"mappings":";;AACA,mDAA8C;AAC9C,kCAA2D;AAC3D,6CAA4E;AAC5E,iEAA0C;AAE1C,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACjD,IAAI,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,YAAY,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACzF,8BAAK,CAAC,IAAI,CAAC,IAAI,iBAAU,CAAC,EAAE,EAAE,8BAAK,EAAE,sBAAsB,CAAC,CAAC,CAAA;SAC9D;QACD,MAAM,QAAQ,GAAG,0BAAmB,CAAC,MAAM,CAAC,CAAA;QAC5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YAC3B,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAC/B;QACD,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE;YAC/D,EAAE,CAAC,KAAK,GAAG,qBAAc,CAAC,KAAK,CAAC,GAAG,EAAE,aAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;SACjE;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACpB,mBAAmB,CAAC,IAAI,CAAC,CAAA;aAC1B;iBAAM;gBACL,GAAG,CAAC,EAAE,CAAC,qBAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;gBAC9D,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBACzB,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC9C,GAAG,CAAC,KAAK,EAAE,CAAA;aACZ;YACD,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;SACd;QAED,SAAS,UAAU,CAAC,IAAY;YAC9B,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAA;QACvF,CAAC;QAED,SAAS,mBAAmB,CAAC,IAAY;YACvC,GAAG,CAAC,SAAS,CACX;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;aACf,EACD,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/properties.ts"],"names":[],"mappings":";;AACA,qDAAiD;AACjD,kCAA2D;AAC3D,6CAA4E;AAC5E,iEAA0C;AAE1C,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACjD,IAAI,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,YAAY,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACzF,8BAAK,CAAC,IAAI,CAAC,IAAI,qBAAU,CAAC,EAAE,EAAE,8BAAK,EAAE,sBAAsB,CAAC,CAAC,CAAA;SAC9D;QACD,MAAM,QAAQ,GAAG,0BAAmB,CAAC,MAAM,CAAC,CAAA;QAC5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YAC3B,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAC/B;QACD,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE;YAC/D,EAAE,CAAC,KAAK,GAAG,qBAAc,CAAC,KAAK,CAAC,GAAG,EAAE,aAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;SACjE;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACpB,mBAAmB,CAAC,IAAI,CAAC,CAAA;aAC1B;iBAAM;gBACL,GAAG,CAAC,EAAE,CAAC,qBAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;gBAC9D,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBACzB,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC9C,GAAG,CAAC,KAAK,EAAE,CAAA;aACZ;YACD,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;SACd;QAED,SAAS,UAAU,CAAC,IAAY;YAC9B,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAA;QACvF,CAAC;QAED,SAAS,mBAAmB,CAAC,IAAY;YACvC,GAAG,CAAC,SAAS,CACX;gBACE,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;aACf,EACD,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
index d38f9a5..b898253 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
@@ -3,7 +3,7 @@
 const codegen_1 = require("../../compile/codegen");
 const util_1 = require("../../compile/util");
 const error = {
-    message: ({ params }) => codegen_1.str `property name '${params.propertyName}' is invalid`,
+    message: "property name must be valid",
     params: ({ params }) => codegen_1._ `{propertyName: ${params.propertyName}}`,
 };
 const def = {
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map
index b531f07..8efeab6 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map
@@ -1 +1 @@
-{"version":3,"file":"propertyNames.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/propertyNames.ts"],"names":[],"mappings":";;AAOA,mDAAiD;AACjD,6CAAoD;AAIpD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,kBAAkB,MAAM,CAAC,YAAY,cAAc;IAC7E,MAAM,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,kBAAkB,MAAM,CAAC,YAAY,GAAG;CAChE,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE/B,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,GAAG,CAAC,SAAS,CAAC,EAAC,YAAY,EAAE,GAAG,EAAC,CAAC,CAAA;YAClC,GAAG,CAAC,SAAS,CACX;gBACE,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,YAAY,EAAE,GAAG;gBACjB,aAAa,EAAE,IAAI;aACpB,EACD,KAAK,CACN,CAAA;YACD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;gBACtB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACf,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,KAAK,EAAE,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACf,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"propertyNames.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/propertyNames.ts"],"names":[],"mappings":";;AAOA,mDAA4C;AAC5C,6CAAoD;AAIpD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,6BAA6B;IACtC,MAAM,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,kBAAkB,MAAM,CAAC,YAAY,GAAG;CAChE,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE/B,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,GAAG,CAAC,SAAS,CAAC,EAAC,YAAY,EAAE,GAAG,EAAC,CAAC,CAAA;YAClC,GAAG,CAAC,SAAS,CACX;gBACE,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,YAAY,EAAE,GAAG;gBACjB,aAAa,EAAE,IAAI;aACpB,EACD,KAAK,CACN,CAAA;YACD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;gBACtB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACf,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,KAAK,EAAE,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACf,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js
index f5138c0..8386c7f 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js
@@ -1,12 +1,12 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-const validate_1 = require("../../compile/validate");
+const util_1 = require("../../compile/util");
 const def = {
     keyword: ["then", "else"],
     schemaType: ["object", "boolean"],
     code({ keyword, parentSchema, it }) {
         if (parentSchema.if === undefined)
-            validate_1.checkStrictMode(it, `"${keyword}" without "if" is ignored`);
+            util_1.checkStrictMode(it, `"${keyword}" without "if" is ignored`);
     },
 };
 exports.default = def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map
index 16c3eeb..2bc608a 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map
@@ -1 +1 @@
-{"version":3,"file":"thenElse.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/thenElse.ts"],"names":[],"mappings":";;AAEA,qDAAsD;AAEtD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAa;QAC1C,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS;YAAE,0BAAe,CAAC,EAAE,EAAE,IAAI,OAAO,2BAA2B,CAAC,CAAA;IAChG,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"thenElse.js","sourceRoot":"","sources":["../../../lib/vocabularies/applicator/thenElse.ts"],"names":[],"mappings":";;AAEA,6CAAkD;AAElD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IACjC,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAa;QAC1C,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS;YAAE,sBAAe,CAAC,EAAE,EAAE,IAAI,OAAO,2BAA2B,CAAC,CAAA;IAChG,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/code.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/code.d.ts
index 1c5d6f2..f914bac 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/code.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/code.d.ts
@@ -1,6 +1,6 @@
 import type { SchemaMap } from "../types";
 import type { SchemaCxt } from "../compile";
-import type KeywordCxt from "../compile/context";
+import type { KeywordCxt } from "../compile/validate";
 import { CodeGen, Code, Name } from "../compile/codegen";
 export declare function checkReportMissingProp(cxt: KeywordCxt, prop: string): void;
 export declare function checkMissingProp({ gen, data, it: { opts } }: KeywordCxt, properties: string[], missing: Name): Code;
@@ -12,6 +12,6 @@
 export declare function allSchemaProperties(schemaMap?: SchemaMap): string[];
 export declare function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[];
 export declare function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }: KeywordCxt, func: Code, context: Code, passSchema?: boolean): Code;
-export declare function usePattern(gen: CodeGen, pattern: string): Name;
+export declare function usePattern({ gen, it: { opts } }: KeywordCxt, pattern: string): Name;
 export declare function validateArray(cxt: KeywordCxt): Name;
 export declare function validateUnion(cxt: KeywordCxt): void;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/code.js b/node_modules/table/node_modules/ajv/dist/vocabularies/code.js
index c502166..c6f852d 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/code.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/code.js
@@ -3,7 +3,6 @@
 exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;
 const codegen_1 = require("../compile/codegen");
 const util_1 = require("../compile/util");
-const subschema_1 = require("../compile/subschema");
 const names_1 = require("../compile/names");
 function checkReportMissingProp(cxt, prop) {
     const { gen, data, it } = cxt;
@@ -55,7 +54,7 @@
 function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {
     const dataAndSchema = passSchema ? codegen_1._ `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;
     const valCxt = [
-        [names_1.default.dataPath, codegen_1.strConcat(names_1.default.dataPath, errorPath)],
+        [names_1.default.instancePath, codegen_1.strConcat(names_1.default.instancePath, errorPath)],
         [names_1.default.parentData, it.parentData],
         [names_1.default.parentDataProperty, it.parentDataProperty],
         [names_1.default.rootData, names_1.default.rootData],
@@ -66,11 +65,12 @@
     return context !== codegen_1.nil ? codegen_1._ `${func}.call(${context}, ${args})` : codegen_1._ `${func}(${args})`;
 }
 exports.callValidateCode = callValidateCode;
-function usePattern(gen, pattern) {
+function usePattern({ gen, it: { opts } }, pattern) {
+    const u = opts.unicodeRegExp ? "u" : "";
     return gen.scopeValue("pattern", {
         key: pattern,
-        ref: new RegExp(pattern, "u"),
-        code: codegen_1._ `new RegExp(${pattern}, "u")`,
+        ref: new RegExp(pattern, u),
+        code: codegen_1._ `new RegExp(${pattern}, ${u})`,
     });
 }
 exports.usePattern = usePattern;
@@ -91,7 +91,7 @@
             cxt.subschema({
                 keyword,
                 dataProp: i,
-                dataPropType: subschema_1.Type.Num,
+                dataPropType: util_1.Type.Num,
             }, valid);
             gen.if(codegen_1.not(valid), notValid);
         });
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/code.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/code.js.map
index 01d94fc..e0a302b 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/code.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/code.js.map
@@ -1 +1 @@
-{"version":3,"file":"code.js","sourceRoot":"","sources":["../../lib/vocabularies/code.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"code.js","sourceRoot":"","sources":["../../lib/vocabularies/code.ts"],"names":[],"mappings":";;;AAGA,gDAAoG;AACpG,0CAAuD;AACvD,4CAAgC;AAEhC,SAAgB,sBAAsB,CAAC,GAAe,EAAE,IAAY;IAClE,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;IAC3B,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE;QACpE,GAAG,CAAC,SAAS,CAAC,EAAC,eAAe,EAAE,WAAC,CAAA,GAAG,IAAI,EAAE,EAAC,EAAE,IAAI,CAAC,CAAA;QAClD,GAAG,CAAC,KAAK,EAAE,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,wDAMC;AAED,SAAgB,gBAAgB,CAC9B,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAC,IAAI,EAAC,EAAa,EACnC,UAAoB,EACpB,OAAa;IAEb,OAAO,YAAE,CACP,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzB,aAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,WAAC,CAAA,GAAG,OAAO,MAAM,IAAI,EAAE,CAAC,CACpF,CACF,CAAA;AACH,CAAC;AAVD,4CAUC;AAED,SAAgB,iBAAiB,CAAC,GAAe,EAAE,OAAa;IAC9D,GAAG,CAAC,SAAS,CAAC,EAAC,eAAe,EAAE,OAAO,EAAC,EAAE,IAAI,CAAC,CAAA;IAC/C,GAAG,CAAC,KAAK,EAAE,CAAA;AACb,CAAC;AAHD,8CAGC;AAED,SAAgB,WAAW,CAAC,GAAY;IACtC,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;QAC5B,6DAA6D;QAC7D,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;QACpC,IAAI,EAAE,WAAC,CAAA,iCAAiC;KACzC,CAAC,CAAA;AACJ,CAAC;AAND,kCAMC;AAED,SAAgB,aAAa,CAAC,GAAY,EAAE,IAAU,EAAE,QAAuB;IAC7E,OAAO,WAAC,CAAA,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,QAAQ,GAAG,CAAA;AAC1D,CAAC;AAFD,sCAEC;AAED,SAAgB,cAAc,CAC5B,GAAY,EACZ,IAAU,EACV,QAAuB,EACvB,aAAuB;IAEvB,MAAM,IAAI,GAAG,WAAC,CAAA,GAAG,IAAI,GAAG,qBAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAA;IAC7D,OAAO,aAAa,CAAC,CAAC,CAAC,WAAC,CAAA,GAAG,IAAI,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACnF,CAAC;AARD,wCAQC;AAED,SAAgB,gBAAgB,CAC9B,GAAY,EACZ,IAAU,EACV,QAAuB,EACvB,aAAuB;IAEvB,MAAM,IAAI,GAAG,WAAC,CAAA,GAAG,IAAI,GAAG,qBAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAA;IAC7D,OAAO,aAAa,CAAC,CAAC,CAAC,YAAE,CAAC,IAAI,EAAE,aAAG,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACjF,CAAC;AARD,4CAQC;AAED,SAAgB,mBAAmB,CAAC,SAAqB;IACvD,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACjF,CAAC;AAFD,kDAEC;AAED,SAAgB,gBAAgB,CAAC,EAAa,EAAE,SAAoB;IAClE,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAiB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAc,CAAC,CACzD,CAAA;AACH,CAAC;AAJD,4CAIC;AAED,SAAgB,gBAAgB,CAC9B,EAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAC,EAAE,EAAE,EAAa,EAClF,IAAU,EACV,OAAa,EACb,UAAoB;IAEpB,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,WAAC,CAAA,GAAG,UAAU,KAAK,IAAI,KAAK,YAAY,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACjG,MAAM,MAAM,GAA4B;QACtC,CAAC,eAAC,CAAC,YAAY,EAAE,mBAAS,CAAC,eAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC,eAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;QAC7B,CAAC,eAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC;QAC7C,CAAC,eAAC,CAAC,QAAQ,EAAE,eAAC,CAAC,QAAQ,CAAC;KACzB,CAAA;IACD,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,eAAC,CAAC,cAAc,EAAE,eAAC,CAAC,cAAc,CAAC,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,WAAC,CAAA,GAAG,aAAa,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1D,OAAO,OAAO,KAAK,aAAG,CAAC,CAAC,CAAC,WAAC,CAAA,GAAG,IAAI,SAAS,OAAO,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,WAAC,CAAA,GAAG,IAAI,IAAI,IAAI,GAAG,CAAA;AACrF,CAAC;AAhBD,4CAgBC;AAED,SAAgB,UAAU,CAAC,EAAC,GAAG,EAAE,EAAE,EAAE,EAAC,IAAI,EAAC,EAAa,EAAE,OAAe;IACvE,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACvC,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE;QAC/B,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAC,CAAA,cAAc,OAAO,KAAK,CAAC,GAAG;KACtC,CAAC,CAAA;AACJ,CAAC;AAPD,gCAOC;AAED,SAAgB,aAAa,CAAC,GAAe;IAC3C,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,IAAI,EAAE,CAAC,SAAS,EAAE;QAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACvC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;QAChD,OAAO,QAAQ,CAAA;KAChB;IACD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpB,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;IAChC,OAAO,KAAK,CAAA;IAEZ,SAAS,aAAa,CAAC,QAAoB;QACzC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;QAC/C,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;YAC9B,GAAG,CAAC,SAAS,CACX;gBACE,OAAO;gBACP,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,WAAI,CAAC,GAAG;aACvB,EACD,KAAK,CACN,CAAA;YACD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AA1BD,sCA0BC;AAED,SAAgB,aAAa,CAAC,GAAe;IAC3C,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;IACtC,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACvE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAc,EAAE,EAAE,CAAC,wBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;IAC/E,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW;QAAE,OAAM;IAE/C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEnC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CACb,MAAM,CAAC,OAAO,CAAC,CAAC,IAAe,EAAE,CAAS,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAC1B;YACE,OAAO;YACP,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,IAAI;SACpB,EACD,QAAQ,CACT,CAAA;QACD,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,KAAK,OAAO,QAAQ,EAAE,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACxD,+FAA+F;QAC/F,yFAAyF;QACzF,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CACH,CAAA;IAED,GAAG,CAAC,MAAM,CACR,KAAK,EACL,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EACjB,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CACtB,CAAA;AACH,CAAC;AAjCD,sCAiCC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.d.ts
index 617cef9..6a0967d 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.d.ts
@@ -1,5 +1,5 @@
 import type { CodeKeywordDefinition } from "../../types";
-import type KeywordCxt from "../../compile/context";
+import type { KeywordCxt } from "../../compile/validate";
 import { Code } from "../../compile/codegen";
 import { SchemaEnv } from "../../compile";
 declare const def: CodeKeywordDefinition;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js b/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js
index 10e6838..9b2c87f 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js
@@ -1,7 +1,7 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.callRef = exports.getValidate = void 0;
-const error_classes_1 = require("../../compile/error_classes");
+const ref_error_1 = require("../../compile/ref_error");
 const code_1 = require("../code");
 const codegen_1 = require("../../compile/codegen");
 const names_1 = require("../../compile/names");
@@ -11,23 +11,22 @@
     keyword: "$ref",
     schemaType: "string",
     code(cxt) {
-        const { gen, schema, it } = cxt;
+        const { gen, schema: $ref, it } = cxt;
         const { baseId, schemaEnv: env, validateName, opts, self } = it;
-        // TODO See comment in dynamicRef.ts
-        // This has to be improved to resolve #815.
-        if (schema === "#" || schema === "#/")
+        const { root } = env;
+        if (($ref === "#" || $ref === "#/") && baseId === root.baseId)
             return callRootRef();
-        const schOrEnv = compile_1.resolveRef.call(self, env.root, baseId, schema);
+        const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);
         if (schOrEnv === undefined)
-            throw new error_classes_1.MissingRefError(baseId, schema);
+            throw new ref_error_1.default(baseId, $ref);
         if (schOrEnv instanceof compile_1.SchemaEnv)
             return callValidate(schOrEnv);
         return inlineRefSchema(schOrEnv);
         function callRootRef() {
-            if (env === env.root)
+            if (env === root)
                 return callRef(cxt, validateName, env, env.$async);
-            const rootName = gen.scopeValue("root", { ref: env.root });
-            return callRef(cxt, codegen_1._ `${rootName}.validate`, env.root, env.root.$async);
+            const rootName = gen.scopeValue("root", { ref: root });
+            return callRef(cxt, codegen_1._ `${rootName}.validate`, root, root.$async);
         }
         function callValidate(sch) {
             const v = getValidate(cxt, sch);
@@ -41,7 +40,7 @@
                 dataTypes: [],
                 schemaPath: codegen_1.nil,
                 topSchemaRef: schName,
-                errSchemaPath: schema,
+                errSchemaPath: $ref,
             }, valid);
             cxt.mergeEvaluated(schCxt);
             cxt.ok(valid);
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js.map
index 2979216..d1026be 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/core/ref.js.map
@@ -1 +1 @@
-{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../lib/vocabularies/core/ref.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../lib/vocabularies/core/ref.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts
new file mode 100644
index 0000000..656b2da
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts
@@ -0,0 +1,5 @@
+import type { CodeKeywordDefinition } from "../../types";
+import { DiscrError, DiscrErrorObj } from "../discriminator/types";
+export declare type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>;
+declare const def: CodeKeywordDefinition;
+export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js
new file mode 100644
index 0000000..b11ea81
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js
@@ -0,0 +1,93 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const codegen_1 = require("../../compile/codegen");
+const types_1 = require("../discriminator/types");
+const error = {
+    message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag
+        ? `tag "${tagName}" must be string`
+        : `value of tag "${tagName}" must be in oneOf`,
+    params: ({ params: { discrError, tag, tagName } }) => codegen_1._ `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,
+};
+const def = {
+    keyword: "discriminator",
+    type: "object",
+    schemaType: "object",
+    error,
+    code(cxt) {
+        const { gen, data, schema, parentSchema, it } = cxt;
+        const { oneOf } = parentSchema;
+        if (!it.opts.discriminator) {
+            throw new Error("discriminator: requires discriminator option");
+        }
+        const tagName = schema.propertyName;
+        if (typeof tagName != "string")
+            throw new Error("discriminator: requires propertyName");
+        if (schema.mapping)
+            throw new Error("discriminator: mapping is not supported");
+        if (!oneOf)
+            throw new Error("discriminator: requires oneOf keyword");
+        const valid = gen.let("valid", false);
+        const tag = gen.const("tag", codegen_1._ `${data}${codegen_1.getProperty(tagName)}`);
+        gen.if(codegen_1._ `typeof ${tag} == "string"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));
+        cxt.ok(valid);
+        function validateMapping() {
+            const mapping = getMapping();
+            gen.if(false);
+            for (const tagValue in mapping) {
+                gen.elseIf(codegen_1._ `${tag} === ${tagValue}`);
+                gen.assign(valid, applyTagSchema(mapping[tagValue]));
+            }
+            gen.else();
+            cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });
+            gen.endIf();
+        }
+        function applyTagSchema(schemaProp) {
+            const _valid = gen.name("valid");
+            const schCxt = cxt.subschema({ keyword: "oneOf", schemaProp }, _valid);
+            cxt.mergeEvaluated(schCxt, codegen_1.Name);
+            return _valid;
+        }
+        function getMapping() {
+            var _a;
+            const oneOfMapping = {};
+            const topRequired = hasRequired(parentSchema);
+            let tagRequired = true;
+            for (let i = 0; i < oneOf.length; i++) {
+                const sch = oneOf[i];
+                const propSch = (_a = sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];
+                if (typeof propSch != "object") {
+                    throw new Error(`discriminator: oneOf schemas must have "properties/${tagName}"`);
+                }
+                tagRequired = tagRequired && (topRequired || hasRequired(sch));
+                addMappings(propSch, i);
+            }
+            if (!tagRequired)
+                throw new Error(`discriminator: "${tagName}" must be required`);
+            return oneOfMapping;
+            function hasRequired({ required }) {
+                return Array.isArray(required) && required.includes(tagName);
+            }
+            function addMappings(sch, i) {
+                if (sch.const) {
+                    addMapping(sch.const, i);
+                }
+                else if (sch.enum) {
+                    for (const tagValue of sch.enum) {
+                        addMapping(tagValue, i);
+                    }
+                }
+                else {
+                    throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`);
+                }
+            }
+            function addMapping(tagValue, i) {
+                if (typeof tagValue != "string" || tagValue in oneOfMapping) {
+                    throw new Error(`discriminator: "${tagName}" values must be unique strings`);
+                }
+                oneOfMapping[tagValue] = i;
+            }
+        }
+    },
+};
+exports.default = def;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js.map
new file mode 100644
index 0000000..a859c23
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/vocabularies/discriminator/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts
new file mode 100644
index 0000000..6cf5ea5
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts
@@ -0,0 +1,10 @@
+import type { ErrorObject } from "../../types";
+export declare enum DiscrError {
+    Tag = "tag",
+    Mapping = "mapping"
+}
+export declare type DiscrErrorObj<E extends DiscrError> = ErrorObject<"discriminator", {
+    error: E;
+    tag: string;
+    tagValue: unknown;
+}, string>;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js
new file mode 100644
index 0000000..d538f0c
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiscrError = void 0;
+var DiscrError;
+(function (DiscrError) {
+    DiscrError["Tag"] = "tag";
+    DiscrError["Mapping"] = "mapping";
+})(DiscrError = exports.DiscrError || (exports.DiscrError = {}));
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js.map
new file mode 100644
index 0000000..4908a4e
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/vocabularies/discriminator/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,iCAAmB,CAAA;AACrB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.d.ts
new file mode 100644
index 0000000..d65752c
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.d.ts
@@ -0,0 +1,3 @@
+import type { Vocabulary } from "../types";
+declare const draft2020Vocabularies: Vocabulary[];
+export default draft2020Vocabularies;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js b/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js
new file mode 100644
index 0000000..f94e27f
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js
@@ -0,0 +1,23 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const core_1 = require("./core");
+const validation_1 = require("./validation");
+const applicator_1 = require("./applicator");
+const dynamic_1 = require("./dynamic");
+const next_1 = require("./next");
+const unevaluated_1 = require("./unevaluated");
+const format_1 = require("./format");
+const metadata_1 = require("./metadata");
+const draft2020Vocabularies = [
+    dynamic_1.default,
+    core_1.default,
+    validation_1.default,
+    applicator_1.default(true),
+    format_1.default,
+    metadata_1.metadataVocabulary,
+    metadata_1.contentVocabulary,
+    next_1.default,
+    unevaluated_1.default,
+];
+exports.default = draft2020Vocabularies;
+//# sourceMappingURL=draft2020.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js.map
new file mode 100644
index 0000000..920b73e
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"draft2020.js","sourceRoot":"","sources":["../../lib/vocabularies/draft2020.ts"],"names":[],"mappings":";;AACA,iCAAmC;AACnC,6CAA+C;AAC/C,6CAAkD;AAClD,uCAAyC;AACzC,iCAAmC;AACnC,+CAAiD;AACjD,qCAAuC;AACvC,yCAAgE;AAEhE,MAAM,qBAAqB,GAAiB;IAC1C,iBAAiB;IACjB,cAAc;IACd,oBAAoB;IACpB,oBAAuB,CAAC,IAAI,CAAC;IAC7B,gBAAgB;IAChB,6BAAkB;IAClB,4BAAiB;IACjB,cAAc;IACd,qBAAqB;CACtB,CAAA;AAED,kBAAe,qBAAqB,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js b/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js
index a9755d2..2555217 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js
@@ -8,7 +8,7 @@
 const draft7Vocabularies = [
     core_1.default,
     validation_1.default,
-    applicator_1.default,
+    applicator_1.default(),
     format_1.default,
     metadata_1.metadataVocabulary,
     metadata_1.contentVocabulary,
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js.map
index 5539b8b..7abe8d2 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/draft7.js.map
@@ -1 +1 @@
-{"version":3,"file":"draft7.js","sourceRoot":"","sources":["../../lib/vocabularies/draft7.ts"],"names":[],"mappings":";;AACA,iCAAmC;AACnC,6CAA+C;AAC/C,6CAA+C;AAC/C,qCAAuC;AACvC,yCAAgE;AAEhE,MAAM,kBAAkB,GAAiB;IACvC,cAAc;IACd,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,6BAAkB;IAClB,4BAAiB;CAClB,CAAA;AAED,kBAAe,kBAAkB,CAAA"}
\ No newline at end of file
+{"version":3,"file":"draft7.js","sourceRoot":"","sources":["../../lib/vocabularies/draft7.ts"],"names":[],"mappings":";;AACA,iCAAmC;AACnC,6CAA+C;AAC/C,6CAAkD;AAClD,qCAAuC;AACvC,yCAAgE;AAEhE,MAAM,kBAAkB,GAAiB;IACvC,cAAc;IACd,oBAAoB;IACpB,oBAAuB,EAAE;IACzB,gBAAgB;IAChB,6BAAkB;IAClB,4BAAiB;CAClB,CAAA;AAED,kBAAe,kBAAkB,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts
index 263284e..5621213 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts
@@ -1,5 +1,5 @@
 import type { CodeKeywordDefinition } from "../../types";
-import type KeywordCxt from "../../compile/context";
+import type { KeywordCxt } from "../../compile/validate";
 declare const def: CodeKeywordDefinition;
 export declare function dynamicAnchor(cxt: KeywordCxt, anchor: string): void;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts
index f422380..fa2f2b8 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts
@@ -1,5 +1,5 @@
 import type { CodeKeywordDefinition } from "../../types";
-import type KeywordCxt from "../../compile/context";
+import type { KeywordCxt } from "../../compile/validate";
 declare const def: CodeKeywordDefinition;
 export declare function dynamicRef(cxt: KeywordCxt, ref: string): void;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js
index 3e0bb61..91970ea 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js
@@ -1,7 +1,7 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const dynamicAnchor_1 = require("./dynamicAnchor");
-const validate_1 = require("../../compile/validate");
+const util_1 = require("../../compile/util");
 const def = {
     keyword: "$recursiveAnchor",
     schemaType: "boolean",
@@ -9,7 +9,7 @@
         if (cxt.schema)
             dynamicAnchor_1.dynamicAnchor(cxt, "");
         else
-            validate_1.checkStrictMode(cxt.it, "$recursiveAnchor: false is ignored");
+            util_1.checkStrictMode(cxt.it, "$recursiveAnchor: false is ignored");
     },
 };
 exports.default = def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map
index dbba094..cdc038c 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map
@@ -1 +1 @@
-{"version":3,"file":"recursiveAnchor.js","sourceRoot":"","sources":["../../../lib/vocabularies/dynamic/recursiveAnchor.ts"],"names":[],"mappings":";;AACA,mDAA6C;AAC7C,qDAAsD;AAEtD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,SAAS;IACrB,IAAI,CAAC,GAAG;QACN,IAAI,GAAG,CAAC,MAAM;YAAE,6BAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;;YACjC,0BAAe,CAAC,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAA;IACpE,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"recursiveAnchor.js","sourceRoot":"","sources":["../../../lib/vocabularies/dynamic/recursiveAnchor.ts"],"names":[],"mappings":";;AACA,mDAA6C;AAC7C,6CAAkD;AAElD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,SAAS;IACrB,IAAI,CAAC,GAAG;QACN,IAAI,GAAG,CAAC,MAAM;YAAE,6BAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;;YACjC,sBAAe,CAAC,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAA;IACpE,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/errors.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/errors.d.ts
index 7570ca8..221aae0 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/errors.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/errors.d.ts
@@ -5,4 +5,5 @@
 import type { UnevaluatedPropertiesError } from "./unevaluated/unevaluatedProperties";
 import type { UnevaluatedItemsError } from "./unevaluated/unevaluatedItems";
 import type { DependentRequiredError } from "./validation/dependentRequired";
-export declare type DefinedError = TypeError | ApplicatorKeywordError | ValidationKeywordError | FormatError | UnevaluatedPropertiesError | UnevaluatedItemsError | DependentRequiredError;
+import type { DiscriminatorError } from "./discriminator";
+export declare type DefinedError = TypeError | ApplicatorKeywordError | ValidationKeywordError | FormatError | UnevaluatedPropertiesError | UnevaluatedItemsError | DependentRequiredError | DiscriminatorError;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js b/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js
index 69c6d2a..653fe29 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js
@@ -2,7 +2,7 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
 const error = {
-    message: ({ schemaCode }) => codegen_1.str `should match format "${schemaCode}"`,
+    message: ({ schemaCode }) => codegen_1.str `must match format "${schemaCode}"`,
     params: ({ schemaCode }) => codegen_1._ `{format: ${schemaCode}}`,
 };
 const def = {
@@ -32,7 +32,7 @@
             gen.if(codegen_1._ `typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, codegen_1._ `${fDef}.type || "string"`).assign(format, codegen_1._ `${fDef}.validate`), () => gen.assign(fType, codegen_1._ `"string"`).assign(format, fDef));
             cxt.fail$data(codegen_1.or(unknownFmt(), invalidFmt()));
             function unknownFmt() {
-                if (opts.strict === false)
+                if (opts.strictSchema === false)
                     return codegen_1.nil;
                 return codegen_1._ `${schemaCode} && !${format}`;
             }
@@ -56,7 +56,7 @@
             if (fmtType === ruleType)
                 cxt.pass(validCondition());
             function unknownFormat() {
-                if (opts.strict === false) {
+                if (opts.strictSchema === false) {
                     self.logger.warn(unknownMsg());
                     return;
                 }
@@ -66,11 +66,12 @@
                 }
             }
             function getFormat(fmtDef) {
-                const fmt = gen.scopeValue("formats", {
-                    key: schema,
-                    ref: fmtDef,
-                    code: opts.code.formats ? codegen_1._ `${opts.code.formats}${codegen_1.getProperty(schema)}` : undefined,
-                });
+                const code = fmtDef instanceof RegExp
+                    ? codegen_1.regexpCode(fmtDef)
+                    : opts.code.formats
+                        ? codegen_1._ `${opts.code.formats}${codegen_1.getProperty(schema)}`
+                        : undefined;
+                const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
                 if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) {
                     return [fmtDef.type || "string", fmtDef.validate, codegen_1._ `${fmt}.validate`];
                 }
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js.map
index b8a1e7b..50598b9 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/format/format.js.map
@@ -1 +1 @@
-{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../lib/vocabularies/format/format.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../lib/vocabularies/format/format.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts
index cde2aa2..fa27fb7 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts
@@ -1,3 +1,6 @@
 import type { CodeKeywordDefinition } from "../../types";
+import { _JTDTypeError } from "./error";
+import { DiscrError, DiscrErrorObj } from "../discriminator/types";
+export declare type JTDDiscriminatorError = _JTDTypeError<"discriminator", "object", string> | DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>;
 declare const def: CodeKeywordDefinition;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js
index ca5d4d0..16dde01 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js
@@ -3,26 +3,59 @@
 const codegen_1 = require("../../compile/codegen");
 const metadata_1 = require("./metadata");
 const nullable_1 = require("./nullable");
+const error_1 = require("./error");
+const types_1 = require("../discriminator/types");
+const error = {
+    message: (cxt) => {
+        const { schema, params } = cxt;
+        return params.discrError
+            ? params.discrError === types_1.DiscrError.Tag
+                ? `tag "${schema}" must be string`
+                : `value of tag "${schema}" must be in mapping`
+            : error_1.typeErrorMessage(cxt, "object");
+    },
+    params: (cxt) => {
+        const { schema, params } = cxt;
+        return params.discrError
+            ? codegen_1._ `{error: ${params.discrError}, tag: ${schema}, tagValue: ${params.tag}}`
+            : error_1.typeErrorParams(cxt, "object");
+    },
+};
 const def = {
     keyword: "discriminator",
     schemaType: "string",
     implements: ["mapping"],
+    error,
     code(cxt) {
         metadata_1.checkMetadata(cxt);
         const { gen, data, schema, parentSchema } = cxt;
         const [valid, cond] = nullable_1.checkNullableObject(cxt, data);
-        gen.if(cond, () => {
+        gen.if(cond);
+        validateDiscriminator();
+        gen.elseIf(codegen_1.not(valid));
+        cxt.error();
+        gen.endIf();
+        cxt.ok(valid);
+        function validateDiscriminator() {
             const tag = gen.const("tag", codegen_1._ `${data}${codegen_1.getProperty(schema)}`);
-            gen.if(codegen_1._ `typeof ${tag} == "string"`, () => {
-                gen.if(false);
-                for (const tagValue in parentSchema.mapping) {
-                    gen.elseIf(codegen_1._ `${tag} === ${tagValue}`);
-                    gen.assign(valid, applyTagSchema(tagValue));
-                }
-                gen.endIf();
-            });
-        });
-        cxt.pass(valid);
+            gen.if(codegen_1._ `${tag} === undefined`);
+            cxt.error(false, { discrError: types_1.DiscrError.Tag, tag });
+            gen.elseIf(codegen_1._ `typeof ${tag} == "string"`);
+            validateMapping(tag);
+            gen.else();
+            cxt.error(false, { discrError: types_1.DiscrError.Tag, tag }, { instancePath: schema });
+            gen.endIf();
+        }
+        function validateMapping(tag) {
+            gen.if(false);
+            for (const tagValue in parentSchema.mapping) {
+                gen.elseIf(codegen_1._ `${tag} === ${tagValue}`);
+                gen.assign(valid, applyTagSchema(tagValue));
+            }
+            gen.else();
+            cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag }, { instancePath: schema, schemaPath: "mapping", parentSchema: true });
+            gen.endIf();
+        }
         function applyTagSchema(schemaProp) {
             const _valid = gen.name("valid");
             cxt.subschema({
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map
index 99021c2..0ac39e9 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map
@@ -1 +1 @@
-{"version":3,"file":"discriminator.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/discriminator.ts"],"names":[],"mappings":";;AAEA,mDAA0D;AAC1D,yCAAwC;AACxC,yCAA8C;AAE9C,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,GAAG,CAAA;QAC7C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,8BAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAEpD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE;YAChB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,GAAG,qBAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC9D,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,UAAU,GAAG,cAAc,EAAE,GAAG,EAAE;gBACxC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;gBACb,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,OAAO,EAAE;oBAC3C,GAAG,CAAC,MAAM,CAAC,WAAC,CAAA,GAAG,GAAG,QAAQ,QAAQ,EAAE,CAAC,CAAA;oBACrC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;iBAC5C;gBACD,GAAG,CAAC,KAAK,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,SAAS,cAAc,CAAC,UAAkB;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAChC,GAAG,CAAC,SAAS,CACX;gBACE,OAAO,EAAE,SAAS;gBAClB,UAAU;gBACV,gBAAgB,EAAE,MAAM;aACzB,EACD,MAAM,CACP,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"discriminator.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/discriminator.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts
index cde2aa2..0a15871 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts
@@ -1,3 +1,5 @@
-import type { CodeKeywordDefinition } from "../../types";
+import type { CodeKeywordDefinition, SchemaObject } from "../../types";
+import { _JTDTypeError } from "./error";
+export declare type JTDElementsError = _JTDTypeError<"elements", "array", SchemaObject>;
 declare const def: CodeKeywordDefinition;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js
index 77a46ca..ccfa9a1 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js
@@ -5,17 +5,19 @@
 const codegen_1 = require("../../compile/codegen");
 const metadata_1 = require("./metadata");
 const nullable_1 = require("./nullable");
+const error_1 = require("./error");
 const def = {
     keyword: "elements",
     schemaType: "object",
+    error: error_1.typeError("array"),
     code(cxt) {
         metadata_1.checkMetadata(cxt);
         const { gen, data, schema, it } = cxt;
         if (util_1.alwaysValidSchema(it, schema))
             return;
-        const [valid, cond] = nullable_1.checkNullable(cxt, codegen_1.nil);
-        gen.if(codegen_1.and(cond, codegen_1._ `Array.isArray(${data})`), () => gen.assign(valid, code_1.validateArray(cxt)));
-        cxt.pass(valid);
+        const [valid] = nullable_1.checkNullable(cxt);
+        gen.if(codegen_1.not(valid), () => gen.if(codegen_1._ `Array.isArray(${data})`, () => gen.assign(valid, code_1.validateArray(cxt)), () => cxt.error()));
+        cxt.ok(valid);
     },
 };
 exports.default = def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js.map
index f355b84..b192b5b 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/elements.js.map
@@ -1 +1 @@
-{"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/elements.ts"],"names":[],"mappings":";;AAEA,6CAAoD;AACpD,kCAAqC;AACrC,mDAAiD;AACjD,yCAAwC;AACxC,yCAAwC;AAExC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,wBAAa,CAAC,GAAG,EAAE,aAAG,CAAC,CAAA;QAC7C,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,IAAI,EAAE,WAAC,CAAA,iBAAiB,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACzF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/elements.ts"],"names":[],"mappings":";;AAEA,6CAAoD;AACpD,kCAAqC;AACrC,mDAA4C;AAC5C,yCAAwC;AACxC,yCAAwC;AACxC,mCAAgD;AAIhD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,iBAAS,CAAC,OAAO,CAAC;IACzB,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,MAAM,CAAC,KAAK,CAAC,GAAG,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClC,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CACtB,GAAG,CAAC,EAAE,CACJ,WAAC,CAAA,iBAAiB,IAAI,GAAG,EACzB,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAa,CAAC,GAAG,CAAC,CAAC,EAC3C,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAClB,CACF,CAAA;QACD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IACf,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts
index cde2aa2..8df949c 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts
@@ -1,3 +1,6 @@
-import type { CodeKeywordDefinition } from "../../types";
+import type { CodeKeywordDefinition, ErrorObject } from "../../types";
+export declare type JTDEnumError = ErrorObject<"enum", {
+    allowedValues: string[];
+}, string[]>;
 declare const def: CodeKeywordDefinition;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js
index 2995909..9e179f8 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js
@@ -2,9 +2,15 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
 const metadata_1 = require("./metadata");
+const nullable_1 = require("./nullable");
+const error = {
+    message: "must be equal to one of the allowed values",
+    params: ({ schemaCode }) => codegen_1._ `{allowedValues: ${schemaCode}}`,
+};
 const def = {
     keyword: "enum",
     schemaType: "array",
+    error,
     code(cxt) {
         metadata_1.checkMetadata(cxt);
         const { gen, data, schema, schemaValue, parentSchema, it } = cxt;
@@ -13,21 +19,17 @@
         if (schema.length !== new Set(schema).size)
             throw new Error("enum items must be unique");
         let valid;
+        const isString = codegen_1._ `typeof ${data} == "string"`;
         if (schema.length >= it.opts.loopEnum) {
-            if (parentSchema.nullable) {
-                valid = gen.let("valid", codegen_1._ `${data} === null`);
-                gen.if(codegen_1.not(valid), loopEnum);
-            }
-            else {
-                valid = gen.let("valid", false);
-                loopEnum();
-            }
+            let cond;
+            [valid, cond] = nullable_1.checkNullable(cxt, isString);
+            gen.if(cond, loopEnum);
         }
         else {
             /* istanbul ignore if */
             if (!Array.isArray(schema))
                 throw new Error("ajv implementation error");
-            valid = codegen_1.or(...schema.map((value) => codegen_1._ `${data} === ${value}`));
+            valid = codegen_1.and(isString, codegen_1.or(...schema.map((value) => codegen_1._ `${data} === ${value}`)));
             if (parentSchema.nullable)
                 valid = codegen_1.or(codegen_1._ `${data} === null`, valid);
         }
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js.map
index 1c9b018..75c5ac3 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/enum.js.map
@@ -1 +1 @@
-{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/enum.ts"],"names":[],"mappings":";;AAEA,mDAAsD;AACtD,yCAAwC;AAExC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;IACnB,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QACxF,IAAI,KAAW,CAAA;QACf,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,IAAI,YAAY,CAAC,QAAQ,EAAE;gBACzB,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,WAAC,CAAA,GAAG,IAAI,WAAW,CAAC,CAAA;gBAC7C,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAA;aAC7B;iBAAM;gBACL,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC/B,QAAQ,EAAE,CAAA;aACX;SACF;aAAM;YACL,wBAAwB;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACvE,KAAK,GAAG,YAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,WAAC,CAAA,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAA;YACrE,IAAI,YAAY,CAAC,QAAQ;gBAAE,KAAK,GAAG,YAAE,CAAC,WAAC,CAAA,GAAG,IAAI,WAAW,EAAE,KAAK,CAAC,CAAA;SAClE;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,SAAS,QAAQ;YACf,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,WAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,GAAG,KAAK,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAC1D,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/enum.ts"],"names":[],"mappings":";;AAEA,mDAAsD;AACtD,yCAAwC;AACxC,yCAAwC;AAIxC,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,mBAAmB,UAAU,GAAG;CAC5D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;IACnB,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QACxF,IAAI,KAAW,CAAA;QACf,MAAM,QAAQ,GAAG,WAAC,CAAA,UAAU,IAAI,cAAc,CAAA;QAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,IAAI,IAAU,CACb;YAAA,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,wBAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC7C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;SACvB;aAAM;YACL,wBAAwB;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACvE,KAAK,GAAG,aAAG,CAAC,QAAQ,EAAE,YAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,WAAC,CAAA,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;YACpF,IAAI,YAAY,CAAC,QAAQ;gBAAE,KAAK,GAAG,YAAE,CAAC,WAAC,CAAA,GAAG,IAAI,WAAW,EAAE,KAAK,CAAC,CAAA;SAClE;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,SAAS,QAAQ;YACf,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,WAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,GAAG,KAAK,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAC1D,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.d.ts
new file mode 100644
index 0000000..0a1e68f
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.d.ts
@@ -0,0 +1,9 @@
+import type { KeywordErrorDefinition, KeywordErrorCxt, ErrorObject } from "../../types";
+import { Code } from "../../compile/codegen";
+export declare type _JTDTypeError<K extends string, T extends string, S> = ErrorObject<K, {
+    type: T;
+    nullable: boolean;
+}, S>;
+export declare function typeError(t: string): KeywordErrorDefinition;
+export declare function typeErrorMessage({ parentSchema }: KeywordErrorCxt, t: string): string;
+export declare function typeErrorParams({ parentSchema }: KeywordErrorCxt, t: string): Code;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js
new file mode 100644
index 0000000..4988872
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typeErrorParams = exports.typeErrorMessage = exports.typeError = void 0;
+const codegen_1 = require("../../compile/codegen");
+function typeError(t) {
+    return {
+        message: (cxt) => typeErrorMessage(cxt, t),
+        params: (cxt) => typeErrorParams(cxt, t),
+    };
+}
+exports.typeError = typeError;
+function typeErrorMessage({ parentSchema }, t) {
+    return (parentSchema === null || parentSchema === void 0 ? void 0 : parentSchema.nullable) ? `must be ${t} or null` : `must be ${t}`;
+}
+exports.typeErrorMessage = typeErrorMessage;
+function typeErrorParams({ parentSchema }, t) {
+    return codegen_1._ `{type: ${t}, nullable: ${!!(parentSchema === null || parentSchema === void 0 ? void 0 : parentSchema.nullable)}}`;
+}
+exports.typeErrorParams = typeErrorParams;
+//# sourceMappingURL=error.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js.map
new file mode 100644
index 0000000..0ec4fd7
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/error.ts"],"names":[],"mappings":";;;AACA,mDAA6C;AAQ7C,SAAgB,SAAS,CAAC,CAAS;IACjC,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC;KACzC,CAAA;AACH,CAAC;AALD,8BAKC;AAED,SAAgB,gBAAgB,CAAC,EAAC,YAAY,EAAkB,EAAE,CAAS;IACzE,OAAO,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAA;AACzE,CAAC;AAFD,4CAEC;AAED,SAAgB,eAAe,CAAC,EAAC,YAAY,EAAkB,EAAE,CAAS;IACxE,OAAO,WAAC,CAAA,UAAU,CAAC,eAAe,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAA,GAAG,CAAA;AAC/D,CAAC;AAFD,0CAEC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.d.ts
index db7b966..f9b7fb9 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.d.ts
@@ -1,3 +1,10 @@
 import type { Vocabulary } from "../../types";
+import { JTDTypeError } from "./type";
+import { JTDEnumError } from "./enum";
+import { JTDElementsError } from "./elements";
+import { JTDPropertiesError } from "./properties";
+import { JTDDiscriminatorError } from "./discriminator";
+import { JTDValuesError } from "./values";
 declare const jtdVocabulary: Vocabulary;
 export default jtdVocabulary;
+export declare type JTDErrorObject = JTDTypeError | JTDEnumError | JTDElementsError | JTDPropertiesError | JTDDiscriminatorError | JTDValuesError;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js
index f0ba74d..18f40ab 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js
@@ -1,6 +1,5 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-// import definitions from "./definitions"
 const ref_1 = require("./ref");
 const type_1 = require("./type");
 const enum_1 = require("./enum");
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js.map
index baa9e9c..713a187 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/index.ts"],"names":[],"mappings":";;AACA,0CAA0C;AAC1C,+BAA8B;AAC9B,iCAAgC;AAChC,iCAAgC;AAChC,yCAAiC;AACjC,6CAAqC;AACrC,6DAAqD;AACrD,mDAA2C;AAC3C,qCAA6B;AAC7B,mCAA2B;AAC3B,yCAAiC;AAEjC,MAAM,aAAa,GAAe;IAChC,aAAa;IACb,aAAU;IACV,cAAW;IACX,cAAW;IACX,kBAAQ;IACR,oBAAU;IACV,4BAAkB;IAClB,uBAAa;IACb,gBAAM;IACN,eAAK;IACL,kBAAQ;IACR,EAAC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAC;IACxD,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAC;CAC7C,CAAA;AAED,kBAAe,aAAa,CAAA"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/index.ts"],"names":[],"mappings":";;AACA,+BAA8B;AAC9B,iCAAgD;AAChD,iCAAgD;AAChD,yCAAqD;AACrD,6CAA2D;AAC3D,6DAAqD;AACrD,mDAAoE;AACpE,qCAA+C;AAC/C,mCAA2B;AAC3B,yCAAiC;AAEjC,MAAM,aAAa,GAAe;IAChC,aAAa;IACb,aAAU;IACV,cAAW;IACX,cAAW;IACX,kBAAQ;IACR,oBAAU;IACV,4BAAkB;IAClB,uBAAa;IACb,gBAAM;IACN,eAAK;IACL,kBAAQ;IACR,EAAC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAC;IACxD,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAC;CAC7C,CAAA;AAED,kBAAe,aAAa,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts
index dfeaa37..254f760 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts
@@ -1,4 +1,4 @@
-import type KeywordCxt from "../../compile/context";
+import type { KeywordCxt } from "../../compile/validate";
 import { Code, Name } from "../../compile/codegen";
-export declare function checkNullable({ gen, data, parentSchema }: KeywordCxt, cond: Code): [Name, Code];
+export declare function checkNullable({ gen, data, parentSchema }: KeywordCxt, cond?: Code): [Name, Code];
 export declare function checkNullableObject(cxt: KeywordCxt, cond: Code): [Name, Code];
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js
index ee2e693..cb1454e 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js
@@ -2,7 +2,7 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.checkNullableObject = exports.checkNullable = void 0;
 const codegen_1 = require("../../compile/codegen");
-function checkNullable({ gen, data, parentSchema }, cond) {
+function checkNullable({ gen, data, parentSchema }, cond = codegen_1.nil) {
     const valid = gen.name("valid");
     if (parentSchema.nullable) {
         gen.let(valid, codegen_1._ `${data} === null`);
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map
index 3f41ab6..a6cf508 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map
@@ -1 +1 @@
-{"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/nullable.ts"],"names":[],"mappings":";;;AACA,mDAAwD;AAExD,SAAgB,aAAa,CAAC,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAa,EAAE,IAAU;IAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,IAAI,YAAY,CAAC,QAAQ,EAAE;QACzB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,WAAW,CAAC,CAAA;QACnC,IAAI,GAAG,aAAG,CAAC,KAAK,CAAC,CAAA;KAClB;SAAM;QACL,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KACtB;IACD,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACtB,CAAC;AATD,sCASC;AAED,SAAgB,mBAAmB,CAAC,GAAe,EAAE,IAAU;IAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/C,OAAO,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,KAAK,cAAc,GAAG,CAAC,IAAI,kCAAkC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;AAC9F,CAAC;AAHD,kDAGC"}
\ No newline at end of file
+{"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/nullable.ts"],"names":[],"mappings":";;;AACA,mDAA6D;AAE7D,SAAgB,aAAa,CAC3B,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAa,EACrC,OAAa,aAAG;IAEhB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,IAAI,YAAY,CAAC,QAAQ,EAAE;QACzB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,WAAW,CAAC,CAAA;QACnC,IAAI,GAAG,aAAG,CAAC,KAAK,CAAC,CAAA;KAClB;SAAM;QACL,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KACtB;IACD,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACtB,CAAC;AAZD,sCAYC;AAED,SAAgB,mBAAmB,CAAC,GAAe,EAAE,IAAU;IAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/C,OAAO,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,KAAK,cAAc,GAAG,CAAC,IAAI,kCAAkC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;AAC9F,CAAC;AAHD,kDAGC"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js
index c905825..6cb93a5 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js
@@ -4,6 +4,7 @@
 const def = {
     keyword: "optionalProperties",
     schemaType: "object",
+    error: properties_1.error,
     code(cxt) {
         if (cxt.parentSchema.properties)
             return;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map
index 00ce7a4..2fab849 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map
@@ -1 +1 @@
-{"version":3,"file":"optionalProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/optionalProperties.ts"],"names":[],"mappings":";;AAEA,6CAA+C;AAE/C,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,oBAAoB;IAC7B,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,GAAe;QAClB,IAAI,GAAG,CAAC,YAAY,CAAC,UAAU;YAAE,OAAM;QACvC,+BAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"optionalProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/optionalProperties.ts"],"names":[],"mappings":";;AAEA,6CAAsD;AAEtD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,oBAAoB;IAC7B,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAL,kBAAK;IACL,IAAI,CAAC,GAAe;QAClB,IAAI,GAAG,CAAC,YAAY,CAAC,UAAU;YAAE,OAAM;QACvC,+BAAkB,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts
index 4eb3558..a1a2219 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts
@@ -1,5 +1,22 @@
-import type { CodeKeywordDefinition } from "../../types";
-import type KeywordCxt from "../../compile/context";
+import type { CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition, SchemaObject } from "../../types";
+import type { KeywordCxt } from "../../compile/validate";
+import { _JTDTypeError } from "./error";
+declare enum PropError {
+    Additional = "additional",
+    Missing = "missing"
+}
+declare type PropKeyword = "properties" | "optionalProperties";
+declare type PropSchema = {
+    [P in string]?: SchemaObject;
+};
+export declare type JTDPropertiesError = _JTDTypeError<PropKeyword, "object", PropSchema> | ErrorObject<PropKeyword, {
+    error: PropError.Additional;
+    additionalProperty: string;
+}, PropSchema> | ErrorObject<PropKeyword, {
+    error: PropError.Missing;
+    missingProperty: string;
+}, PropSchema>;
+export declare const error: KeywordErrorDefinition;
 declare const def: CodeKeywordDefinition;
 export declare function validateProperties(cxt: KeywordCxt): void;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js
index fe3f170..c5be1c5 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js
@@ -1,16 +1,45 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.validateProperties = void 0;
+exports.validateProperties = exports.error = void 0;
 const code_1 = require("../code");
 const util_1 = require("../../compile/util");
 const codegen_1 = require("../../compile/codegen");
 const metadata_1 = require("./metadata");
 const nullable_1 = require("./nullable");
+const error_1 = require("./error");
+var PropError;
+(function (PropError) {
+    PropError["Additional"] = "additional";
+    PropError["Missing"] = "missing";
+})(PropError || (PropError = {}));
+exports.error = {
+    message: (cxt) => {
+        const { params } = cxt;
+        return params.propError
+            ? params.propError === PropError.Additional
+                ? "must NOT have additional properties"
+                : `must have property '${params.missingProperty}'`
+            : error_1.typeErrorMessage(cxt, "object");
+    },
+    params: (cxt) => {
+        const { params } = cxt;
+        return params.propError
+            ? params.propError === PropError.Additional
+                ? codegen_1._ `{error: ${params.propError}, additionalProperty: ${params.additionalProperty}}`
+                : codegen_1._ `{error: ${params.propError}, missingProperty: ${params.missingProperty}}`
+            : error_1.typeErrorParams(cxt, "object");
+    },
+};
 const def = {
     keyword: "properties",
     schemaType: "object",
+    error: exports.error,
     code: validateProperties,
 };
+// const error: KeywordErrorDefinition = {
+//   message: "should NOT have additional properties",
+//   params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,
+// }
 function validateProperties(cxt) {
     metadata_1.checkMetadata(cxt);
     const { gen, data, parentSchema, it } = cxt;
@@ -58,13 +87,13 @@
     function validateProps(props, keyword, required) {
         const _valid = gen.var("valid");
         for (const prop of props) {
-            gen.if(code_1.propertyInData(gen, data, prop, it.opts.ownProperties), () => applyPropertySchema(prop, keyword, _valid), missingProperty);
+            gen.if(code_1.propertyInData(gen, data, prop, it.opts.ownProperties), () => applyPropertySchema(prop, keyword, _valid), () => missingProperty(prop));
             cxt.ok(_valid);
         }
-        function missingProperty() {
+        function missingProperty(prop) {
             if (required) {
                 gen.assign(_valid, false);
-                cxt.error();
+                cxt.error(false, { propError: PropError.Missing, missingProperty: prop }, { schemaPath: prop });
             }
             else {
                 gen.assign(_valid, true);
@@ -89,8 +118,7 @@
                     gen.code(codegen_1._ `delete ${data}[${key}]`);
                 }
                 else {
-                    // cxt.setParams({additionalProperty: key})
-                    cxt.error();
+                    cxt.error(false, { propError: PropError.Additional, additionalProperty: key }, { instancePath: key, parentSchema: true });
                     if (!it.opts.allErrors)
                         gen.break();
                 }
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js.map
index 5d32424..ccfcd5c 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/properties.js.map
@@ -1 +1 @@
-{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/properties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/properties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js
index a3b341a..25c9bf4 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js
@@ -3,7 +3,7 @@
 exports.hasRef = void 0;
 const compile_1 = require("../../compile");
 const codegen_1 = require("../../compile/codegen");
-const error_classes_1 = require("../../compile/error_classes");
+const ref_error_1 = require("../../compile/ref_error");
 const names_1 = require("../../compile/names");
 const ref_1 = require("../core/ref");
 const metadata_1 = require("./metadata");
@@ -28,14 +28,14 @@
             var _a;
             const refSchema = (_a = root.schema.definitions) === null || _a === void 0 ? void 0 : _a[ref];
             if (!refSchema)
-                throw new error_classes_1.MissingRefError("", ref, `No definition ${ref}`);
+                throw new ref_error_1.default("", ref, `No definition ${ref}`);
             if (hasRef(refSchema) || !it.opts.inlineRefs)
                 callValidate(refSchema);
             else
                 inlineRefSchema(refSchema);
         }
         function callValidate(schema) {
-            const sch = compile_1.compileSchema.call(it.self, new compile_1.SchemaEnv({ schema, root }));
+            const sch = compile_1.compileSchema.call(it.self, new compile_1.SchemaEnv({ schema, root, schemaPath: `/definitions/${ref}` }));
             const v = ref_1.getValidate(cxt, sch);
             const errsCount = gen.const("_errs", names_1.default.errors);
             ref_1.callRef(cxt, v, sch, sch.$async);
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js.map
index 9d3ac22..efe2569 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/ref.js.map
@@ -1 +1 @@
-{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/ref.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ref.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/ref.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.d.ts
index a299c11..321f9aa 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.d.ts
@@ -1,7 +1,10 @@
 import type { CodeKeywordDefinition } from "../../types";
+import { _JTDTypeError } from "./error";
+export declare type JTDTypeError = _JTDTypeError<"type", JTDType, JTDType>;
 export declare type IntType = "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32";
 export declare const intRange: {
     [T in IntType]: [number, number, number];
 };
+export declare type JTDType = "boolean" | "string" | "timestamp" | "float32" | "float64" | IntType;
 declare const def: CodeKeywordDefinition;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js
index 96ff3a7..53a76f6 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js
@@ -2,9 +2,10 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.intRange = void 0;
 const codegen_1 = require("../../compile/codegen");
-const timestamp_1 = require("../../compile/timestamp");
+const timestamp_1 = require("../../runtime/timestamp");
 const util_1 = require("../../compile/util");
 const metadata_1 = require("./metadata");
+const error_1 = require("./error");
 exports.intRange = {
     int8: [-128, 127, 3],
     uint8: [0, 255, 3],
@@ -13,12 +14,32 @@
     int32: [-2147483648, 2147483647, 10],
     uint32: [0, 4294967295, 10],
 };
+const error = {
+    message: (cxt) => error_1.typeErrorMessage(cxt, cxt.schema),
+    params: (cxt) => error_1.typeErrorParams(cxt, cxt.schema),
+};
+function timestampCode(cxt) {
+    const { gen, data } = cxt;
+    switch (cxt.it.opts.timestamp) {
+        case "date":
+            return codegen_1._ `${data} instanceof Date `;
+        case "string": {
+            const vts = util_1.useFunc(gen, timestamp_1.default);
+            return codegen_1._ `typeof ${data} == "string" && ${vts}(${data})`;
+        }
+        default: {
+            const vts = util_1.useFunc(gen, timestamp_1.default);
+            return codegen_1._ `${data} instanceof Date || (typeof ${data} == "string" && ${vts}(${data}))`;
+        }
+    }
+}
 const def = {
     keyword: "type",
     schemaType: "string",
+    error,
     code(cxt) {
         metadata_1.checkMetadata(cxt);
-        const { gen, data, schema, parentSchema } = cxt;
+        const { data, schema, parentSchema } = cxt;
         let cond;
         switch (schema) {
             case "boolean":
@@ -26,8 +47,7 @@
                 cond = codegen_1._ `typeof ${data} == ${schema}`;
                 break;
             case "timestamp": {
-                const vts = util_1.func(gen, timestamp_1.default);
-                cond = codegen_1._ `${data} instanceof Date || (typeof ${data} == "string" && ${vts}(${data}))`;
+                cond = timestampCode(cxt);
                 break;
             }
             case "float32":
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js.map
index 7584bc6..9257734 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/type.js.map
@@ -1 +1 @@
-{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/type.ts"],"names":[],"mappings":";;;AAEA,mDAAiD;AACjD,uDAAoD;AACpD,6CAAuC;AACvC,yCAAwC;AAI3B,QAAA,QAAQ,GAA+C;IAClE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;CAC5B,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,GAAG,CAAA;QAC7C,IAAI,IAAU,CAAA;QACd,QAAQ,MAAM,EAAE;YACd,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACX,IAAI,GAAG,WAAC,CAAA,UAAU,IAAI,OAAO,MAAM,EAAE,CAAA;gBACrC,MAAK;YACP,KAAK,WAAW,CAAC,CAAC;gBAChB,MAAM,GAAG,GAAG,WAAI,CAAC,GAAG,EAAE,mBAAc,CAAC,CAAA;gBACrC,IAAI,GAAG,WAAC,CAAA,GAAG,IAAI,+BAA+B,IAAI,mBAAmB,GAAG,IAAI,IAAI,IAAI,CAAA;gBACpF,MAAK;aACN;YACD,KAAK,SAAS,CAAC;YACf,KAAK,SAAS;gBACZ,IAAI,GAAG,WAAC,CAAA,UAAU,IAAI,cAAc,CAAA;gBACpC,MAAK;YACP,OAAO,CAAC,CAAC;gBACP,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,gBAAQ,CAAC,MAAiB,CAAC,CAAA;gBAC9C,IAAI,GAAG,WAAC,CAAA,UAAU,IAAI,4BAA4B,IAAI,QAAQ,IAAI,OAAO,GAAG,OAAO,IAAI,OAAO,GAAG,SAAS,IAAI,OAAO,CAAA;aACtH;SACF;QACD,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAE,CAAC,WAAC,CAAA,GAAG,IAAI,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/type.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js
index e3bc503..01a9439 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js
@@ -6,6 +6,7 @@
     schemaType: "array",
     trackErrors: true,
     code: code_1.validateUnion,
+    error: { message: "must match a schema in union" },
 };
 exports.default = def;
 //# sourceMappingURL=union.js.map
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js.map
index c2da4f3..4d6eb41 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/union.js.map
@@ -1 +1 @@
-{"version":3,"file":"union.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/union.ts"],"names":[],"mappings":";;AACA,kCAAqC;AAErC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,oBAAa;CACpB,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"union.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/union.ts"],"names":[],"mappings":";;AACA,kCAAqC;AAErC,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,oBAAa;IACnB,KAAK,EAAE,EAAC,OAAO,EAAE,8BAA8B,EAAC;CACjD,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.d.ts b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.d.ts
index cde2aa2..1ff367d 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.d.ts
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.d.ts
@@ -1,3 +1,5 @@
-import type { CodeKeywordDefinition } from "../../types";
+import type { CodeKeywordDefinition, SchemaObject } from "../../types";
+import { _JTDTypeError } from "./error";
+export declare type JTDValuesError = _JTDTypeError<"values", "object", SchemaObject>;
 declare const def: CodeKeywordDefinition;
 export default def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js
index 68682ef..4dadc6e 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js
@@ -1,21 +1,26 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-const subschema_1 = require("../../compile/subschema");
 const util_1 = require("../../compile/util");
 const codegen_1 = require("../../compile/codegen");
 const metadata_1 = require("./metadata");
 const nullable_1 = require("./nullable");
+const error_1 = require("./error");
 const def = {
     keyword: "values",
     schemaType: "object",
+    error: error_1.typeError("object"),
     code(cxt) {
         metadata_1.checkMetadata(cxt);
         const { gen, data, schema, it } = cxt;
         if (util_1.alwaysValidSchema(it, schema))
             return;
         const [valid, cond] = nullable_1.checkNullableObject(cxt, data);
-        gen.if(cond, () => gen.assign(valid, validateMap()));
-        cxt.pass(valid);
+        gen.if(cond);
+        gen.assign(valid, validateMap());
+        gen.elseIf(codegen_1.not(valid));
+        cxt.error();
+        gen.endIf();
+        cxt.ok(valid);
         function validateMap() {
             const _valid = gen.name("valid");
             if (it.allErrors) {
@@ -31,7 +36,7 @@
                     cxt.subschema({
                         keyword: "values",
                         dataProp: key,
-                        dataPropType: subschema_1.Type.Str,
+                        dataPropType: util_1.Type.Str,
                     }, _valid);
                     gen.if(codegen_1.not(_valid), notValid);
                 });
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js.map
index dacfe57..4cc93a2 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/values.js.map
@@ -1 +1 @@
-{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/values.ts"],"names":[],"mappings":";;AAEA,uDAA4C;AAC5C,6CAAoD;AACpD,mDAA+C;AAC/C,yCAAwC;AACxC,yCAA8C;AAE9C,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,8BAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACpD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,SAAS,WAAW;YAClB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAChC,IAAI,EAAE,CAAC,SAAS,EAAE;gBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBACvC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;gBACjD,OAAO,QAAQ,CAAA;aAChB;YACD,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACrB,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YACjC,OAAO,MAAM,CAAA;YAEb,SAAS,cAAc,CAAC,QAAoB;gBAC1C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC7B,GAAG,CAAC,SAAS,CACX;wBACE,OAAO,EAAE,QAAQ;wBACjB,QAAQ,EAAE,GAAG;wBACb,YAAY,EAAE,gBAAI,CAAC,GAAG;qBACvB,EACD,MAAM,CACP,CAAA;oBACD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../lib/vocabularies/jtd/values.ts"],"names":[],"mappings":";;AAEA,6CAA0D;AAC1D,mDAA+C;AAC/C,yCAAwC;AACxC,yCAA8C;AAC9C,mCAAgD;AAIhD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,iBAAS,CAAC,QAAQ,CAAC;IAC1B,IAAI,CAAC,GAAe;QAClB,wBAAa,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,IAAI,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;YAAE,OAAM;QACzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,8BAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACpD,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACZ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;QAChC,GAAG,CAAC,MAAM,CAAC,aAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACtB,GAAG,CAAC,KAAK,EAAE,CAAA;QACX,GAAG,CAAC,KAAK,EAAE,CAAA;QACX,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAEb,SAAS,WAAW;YAClB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAChC,IAAI,EAAE,CAAC,SAAS,EAAE;gBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBACvC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;gBACjD,OAAO,QAAQ,CAAA;aAChB;YACD,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACrB,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YACjC,OAAO,MAAM,CAAA;YAEb,SAAS,cAAc,CAAC,QAAoB;gBAC1C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC7B,GAAG,CAAC,SAAS,CACX;wBACE,OAAO,EAAE,QAAQ;wBACjB,QAAQ,EAAE,GAAG;wBACb,YAAY,EAAE,WAAI,CAAC,GAAG;qBACvB,EACD,MAAM,CACP,CAAA;oBACD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js
index 6ae7476..f270a27 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js
@@ -1,10 +1,9 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
-const subschema_1 = require("../../compile/subschema");
 const util_1 = require("../../compile/util");
 const error = {
-    message: ({ params: { len } }) => codegen_1.str `should NOT have more than ${len} items`,
+    message: ({ params: { len } }) => codegen_1.str `must NOT have more than ${len} items`,
     params: ({ params: { len } }) => codegen_1._ `{limit: ${len}}`,
 };
 const def = {
@@ -30,7 +29,7 @@
         it.items = true;
         function validateItems(valid, from) {
             gen.forRange("i", from, len, (i) => {
-                cxt.subschema({ keyword: "unevaluatedItems", dataProp: i, dataPropType: subschema_1.Type.Num }, valid);
+                cxt.subschema({ keyword: "unevaluatedItems", dataProp: i, dataPropType: util_1.Type.Num }, valid);
                 if (!it.allErrors)
                     gen.if(codegen_1.not(valid), () => gen.break());
             });
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map
index b37ab55..d520762 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map
@@ -1 +1 @@
-{"version":3,"file":"unevaluatedItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/unevaluated/unevaluatedItems.ts"],"names":[],"mappings":";;AAOA,mDAAuD;AACvD,uDAA4C;AAC5C,6CAAoD;AAIpD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,6BAA6B,GAAG,QAAQ;IACzE,MAAM,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,GAAG,GAAG;CAChD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;QAC3B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAM;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;QAC/C,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,GAAG,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAA;YAC3B,GAAG,CAAC,IAAI,CAAC,WAAC,CAAA,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,CAAA;SAC/B;aAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACtE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,WAAC,CAAA,GAAG,GAAG,OAAO,KAAK,EAAE,CAAC,CAAA;YACrD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;YACrD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;SACd;QACD,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;QAEf,SAAS,aAAa,CAAC,KAAW,EAAE,IAAmB;YACrD,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;gBACjC,GAAG,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,gBAAI,CAAC,GAAG,EAAC,EAAE,KAAK,CAAC,CAAA;gBACxF,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YAC1D,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"unevaluatedItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/unevaluated/unevaluatedItems.ts"],"names":[],"mappings":";;AAOA,mDAAuD;AACvD,6CAA0D;AAI1D,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,2BAA2B,GAAG,QAAQ;IACvE,MAAM,EAAE,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,GAAG,GAAG;CAChD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACnC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;QAC3B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAM;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAA;QAC/C,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,GAAG,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAA;YAC3B,GAAG,CAAC,IAAI,CAAC,WAAC,CAAA,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,CAAA;SAC/B;aAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,wBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACtE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,WAAC,CAAA,GAAG,GAAG,OAAO,KAAK,EAAE,CAAC,CAAA;YACrD,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;YACrD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;SACd;QACD,EAAE,CAAC,KAAK,GAAG,IAAI,CAAA;QAEf,SAAS,aAAa,CAAC,KAAW,EAAE,IAAmB;YACrD,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;gBACjC,GAAG,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,WAAI,CAAC,GAAG,EAAC,EAAE,KAAK,CAAC,CAAA;gBACxF,IAAI,CAAC,EAAE,CAAC,SAAS;oBAAE,GAAG,CAAC,EAAE,CAAC,aAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YAC1D,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js
index 6ab14c0..7552ee1 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js
@@ -3,9 +3,8 @@
 const codegen_1 = require("../../compile/codegen");
 const util_1 = require("../../compile/util");
 const names_1 = require("../../compile/names");
-const subschema_1 = require("../../compile/subschema");
 const error = {
-    message: "should NOT have unevaluated properties",
+    message: "must NOT have unevaluated properties",
     params: ({ params }) => codegen_1._ `{unevaluatedProperty: ${params.unevaluatedProperty}}`,
 };
 const def = {
@@ -43,7 +42,7 @@
                 cxt.subschema({
                     keyword: "unevaluatedProperties",
                     dataProp: key,
-                    dataPropType: subschema_1.Type.Str,
+                    dataPropType: util_1.Type.Str,
                 }, valid);
                 if (!allErrors)
                     gen.if(codegen_1.not(valid), () => gen.break());
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map
index 28ed0d8..952933a 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map
@@ -1 +1 @@
-{"version":3,"file":"unevaluatedProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/unevaluated/unevaluatedProperties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"unevaluatedProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/unevaluated/unevaluatedProperties.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js
index 24ac5a4..1b4c595 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js
@@ -1,9 +1,10 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
-const equal = require("fast-deep-equal");
+const util_1 = require("../../compile/util");
+const equal_1 = require("../../runtime/equal");
 const error = {
-    message: "should be equal to constant",
+    message: "must be equal to constant",
     params: ({ schemaCode }) => codegen_1._ `{allowedValue: ${schemaCode}}`,
 };
 const def = {
@@ -11,12 +12,9 @@
     $data: true,
     error,
     code(cxt) {
-        const eql = cxt.gen.scopeValue("func", {
-            ref: equal,
-            code: codegen_1._ `require("ajv/dist/compile/equal")`,
-        });
+        const { gen, data, schemaCode } = cxt;
         // TODO optimize for scalar values in schema
-        cxt.fail$data(codegen_1._ `!${eql}(${cxt.data}, ${cxt.schemaCode})`);
+        cxt.fail$data(codegen_1._ `!${util_1.useFunc(gen, equal_1.default)}(${data}, ${schemaCode})`);
     },
 };
 exports.default = def;
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js.map
index b582b5d..526ae1f 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/const.js.map
@@ -1 +1 @@
-{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/const.ts"],"names":[],"mappings":";;AAEA,mDAAuC;AACvC,yCAAwC;AAIxC,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,6BAA6B;IACtC,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,kBAAkB,UAAU,GAAG;CAC3D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;YACrC,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,WAAC,CAAA,mCAAmC;SAC3C,CAAC,CAAA;QACF,4CAA4C;QAC5C,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAA;IAC3D,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/const.ts"],"names":[],"mappings":";;AAEA,mDAAuC;AACvC,6CAA0C;AAC1C,+CAAuC;AAIvC,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,2BAA2B;IACpC,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,kBAAkB,UAAU,GAAG;CAC3D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACnC,4CAA4C;QAC5C,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,IAAI,cAAO,CAAC,GAAG,EAAE,eAAK,CAAC,IAAI,IAAI,KAAK,UAAU,GAAG,CAAC,CAAA;IACnE,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js
index ffc7f84..bc76efe 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js
@@ -1,9 +1,10 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
-const equal = require("fast-deep-equal");
+const util_1 = require("../../compile/util");
+const equal_1 = require("../../runtime/equal");
 const error = {
-    message: "should be equal to one of the allowed values",
+    message: "must be equal to one of the allowed values",
     params: ({ schemaCode }) => codegen_1._ `{allowedValues: ${schemaCode}}`,
 };
 const def = {
@@ -16,10 +17,7 @@
         if (!$data && schema.length === 0)
             throw new Error("enum must have non-empty array");
         const useLoop = schema.length >= it.opts.loopEnum;
-        const eql = cxt.gen.scopeValue("func", {
-            ref: equal,
-            code: codegen_1._ `require("ajv/dist/compile/equal")`,
-        });
+        const eql = util_1.useFunc(gen, equal_1.default);
         let valid;
         if (useLoop || $data) {
             valid = gen.let("valid");
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js.map
index 0cc3659..7eb0409 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/enum.js.map
@@ -1 +1 @@
-{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/enum.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AACvD,yCAAwC;AAIxC,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,8CAA8C;IACvD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,mBAAmB,UAAU,GAAG;CAC5D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACtD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACpF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAA;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;YACrC,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,WAAC,CAAA,mCAAmC;SAC3C,CAAC,CAAA;QACF,IAAI,KAAW,CAAA;QACf,IAAI,OAAO,IAAI,KAAK,EAAE;YACpB,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;SAChC;aAAM;YACL,wBAAwB;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACvE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YAChD,KAAK,GAAG,YAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAW,EAAE,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;SAC7E;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,SAAS,QAAQ;YACf,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACxB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CACvC,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CACxE,CAAA;QACH,CAAC;QAED,SAAS,SAAS,CAAC,OAAa,EAAE,CAAS;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACrB,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBACnC,CAAC,CAAC,WAAC,CAAA,GAAG,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI;gBACtC,CAAC,CAAC,WAAC,CAAA,GAAG,IAAI,QAAQ,GAAG,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/enum.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AACvD,6CAA0C;AAC1C,+CAAuC;AAIvC,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,mBAAmB,UAAU,GAAG;CAC5D,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACtD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACpF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAA;QACjD,MAAM,GAAG,GAAG,cAAO,CAAC,GAAG,EAAE,eAAK,CAAC,CAAA;QAC/B,IAAI,KAAW,CAAA;QACf,IAAI,OAAO,IAAI,KAAK,EAAE;YACpB,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;SAChC;aAAM;YACL,wBAAwB;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACvE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YAChD,KAAK,GAAG,YAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAW,EAAE,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;SAC7E;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,SAAS,QAAQ;YACf,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACxB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CACvC,GAAG,CAAC,EAAE,CAAC,WAAC,CAAA,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CACxE,CAAA;QACH,CAAC;QAED,SAAS,SAAS,CAAC,OAAa,EAAE,CAAS;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACrB,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBACnC,CAAC,CAAC,WAAC,CAAA,GAAG,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI;gBACtC,CAAC,CAAC,WAAC,CAAA,GAAG,IAAI,QAAQ,GAAG,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js
index 155654b..f576c5c 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js
@@ -1,13 +1,13 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-const validate_1 = require("../../compile/validate");
+const util_1 = require("../../compile/util");
 const def = {
     keyword: ["maxContains", "minContains"],
     type: "array",
     schemaType: "number",
     code({ keyword, parentSchema, it }) {
         if (parentSchema.contains === undefined) {
-            validate_1.checkStrictMode(it, `"${keyword}" without "contains" is ignored`);
+            util_1.checkStrictMode(it, `"${keyword}" without "contains" is ignored`);
         }
     },
 };
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map
index a977f5f..832fc36 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map
@@ -1 +1 @@
-{"version":3,"file":"limitContains.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitContains.ts"],"names":[],"mappings":";;AAEA,qDAAsD;AAEtD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAa;QAC1C,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE;YACvC,0BAAe,CAAC,EAAE,EAAE,IAAI,OAAO,iCAAiC,CAAC,CAAA;SAClE;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"limitContains.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitContains.ts"],"names":[],"mappings":";;AAEA,6CAAkD;AAElD,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAa;QAC1C,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE;YACvC,sBAAe,CAAC,EAAE,EAAE,IAAI,OAAO,iCAAiC,CAAC,CAAA;SAClE;IACH,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js
index fbcf8f8..d901c86 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js
@@ -4,7 +4,7 @@
 const error = {
     message({ keyword, schemaCode }) {
         const comp = keyword === "maxItems" ? "more" : "fewer";
-        return codegen_1.str `should NOT have ${comp} than ${schemaCode} items`;
+        return codegen_1.str `must NOT have ${comp} than ${schemaCode} items`;
     },
     params: ({ schemaCode }) => codegen_1._ `{limit: ${schemaCode}}`,
 };
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map
index 3cd6c93..f4c0c7d 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map
@@ -1 +1 @@
-{"version":3,"file":"limitItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitItems.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AAEvD,MAAM,KAAK,GAA2B;IACpC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QACtD,OAAO,aAAG,CAAA,mBAAmB,IAAI,SAAS,UAAU,QAAQ,CAAA;IAC9D,CAAC;IACD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,UAAU,GAAG;CACpD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACvC,MAAM,EAAE,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAA;QAC/D,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,GAAG,IAAI,WAAW,EAAE,IAAI,UAAU,EAAE,CAAC,CAAA;IACtD,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"limitItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitItems.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AAEvD,MAAM,KAAK,GAA2B;IACpC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QACtD,OAAO,aAAG,CAAA,iBAAiB,IAAI,SAAS,UAAU,QAAQ,CAAA;IAC5D,CAAC;IACD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,UAAU,GAAG;CACpD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACvC,MAAM,EAAE,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAA;QAC/D,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,GAAG,IAAI,WAAW,EAAE,IAAI,UAAU,EAAE,CAAC,CAAA;IACtD,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js
index 8102ddb..51daaa5 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js
@@ -1,11 +1,12 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
-const ucs2length_1 = require("../../compile/ucs2length");
+const util_1 = require("../../compile/util");
+const ucs2length_1 = require("../../runtime/ucs2length");
 const error = {
     message({ keyword, schemaCode }) {
         const comp = keyword === "maxLength" ? "more" : "fewer";
-        return codegen_1.str `should NOT have ${comp} than ${schemaCode} characters`;
+        return codegen_1.str `must NOT have ${comp} than ${schemaCode} characters`;
     },
     params: ({ schemaCode }) => codegen_1._ `{limit: ${schemaCode}}`,
 };
@@ -18,17 +19,7 @@
     code(cxt) {
         const { keyword, data, schemaCode, it } = cxt;
         const op = keyword === "maxLength" ? codegen_1.operators.GT : codegen_1.operators.LT;
-        let len;
-        if (it.opts.unicode === false) {
-            len = codegen_1._ `${data}.length`;
-        }
-        else {
-            const u2l = cxt.gen.scopeValue("func", {
-                ref: ucs2length_1.default,
-                code: codegen_1._ `require("ajv/dist/compile/ucs2length").default`,
-            });
-            len = codegen_1._ `${u2l}(${data})`;
-        }
+        const len = it.opts.unicode === false ? codegen_1._ `${data}.length` : codegen_1._ `${util_1.useFunc(cxt.gen, ucs2length_1.default)}(${data})`;
         cxt.fail$data(codegen_1._ `${len} ${op} ${schemaCode}`);
     },
 };
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map
index d34881c..103af29 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map
@@ -1 +1 @@
-{"version":3,"file":"limitLength.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitLength.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AACvD,yDAAiD;AAEjD,MAAM,KAAK,GAA2B;IACpC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QACvD,OAAO,aAAG,CAAA,mBAAmB,IAAI,SAAS,UAAU,aAAa,CAAA;IACnE,CAAC;IACD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,UAAU,GAAG;CACpD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC3C,MAAM,EAAE,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAA;QAChE,IAAI,GAAG,CAAA;QACP,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC7B,GAAG,GAAG,WAAC,CAAA,GAAG,IAAI,SAAS,CAAA;SACxB;aAAM;YACL,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;gBACrC,GAAG,EAAE,oBAAU;gBACf,IAAI,EAAE,WAAC,CAAA,gDAAgD;aACxD,CAAC,CAAA;YACF,GAAG,GAAG,WAAC,CAAA,GAAG,GAAG,IAAI,IAAI,GAAG,CAAA;SACzB;QACD,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,GAAG,GAAG,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC,CAAA;IAC9C,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"limitLength.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitLength.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AACvD,6CAA0C;AAC1C,yDAAiD;AAEjD,MAAM,KAAK,GAA2B;IACpC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QACvD,OAAO,aAAG,CAAA,iBAAiB,IAAI,SAAS,UAAU,aAAa,CAAA;IACjE,CAAC;IACD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,UAAU,GAAG;CACpD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QAC3C,MAAM,EAAE,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAA;QAChE,MAAM,GAAG,GACP,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,WAAC,CAAA,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,WAAC,CAAA,GAAG,cAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAU,CAAC,IAAI,IAAI,GAAG,CAAA;QAC7F,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,GAAG,GAAG,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC,CAAA;IAC9C,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js
index a86bfef..504cf25 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js
@@ -9,7 +9,7 @@
     exclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE },
 };
 const error = {
-    message: ({ keyword, schemaCode }) => codegen_1.str `should be ${KWDs[keyword].okStr} ${schemaCode}`,
+    message: ({ keyword, schemaCode }) => codegen_1.str `must be ${KWDs[keyword].okStr} ${schemaCode}`,
     params: ({ keyword, schemaCode }) => codegen_1._ `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,
 };
 const def = {
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map
index 1c7064c..b624b22 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map
@@ -1 +1 @@
-{"version":3,"file":"limitNumber.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitNumber.ts"],"names":[],"mappings":";;AAEA,mDAA6D;AAE7D,MAAM,GAAG,GAAG,mBAAS,CAAA;AAMrB,MAAM,IAAI,GAA4D;IACpE,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAC;IACjD,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAC;IACjD,gBAAgB,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAC;IACzD,gBAAgB,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAC;CAC1D,CAAA;AAQD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,aAAa,IAAI,CAAC,OAAc,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE;IAC9F,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE,EAAE,CAChC,WAAC,CAAA,gBAAgB,IAAI,CAAC,OAAc,CAAC,CAAC,KAAK,YAAY,UAAU,GAAG;CACvE,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACvC,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,GAAG,IAAI,IAAI,IAAI,CAAC,OAAc,CAAC,CAAC,IAAI,IAAI,UAAU,aAAa,IAAI,GAAG,CAAC,CAAA;IACxF,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"limitNumber.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitNumber.ts"],"names":[],"mappings":";;AAEA,mDAA6D;AAE7D,MAAM,GAAG,GAAG,mBAAS,CAAA;AAMrB,MAAM,IAAI,GAA4D;IACpE,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAC;IACjD,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAC;IACjD,gBAAgB,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAC;IACzD,gBAAgB,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAC;CAC1D,CAAA;AAQD,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,WAAW,IAAI,CAAC,OAAc,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE;IAC5F,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE,EAAE,CAChC,WAAC,CAAA,gBAAgB,IAAI,CAAC,OAAc,CAAC,CAAC,KAAK,YAAY,UAAU,GAAG;CACvE,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACvC,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,GAAG,IAAI,IAAI,IAAI,CAAC,OAAc,CAAC,CAAC,IAAI,IAAI,UAAU,aAAa,IAAI,GAAG,CAAC,CAAA;IACxF,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js
index 19a558e..743b117 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js
@@ -4,7 +4,7 @@
 const error = {
     message({ keyword, schemaCode }) {
         const comp = keyword === "maxProperties" ? "more" : "fewer";
-        return codegen_1.str `should NOT have ${comp} than ${schemaCode} items`;
+        return codegen_1.str `must NOT have ${comp} than ${schemaCode} items`;
     },
     params: ({ schemaCode }) => codegen_1._ `{limit: ${schemaCode}}`,
 };
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map
index 21f262d..56db844 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map
@@ -1 +1 @@
-{"version":3,"file":"limitProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitProperties.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AAEvD,MAAM,KAAK,GAA2B;IACpC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3D,OAAO,aAAG,CAAA,mBAAmB,IAAI,SAAS,UAAU,QAAQ,CAAA;IAC9D,CAAC;IACD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,UAAU,GAAG;CACpD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACvC,MAAM,EAAE,GAAG,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAA;QACpE,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,eAAe,IAAI,YAAY,EAAE,IAAI,UAAU,EAAE,CAAC,CAAA;IACnE,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"limitProperties.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/limitProperties.ts"],"names":[],"mappings":";;AAEA,mDAAuD;AAEvD,MAAM,KAAK,GAA2B;IACpC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3D,OAAO,aAAG,CAAA,iBAAiB,IAAI,SAAS,UAAU,QAAQ,CAAA;IAC5D,CAAC;IACD,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,WAAW,UAAU,GAAG;CACpD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QACvC,MAAM,EAAE,GAAG,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAS,CAAC,EAAE,CAAA;QACpE,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,eAAe,IAAI,YAAY,EAAE,IAAI,UAAU,EAAE,CAAC,CAAA;IACnE,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js
index 6c6fd44..8626ae0 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js
@@ -2,7 +2,7 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const codegen_1 = require("../../compile/codegen");
 const error = {
-    message: ({ schemaCode }) => codegen_1.str `should be multiple of ${schemaCode}`,
+    message: ({ schemaCode }) => codegen_1.str `must be multiple of ${schemaCode}`,
     params: ({ schemaCode }) => codegen_1._ `{multipleOf: ${schemaCode}}`,
 };
 const def = {
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map
index 89a3e62..ca52055 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map
@@ -1 +1 @@
-{"version":3,"file":"multipleOf.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/multipleOf.ts"],"names":[],"mappings":";;AAEA,mDAA4C;AAQ5C,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,yBAAyB,UAAU,EAAE;IACnE,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,gBAAgB,UAAU,GAAG;CACzD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACvC,sEAAsE;QACtE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAA;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI;YAClB,CAAC,CAAC,WAAC,CAAA,uBAAuB,GAAG,OAAO,GAAG,UAAU,IAAI,EAAE;YACvD,CAAC,CAAC,WAAC,CAAA,GAAG,GAAG,iBAAiB,GAAG,GAAG,CAAA;QAClC,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,IAAI,UAAU,cAAc,GAAG,MAAM,IAAI,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,CAAA;IACzF,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"multipleOf.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/multipleOf.ts"],"names":[],"mappings":";;AAEA,mDAA4C;AAQ5C,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,uBAAuB,UAAU,EAAE;IACjE,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,gBAAgB,UAAU,GAAG;CACzD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACvC,sEAAsE;QACtE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAA;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI;YAClB,CAAC,CAAC,WAAC,CAAA,uBAAuB,GAAG,OAAO,GAAG,UAAU,IAAI,EAAE;YACvD,CAAC,CAAC,WAAC,CAAA,GAAG,GAAG,iBAAiB,GAAG,GAAG,CAAA;QAClC,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,IAAI,UAAU,cAAc,GAAG,MAAM,IAAI,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,CAAA;IACzF,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js
index d17780d..b0862db 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js
@@ -3,7 +3,7 @@
 const code_1 = require("../code");
 const codegen_1 = require("../../compile/codegen");
 const error = {
-    message: ({ schemaCode }) => codegen_1.str `should match pattern "${schemaCode}"`,
+    message: ({ schemaCode }) => codegen_1.str `must match pattern "${schemaCode}"`,
     params: ({ schemaCode }) => codegen_1._ `{pattern: ${schemaCode}}`,
 };
 const def = {
@@ -13,8 +13,10 @@
     $data: true,
     error,
     code(cxt) {
-        const { gen, data, $data, schema, schemaCode } = cxt;
-        const regExp = $data ? codegen_1._ `(new RegExp(${schemaCode}, "u"))` : code_1.usePattern(gen, schema); // TODO regexp should be wrapped in try/catch
+        const { data, $data, schema, schemaCode, it } = cxt;
+        // TODO regexp should be wrapped in try/catchs
+        const u = it.opts.unicodeRegExp ? "u" : "";
+        const regExp = $data ? codegen_1._ `(new RegExp(${schemaCode}, ${u}))` : code_1.usePattern(cxt, schema);
         cxt.fail$data(codegen_1._ `!${regExp}.test(${data})`);
     },
 };
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js.map
index 2a33ae2..9023012 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/pattern.js.map
@@ -1 +1 @@
-{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/pattern.ts"],"names":[],"mappings":";;AAEA,kCAAkC;AAClC,mDAA4C;AAI5C,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,yBAAyB,UAAU,GAAG;IACpE,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,aAAa,UAAU,GAAG;CACtD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,WAAC,CAAA,eAAe,UAAU,SAAS,CAAC,CAAC,CAAC,iBAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,6CAA6C;QAClI,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,IAAI,MAAM,SAAS,IAAI,GAAG,CAAC,CAAA;IAC5C,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
+{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/pattern.ts"],"names":[],"mappings":";;AAEA,kCAAkC;AAClC,mDAA4C;AAI5C,MAAM,KAAK,GAA2B;IACpC,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,aAAG,CAAA,uBAAuB,UAAU,GAAG;IAClE,MAAM,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,WAAC,CAAA,aAAa,UAAU,GAAG;CACtD,CAAA;AAED,MAAM,GAAG,GAA0B;IACjC,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,IAAI;IACX,KAAK;IACL,IAAI,CAAC,GAAe;QAClB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAC,GAAG,GAAG,CAAA;QACjD,8CAA8C;QAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,WAAC,CAAA,eAAe,UAAU,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACrF,GAAG,CAAC,SAAS,CAAC,WAAC,CAAA,IAAI,MAAM,SAAS,IAAI,GAAG,CAAC,CAAA;IAC5C,CAAC;CACF,CAAA;AAED,kBAAe,GAAG,CAAA"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js
index 687783f..723c22e 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js
@@ -2,9 +2,9 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const code_1 = require("../code");
 const codegen_1 = require("../../compile/codegen");
-const validate_1 = require("../../compile/validate");
+const util_1 = require("../../compile/util");
 const error = {
-    message: ({ params: { missingProperty } }) => codegen_1.str `should have required property '${missingProperty}'`,
+    message: ({ params: { missingProperty } }) => codegen_1.str `must have required property '${missingProperty}'`,
     params: ({ params: { missingProperty } }) => codegen_1._ `{missingProperty: ${missingProperty}}`,
 };
 const def = {
@@ -30,7 +30,7 @@
                 if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) {
                     const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;
                     const msg = `required property "${requiredKey}" is not defined at "${schemaPath}" (strictRequired)`;
-                    validate_1.checkStrictMode(it, msg, it.opts.strictRequired);
+                    util_1.checkStrictMode(it, msg, it.opts.strictRequired);
                 }
             }
         }
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js.map
index 3922a2e..fb05dbb 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/required.js.map
@@ -1 +1 @@
-{"version":3,"file":"required.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/required.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"required.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/required.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
index 68d31a1..aa4abb9 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
@@ -2,9 +2,10 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 const dataType_1 = require("../../compile/validate/dataType");
 const codegen_1 = require("../../compile/codegen");
-const equal = require("fast-deep-equal");
+const util_1 = require("../../compile/util");
+const equal_1 = require("../../runtime/equal");
 const error = {
-    message: ({ params: { i, j } }) => codegen_1.str `should NOT have duplicate items (items ## ${j} and ${i} are identical)`,
+    message: ({ params: { i, j } }) => codegen_1.str `must NOT have duplicate items (items ## ${j} and ${i} are identical)`,
     params: ({ params: { i, j } }) => codegen_1._ `{i: ${i}, j: ${j}}`,
 };
 const def = {
@@ -33,7 +34,7 @@
         }
         function loopN(i, j) {
             const item = gen.name("item");
-            const wrongType = dataType_1.checkDataTypes(itemTypes, item, it.opts.strict, dataType_1.DataType.Wrong);
+            const wrongType = dataType_1.checkDataTypes(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);
             const indices = gen.const("indices", codegen_1._ `{}`);
             gen.for(codegen_1._ `;${i}--;`, () => {
                 gen.let(item, codegen_1._ `${data}[${i}]`);
@@ -50,10 +51,7 @@
             });
         }
         function loopN2(i, j) {
-            const eql = cxt.gen.scopeValue("func", {
-                ref: equal,
-                code: codegen_1._ `require("ajv/dist/compile/equal")`,
-            });
+            const eql = util_1.useFunc(gen, equal_1.default);
             const outer = gen.name("outer");
             gen.label(outer).for(codegen_1._ `;${i}--;`, () => gen.for(codegen_1._ `${j} = ${i}; ${j}--;`, () => gen.if(codegen_1._ `${eql}(${data}[${i}], ${data}[${j}])`, () => {
                 cxt.error();
diff --git a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map
index e9adad4..66d2071 100644
--- a/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map
+++ b/node_modules/table/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map
@@ -1 +1 @@
-{"version":3,"file":"uniqueItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/uniqueItems.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"uniqueItems.js","sourceRoot":"","sources":["../../../lib/vocabularies/validation/uniqueItems.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/table/node_modules/ajv/lib/2019.ts b/node_modules/table/node_modules/ajv/lib/2019.ts
index bb33c51..0311c4d 100644
--- a/node_modules/table/node_modules/ajv/lib/2019.ts
+++ b/node_modules/table/node_modules/ajv/lib/2019.ts
@@ -1,3 +1,53 @@
+import type {AnySchemaObject} from "./types"
+import AjvCore, {Options} from "./core"
+
+import draft7Vocabularies from "./vocabularies/draft7"
+import dynamicVocabulary from "./vocabularies/dynamic"
+import nextVocabulary from "./vocabularies/next"
+import unevaluatedVocabulary from "./vocabularies/unevaluated"
+import discriminator from "./vocabularies/discriminator"
+import addMetaSchema2019 from "./refs/json-schema-2019-09"
+
+const META_SCHEMA_ID = "https://json-schema.org/draft/2019-09/schema"
+
+class Ajv2019 extends AjvCore {
+  constructor(opts: Options = {}) {
+    super({
+      ...opts,
+      dynamicRef: true,
+      next: true,
+      unevaluated: true,
+    })
+  }
+
+  _addVocabularies(): void {
+    super._addVocabularies()
+    this.addVocabulary(dynamicVocabulary)
+    draft7Vocabularies.forEach((v) => this.addVocabulary(v))
+    this.addVocabulary(nextVocabulary)
+    this.addVocabulary(unevaluatedVocabulary)
+    if (this.opts.discriminator) this.addKeyword(discriminator)
+  }
+
+  _addDefaultMetaSchema(): void {
+    super._addDefaultMetaSchema()
+    const {$data, meta} = this.opts
+    if (!meta) return
+    addMetaSchema2019.call(this, $data)
+    this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID
+  }
+
+  defaultMeta(): string | AnySchemaObject | undefined {
+    return (this.opts.defaultMeta =
+      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
+  }
+}
+
+module.exports = exports = Ajv2019
+Object.defineProperty(exports, "__esModule", {value: true})
+
+export default Ajv2019
+
 export {
   Format,
   FormatDefinition,
@@ -21,52 +71,8 @@
 
 export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
 export {SchemaCxt, SchemaObjCxt} from "./compile"
-import KeywordCxt from "./compile/context"
-export {KeywordCxt}
+export {KeywordCxt} from "./compile/validate"
 export {DefinedError} from "./vocabularies/errors"
 export {JSONType} from "./compile/rules"
 export {JSONSchemaType} from "./types/json-schema"
 export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
-
-import type {AnySchemaObject} from "./types"
-import AjvCore, {Options} from "./core"
-
-import draft7Vocabularies from "./vocabularies/draft7"
-import dynamicVocabulary from "./vocabularies/dynamic"
-import nextVocabulary from "./vocabularies/next"
-import unevaluatedVocabulary from "./vocabularies/unevaluated"
-import addMetaSchema2019 from "./refs/json-schema-2019-09"
-
-const META_SCHEMA_ID = "https://json-schema.org/draft/2019-09/schema"
-
-export default class Ajv2019 extends AjvCore {
-  constructor(opts: Options = {}) {
-    super({
-      ...opts,
-      dynamicRef: true,
-      next: true,
-      unevaluated: true,
-    })
-  }
-
-  _addVocabularies(): void {
-    super._addVocabularies()
-    this.addVocabulary(dynamicVocabulary)
-    draft7Vocabularies.forEach((v) => this.addVocabulary(v))
-    this.addVocabulary(nextVocabulary)
-    this.addVocabulary(unevaluatedVocabulary)
-  }
-
-  _addDefaultMetaSchema(): void {
-    super._addDefaultMetaSchema()
-    const {$data, meta} = this.opts
-    if (!meta) return
-    addMetaSchema2019.call(this, $data)
-    this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID
-  }
-
-  defaultMeta(): string | AnySchemaObject | undefined {
-    return (this.opts.defaultMeta =
-      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
-  }
-}
diff --git a/node_modules/table/node_modules/ajv/lib/2020.ts b/node_modules/table/node_modules/ajv/lib/2020.ts
new file mode 100644
index 0000000..beff5c7
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/2020.ts
@@ -0,0 +1,72 @@
+import type {AnySchemaObject} from "./types"
+import AjvCore, {Options} from "./core"
+
+import draft2020Vocabularies from "./vocabularies/draft2020"
+import discriminator from "./vocabularies/discriminator"
+import addMetaSchema2020 from "./refs/json-schema-2020-12"
+
+const META_SCHEMA_ID = "https://json-schema.org/draft/2020-12/schema"
+
+class Ajv2020 extends AjvCore {
+  constructor(opts: Options = {}) {
+    super({
+      ...opts,
+      dynamicRef: true,
+      next: true,
+      unevaluated: true,
+    })
+  }
+
+  _addVocabularies(): void {
+    super._addVocabularies()
+    draft2020Vocabularies.forEach((v) => this.addVocabulary(v))
+    if (this.opts.discriminator) this.addKeyword(discriminator)
+  }
+
+  _addDefaultMetaSchema(): void {
+    super._addDefaultMetaSchema()
+    const {$data, meta} = this.opts
+    if (!meta) return
+    addMetaSchema2020.call(this, $data)
+    this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID
+  }
+
+  defaultMeta(): string | AnySchemaObject | undefined {
+    return (this.opts.defaultMeta =
+      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
+  }
+}
+
+module.exports = exports = Ajv2020
+Object.defineProperty(exports, "__esModule", {value: true})
+
+export default Ajv2020
+
+export {
+  Format,
+  FormatDefinition,
+  AsyncFormatDefinition,
+  KeywordDefinition,
+  KeywordErrorDefinition,
+  CodeKeywordDefinition,
+  MacroKeywordDefinition,
+  FuncKeywordDefinition,
+  Vocabulary,
+  Schema,
+  SchemaObject,
+  AnySchemaObject,
+  AsyncSchema,
+  AnySchema,
+  ValidateFunction,
+  AsyncValidateFunction,
+  ErrorObject,
+  ErrorNoParams,
+} from "./types"
+
+export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
+export {SchemaCxt, SchemaObjCxt} from "./compile"
+export {KeywordCxt} from "./compile/validate"
+export {DefinedError} from "./vocabularies/errors"
+export {JSONType} from "./compile/rules"
+export {JSONSchemaType} from "./types/json-schema"
+export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
diff --git a/node_modules/table/node_modules/ajv/lib/ajv.ts b/node_modules/table/node_modules/ajv/lib/ajv.ts
index b821d15..bbfa5a4 100644
--- a/node_modules/table/node_modules/ajv/lib/ajv.ts
+++ b/node_modules/table/node_modules/ajv/lib/ajv.ts
@@ -1,3 +1,41 @@
+import type {AnySchemaObject} from "./types"
+import AjvCore from "./core"
+import draft7Vocabularies from "./vocabularies/draft7"
+import discriminator from "./vocabularies/discriminator"
+import * as draft7MetaSchema from "./refs/json-schema-draft-07.json"
+
+const META_SUPPORT_DATA = ["/properties"]
+
+const META_SCHEMA_ID = "http://json-schema.org/draft-07/schema"
+
+class Ajv extends AjvCore {
+  _addVocabularies(): void {
+    super._addVocabularies()
+    draft7Vocabularies.forEach((v) => this.addVocabulary(v))
+    if (this.opts.discriminator) this.addKeyword(discriminator)
+  }
+
+  _addDefaultMetaSchema(): void {
+    super._addDefaultMetaSchema()
+    if (!this.opts.meta) return
+    const metaSchema = this.opts.$data
+      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)
+      : draft7MetaSchema
+    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)
+    this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID
+  }
+
+  defaultMeta(): string | AnySchemaObject | undefined {
+    return (this.opts.defaultMeta =
+      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
+  }
+}
+
+module.exports = exports = Ajv
+Object.defineProperty(exports, "__esModule", {value: true})
+
+export default Ajv
+
 export {
   Format,
   FormatDefinition,
@@ -22,40 +60,8 @@
 
 export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
 export {SchemaCxt, SchemaObjCxt} from "./compile"
-import KeywordCxt from "./compile/context"
-export {KeywordCxt}
+export {KeywordCxt} from "./compile/validate"
 export {DefinedError} from "./vocabularies/errors"
 export {JSONType} from "./compile/rules"
 export {JSONSchemaType} from "./types/json-schema"
 export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
-
-import type {AnySchemaObject} from "./types"
-import AjvCore from "./core"
-import draft7Vocabularies from "./vocabularies/draft7"
-import * as draft7MetaSchema from "./refs/json-schema-draft-07.json"
-
-const META_SUPPORT_DATA = ["/properties"]
-
-const META_SCHEMA_ID = "http://json-schema.org/draft-07/schema"
-
-export default class Ajv extends AjvCore {
-  _addVocabularies(): void {
-    super._addVocabularies()
-    draft7Vocabularies.forEach((v) => this.addVocabulary(v))
-  }
-
-  _addDefaultMetaSchema(): void {
-    super._addDefaultMetaSchema()
-    if (!this.opts.meta) return
-    const metaSchema = this.opts.$data
-      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)
-      : draft7MetaSchema
-    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)
-    this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID
-  }
-
-  defaultMeta(): string | AnySchemaObject | undefined {
-    return (this.opts.defaultMeta =
-      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
-  }
-}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/codegen/code.ts b/node_modules/table/node_modules/ajv/lib/compile/codegen/code.ts
index 4739ff0..bd9b385 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/codegen/code.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/codegen/code.ts
@@ -154,3 +154,7 @@
 export function getProperty(key: Code | string | number): Code {
   return typeof key == "string" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`
 }
+
+export function regexpCode(rx: RegExp): Code {
+  return new _Code(rx.toString())
+}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/codegen/index.ts b/node_modules/table/node_modules/ajv/lib/compile/codegen/index.ts
index e33de34..9d29055 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/codegen/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/codegen/index.ts
@@ -2,7 +2,7 @@
 import {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from "./code"
 import {Scope, varKinds} from "./scope"
 
-export {_, str, strConcat, nil, getProperty, stringify, Name, Code} from "./code"
+export {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from "./code"
 export {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from "./scope"
 
 // type for expressions that can be safely inserted in code without quotes
diff --git a/node_modules/table/node_modules/ajv/lib/compile/context.ts b/node_modules/table/node_modules/ajv/lib/compile/context.ts
deleted file mode 100644
index d2472ee..0000000
--- a/node_modules/table/node_modules/ajv/lib/compile/context.ts
+++ /dev/null
@@ -1,266 +0,0 @@
-import type {
-  AddedKeywordDefinition,
-  KeywordErrorCxt,
-  KeywordCxtParams,
-  AnySchemaObject,
-} from "../types"
-import {SchemaCxt, SchemaObjCxt} from "./index"
-import {JSONType} from "./rules"
-import {checkDataTypes, DataType} from "./validate/dataType"
-import {schemaRefOrVal, unescapeJsonPointer, mergeEvaluated} from "./util"
-import {reportError, reportExtraError, resetErrorsCount, keyword$DataError} from "./errors"
-import {CodeGen, _, nil, or, not, getProperty, Code, Name} from "./codegen"
-import N from "./names"
-import {applySubschema, SubschemaArgs} from "./subschema"
-
-export default class KeywordCxt implements KeywordErrorCxt {
-  readonly gen: CodeGen
-  readonly allErrors?: boolean
-  readonly keyword: string
-  readonly data: Name // Name referencing the current level of the data instance
-  readonly $data?: string | false
-  schema: any // keyword value in the schema
-  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value
-  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)
-  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema
-  readonly parentSchema: AnySchemaObject
-  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,
-  // requires option trackErrors in keyword definition
-  params: KeywordCxtParams // object to pass parameters to error messages from keyword code
-  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)
-  readonly def: AddedKeywordDefinition
-
-  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {
-    validateKeywordUsage(it, def, keyword)
-    this.gen = it.gen
-    this.allErrors = it.allErrors
-    this.keyword = keyword
-    this.data = it.data
-    this.schema = it.schema[keyword]
-    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data
-    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)
-    this.schemaType = def.schemaType
-    this.parentSchema = it.schema
-    this.params = {}
-    this.it = it
-    this.def = def
-
-    if (this.$data) {
-      this.schemaCode = it.gen.const("vSchema", getData(this.$data, it))
-    } else {
-      this.schemaCode = this.schemaValue
-      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {
-        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)
-      }
-    }
-
-    if ("code" in def ? def.trackErrors : def.errors !== false) {
-      this.errsCount = it.gen.const("_errs", N.errors)
-    }
-  }
-
-  result(condition: Code, successAction?: () => void, failAction?: () => void): void {
-    this.gen.if(not(condition))
-    if (failAction) failAction()
-    else this.error()
-    if (successAction) {
-      this.gen.else()
-      successAction()
-      if (this.allErrors) this.gen.endIf()
-    } else {
-      if (this.allErrors) this.gen.endIf()
-      else this.gen.else()
-    }
-  }
-
-  pass(condition: Code, failAction?: () => void): void {
-    this.result(condition, undefined, failAction)
-  }
-
-  fail(condition?: Code): void {
-    if (condition === undefined) {
-      this.error()
-      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize
-      return
-    }
-    this.gen.if(condition)
-    this.error()
-    if (this.allErrors) this.gen.endIf()
-    else this.gen.else()
-  }
-
-  fail$data(condition: Code): void {
-    if (!this.$data) return this.fail(condition)
-    const {schemaCode} = this
-    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)
-  }
-
-  error(append?: true): void {
-    ;(append ? reportExtraError : reportError)(this, this.def.error)
-  }
-
-  $dataError(): void {
-    reportError(this, this.def.$dataError || keyword$DataError)
-  }
-
-  reset(): void {
-    if (this.errsCount === undefined) throw new Error('add "trackErrors" to keyword definition')
-    resetErrorsCount(this.gen, this.errsCount)
-  }
-
-  ok(cond: Code | boolean): void {
-    if (!this.allErrors) this.gen.if(cond)
-  }
-
-  setParams(obj: KeywordCxtParams, assign?: true): void {
-    if (assign) Object.assign(this.params, obj)
-    else this.params = obj
-  }
-
-  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {
-    this.gen.block(() => {
-      this.check$data(valid, $dataValid)
-      codeBlock()
-    })
-  }
-
-  check$data(valid: Name = nil, $dataValid: Code = nil): void {
-    if (!this.$data) return
-    const {gen, schemaCode, schemaType, def} = this
-    gen.if(or(_`${schemaCode} === undefined`, $dataValid))
-    if (valid !== nil) gen.assign(valid, true)
-    if (schemaType.length || def.validateSchema) {
-      gen.elseIf(this.invalid$data())
-      this.$dataError()
-      if (valid !== nil) gen.assign(valid, false)
-    }
-    gen.else()
-  }
-
-  invalid$data(): Code {
-    const {gen, schemaCode, schemaType, def, it} = this
-    return or(wrong$DataType(), invalid$DataSchema())
-
-    function wrong$DataType(): Code {
-      if (schemaType.length) {
-        /* istanbul ignore if */
-        if (!(schemaCode instanceof Name)) throw new Error("ajv implementation error")
-        const st = Array.isArray(schemaType) ? schemaType : [schemaType]
-        return _`${checkDataTypes(st, schemaCode, it.opts.strict, DataType.Wrong)}`
-      }
-      return nil
-    }
-
-    function invalid$DataSchema(): Code {
-      if (def.validateSchema) {
-        const validateSchemaRef = gen.scopeValue("validate$data", {ref: def.validateSchema}) // TODO value.code for standalone
-        return _`!${validateSchemaRef}(${schemaCode})`
-      }
-      return nil
-    }
-  }
-
-  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {
-    return applySubschema(this.it, appl, valid)
-  }
-
-  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {
-    const {it, gen} = this
-    if (!it.opts.unevaluated) return
-    if (it.props !== true && schemaCxt.props !== undefined) {
-      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)
-    }
-    if (it.items !== true && schemaCxt.items !== undefined) {
-      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)
-    }
-  }
-
-  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {
-    const {it, gen} = this
-    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {
-      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))
-      return true
-    }
-  }
-}
-
-function validSchemaType(schema: unknown, schemaType: JSONType[], allowUndefined = false): boolean {
-  // TODO add tests
-  return (
-    !schemaType.length ||
-    schemaType.some((st) =>
-      st === "array"
-        ? Array.isArray(schema)
-        : st === "object"
-        ? schema && typeof schema == "object" && !Array.isArray(schema)
-        : typeof schema == st || (allowUndefined && typeof schema == "undefined")
-    )
-  )
-}
-
-function validateKeywordUsage(
-  {schema, opts, self}: SchemaObjCxt,
-  def: AddedKeywordDefinition,
-  keyword: string
-): void {
-  /* istanbul ignore if */
-  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {
-    throw new Error("ajv implementation error")
-  }
-
-  const deps = def.dependencies
-  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {
-    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`)
-  }
-
-  if (def.validateSchema) {
-    const valid = def.validateSchema(schema[keyword])
-    if (!valid) {
-      const msg = "keyword value is invalid: " + self.errorsText(def.validateSchema.errors)
-      if (opts.validateSchema === "log") self.logger.error(msg)
-      else throw new Error(msg)
-    }
-  }
-}
-
-const JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/
-const RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/
-export function getData(
-  $data: string,
-  {dataLevel, dataNames, dataPathArr}: SchemaCxt
-): Code | number {
-  let jsonPointer
-  let data: Code
-  if ($data === "") return N.rootData
-  if ($data[0] === "/") {
-    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)
-    jsonPointer = $data
-    data = N.rootData
-  } else {
-    const matches = RELATIVE_JSON_POINTER.exec($data)
-    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)
-    const up: number = +matches[1]
-    jsonPointer = matches[2]
-    if (jsonPointer === "#") {
-      if (up >= dataLevel) throw new Error(errorMsg("property/index", up))
-      return dataPathArr[dataLevel - up]
-    }
-    if (up > dataLevel) throw new Error(errorMsg("data", up))
-    data = dataNames[dataLevel - up]
-    if (!jsonPointer) return data
-  }
-
-  let expr = data
-  const segments = jsonPointer.split("/")
-  for (const segment of segments) {
-    if (segment) {
-      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`
-      expr = _`${expr} && ${data}`
-    }
-  }
-  return expr
-
-  function errorMsg(pointerType: string, up: number): string {
-    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`
-  }
-}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/equal.js b/node_modules/table/node_modules/ajv/lib/compile/equal.js
deleted file mode 100644
index b675916..0000000
--- a/node_modules/table/node_modules/ajv/lib/compile/equal.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// do NOT remove this file - it would break pre-compiled schemas
-// https://github.com/ajv-validator/ajv/issues/889
-module.exports = require("fast-deep-equal")
diff --git a/node_modules/table/node_modules/ajv/lib/compile/error_classes.ts b/node_modules/table/node_modules/ajv/lib/compile/error_classes.ts
deleted file mode 100644
index da35f85..0000000
--- a/node_modules/table/node_modules/ajv/lib/compile/error_classes.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import type {ErrorObject} from "../types"
-import {resolveUrl, normalizeId, getFullPath} from "./resolve"
-
-export class ValidationError extends Error {
-  readonly errors: Partial<ErrorObject>[]
-  readonly ajv: true
-  readonly validation: true
-
-  constructor(errors: Partial<ErrorObject>[]) {
-    super("validation failed")
-    this.errors = errors
-    this.ajv = this.validation = true
-  }
-}
-
-export class MissingRefError extends Error {
-  readonly missingRef: string
-  readonly missingSchema: string
-
-  constructor(baseId: string, ref: string, msg?: string) {
-    super(msg || `can't resolve reference ${ref} from id ${baseId}`)
-    this.missingRef = resolveUrl(baseId, ref)
-    this.missingSchema = normalizeId(getFullPath(this.missingRef))
-  }
-}
-
-module.exports = {
-  ValidationError,
-  MissingRefError,
-}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/errors.ts b/node_modules/table/node_modules/ajv/lib/compile/errors.ts
index e1a497c..ea99c42 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/errors.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/errors.ts
@@ -2,6 +2,7 @@
 import type {SchemaCxt} from "./index"
 import {CodeGen, _, str, strConcat, Code, Name} from "./codegen"
 import {SafeExpr} from "./codegen/code"
+import {getErrorPath, Type} from "./util"
 import N from "./names"
 
 export const keywordError: KeywordErrorDefinition = {
@@ -15,14 +16,21 @@
       : str`"${keyword}" keyword is invalid ($data)`,
 }
 
+export interface ErrorPaths {
+  instancePath?: Code
+  schemaPath?: string
+  parentSchema?: boolean
+}
+
 export function reportError(
   cxt: KeywordErrorCxt,
   error: KeywordErrorDefinition = keywordError,
+  errorPaths?: ErrorPaths,
   overrideAllErrors?: boolean
 ): void {
   const {it} = cxt
   const {gen, compositeRule, allErrors} = it
-  const errObj = errorObjectCode(cxt, error)
+  const errObj = errorObjectCode(cxt, error, errorPaths)
   if (overrideAllErrors ?? (compositeRule || allErrors)) {
     addError(gen, errObj)
   } else {
@@ -32,11 +40,12 @@
 
 export function reportExtraError(
   cxt: KeywordErrorCxt,
-  error: KeywordErrorDefinition = keywordError
+  error: KeywordErrorDefinition = keywordError,
+  errorPaths?: ErrorPaths
 ): void {
   const {it} = cxt
   const {gen, compositeRule, allErrors} = it
-  const errObj = errorObjectCode(cxt, error)
+  const errObj = errorObjectCode(cxt, error, errorPaths)
   addError(gen, errObj)
   if (!(compositeRule || allErrors)) {
     returnErrors(it, N.vErrors)
@@ -67,8 +76,8 @@
   const err = gen.name("err")
   gen.forRange("i", errsCount, N.errors, (i) => {
     gen.const(err, _`${N.vErrors}[${i}]`)
-    gen.if(_`${err}.dataPath === undefined`, () =>
-      gen.assign(_`${err}.dataPath`, strConcat(N.dataPath, it.errorPath))
+    gen.if(_`${err}.instancePath === undefined`, () =>
+      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))
     )
     gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)
     if (it.opts.verbose) {
@@ -106,40 +115,61 @@
   message: new Name("message"),
   schema: new Name("schema"),
   parentSchema: new Name("parentSchema"),
-  // JTD error properties
-  instancePath: new Name("instancePath"),
 }
 
-function errorObjectCode(cxt: KeywordErrorCxt, error: KeywordErrorDefinition): Code {
-  const {createErrors, opts} = cxt.it
+function errorObjectCode(
+  cxt: KeywordErrorCxt,
+  error: KeywordErrorDefinition,
+  errorPaths?: ErrorPaths
+): Code {
+  const {createErrors} = cxt.it
   if (createErrors === false) return _`{}`
-  return (opts.jtd && !opts.ajvErrors ? jtdErrorObject : ajvErrorObject)(cxt, error)
+  return errorObject(cxt, error, errorPaths)
 }
 
-function jtdErrorObject(cxt: KeywordErrorCxt, {message}: KeywordErrorDefinition): Code {
-  const {gen, keyword, it} = cxt
-  const {errorPath, errSchemaPath, opts} = it
+function errorObject(
+  cxt: KeywordErrorCxt,
+  error: KeywordErrorDefinition,
+  errorPaths: ErrorPaths = {}
+): Code {
+  const {gen, it} = cxt
   const keyValues: [Name, SafeExpr | string][] = [
-    [E.instancePath, strConcat(N.dataPath, errorPath)],
-    [E.schemaPath, str`${errSchemaPath}/${keyword}`],
+    errorInstancePath(it, errorPaths),
+    errorSchemaPath(cxt, errorPaths),
   ]
-  if (opts.messages) {
-    keyValues.push([E.message, typeof message == "function" ? message(cxt) : message])
-  }
+  extraErrorProps(cxt, error, keyValues)
   return gen.object(...keyValues)
 }
 
-function ajvErrorObject(cxt: KeywordErrorCxt, error: KeywordErrorDefinition): Code {
-  const {gen, keyword, data, schemaValue, it} = cxt
-  const {topSchemaRef, schemaPath, errorPath, errSchemaPath, propertyName, opts} = it
-  const {params, message} = error
-  const keyValues: [Name, SafeExpr | string][] = [
+function errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {
+  const instPath = instancePath
+    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`
+    : errorPath
+  return [N.instancePath, strConcat(N.instancePath, instPath)]
+}
+
+function errorSchemaPath(
+  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,
+  {schemaPath, parentSchema}: ErrorPaths
+): [Name, string | Code] {
+  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`
+  if (schemaPath) {
+    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`
+  }
+  return [E.schemaPath, schPath]
+}
+
+function extraErrorProps(
+  cxt: KeywordErrorCxt,
+  {params, message}: KeywordErrorDefinition,
+  keyValues: [Name, SafeExpr | string][]
+): void {
+  const {keyword, data, schemaValue, it} = cxt
+  const {opts, propertyName, topSchemaRef, schemaPath} = it
+  keyValues.push(
     [E.keyword, keyword],
-    [N.dataPath, strConcat(N.dataPath, errorPath)],
-    [E.schemaPath, str`${errSchemaPath}/${keyword}`],
-    [E.params, typeof params == "function" ? params(cxt) : params || _`{}`],
-  ]
-  if (propertyName) keyValues.push([E.propertyName, propertyName])
+    [E.params, typeof params == "function" ? params(cxt) : params || _`{}`]
+  )
   if (opts.messages) {
     keyValues.push([E.message, typeof message == "function" ? message(cxt) : message])
   }
@@ -150,5 +180,5 @@
       [N.data, data]
     )
   }
-  return gen.object(...keyValues)
+  if (propertyName) keyValues.push([E.propertyName, propertyName])
 }
diff --git a/node_modules/table/node_modules/ajv/lib/compile/index.ts b/node_modules/table/node_modules/ajv/lib/compile/index.ts
index 42770a6..d612109 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/index.ts
@@ -9,7 +9,7 @@
 import type Ajv from "../core"
 import type {InstanceOptions} from "../core"
 import {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from "./codegen"
-import {ValidationError} from "./error_classes"
+import ValidationError from "../runtime/validation_error"
 import N from "./names"
 import {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from "./resolve"
 import {schemaHasRulesButRef, unescapeFragment} from "./util"
@@ -65,6 +65,7 @@
   readonly schema: AnySchema
   readonly root?: SchemaEnv
   readonly baseId?: string
+  readonly schemaPath?: string
   readonly localRefs?: LocalRefs
   readonly meta?: boolean
 }
@@ -73,6 +74,7 @@
   readonly schema: AnySchema
   readonly root: SchemaEnv
   baseId: string // TODO possibly, it should be readonly
+  schemaPath?: string
   localRefs?: LocalRefs
   readonly meta?: boolean
   readonly $async?: boolean // true if the current schema is asynchronous.
@@ -91,6 +93,7 @@
     this.schema = env.schema
     this.root = env.root || this
     this.baseId = env.baseId ?? normalizeId(schema?.$id)
+    this.schemaPath = env.schemaPath
     this.localRefs = env.localRefs
     this.meta = env.meta
     this.$async = schema?.$async
@@ -114,7 +117,7 @@
   if (sch.$async) {
     _ValidationError = gen.scopeValue("Error", {
       ref: ValidationError,
-      code: _`require("ajv/dist/compile/error_classes").ValidationError`,
+      code: _`require("ajv/dist/runtime/validation_error").default`,
     })
   }
 
@@ -145,7 +148,7 @@
     rootId,
     baseId: sch.baseId || rootId,
     schemaPath: nil,
-    errSchemaPath: this.opts.jtd ? "" : "#",
+    errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"),
     errorPath: _`""`,
     opts: this.opts,
     self: this,
diff --git a/node_modules/table/node_modules/ajv/lib/compile/jtd/parse.ts b/node_modules/table/node_modules/ajv/lib/compile/jtd/parse.ts
index edb5603..ea13d07 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/jtd/parse.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/jtd/parse.ts
@@ -3,14 +3,14 @@
 import {jtdForms, JTDForm, SchemaObjectMap} from "./types"
 import {SchemaEnv, getCompilingSchema} from ".."
 import {_, str, and, nil, not, CodeGen, Code, Name, SafeExpr} from "../codegen"
-import {MissingRefError} from "../error_classes"
+import MissingRefError from "../ref_error"
 import N from "../names"
 import {hasPropFunc} from "../../vocabularies/code"
 import {hasRef} from "../../vocabularies/jtd/ref"
 import {intRange, IntType} from "../../vocabularies/jtd/type"
 import {parseJson, parseJsonNumber, parseJsonString} from "../../runtime/parseJson"
-import {func} from "../util"
-import validTimestamp from "../timestamp"
+import {useFunc} from "../util"
+import validTimestamp from "../../runtime/timestamp"
 
 type GenParse = (cxt: ParseCxt) => void
 
@@ -264,7 +264,7 @@
     case "timestamp": {
       // TODO parse timestamp?
       parseString(cxt)
-      const vts = func(gen, validTimestamp)
+      const vts = useFunc(gen, validTimestamp)
       gen.if(_`!${vts}(${data})`, () => parsingError(cxt, str`invalid timestamp`))
       break
     }
@@ -347,12 +347,8 @@
   parseWith(cxt, parseJson)
 }
 
-function parseWith(cxt: ParseCxt, parseFunc: {code: Code}, args?: SafeExpr): void {
-  const f = cxt.gen.scopeValue("func", {
-    ref: parseFunc,
-    code: parseFunc.code,
-  })
-  partialParse(cxt, f, args)
+function parseWith(cxt: ParseCxt, parseFunc: {code: string}, args?: SafeExpr): void {
+  partialParse(cxt, useFunc(cxt.gen, parseFunc), args)
 }
 
 function partialParse(cxt: ParseCxt, parseFunc: Name, args?: SafeExpr): void {
diff --git a/node_modules/table/node_modules/ajv/lib/compile/jtd/serialize.ts b/node_modules/table/node_modules/ajv/lib/compile/jtd/serialize.ts
index 63b253d..f967100 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/jtd/serialize.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/jtd/serialize.ts
@@ -3,10 +3,11 @@
 import {jtdForms, JTDForm, SchemaObjectMap} from "./types"
 import {SchemaEnv, getCompilingSchema} from ".."
 import {_, str, and, getProperty, CodeGen, Code, Name} from "../codegen"
-import {MissingRefError} from "../error_classes"
+import MissingRefError from "../ref_error"
 import N from "../names"
 import {isOwnProperty} from "../../vocabularies/code"
 import {hasRef} from "../../vocabularies/jtd/ref"
+import {useFunc} from "../util"
 import quote from "../../runtime/quote"
 
 const genSerialize: {[F in JTDForm]: (cxt: SerializeCxt) => void} = {
@@ -222,7 +223,7 @@
 }
 
 function serializeString({gen, data}: SerializeCxt): void {
-  gen.add(N.json, _`${quoteFunc(gen)}(${data})`)
+  gen.add(N.json, _`${useFunc(gen, quote)}(${data})`)
 }
 
 function serializeNumber({gen, data}: SerializeCxt): void {
@@ -257,10 +258,3 @@
     () => gen.add(N.json, str`,`)
   )
 }
-
-function quoteFunc(gen: CodeGen): Name {
-  return gen.scopeValue("func", {
-    ref: quote,
-    code: _`require("ajv/dist/runtime/quote").default`,
-  })
-}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/names.ts b/node_modules/table/node_modules/ajv/lib/compile/names.ts
index b7f18ca..b4b242e 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/names.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/names.ts
@@ -5,7 +5,7 @@
   data: new Name("data"), // data passed to validation function
   // args passed from referencing schema
   valCxt: new Name("valCxt"), // validation/data context - should not be used directly, it is destructured to the names below
-  dataPath: new Name("dataPath"),
+  instancePath: new Name("instancePath"),
   parentData: new Name("parentData"),
   parentDataProperty: new Name("parentDataProperty"),
   rootData: new Name("rootData"), // root data - same as the data passed to the first/top validation function
diff --git a/node_modules/table/node_modules/ajv/lib/compile/ref_error.ts b/node_modules/table/node_modules/ajv/lib/compile/ref_error.ts
new file mode 100644
index 0000000..443aed6
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/compile/ref_error.ts
@@ -0,0 +1,12 @@
+import { getFullPath, normalizeId,resolveUrl} from "./resolve"
+
+export default class MissingRefError extends Error {
+  readonly missingRef: string
+  readonly missingSchema: string
+
+  constructor(baseId: string, ref: string, msg?: string) {
+    super(msg || `can't resolve reference ${ref} from id ${baseId}`)
+    this.missingRef = resolveUrl(baseId, ref)
+    this.missingSchema = normalizeId(getFullPath(this.missingRef))
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/util.ts b/node_modules/table/node_modules/ajv/lib/compile/util.ts
index 933535c..cefae51 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/util.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/util.ts
@@ -1,8 +1,8 @@
 import type {AnySchema, EvaluatedProperties, EvaluatedItems} from "../types"
 import type {SchemaCxt, SchemaObjCxt} from "."
 import {_, getProperty, Code, Name, CodeGen} from "./codegen"
+import {_Code} from "./codegen/code"
 import type {Rule, ValidationRules} from "./rules"
-import {checkStrictMode} from "./validate"
 
 // TODO refactor to use Set
 export function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {
@@ -20,7 +20,7 @@
 
 export function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {
   const {opts, self} = it
-  if (!opts.strict) return
+  if (!opts.strictSchema) return
   if (typeof schema === "boolean") return
   const rules = self.RULES.keywords
   for (const key in schema) {
@@ -168,9 +168,46 @@
   Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))
 }
 
-export function func(gen: CodeGen, f: {code: Code}): Name {
+const snippets: {[S in string]?: _Code} = {}
+
+export function useFunc(gen: CodeGen, f: {code: string}): Name {
   return gen.scopeValue("func", {
     ref: f,
-    code: f.code,
+    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),
   })
 }
+
+export enum Type {
+  Num,
+  Str,
+}
+
+export function getErrorPath(
+  dataProp: Name | string | number,
+  dataPropType?: Type,
+  jsPropertySyntax?: boolean
+): Code | string {
+  // let path
+  if (dataProp instanceof Name) {
+    const isNumber = dataPropType === Type.Num
+    return jsPropertySyntax
+      ? isNumber
+        ? _`"[" + ${dataProp} + "]"`
+        : _`"['" + ${dataProp} + "']"`
+      : isNumber
+      ? _`"/" + ${dataProp}`
+      : _`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")` // TODO maybe use global escapePointer
+  }
+  return jsPropertySyntax ? getProperty(dataProp).toString() : "/" + escapeJsonPointer(dataProp)
+}
+
+export function checkStrictMode(
+  it: SchemaCxt,
+  msg: string,
+  mode: boolean | "log" = it.opts.strictSchema
+): void {
+  if (!mode) return
+  msg = `strict mode: ${msg}`
+  if (mode === true) throw new Error(msg)
+  it.self.logger.warn(msg)
+}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts
index 0e1b252..1563550 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts
@@ -43,5 +43,5 @@
     params: {},
     it,
   }
-  reportError(cxt, boolError, overrideAllErrors)
+  reportError(cxt, boolError, undefined, overrideAllErrors)
 }
diff --git a/node_modules/table/node_modules/ajv/lib/compile/validate/dataType.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/dataType.ts
index 8aa499c..b315c2c 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/validate/dataType.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/validate/dataType.ts
@@ -8,7 +8,7 @@
 import {isJSONType, JSONType} from "../rules"
 import {schemaHasRulesForType} from "./applicability"
 import {reportError} from "../errors"
-import {_, str, nil, and, not, operators, Code, Name} from "../codegen"
+import {_, nil, and, not, operators, Code, Name} from "../codegen"
 import {toHash, schemaRefOrVal} from "../util"
 
 export enum DataType {
@@ -43,7 +43,7 @@
     types.length > 0 &&
     !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))
   if (checkTypes) {
-    const wrongType = checkDataTypes(types, data, opts.strict, DataType.Wrong)
+    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)
     gen.if(wrongType, () => {
       if (coerceTo.length) coerceData(it, types, coerceTo)
       else reportTypeError(it)
@@ -68,7 +68,7 @@
       gen
         .assign(data, _`${data}[0]`)
         .assign(dataType, _`typeof ${data}`)
-        .if(checkDataTypes(types, data, opts.strict), () => gen.assign(coerced, data))
+        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))
     )
   }
   gen.if(_`${coerced} !== undefined`)
@@ -202,7 +202,7 @@
 export type TypeError = ErrorObject<"type", {type: string}>
 
 const typeError: KeywordErrorDefinition = {
-  message: ({schema}) => str`should be ${schema}`,
+  message: ({schema}) => `must be ${schema}`,
   params: ({schema, schemaValue}) =>
     typeof schema == "string" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,
 }
diff --git a/node_modules/table/node_modules/ajv/lib/compile/validate/defaults.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/defaults.ts
index 60028fa..2ad3d4d 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/validate/defaults.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/validate/defaults.ts
@@ -1,6 +1,6 @@
 import type {SchemaObjCxt} from ".."
 import {_, getProperty, stringify} from "../codegen"
-import {checkStrictMode} from "."
+import {checkStrictMode} from "../util"
 
 export function assignDefaults(it: SchemaObjCxt, ty?: string): void {
   const {properties, items} = it.schema
diff --git a/node_modules/table/node_modules/ajv/lib/compile/validate/index.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/index.ts
index 474d090..76775c5 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/validate/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/validate/index.ts
@@ -1,13 +1,38 @@
-import type {AnySchema} from "../../types"
+import type {
+  AddedKeywordDefinition,
+  AnySchema,
+  AnySchemaObject,
+  KeywordErrorCxt,
+  KeywordCxtParams,
+} from "../../types"
 import type {SchemaCxt, SchemaObjCxt} from ".."
 import type {InstanceOptions} from "../../core"
 import {boolOrEmptySchema, topBoolOrEmptySchema} from "./boolSchema"
 import {coerceAndCheckDataType, getSchemaTypes} from "./dataType"
-import {schemaKeywords} from "./iterate"
-import {_, nil, str, Block, Code, Name, CodeGen} from "../codegen"
+import {shouldUseGroup, shouldUseRule} from "./applicability"
+import {checkDataType, checkDataTypes, reportTypeError, DataType} from "./dataType"
+import {assignDefaults} from "./defaults"
+import {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from "./keyword"
+import {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from "./subschema"
+import {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from "../codegen"
 import N from "../names"
 import {resolveUrl} from "../resolve"
-import {schemaHasRulesButRef, checkUnknownRules} from "../util"
+import {
+  schemaRefOrVal,
+  schemaHasRulesButRef,
+  checkUnknownRules,
+  checkStrictMode,
+  unescapeJsonPointer,
+  mergeEvaluated,
+} from "../util"
+import type {JSONType, Rule, RuleGroup} from "../rules"
+import {
+  ErrorPaths,
+  reportError,
+  reportExtraError,
+  resetErrorsCount,
+  keyword$DataError,
+} from "../errors"
 
 // schema compilation - generates validation function, subschemaCode (below) is used for subschemas
 export function validateFunctionCode(it: SchemaCxt): void {
@@ -39,23 +64,23 @@
 }
 
 function destructureValCxt(opts: InstanceOptions): Code {
-  return _`{${N.dataPath}="", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${N.data}${
-    opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil
-  }}={}`
+  return _`{${N.instancePath}="", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${
+    N.data
+  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`
 }
 
 function destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {
   gen.if(
     N.valCxt,
     () => {
-      gen.var(N.dataPath, _`${N.valCxt}.${N.dataPath}`)
+      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)
       gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)
       gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)
       gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)
       if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)
     },
     () => {
-      gen.var(N.dataPath, _`""`)
+      gen.var(N.instancePath, _`""`)
       gen.var(N.parentData, _`undefined`)
       gen.var(N.parentDataProperty, _`undefined`)
       gen.var(N.rootData, N.data)
@@ -93,7 +118,7 @@
 }
 
 // schema compilation - this function is used recursively to generate code for sub-schemas
-export function subschemaCode(it: SchemaCxt, valid: Name): void {
+function subschemaCode(it: SchemaCxt, valid: Name): void {
   if (isSchemaObj(it)) {
     checkKeywords(it)
     if (schemaCxtHasRules(it)) {
@@ -104,7 +129,7 @@
   boolOrEmptySchema(it, valid)
 }
 
-export function schemaCxtHasRules({schema, self}: SchemaCxt): boolean {
+function schemaCxtHasRules({schema, self}: SchemaCxt): boolean {
   if (typeof schema == "boolean") return !schema
   for (const key in schema) if (self.RULES.all[key]) return true
   return false
@@ -118,7 +143,7 @@
   const {schema, gen, opts} = it
   if (opts.$comment && schema.$comment) commentKeyword(it)
   updateContext(it)
-  checkAsync(it)
+  checkAsyncSchema(it)
   const errsCount = gen.const("_errs", N.errors)
   typeAndKeywords(it, errsCount)
   // TODO var
@@ -146,7 +171,7 @@
 
 function checkNoDefault(it: SchemaObjCxt): void {
   const {schema, opts} = it
-  if (schema.default !== undefined && opts.useDefaults && opts.strict) {
+  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {
     checkStrictMode(it, "default is ignored in the schema root")
   }
 }
@@ -155,7 +180,7 @@
   if (it.schema.$id) it.baseId = resolveUrl(it.baseId, it.schema.$id)
 }
 
-function checkAsync(it: SchemaObjCxt): void {
+function checkAsyncSchema(it: SchemaObjCxt): void {
   if (it.schema.$async && !it.schemaEnv.$async) throw new Error("async schema in sync schema")
 }
 
@@ -191,9 +216,354 @@
   if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)
 }
 
-export function checkStrictMode(it: SchemaCxt, msg: string, mode = it.opts.strict): void {
-  if (!mode) return
-  msg = `strict mode: ${msg}`
-  if (mode === true) throw new Error(msg)
-  it.self.logger.warn(msg)
+function schemaKeywords(
+  it: SchemaObjCxt,
+  types: JSONType[],
+  typeErrors: boolean,
+  errsCount?: Name
+): void {
+  const {gen, schema, data, allErrors, opts, self} = it
+  const {RULES} = self
+  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {
+    gen.block(() => keywordCode(it, "$ref", (RULES.all.$ref as Rule).definition)) // TODO typecast
+    return
+  }
+  if (!opts.jtd) checkStrictTypes(it, types)
+  gen.block(() => {
+    for (const group of RULES.rules) groupKeywords(group)
+    groupKeywords(RULES.post)
+  })
+
+  function groupKeywords(group: RuleGroup): void {
+    if (!shouldUseGroup(schema, group)) return
+    if (group.type) {
+      gen.if(checkDataType(group.type, data, opts.strictNumbers))
+      iterateKeywords(it, group)
+      if (types.length === 1 && types[0] === group.type && typeErrors) {
+        gen.else()
+        reportTypeError(it)
+      }
+      gen.endIf()
+    } else {
+      iterateKeywords(it, group)
+    }
+    // TODO make it "ok" call?
+    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)
+  }
+}
+
+function iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {
+  const {
+    gen,
+    schema,
+    opts: {useDefaults},
+  } = it
+  if (useDefaults) assignDefaults(it, group.type)
+  gen.block(() => {
+    for (const rule of group.rules) {
+      if (shouldUseRule(schema, rule)) {
+        keywordCode(it, rule.keyword, rule.definition, group.type)
+      }
+    }
+  })
+}
+
+function checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {
+  if (it.schemaEnv.meta || !it.opts.strictTypes) return
+  checkContextTypes(it, types)
+  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)
+  checkKeywordTypes(it, it.dataTypes)
+}
+
+function checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {
+  if (!types.length) return
+  if (!it.dataTypes.length) {
+    it.dataTypes = types
+    return
+  }
+  types.forEach((t) => {
+    if (!includesType(it.dataTypes, t)) {
+      strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`)
+    }
+  })
+  it.dataTypes = it.dataTypes.filter((t) => includesType(types, t))
+}
+
+function checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {
+  if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) {
+    strictTypesError(it, "use allowUnionTypes to allow union type keyword")
+  }
+}
+
+function checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {
+  const rules = it.self.RULES.all
+  for (const keyword in rules) {
+    const rule = rules[keyword]
+    if (typeof rule == "object" && shouldUseRule(it.schema, rule)) {
+      const {type} = rule.definition
+      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {
+        strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`)
+      }
+    }
+  }
+}
+
+function hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {
+  return schTs.includes(kwdT) || (kwdT === "number" && schTs.includes("integer"))
+}
+
+function includesType(ts: JSONType[], t: JSONType): boolean {
+  return ts.includes(t) || (t === "integer" && ts.includes("number"))
+}
+
+function strictTypesError(it: SchemaObjCxt, msg: string): void {
+  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath
+  msg += ` at "${schemaPath}" (strictTypes)`
+  checkStrictMode(it, msg, it.opts.strictTypes)
+}
+
+export class KeywordCxt implements KeywordErrorCxt {
+  readonly gen: CodeGen
+  readonly allErrors?: boolean
+  readonly keyword: string
+  readonly data: Name // Name referencing the current level of the data instance
+  readonly $data?: string | false
+  schema: any // keyword value in the schema
+  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value
+  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)
+  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema
+  readonly parentSchema: AnySchemaObject
+  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,
+  // requires option trackErrors in keyword definition
+  params: KeywordCxtParams // object to pass parameters to error messages from keyword code
+  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)
+  readonly def: AddedKeywordDefinition
+
+  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {
+    validateKeywordUsage(it, def, keyword)
+    this.gen = it.gen
+    this.allErrors = it.allErrors
+    this.keyword = keyword
+    this.data = it.data
+    this.schema = it.schema[keyword]
+    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data
+    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)
+    this.schemaType = def.schemaType
+    this.parentSchema = it.schema
+    this.params = {}
+    this.it = it
+    this.def = def
+
+    if (this.$data) {
+      this.schemaCode = it.gen.const("vSchema", getData(this.$data, it))
+    } else {
+      this.schemaCode = this.schemaValue
+      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {
+        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)
+      }
+    }
+
+    if ("code" in def ? def.trackErrors : def.errors !== false) {
+      this.errsCount = it.gen.const("_errs", N.errors)
+    }
+  }
+
+  result(condition: Code, successAction?: () => void, failAction?: () => void): void {
+    this.gen.if(not(condition))
+    if (failAction) failAction()
+    else this.error()
+    if (successAction) {
+      this.gen.else()
+      successAction()
+      if (this.allErrors) this.gen.endIf()
+    } else {
+      if (this.allErrors) this.gen.endIf()
+      else this.gen.else()
+    }
+  }
+
+  pass(condition: Code, failAction?: () => void): void {
+    this.result(condition, undefined, failAction)
+  }
+
+  fail(condition?: Code): void {
+    if (condition === undefined) {
+      this.error()
+      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize
+      return
+    }
+    this.gen.if(condition)
+    this.error()
+    if (this.allErrors) this.gen.endIf()
+    else this.gen.else()
+  }
+
+  fail$data(condition: Code): void {
+    if (!this.$data) return this.fail(condition)
+    const {schemaCode} = this
+    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)
+  }
+
+  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {
+    if (errorParams) {
+      this.setParams(errorParams)
+      this._error(append, errorPaths)
+      this.setParams({})
+      return
+    }
+    this._error(append, errorPaths)
+  }
+
+  private _error(append?: boolean, errorPaths?: ErrorPaths): void {
+    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)
+  }
+
+  $dataError(): void {
+    reportError(this, this.def.$dataError || keyword$DataError)
+  }
+
+  reset(): void {
+    if (this.errsCount === undefined) throw new Error('add "trackErrors" to keyword definition')
+    resetErrorsCount(this.gen, this.errsCount)
+  }
+
+  ok(cond: Code | boolean): void {
+    if (!this.allErrors) this.gen.if(cond)
+  }
+
+  setParams(obj: KeywordCxtParams, assign?: true): void {
+    if (assign) Object.assign(this.params, obj)
+    else this.params = obj
+  }
+
+  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {
+    this.gen.block(() => {
+      this.check$data(valid, $dataValid)
+      codeBlock()
+    })
+  }
+
+  check$data(valid: Name = nil, $dataValid: Code = nil): void {
+    if (!this.$data) return
+    const {gen, schemaCode, schemaType, def} = this
+    gen.if(or(_`${schemaCode} === undefined`, $dataValid))
+    if (valid !== nil) gen.assign(valid, true)
+    if (schemaType.length || def.validateSchema) {
+      gen.elseIf(this.invalid$data())
+      this.$dataError()
+      if (valid !== nil) gen.assign(valid, false)
+    }
+    gen.else()
+  }
+
+  invalid$data(): Code {
+    const {gen, schemaCode, schemaType, def, it} = this
+    return or(wrong$DataType(), invalid$DataSchema())
+
+    function wrong$DataType(): Code {
+      if (schemaType.length) {
+        /* istanbul ignore if */
+        if (!(schemaCode instanceof Name)) throw new Error("ajv implementation error")
+        const st = Array.isArray(schemaType) ? schemaType : [schemaType]
+        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`
+      }
+      return nil
+    }
+
+    function invalid$DataSchema(): Code {
+      if (def.validateSchema) {
+        const validateSchemaRef = gen.scopeValue("validate$data", {ref: def.validateSchema}) // TODO value.code for standalone
+        return _`!${validateSchemaRef}(${schemaCode})`
+      }
+      return nil
+    }
+  }
+
+  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {
+    const subschema = getSubschema(this.it, appl)
+    extendSubschemaData(subschema, this.it, appl)
+    extendSubschemaMode(subschema, appl)
+    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}
+    subschemaCode(nextContext, valid)
+    return nextContext
+  }
+
+  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {
+    const {it, gen} = this
+    if (!it.opts.unevaluated) return
+    if (it.props !== true && schemaCxt.props !== undefined) {
+      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)
+    }
+    if (it.items !== true && schemaCxt.items !== undefined) {
+      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)
+    }
+  }
+
+  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {
+    const {it, gen} = this
+    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {
+      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))
+      return true
+    }
+  }
+}
+
+function keywordCode(
+  it: SchemaObjCxt,
+  keyword: string,
+  def: AddedKeywordDefinition,
+  ruleType?: JSONType
+): void {
+  const cxt = new KeywordCxt(it, def, keyword)
+  if ("code" in def) {
+    def.code(cxt, ruleType)
+  } else if (cxt.$data && def.validate) {
+    funcKeywordCode(cxt, def)
+  } else if ("macro" in def) {
+    macroKeywordCode(cxt, def)
+  } else if (def.compile || def.validate) {
+    funcKeywordCode(cxt, def)
+  }
+}
+
+const JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/
+const RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/
+export function getData(
+  $data: string,
+  {dataLevel, dataNames, dataPathArr}: SchemaCxt
+): Code | number {
+  let jsonPointer
+  let data: Code
+  if ($data === "") return N.rootData
+  if ($data[0] === "/") {
+    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)
+    jsonPointer = $data
+    data = N.rootData
+  } else {
+    const matches = RELATIVE_JSON_POINTER.exec($data)
+    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)
+    const up: number = +matches[1]
+    jsonPointer = matches[2]
+    if (jsonPointer === "#") {
+      if (up >= dataLevel) throw new Error(errorMsg("property/index", up))
+      return dataPathArr[dataLevel - up]
+    }
+    if (up > dataLevel) throw new Error(errorMsg("data", up))
+    data = dataNames[dataLevel - up]
+    if (!jsonPointer) return data
+  }
+
+  let expr = data
+  const segments = jsonPointer.split("/")
+  for (const segment of segments) {
+    if (segment) {
+      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`
+      expr = _`${expr} && ${data}`
+    }
+  }
+  return expr
+
+  function errorMsg(pointerType: string, up: number): string {
+    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`
+  }
 }
diff --git a/node_modules/table/node_modules/ajv/lib/compile/validate/iterate.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/iterate.ts
deleted file mode 100644
index c68f98d..0000000
--- a/node_modules/table/node_modules/ajv/lib/compile/validate/iterate.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import type {SchemaObjCxt} from ".."
-import type {JSONType, Rule, RuleGroup} from "../rules"
-import {shouldUseGroup, shouldUseRule} from "./applicability"
-import {checkDataType, reportTypeError} from "./dataType"
-import {assignDefaults} from "./defaults"
-import {keywordCode} from "./keyword"
-import {schemaHasRulesButRef} from "../util"
-import {checkStrictMode} from "."
-import {_, Name} from "../codegen"
-import N from "../names"
-
-export function schemaKeywords(
-  it: SchemaObjCxt,
-  types: JSONType[],
-  typeErrors: boolean,
-  errsCount?: Name
-): void {
-  const {gen, schema, data, allErrors, opts, self} = it
-  const {RULES} = self
-  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {
-    gen.block(() => keywordCode(it, "$ref", (RULES.all.$ref as Rule).definition)) // TODO typecast
-    return
-  }
-  if (!opts.jtd) checkStrictTypes(it, types)
-  gen.block(() => {
-    for (const group of RULES.rules) groupKeywords(group)
-    groupKeywords(RULES.post)
-  })
-
-  function groupKeywords(group: RuleGroup): void {
-    if (!shouldUseGroup(schema, group)) return
-    if (group.type) {
-      gen.if(checkDataType(group.type, data, opts.strict))
-      iterateKeywords(it, group)
-      if (types.length === 1 && types[0] === group.type && typeErrors) {
-        gen.else()
-        reportTypeError(it)
-      }
-      gen.endIf()
-    } else {
-      iterateKeywords(it, group)
-    }
-    // TODO make it "ok" call?
-    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)
-  }
-}
-
-function iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {
-  const {
-    gen,
-    schema,
-    opts: {useDefaults},
-  } = it
-  if (useDefaults) assignDefaults(it, group.type)
-  gen.block(() => {
-    for (const rule of group.rules) {
-      if (shouldUseRule(schema, rule)) {
-        keywordCode(it, rule.keyword, rule.definition, group.type)
-      }
-    }
-  })
-}
-
-function checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {
-  if (it.schemaEnv.meta || !it.opts.strictTypes) return
-  checkContextTypes(it, types)
-  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)
-  checkKeywordTypes(it, it.dataTypes)
-}
-
-function checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {
-  if (!types.length) return
-  if (!it.dataTypes.length) {
-    it.dataTypes = types
-    return
-  }
-  types.forEach((t) => {
-    if (!includesType(it.dataTypes, t)) {
-      strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`)
-    }
-  })
-  it.dataTypes = it.dataTypes.filter((t) => includesType(types, t))
-}
-
-function checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {
-  if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) {
-    strictTypesError(it, "use allowUnionTypes to allow union type keyword")
-  }
-}
-
-function checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {
-  const rules = it.self.RULES.all
-  for (const keyword in rules) {
-    const rule = rules[keyword]
-    if (typeof rule == "object" && shouldUseRule(it.schema, rule)) {
-      const {type} = rule.definition
-      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {
-        strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`)
-      }
-    }
-  }
-}
-
-function hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {
-  return schTs.includes(kwdT) || (kwdT === "number" && schTs.includes("integer"))
-}
-
-function includesType(ts: JSONType[], t: JSONType): boolean {
-  return ts.includes(t) || (t === "integer" && ts.includes("number"))
-}
-
-function strictTypesError(it: SchemaObjCxt, msg: string): void {
-  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath
-  msg += ` at "${schemaPath}" (strictTypes)`
-  checkStrictMode(it, msg, it.opts.strictTypes)
-}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/validate/keyword.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/keyword.ts
index 63047af..f854aa7 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/validate/keyword.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/validate/keyword.ts
@@ -1,40 +1,22 @@
+import type {KeywordCxt} from "."
 import type {
-  AddedKeywordDefinition,
-  MacroKeywordDefinition,
-  FuncKeywordDefinition,
   AnySchema,
   SchemaValidateFunction,
   AnyValidateFunction,
+  AddedKeywordDefinition,
+  MacroKeywordDefinition,
+  FuncKeywordDefinition,
 } from "../../types"
 import type {SchemaObjCxt} from ".."
-import type {JSONType} from "../rules"
-import KeywordCxt from "../context"
-import {extendErrors} from "../errors"
-import {callValidateCode} from "../../vocabularies/code"
-import {CodeGen, _, nil, not, stringify, Code, Name} from "../codegen"
+import {_, nil, not, stringify, Code, Name, CodeGen} from "../codegen"
 import N from "../names"
+import type {JSONType} from "../rules"
+import {callValidateCode} from "../../vocabularies/code"
+import {extendErrors} from "../errors"
 
 type KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction
 
-export function keywordCode(
-  it: SchemaObjCxt,
-  keyword: string,
-  def: AddedKeywordDefinition,
-  ruleType?: JSONType
-): void {
-  const cxt = new KeywordCxt(it, def, keyword)
-  if ("code" in def) {
-    def.code(cxt, ruleType)
-  } else if (cxt.$data && def.validate) {
-    funcKeywordCode(cxt, def)
-  } else if ("macro" in def) {
-    macroKeywordCode(cxt, def)
-  } else if (def.compile || def.validate) {
-    funcKeywordCode(cxt, def)
-  }
-}
-
-function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {
+export function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {
   const {gen, keyword, schema, parentSchema, it} = cxt
   const macroSchema = def.macro.call(it.self, schema, parentSchema, it)
   const schemaRef = useKeyword(gen, keyword, macroSchema)
@@ -54,9 +36,9 @@
   cxt.pass(valid, () => cxt.error(true))
 }
 
-function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {
+export function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {
   const {gen, keyword, schema, parentSchema, $data, it} = cxt
-  checkAsync(it, def)
+  checkAsyncKeyword(it, def)
   const validate =
     !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate
   const validateRef = useKeyword(gen, keyword, validate)
@@ -131,7 +113,7 @@
   )
 }
 
-function checkAsync({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {
+function checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {
   if (def.async && !schemaEnv.$async) throw new Error("async keyword in sync schema")
 }
 
@@ -142,3 +124,48 @@
     typeof result == "function" ? {ref: result} : {ref: result, code: stringify(result)}
   )
 }
+
+export function validSchemaType(
+  schema: unknown,
+  schemaType: JSONType[],
+  allowUndefined = false
+): boolean {
+  // TODO add tests
+  return (
+    !schemaType.length ||
+    schemaType.some((st) =>
+      st === "array"
+        ? Array.isArray(schema)
+        : st === "object"
+        ? schema && typeof schema == "object" && !Array.isArray(schema)
+        : typeof schema == st || (allowUndefined && typeof schema == "undefined")
+    )
+  )
+}
+
+export function validateKeywordUsage(
+  {schema, opts, self, errSchemaPath}: SchemaObjCxt,
+  def: AddedKeywordDefinition,
+  keyword: string
+): void {
+  /* istanbul ignore if */
+  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {
+    throw new Error("ajv implementation error")
+  }
+
+  const deps = def.dependencies
+  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {
+    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`)
+  }
+
+  if (def.validateSchema) {
+    const valid = def.validateSchema(schema[keyword])
+    if (!valid) {
+      const msg =
+        `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` +
+        self.errorsText(def.validateSchema.errors)
+      if (opts.validateSchema === "log") self.logger.error(msg)
+      else throw new Error(msg)
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/compile/subschema.ts b/node_modules/table/node_modules/ajv/lib/compile/validate/subschema.ts
similarity index 74%
rename from node_modules/table/node_modules/ajv/lib/compile/subschema.ts
rename to node_modules/table/node_modules/ajv/lib/compile/validate/subschema.ts
index 2ec2cc8..9072ed7 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/subschema.ts
+++ b/node_modules/table/node_modules/ajv/lib/compile/validate/subschema.ts
@@ -1,11 +1,10 @@
-import type {AnySchema} from "../types"
-import type {SchemaObjCxt, SchemaCxt} from "./index"
-import {subschemaCode} from "./validate"
-import {escapeFragment, escapeJsonPointer} from "./util"
-import {_, str, Code, Name, getProperty} from "./codegen"
-import {JSONType} from "./rules"
+import type {AnySchema} from "../../types"
+import type {SchemaObjCxt} from ".."
+import {_, str, getProperty, Code, Name} from "../codegen"
+import {escapeFragment, getErrorPath, Type} from "../util"
+import type {JSONType} from "../rules"
 
-interface SubschemaContext {
+export interface SubschemaContext {
   // TODO use Optional? align with SchemCxt property types
   schema: AnySchema
   schemaPath: Code
@@ -27,11 +26,6 @@
   allErrors?: boolean
 }
 
-export enum Type {
-  Num,
-  Str,
-}
-
 export type SubschemaArgs = Partial<{
   keyword: string
   schemaProp: string | number
@@ -52,16 +46,7 @@
   allErrors: boolean
 }>
 
-export function applySubschema(it: SchemaObjCxt, appl: SubschemaArgs, valid: Name): SchemaCxt {
-  const subschema = getSubschema(it, appl)
-  extendSubschemaData(subschema, it, appl)
-  extendSubschemaMode(subschema, appl)
-  const nextContext = {...it, ...subschema, items: undefined, props: undefined}
-  subschemaCode(nextContext, valid)
-  return nextContext
-}
-
-function getSubschema(
+export function getSubschema(
   it: SchemaObjCxt,
   {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs
 ): SubschemaContext {
@@ -99,7 +84,7 @@
   throw new Error('either "keyword" or "schema" must be passed')
 }
 
-function extendSubschemaData(
+export function extendSubschemaData(
   subschema: SubschemaContext,
   it: SchemaObjCxt,
   {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs
@@ -138,7 +123,7 @@
   }
 }
 
-function extendSubschemaMode(
+export function extendSubschemaMode(
   subschema: SubschemaContext,
   {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs
 ): void {
@@ -148,22 +133,3 @@
   subschema.jtdDiscriminator = jtdDiscriminator // not inherited
   subschema.jtdMetadata = jtdMetadata // not inherited
 }
-
-function getErrorPath(
-  dataProp: Name | string | number,
-  dataPropType?: Type,
-  jsPropertySyntax?: boolean
-): Code | string {
-  // let path
-  if (dataProp instanceof Name) {
-    const isNumber = dataPropType === Type.Num
-    return jsPropertySyntax
-      ? isNumber
-        ? _`"[" + ${dataProp} + "]"`
-        : _`"['" + ${dataProp} + "']"`
-      : isNumber
-      ? _`"/" + ${dataProp}`
-      : _`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")` // TODO maybe use global escapePointer
-  }
-  return jsPropertySyntax ? getProperty(dataProp).toString() : "/" + escapeJsonPointer(dataProp)
-}
diff --git a/node_modules/table/node_modules/ajv/lib/core.ts b/node_modules/table/node_modules/ajv/lib/core.ts
index d858445..2089216 100644
--- a/node_modules/table/node_modules/ajv/lib/core.ts
+++ b/node_modules/table/node_modules/ajv/lib/core.ts
@@ -26,12 +26,11 @@
   [prop: string]: any
 }
 
-import KeywordCxt from "./compile/context"
-export {KeywordCxt}
+export {KeywordCxt} from "./compile/validate"
 export {DefinedError} from "./vocabularies/errors"
 export {JSONType} from "./compile/rules"
 export {JSONSchemaType} from "./types/json-schema"
-export {JTDSchemaType} from "./types/jtd-schema"
+export {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from "./types/jtd-schema"
 export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
 
 import type {
@@ -51,8 +50,9 @@
   AddedFormat,
 } from "./types"
 import type {JSONSchemaType} from "./types/json-schema"
-import type {JTDSchemaType} from "./types/jtd-schema"
-import {ValidationError, MissingRefError} from "./compile/error_classes"
+import type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from "./types/jtd-schema"
+import ValidationError from "./runtime/validation_error"
+import MissingRefError from "./compile/ref_error"
 import {getRules, ValidationRules, Rule, RuleGroup, JSONType} from "./compile/rules"
 import {SchemaEnv, compileSchema, resolveSchema} from "./compile"
 import {Code, ValueScope} from "./compile/codegen"
@@ -84,6 +84,8 @@
 export interface CurrentOptions {
   // strict mode options (NEW)
   strict?: boolean | "log"
+  strictSchema?: boolean | "log"
+  strictNumbers?: boolean | "log"
   strictTypes?: boolean | "log"
   strictTuples?: boolean | "log"
   strictRequired?: boolean | "log"
@@ -94,6 +96,8 @@
   $data?: boolean
   allErrors?: boolean
   verbose?: boolean
+  discriminator?: boolean
+  unicodeRegExp?: boolean
   $comment?:
     | true
     | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)
@@ -111,6 +115,8 @@
   unevaluated?: boolean // NEW
   dynamicRef?: boolean // NEW
   jtd?: boolean // NEW
+  /** (JTD only) Accepted Javascript types for `timestamp` type */
+  timestamp?: "string" | "date"
   meta?: SchemaObject | boolean
   defaultMeta?: string | AnySchemaObject
   validateSchema?: boolean | "log"
@@ -123,7 +129,6 @@
   multipleOfPrecision?: number
   messages?: boolean
   code?: CodeOptions // NEW
-  ajvErrors?: boolean
 }
 
 export interface CodeOptions {
@@ -160,11 +165,11 @@
   schemaId?: string
   strictDefaults?: boolean
   strictKeywords?: boolean
-  strictNumbers?: boolean
   uniqueItems?: boolean
   unknownFormats?: true | string[] | "ignore"
   cache?: any
   serialize?: (schema: AnySchema) => unknown
+  ajvErrors?: boolean
 }
 
 type OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {
@@ -180,14 +185,14 @@
   missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.",
   processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`",
   sourceCode: "Use option `code: {source: true}`",
-  schemaId: "JSON Schema draft-04 is not supported in Ajv v7.",
+  schemaId: "JSON Schema draft-04 is not supported in Ajv v7/8.",
   strictDefaults: "It is default now, see option `strict`.",
   strictKeywords: "It is default now, see option `strict`.",
-  strictNumbers: "It is default now, see option `strict`.",
   uniqueItems: '"uniqueItems" keyword is always validated.',
   unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",
   cache: "Map is used as cache, schema object as key.",
   serialize: "Map is used as cache, schema object as key.",
+  ajvErrors: "It is default now, see option `strict`.",
 }
 
 const deprecatedOptions: OptionsInfo<DeprecatedOptions> = {
@@ -198,9 +203,11 @@
 
 type RequiredInstanceOptions = {
   [K in
-    | "strict"
+    | "strictSchema"
+    | "strictNumbers"
     | "strictTypes"
     | "strictTuples"
+    | "strictRequired"
     | "inlineRefs"
     | "loopRequired"
     | "loopEnum"
@@ -208,29 +215,35 @@
     | "messages"
     | "addUsedSchema"
     | "validateSchema"
-    | "validateFormats"]: NonNullable<Options[K]>
+    | "validateFormats"
+    | "unicodeRegExp"]: NonNullable<Options[K]>
 } & {code: InstanceCodeOptions}
 
 export type InstanceOptions = Options & RequiredInstanceOptions
 
+const MAX_EXPRESSION = 200
+
+// eslint-disable-next-line complexity
 function requiredOptions(o: Options): RequiredInstanceOptions {
-  const strict = o.strict ?? true
-  const strictLog = strict ? "log" : false
+  const s = o.strict
   const _optz = o.code?.optimize
   const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0
   return {
-    strict,
-    strictTypes: o.strictTypes ?? strictLog,
-    strictTuples: o.strictTuples ?? strictLog,
+    strictSchema: o.strictSchema ?? s ?? true,
+    strictNumbers: o.strictNumbers ?? s ?? true,
+    strictTypes: o.strictTypes ?? s ?? "log",
+    strictTuples: o.strictTuples ?? s ?? "log",
+    strictRequired: o.strictRequired ?? s ?? false,
     code: o.code ? {...o.code, optimize} : {optimize},
-    loopRequired: o.loopRequired ?? Infinity,
-    loopEnum: o.loopEnum ?? Infinity,
+    loopRequired: o.loopRequired ?? MAX_EXPRESSION,
+    loopEnum: o.loopEnum ?? MAX_EXPRESSION,
     meta: o.meta ?? true,
     messages: o.messages ?? true,
     inlineRefs: o.inlineRefs ?? true,
     addUsedSchema: o.addUsedSchema ?? true,
     validateSchema: o.validateSchema ?? true,
     validateFormats: o.validateFormats ?? true,
+    unicodeRegExp: o.unicodeRegExp ?? true,
   }
 }
 
@@ -302,6 +315,12 @@
   // Separated for type inference to work
   // eslint-disable-next-line @typescript-eslint/unified-signatures
   validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T
+  // This overload is only intended for typescript inference, the first
+  // argument prevents manual type annotation from matching this overload
+  validate<N extends never, T extends SomeJTDSchemaType>(
+    schema: T,
+    data: unknown
+  ): data is JTDDataType<T>
   validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>
   validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>
   validate<T>(
@@ -327,6 +346,12 @@
   // Separated for type inference to work
   // eslint-disable-next-line @typescript-eslint/unified-signatures
   compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>
+  // This overload is only intended for typescript inference, the first
+  // argument prevents manual type annotation from matching this overload
+  compile<N extends never, T extends SomeJTDSchemaType>(
+    schema: T,
+    _meta?: boolean
+  ): ValidateFunction<JTDDataType<T>>
   compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>
   compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>
   compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {
@@ -425,11 +450,11 @@
     let id: string | undefined
     if (typeof schema === "object") {
       id = schema.$id
-      if (id !== undefined && typeof id != "string") throw new Error("schema id must be string")
+      if (id !== undefined && typeof id != "string") throw new Error("schema $id must be string")
     }
     key = normalizeId(key || id)
     this._checkUnique(key)
-    this.schemas[key] = this._addSchema(schema, _meta, _validateSchema, true)
+    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)
     return this
   }
 
@@ -598,7 +623,7 @@
   ): string {
     if (!errors || errors.length === 0) return "No errors"
     return errors
-      .map((e) => `${dataVar}${e.dataPath} ${e.message}`)
+      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)
       .reduce((text, msg) => text + separator + msg)
   }
 
@@ -639,10 +664,14 @@
   _addSchema(
     schema: AnySchema,
     meta?: boolean,
+    baseId?: string,
     validateSchema = this.opts.validateSchema,
     addSchema = this.opts.addUsedSchema
   ): SchemaEnv {
-    if (typeof schema != "object") {
+    let id: string | undefined
+    if (typeof schema == "object") {
+      id = schema.$id
+    } else {
       if (this.opts.jtd) throw new Error("schema must be object")
       else if (typeof schema != "boolean") throw new Error("schema must be object or boolean")
     }
@@ -650,13 +679,13 @@
     if (sch !== undefined) return sch
 
     const localRefs = getSchemaRefs.call(this, schema)
-    sch = new SchemaEnv({schema, meta, localRefs})
+    baseId = normalizeId(id || baseId)
+    sch = new SchemaEnv({schema, meta, baseId, localRefs})
     this._cache.set(sch.schema, sch)
-    const id = sch.baseId
-    if (addSchema && !id.startsWith("#")) {
+    if (addSchema && !baseId.startsWith("#")) {
       // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)
-      if (id) this._checkUnique(id)
-      this.refs[id] = sch
+      if (baseId) this._checkUnique(baseId)
+      this.refs[baseId] = sch
     }
     if (validateSchema) this.validateSchema(schema, true)
     return sch
diff --git a/node_modules/table/node_modules/ajv/lib/jtd.ts b/node_modules/table/node_modules/ajv/lib/jtd.ts
index 0df1ce2..b53749b 100644
--- a/node_modules/table/node_modules/ajv/lib/jtd.ts
+++ b/node_modules/table/node_modules/ajv/lib/jtd.ts
@@ -1,35 +1,5 @@
-export {
-  Format,
-  FormatDefinition,
-  AsyncFormatDefinition,
-  KeywordDefinition,
-  KeywordErrorDefinition,
-  CodeKeywordDefinition,
-  MacroKeywordDefinition,
-  FuncKeywordDefinition,
-  Vocabulary,
-  Schema,
-  SchemaObject,
-  AnySchemaObject,
-  AsyncSchema,
-  AnySchema,
-  ValidateFunction,
-  AsyncValidateFunction,
-  ErrorObject,
-  ErrorNoParams,
-  JTDParser,
-} from "./types"
-
-export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
-export {SchemaCxt, SchemaObjCxt} from "./compile"
-import KeywordCxt from "./compile/context"
-export {KeywordCxt}
-// export {DefinedError} from "./vocabularies/errors"
-export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
-
 import type {AnySchemaObject, SchemaObject, JTDParser} from "./types"
-import type {JTDSchemaType, JTDDataType} from "./types/jtd-schema"
-export {JTDSchemaType, JTDDataType}
+import type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from "./types/jtd-schema"
 import AjvCore, {CurrentOptions} from "./core"
 import jtdVocabulary from "./vocabularies/jtd"
 import jtdMetaSchema from "./refs/jtd-schema"
@@ -37,20 +7,17 @@
 import compileParser from "./compile/jtd/parse"
 import {SchemaEnv} from "./compile"
 
-// const META_SUPPORT_DATA = ["/properties"]
-
 const META_SCHEMA_ID = "JTD-meta-schema"
 
-export type JTDOptions = CurrentOptions & {
+type JTDOptions = CurrentOptions & {
   // strict mode options not supported with JTD:
-  strictTypes?: never
-  strictTuples?: never
+  strict?: never
   allowMatchingProperties?: never
   allowUnionTypes?: never
   validateFormats?: never
   // validation and reporting options not supported with JTD:
   $data?: never
-  verbose?: never
+  verbose?: boolean
   $comment?: never
   formats?: never
   loadSchema?: never
@@ -66,15 +33,13 @@
   inlineRefs?: boolean
   loopRequired?: never
   multipleOfPrecision?: never
-  ajvErrors?: boolean
 }
 
-export default class Ajv extends AjvCore {
+class Ajv extends AjvCore {
   constructor(opts: JTDOptions = {}) {
     super({
       ...opts,
       jtd: true,
-      messages: opts.messages ?? false,
     })
   }
 
@@ -126,3 +91,39 @@
     return sch.parse
   }
 }
+
+module.exports = exports = Ajv
+Object.defineProperty(exports, "__esModule", {value: true})
+
+export default Ajv
+
+export {
+  Format,
+  FormatDefinition,
+  AsyncFormatDefinition,
+  KeywordDefinition,
+  KeywordErrorDefinition,
+  CodeKeywordDefinition,
+  MacroKeywordDefinition,
+  FuncKeywordDefinition,
+  Vocabulary,
+  Schema,
+  SchemaObject,
+  AnySchemaObject,
+  AsyncSchema,
+  AnySchema,
+  ValidateFunction,
+  AsyncValidateFunction,
+  ErrorObject,
+  ErrorNoParams,
+  JTDParser,
+} from "./types"
+
+export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
+export {SchemaCxt, SchemaObjCxt} from "./compile"
+export {KeywordCxt} from "./compile/validate"
+export {JTDErrorObject} from "./vocabularies/jtd"
+export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
+
+export {JTDSchemaType, SomeJTDSchemaType, JTDDataType}
+export {JTDOptions}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts
index 8407044..b6ea719 100644
--- a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts
@@ -1,24 +1,24 @@
 import type Ajv from "../../core"
 import type {AnySchemaObject} from "../../types"
 import * as metaSchema from "./schema.json"
-import * as metaApplicator from "./meta/applicator.json"
-import * as metaContent from "./meta/content.json"
-import * as metaCore from "./meta/core.json"
-import * as metaFormat from "./meta/format.json"
-import * as metaMetadata from "./meta/meta-data.json"
-import * as metaValidation from "./meta/validation.json"
+import * as applicator from "./meta/applicator.json"
+import * as content from "./meta/content.json"
+import * as core from "./meta/core.json"
+import * as format from "./meta/format.json"
+import * as metadata from "./meta/meta-data.json"
+import * as validation from "./meta/validation.json"
 
 const META_SUPPORT_DATA = ["/properties"]
 
 export default function addMetaSchema2019(this: Ajv, $data?: boolean): Ajv {
   ;[
     metaSchema,
-    metaApplicator,
-    metaContent,
-    metaCore,
-    with$data(this, metaFormat),
-    metaMetadata,
-    with$data(this, metaValidation),
+    applicator,
+    content,
+    core,
+    with$data(this, format),
+    metadata,
+    with$data(this, validation),
   ].forEach((sch) => this.addMetaSchema(sch, undefined, false))
   return this
 
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts
new file mode 100644
index 0000000..8e850d0
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts
@@ -0,0 +1,30 @@
+import type Ajv from "../../core"
+import type {AnySchemaObject} from "../../types"
+import * as metaSchema from "./schema.json"
+import * as applicator from "./meta/applicator.json"
+import * as unevaluated from "./meta/unevaluated.json"
+import * as content from "./meta/content.json"
+import * as core from "./meta/core.json"
+import * as format from "./meta/format-annotation.json"
+import * as metadata from "./meta/meta-data.json"
+import * as validation from "./meta/validation.json"
+
+const META_SUPPORT_DATA = ["/properties"]
+
+export default function addMetaSchema2020(this: Ajv, $data?: boolean): Ajv {
+  ;[
+    metaSchema,
+    applicator,
+    unevaluated,
+    content,
+    core,
+    with$data(this, format),
+    metadata,
+    with$data(this, validation),
+  ].forEach((sch) => this.addMetaSchema(sch, undefined, false))
+  return this
+
+  function with$data(ajv: Ajv, sch: AnySchemaObject): AnySchemaObject {
+    return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json
new file mode 100644
index 0000000..674c913
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json
@@ -0,0 +1,48 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/applicator",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/applicator": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Applicator vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "prefixItems": {"$ref": "#/$defs/schemaArray"},
+    "items": {"$dynamicRef": "#meta"},
+    "contains": {"$dynamicRef": "#meta"},
+    "additionalProperties": {"$dynamicRef": "#meta"},
+    "properties": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "default": {}
+    },
+    "patternProperties": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "propertyNames": {"format": "regex"},
+      "default": {}
+    },
+    "dependentSchemas": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "default": {}
+    },
+    "propertyNames": {"$dynamicRef": "#meta"},
+    "if": {"$dynamicRef": "#meta"},
+    "then": {"$dynamicRef": "#meta"},
+    "else": {"$dynamicRef": "#meta"},
+    "allOf": {"$ref": "#/$defs/schemaArray"},
+    "anyOf": {"$ref": "#/$defs/schemaArray"},
+    "oneOf": {"$ref": "#/$defs/schemaArray"},
+    "not": {"$dynamicRef": "#meta"}
+  },
+  "$defs": {
+    "schemaArray": {
+      "type": "array",
+      "minItems": 1,
+      "items": {"$dynamicRef": "#meta"}
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json
new file mode 100644
index 0000000..2ae23dd
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json
@@ -0,0 +1,17 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/content",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/content": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Content vocabulary meta-schema",
+
+  "type": ["object", "boolean"],
+  "properties": {
+    "contentEncoding": {"type": "string"},
+    "contentMediaType": {"type": "string"},
+    "contentSchema": {"$dynamicRef": "#meta"}
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json
new file mode 100644
index 0000000..4c8e5cb
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json
@@ -0,0 +1,51 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/core",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/core": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Core vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "$id": {
+      "$ref": "#/$defs/uriReferenceString",
+      "$comment": "Non-empty fragments not allowed.",
+      "pattern": "^[^#]*#?$"
+    },
+    "$schema": {"$ref": "#/$defs/uriString"},
+    "$ref": {"$ref": "#/$defs/uriReferenceString"},
+    "$anchor": {"$ref": "#/$defs/anchorString"},
+    "$dynamicRef": {"$ref": "#/$defs/uriReferenceString"},
+    "$dynamicAnchor": {"$ref": "#/$defs/anchorString"},
+    "$vocabulary": {
+      "type": "object",
+      "propertyNames": {"$ref": "#/$defs/uriString"},
+      "additionalProperties": {
+        "type": "boolean"
+      }
+    },
+    "$comment": {
+      "type": "string"
+    },
+    "$defs": {
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"}
+    }
+  },
+  "$defs": {
+    "anchorString": {
+      "type": "string",
+      "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
+    },
+    "uriString": {
+      "type": "string",
+      "format": "uri"
+    },
+    "uriReferenceString": {
+      "type": "string",
+      "format": "uri-reference"
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json
new file mode 100644
index 0000000..83c26e3
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json
@@ -0,0 +1,14 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/format-annotation": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Format vocabulary meta-schema for annotation results",
+  "type": ["object", "boolean"],
+  "properties": {
+    "format": {"type": "string"}
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json
new file mode 100644
index 0000000..11946fb
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json
@@ -0,0 +1,37 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/meta-data": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Meta-data vocabulary meta-schema",
+
+  "type": ["object", "boolean"],
+  "properties": {
+    "title": {
+      "type": "string"
+    },
+    "description": {
+      "type": "string"
+    },
+    "default": true,
+    "deprecated": {
+      "type": "boolean",
+      "default": false
+    },
+    "readOnly": {
+      "type": "boolean",
+      "default": false
+    },
+    "writeOnly": {
+      "type": "boolean",
+      "default": false
+    },
+    "examples": {
+      "type": "array",
+      "items": true
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json
new file mode 100644
index 0000000..5e4b203
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json
@@ -0,0 +1,15 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/unevaluated": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Unevaluated applicator vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "unevaluatedItems": {"$dynamicRef": "#meta"},
+    "unevaluatedProperties": {"$dynamicRef": "#meta"}
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json
new file mode 100644
index 0000000..e0ae13d
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json
@@ -0,0 +1,90 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/meta/validation",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/validation": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Validation vocabulary meta-schema",
+  "type": ["object", "boolean"],
+  "properties": {
+    "type": {
+      "anyOf": [
+        {"$ref": "#/$defs/simpleTypes"},
+        {
+          "type": "array",
+          "items": {"$ref": "#/$defs/simpleTypes"},
+          "minItems": 1,
+          "uniqueItems": true
+        }
+      ]
+    },
+    "const": true,
+    "enum": {
+      "type": "array",
+      "items": true
+    },
+    "multipleOf": {
+      "type": "number",
+      "exclusiveMinimum": 0
+    },
+    "maximum": {
+      "type": "number"
+    },
+    "exclusiveMaximum": {
+      "type": "number"
+    },
+    "minimum": {
+      "type": "number"
+    },
+    "exclusiveMinimum": {
+      "type": "number"
+    },
+    "maxLength": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minLength": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
+    "pattern": {
+      "type": "string",
+      "format": "regex"
+    },
+    "maxItems": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minItems": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
+    "uniqueItems": {
+      "type": "boolean",
+      "default": false
+    },
+    "maxContains": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minContains": {
+      "$ref": "#/$defs/nonNegativeInteger",
+      "default": 1
+    },
+    "maxProperties": {"$ref": "#/$defs/nonNegativeInteger"},
+    "minProperties": {"$ref": "#/$defs/nonNegativeIntegerDefault0"},
+    "required": {"$ref": "#/$defs/stringArray"},
+    "dependentRequired": {
+      "type": "object",
+      "additionalProperties": {
+        "$ref": "#/$defs/stringArray"
+      }
+    }
+  },
+  "$defs": {
+    "nonNegativeInteger": {
+      "type": "integer",
+      "minimum": 0
+    },
+    "nonNegativeIntegerDefault0": {
+      "$ref": "#/$defs/nonNegativeInteger",
+      "default": 0
+    },
+    "simpleTypes": {
+      "enum": ["array", "boolean", "integer", "null", "number", "object", "string"]
+    },
+    "stringArray": {
+      "type": "array",
+      "items": {"type": "string"},
+      "uniqueItems": true,
+      "default": []
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json
new file mode 100644
index 0000000..1c68270
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json
@@ -0,0 +1,55 @@
+{
+  "$schema": "https://json-schema.org/draft/2020-12/schema",
+  "$id": "https://json-schema.org/draft/2020-12/schema",
+  "$vocabulary": {
+    "https://json-schema.org/draft/2020-12/vocab/core": true,
+    "https://json-schema.org/draft/2020-12/vocab/applicator": true,
+    "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
+    "https://json-schema.org/draft/2020-12/vocab/validation": true,
+    "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
+    "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
+    "https://json-schema.org/draft/2020-12/vocab/content": true
+  },
+  "$dynamicAnchor": "meta",
+
+  "title": "Core and Validation specifications meta-schema",
+  "allOf": [
+    {"$ref": "meta/core"},
+    {"$ref": "meta/applicator"},
+    {"$ref": "meta/unevaluated"},
+    {"$ref": "meta/validation"},
+    {"$ref": "meta/meta-data"},
+    {"$ref": "meta/format-annotation"},
+    {"$ref": "meta/content"}
+  ],
+  "type": ["object", "boolean"],
+  "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
+  "properties": {
+    "definitions": {
+      "$comment": "\"definitions\" has been replaced by \"$defs\".",
+      "type": "object",
+      "additionalProperties": {"$dynamicRef": "#meta"},
+      "deprecated": true,
+      "default": {}
+    },
+    "dependencies": {
+      "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
+      "type": "object",
+      "additionalProperties": {
+        "anyOf": [{"$dynamicRef": "#meta"}, {"$ref": "meta/validation#/$defs/stringArray"}]
+      },
+      "deprecated": true,
+      "default": {}
+    },
+    "$recursiveAnchor": {
+      "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
+      "$ref": "meta/core#/$defs/anchorString",
+      "deprecated": true
+    },
+    "$recursiveRef": {
+      "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
+      "$ref": "meta/core#/$defs/uriReferenceString",
+      "deprecated": true
+    }
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/runtime/equal.ts b/node_modules/table/node_modules/ajv/lib/runtime/equal.ts
new file mode 100644
index 0000000..3cb0063
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/runtime/equal.ts
@@ -0,0 +1,7 @@
+// https://github.com/ajv-validator/ajv/issues/889
+import * as equal from "fast-deep-equal"
+
+type Equal = typeof equal & {code: string}
+;(equal as Equal).code = 'require("ajv/dist/runtime/equal").default'
+
+export default equal as Equal
diff --git a/node_modules/table/node_modules/ajv/lib/runtime/parseJson.ts b/node_modules/table/node_modules/ajv/lib/runtime/parseJson.ts
index ba222c0..dc23b9e 100644
--- a/node_modules/table/node_modules/ajv/lib/runtime/parseJson.ts
+++ b/node_modules/table/node_modules/ajv/lib/runtime/parseJson.ts
@@ -1,5 +1,3 @@
-import {_} from "../compile/codegen"
-
 const rxParseJson = /position\s(\d+)$/
 
 export function parseJson(s: string, pos: number): unknown {
@@ -31,7 +29,7 @@
 
 parseJson.message = undefined as string | undefined
 parseJson.position = 0 as number
-parseJson.code = _`require("ajv/dist/runtime/parseJson").parseJson`
+parseJson.code = 'require("ajv/dist/runtime/parseJson").parseJson'
 
 export function parseJsonNumber(s: string, pos: number, maxDigits?: number): number | undefined {
   let numStr = ""
@@ -95,7 +93,7 @@
 
 parseJsonNumber.message = undefined as string | undefined
 parseJsonNumber.position = 0 as number
-parseJsonNumber.code = _`require("ajv/dist/runtime/parseJson").parseJsonNumber`
+parseJsonNumber.code = 'require("ajv/dist/runtime/parseJson").parseJsonNumber'
 
 const escapedChars: {[X in string]?: string} = {
   b: "\b",
@@ -172,4 +170,4 @@
 
 parseJsonString.message = undefined as string | undefined
 parseJsonString.position = 0 as number
-parseJsonString.code = _`require("ajv/dist/runtime/parseJson").parseJsonString`
+parseJsonString.code = 'require("ajv/dist/runtime/parseJson").parseJsonString'
diff --git a/node_modules/table/node_modules/ajv/lib/runtime/quote.ts b/node_modules/table/node_modules/ajv/lib/runtime/quote.ts
index c3309a0..68b0652 100644
--- a/node_modules/table/node_modules/ajv/lib/runtime/quote.ts
+++ b/node_modules/table/node_modules/ajv/lib/runtime/quote.ts
@@ -26,3 +26,5 @@
     '"'
   )
 }
+
+quote.code = 'require("ajv/dist/runtime/quote").default'
diff --git a/node_modules/table/node_modules/ajv/lib/compile/timestamp.ts b/node_modules/table/node_modules/ajv/lib/runtime/timestamp.ts
similarity index 90%
rename from node_modules/table/node_modules/ajv/lib/compile/timestamp.ts
rename to node_modules/table/node_modules/ajv/lib/runtime/timestamp.ts
index 0a16954..fed0e3b 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/timestamp.ts
+++ b/node_modules/table/node_modules/ajv/lib/runtime/timestamp.ts
@@ -1,5 +1,3 @@
-import {_} from "./codegen"
-
 const DATE_TIME = /^(\d\d\d\d)-(\d\d)-(\d\d)(?:t|\s)(\d\d):(\d\d):(\d\d)(?:\.\d+)?(?:z|([+-]\d\d)(?::?(\d\d))?)$/i
 const DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 
@@ -28,4 +26,4 @@
   )
 }
 
-validTimestamp.code = _`require("ajv/dist/compile/timestamp").default`
+validTimestamp.code = 'require("ajv/dist/runtime/timestamp").default'
diff --git a/node_modules/table/node_modules/ajv/lib/compile/ucs2length.ts b/node_modules/table/node_modules/ajv/lib/runtime/ucs2length.ts
similarity index 88%
rename from node_modules/table/node_modules/ajv/lib/compile/ucs2length.ts
rename to node_modules/table/node_modules/ajv/lib/runtime/ucs2length.ts
index cf424e9..47d8292 100644
--- a/node_modules/table/node_modules/ajv/lib/compile/ucs2length.ts
+++ b/node_modules/table/node_modules/ajv/lib/runtime/ucs2length.ts
@@ -16,3 +16,5 @@
   }
   return length
 }
+
+ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default'
diff --git a/node_modules/table/node_modules/ajv/lib/runtime/validation_error.ts b/node_modules/table/node_modules/ajv/lib/runtime/validation_error.ts
new file mode 100644
index 0000000..2d19a46
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/runtime/validation_error.ts
@@ -0,0 +1,13 @@
+import type {ErrorObject} from "../types"
+
+export default class ValidationError extends Error {
+  readonly errors: Partial<ErrorObject>[]
+  readonly ajv: true
+  readonly validation: true
+
+  constructor(errors: Partial<ErrorObject>[]) {
+    super("validation failed")
+    this.errors = errors
+    this.ajv = this.validation = true
+  }
+}
diff --git a/node_modules/table/node_modules/ajv/lib/types/index.ts b/node_modules/table/node_modules/ajv/lib/types/index.ts
index 7aa1c32..2dac604 100644
--- a/node_modules/table/node_modules/ajv/lib/types/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/types/index.ts
@@ -1,7 +1,7 @@
 import type {CodeGen, Code, Name, ScopeValueSets, ValueScopeName} from "../compile/codegen"
 import type {SchemaEnv, SchemaCxt, SchemaObjCxt} from "../compile"
 import type {JSONType} from "../compile/rules"
-import type KeywordCxt from "../compile/context"
+import type {KeywordCxt} from "../compile/validate"
 import type Ajv from "../core"
 
 interface _SchemaObject {
@@ -37,7 +37,7 @@
 }
 
 export interface DataValidationCxt<T extends string | number = string | number> {
-  dataPath: string
+  instancePath: string
   parentData: {[K in T]: any} // object or array
   parentDataProperty: T // string or number
   rootData: Record<string, any> | any[]
@@ -81,8 +81,7 @@
 
 export interface ErrorObject<K extends string = string, P = Record<string, any>, S = unknown> {
   keyword: K
-  dataPath: string
-  instancePath?: string
+  instancePath: string
   schemaPath: string
   params: P
   // Added to validation errors of "propertyNames" keyword schema
@@ -168,7 +167,7 @@
 }
 
 export interface KeywordErrorDefinition {
-  message: string | Code | ((cxt: KeywordErrorCxt) => Code)
+  message: string | Code | ((cxt: KeywordErrorCxt) => string | Code)
   params?: Code | ((cxt: KeywordErrorCxt) => Code)
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/types/json-schema.ts b/node_modules/table/node_modules/ajv/lib/types/json-schema.ts
index f9b2267..24cce49 100644
--- a/node_modules/table/node_modules/ajv/lib/types/json-schema.ts
+++ b/node_modules/table/node_modules/ajv/lib/types/json-schema.ts
@@ -1,111 +1,171 @@
 /* eslint-disable @typescript-eslint/no-empty-interface */
-export type SomeJSONSchema = JSONSchemaType<Known, true>
+type StrictNullChecksWrapper<Name extends string, Type> = undefined extends null
+  ? `strictNullChecks must be true in tsconfig to use ${Name}`
+  : Type
 
-export type PartialSchema<T> = Partial<JSONSchemaType<T, true>>
+export type SomeJSONSchema = UncheckedJSONSchemaType<Known, true>
 
-type JSONType<T extends string, _partial extends boolean> = _partial extends true
+type UncheckedPartialSchema<T> = Partial<UncheckedJSONSchemaType<T, true>>
+
+export type PartialSchema<T> = StrictNullChecksWrapper<"PartialSchema", UncheckedPartialSchema<T>>
+
+type JSONType<T extends string, IsPartial extends boolean> = IsPartial extends true
   ? T | undefined
   : T
 
-export type JSONSchemaType<T, _partial extends boolean = false> = (T extends number
-  ? {
-      type: JSONType<"number" | "integer", _partial>
-      minimum?: number
-      maximum?: number
-      exclusiveMinimum?: number
-      exclusiveMaximum?: number
-      multipleOf?: number
-      format?: string
+interface NumberKeywords {
+  minimum?: number
+  maximum?: number
+  exclusiveMinimum?: number
+  exclusiveMaximum?: number
+  multipleOf?: number
+  format?: string
+}
+
+interface StringKeywords {
+  minLength?: number
+  maxLength?: number
+  pattern?: string
+  format?: string
+}
+
+type UncheckedJSONSchemaType<T, IsPartial extends boolean> = (
+  | // these two unions allow arbitrary unions of types
+  {
+      anyOf: readonly UncheckedJSONSchemaType<T, IsPartial>[]
     }
-  : T extends string
-  ? {
-      type: JSONType<"string", _partial>
-      minLength?: number
-      maxLength?: number
-      pattern?: string
-      format?: string
+  | {
+      oneOf: readonly UncheckedJSONSchemaType<T, IsPartial>[]
     }
-  : T extends boolean
-  ? {
-      type: "boolean"
-    }
-  : T extends [any, ...any[]]
-  ? {
-      // JSON AnySchema for tuple
-      type: JSONType<"array", _partial>
-      items: {
-        readonly [K in keyof T]-?: JSONSchemaType<T[K]> & Nullable<T[K]>
-      } & {length: T["length"]}
-      minItems: T["length"]
-    } & ({maxItems: T["length"]} | {additionalItems: false})
-  : T extends readonly any[]
-  ? {
-      type: JSONType<"array", _partial>
-      items: JSONSchemaType<T[0]>
-      contains?: PartialSchema<T[0]>
-      minItems?: number
-      maxItems?: number
-      minContains?: number
-      maxContains?: number
-      uniqueItems?: true
-      additionalItems?: never
-    }
-  : T extends Record<string, any>
-  ? {
-      // JSON AnySchema for records and dictionaries
-      // "required" is not optional because it is often forgotten
-      // "properties" are optional for more concise dictionary schemas
-      // "patternProperties" and can be only used with interfaces that have string index
-      type: JSONType<"object", _partial>
-      // "required" type does not guarantee that all required properties are listed
-      // it only asserts that optional cannot be listed
-      required: _partial extends true ? Readonly<(keyof T)[]> : Readonly<RequiredMembers<T>[]>
-      additionalProperties?: boolean | JSONSchemaType<T[string]>
-      unevaluatedProperties?: boolean | JSONSchemaType<T[string]>
-      properties?: _partial extends true ? Partial<PropertiesSchema<T>> : PropertiesSchema<T>
-      patternProperties?: {[Pattern in string]?: JSONSchemaType<T[string]>}
-      propertyNames?: JSONSchemaType<string>
-      dependencies?: {[K in keyof T]?: Readonly<(keyof T)[]> | PartialSchema<T>}
-      dependentRequired?: {[K in keyof T]?: Readonly<(keyof T)[]>}
-      dependentSchemas?: {[K in keyof T]?: PartialSchema<T>}
-      minProperties?: number
-      maxProperties?: number
-    }
-  : T extends null
-  ? {
-      nullable: true
-    }
-  : never) & {
+  // this union allows for { type: (primitive)[] } style schemas
+  | ({
+      type: (T extends number
+        ? JSONType<"number" | "integer", IsPartial>
+        : T extends string
+        ? JSONType<"string", IsPartial>
+        : T extends boolean
+        ? JSONType<"boolean", IsPartial>
+        : never)[]
+    } & (T extends number
+      ? NumberKeywords
+      : T extends string
+      ? StringKeywords
+      : T extends boolean
+      ? unknown
+      : never))
+  // this covers "normal" types; it's last so typescript looks to it first for errors
+  | ((T extends number
+      ? {
+          type: JSONType<"number" | "integer", IsPartial>
+        } & NumberKeywords
+      : T extends string
+      ? {
+          type: JSONType<"string", IsPartial>
+        } & StringKeywords
+      : T extends boolean
+      ? {
+          type: "boolean"
+        }
+      : T extends [any, ...any[]]
+      ? {
+          // JSON AnySchema for tuple
+          type: JSONType<"array", IsPartial>
+          items: {
+            readonly [K in keyof T]-?: UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>
+          } & {length: T["length"]}
+          minItems: T["length"]
+        } & ({maxItems: T["length"]} | {additionalItems: false})
+      : T extends readonly any[]
+      ? {
+          type: JSONType<"array", IsPartial>
+          items: UncheckedJSONSchemaType<T[0], false>
+          contains?: UncheckedPartialSchema<T[0]>
+          minItems?: number
+          maxItems?: number
+          minContains?: number
+          maxContains?: number
+          uniqueItems?: true
+          additionalItems?: never
+        }
+      : T extends Record<string, any>
+      ? {
+          // JSON AnySchema for records and dictionaries
+          // "required" is not optional because it is often forgotten
+          // "properties" are optional for more concise dictionary schemas
+          // "patternProperties" and can be only used with interfaces that have string index
+          type: JSONType<"object", IsPartial>
+          additionalProperties?: boolean | UncheckedJSONSchemaType<T[string], false>
+          unevaluatedProperties?: boolean | UncheckedJSONSchemaType<T[string], false>
+          properties?: IsPartial extends true
+            ? Partial<UncheckedPropertiesSchema<T>>
+            : UncheckedPropertiesSchema<T>
+          patternProperties?: {[Pattern in string]?: UncheckedJSONSchemaType<T[string], false>}
+          propertyNames?: Omit<UncheckedJSONSchemaType<string, false>, "type"> & {type?: "string"}
+          dependencies?: {[K in keyof T]?: Readonly<(keyof T)[]> | UncheckedPartialSchema<T>}
+          dependentRequired?: {[K in keyof T]?: Readonly<(keyof T)[]>}
+          dependentSchemas?: {[K in keyof T]?: UncheckedPartialSchema<T>}
+          minProperties?: number
+          maxProperties?: number
+        } & (// "required" type does not guarantee that all required properties
+        // are listed it only asserts that optional cannot be listed.
+        // "required" is not necessary if it's a non-partial type with no required keys
+        IsPartial extends true
+          ? {required: Readonly<(keyof T)[]>}
+          : [UncheckedRequiredMembers<T>] extends [never]
+          ? {required?: Readonly<UncheckedRequiredMembers<T>[]>}
+          : {required: Readonly<UncheckedRequiredMembers<T>[]>})
+      : T extends null
+      ? {
+          nullable: true
+        }
+      : never) & {
+      allOf?: Readonly<UncheckedPartialSchema<T>[]>
+      anyOf?: Readonly<UncheckedPartialSchema<T>[]>
+      oneOf?: Readonly<UncheckedPartialSchema<T>[]>
+      if?: UncheckedPartialSchema<T>
+      then?: UncheckedPartialSchema<T>
+      else?: UncheckedPartialSchema<T>
+      not?: UncheckedPartialSchema<T>
+    })
+) & {
   [keyword: string]: any
   $id?: string
   $ref?: string
   $defs?: {
-    [Key in string]?: JSONSchemaType<Known, true>
+    [Key in string]?: UncheckedJSONSchemaType<Known, true>
   }
   definitions?: {
-    [Key in string]?: JSONSchemaType<Known, true>
+    [Key in string]?: UncheckedJSONSchemaType<Known, true>
   }
-  allOf?: Readonly<PartialSchema<T>[]>
-  anyOf?: Readonly<PartialSchema<T>[]>
-  oneOf?: Readonly<PartialSchema<T>[]>
-  if?: PartialSchema<T>
-  then?: PartialSchema<T>
-  else?: PartialSchema<T>
-  not?: PartialSchema<T>
 }
 
+export type JSONSchemaType<T> = StrictNullChecksWrapper<
+  "JSONSchemaType",
+  UncheckedJSONSchemaType<T, false>
+>
+
 type Known = KnownRecord | [Known, ...Known[]] | Known[] | number | string | boolean | null
 
 interface KnownRecord extends Record<string, Known> {}
 
-export type PropertiesSchema<T> = {
-  [K in keyof T]-?: (JSONSchemaType<T[K]> & Nullable<T[K]>) | {$ref: string}
+type UncheckedPropertiesSchema<T> = {
+  [K in keyof T]-?: (UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>) | {$ref: string}
 }
 
-export type RequiredMembers<T> = {
+export type PropertiesSchema<T> = StrictNullChecksWrapper<
+  "PropertiesSchema",
+  UncheckedPropertiesSchema<T>
+>
+
+type UncheckedRequiredMembers<T> = {
   [K in keyof T]-?: undefined extends T[K] ? never : K
 }[keyof T]
 
+export type RequiredMembers<T> = StrictNullChecksWrapper<
+  "RequiredMembers",
+  UncheckedRequiredMembers<T>
+>
+
 type Nullable<T> = undefined extends T
   ? {
       nullable: true
diff --git a/node_modules/table/node_modules/ajv/lib/types/jtd-schema.ts b/node_modules/table/node_modules/ajv/lib/types/jtd-schema.ts
index 82cca9e..c5d70ef 100644
--- a/node_modules/table/node_modules/ajv/lib/types/jtd-schema.ts
+++ b/node_modules/table/node_modules/ajv/lib/types/jtd-schema.ts
@@ -1,3 +1,45 @@
+/** numeric strings */
+type NumberType = "float32" | "float64" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32"
+
+/** string strings */
+type StringType = "string" | "timestamp"
+
+/** Generic JTD Schema without inference of the represented type */
+export type SomeJTDSchemaType = (
+  | // ref
+  {ref: string}
+  // primitives
+  | {type: NumberType | StringType | "boolean"}
+  // enum
+  | {enum: string[]}
+  // elements
+  | {elements: SomeJTDSchemaType}
+  // values
+  | {values: SomeJTDSchemaType}
+  // properties
+  | {
+      properties: Record<string, SomeJTDSchemaType>
+      optionalProperties?: Record<string, SomeJTDSchemaType>
+      additionalProperties?: boolean
+    }
+  | {
+      properties?: Record<string, SomeJTDSchemaType>
+      optionalProperties: Record<string, SomeJTDSchemaType>
+      additionalProperties?: boolean
+    }
+  // discriminator
+  | {discriminator: string; mapping: Record<string, SomeJTDSchemaType>}
+  // empty
+  // NOTE see the end of
+  // https://github.com/typescript-eslint/typescript-eslint/issues/2063#issuecomment-675156492
+  // eslint-disable-next-line @typescript-eslint/ban-types
+  | {}
+) & {
+  nullable?: boolean
+  metadata?: Record<string, unknown>
+  definitions?: Record<string, SomeJTDSchemaType>
+}
+
 /** required keys of an object, not undefined */
 type RequiredKeys<T> = {
   [K in keyof T]-?: undefined extends T[K] ? never : K
@@ -57,12 +99,6 @@
     : true
   : false
 
-/** numeric strings */
-type NumberType = "float32" | "float64" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32"
-
-/** string strings */
-type StringType = "string" | "timestamp"
-
 /** actual schema */
 export type JTDSchemaType<T, D extends Record<string, unknown> = Record<string, never>> = (
   | // refs - where null wasn't specified, must match exactly
@@ -109,7 +145,7 @@
       true extends IsValues<T>
       ? T extends Record<string, infer V>
         ? {
-            values: JTDSchemaType<V>
+            values: JTDSchemaType<V, D>
           }
         : never
       : // properties
@@ -164,10 +200,14 @@
 type JTDDataDef<S, D extends Record<string, unknown>> =
   | (// ref
     S extends {ref: string}
-      ? JTDDataDef<D[S["ref"]], D>
+      ? D extends {[K in S["ref"]]: infer V}
+        ? JTDDataDef<V, D>
+        : never
       : // type
       S extends {type: NumberType}
       ? number
+      : S extends {type: "boolean"}
+      ? boolean
       : S extends {type: "string"}
       ? string
       : S extends {type: "timestamp"}
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts
index 84ef161..755e5b3 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts
@@ -4,16 +4,14 @@
   KeywordErrorDefinition,
   AnySchema,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, not, Name} from "../../compile/codegen"
-import {Type} from "../../compile/subschema"
-import {alwaysValidSchema} from "../../compile/util"
-import {checkStrictMode} from "../../compile/validate"
+import {alwaysValidSchema, checkStrictMode, Type} from "../../compile/util"
 
 export type AdditionalItemsError = ErrorObject<"additionalItems", {limit: number}, AnySchema>
 
 const error: KeywordErrorDefinition = {
-  message: ({params: {len}}) => str`should NOT have more than ${len} items`,
+  message: ({params: {len}}) => str`must NOT have more than ${len} items`,
   params: ({params: {len}}) => _`{limit: ${len}}`,
 }
 
@@ -24,30 +22,35 @@
   before: "uniqueItems",
   error,
   code(cxt: KeywordCxt) {
-    const {gen, schema, parentSchema, data, it} = cxt
+    const {parentSchema, it} = cxt
     const {items} = parentSchema
     if (!Array.isArray(items)) {
       checkStrictMode(it, '"additionalItems" is ignored when "items" is not an array of schemas')
       return
     }
-    it.items = true
-    const len = gen.const("len", _`${data}.length`)
-    if (schema === false) {
-      cxt.setParams({len: items.length})
-      cxt.pass(_`${len} <= ${items.length}`)
-    } else if (typeof schema == "object" && !alwaysValidSchema(it, schema)) {
-      const valid = gen.var("valid", _`${len} <= ${items.length}`) // TODO var
-      gen.if(not(valid), () => validateItems(valid))
-      cxt.ok(valid)
-    }
-
-    function validateItems(valid: Name): void {
-      gen.forRange("i", items.length, len, (i) => {
-        cxt.subschema({keyword: "additionalItems", dataProp: i, dataPropType: Type.Num}, valid)
-        if (!it.allErrors) gen.if(not(valid), () => gen.break())
-      })
-    }
+    validateAdditionalItems(cxt, items)
   },
 }
 
+export function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {
+  const {gen, schema, data, keyword, it} = cxt
+  it.items = true
+  const len = gen.const("len", _`${data}.length`)
+  if (schema === false) {
+    cxt.setParams({len: items.length})
+    cxt.pass(_`${len} <= ${items.length}`)
+  } else if (typeof schema == "object" && !alwaysValidSchema(it, schema)) {
+    const valid = gen.var("valid", _`${len} <= ${items.length}`) // TODO var
+    gen.if(not(valid), () => validateItems(valid))
+    cxt.ok(valid)
+  }
+
+  function validateItems(valid: Name): void {
+    gen.forRange("i", items.length, len, (i) => {
+      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)
+      if (!it.allErrors) gen.if(not(valid), () => gen.break())
+    })
+  }
+}
+
 export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts
index b8bdb76..bfb511c 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts
@@ -8,8 +8,8 @@
 import {allSchemaProperties, usePattern, isOwnProperty} from "../code"
 import {_, nil, or, not, Code, Name} from "../../compile/codegen"
 import N from "../../compile/names"
-import {SubschemaArgs, Type} from "../../compile/subschema"
-import {alwaysValidSchema, schemaRefOrVal} from "../../compile/util"
+import type {SubschemaArgs} from "../../compile/validate/subschema"
+import {alwaysValidSchema, schemaRefOrVal, Type} from "../../compile/util"
 
 export type AdditionalPropertiesError = ErrorObject<
   "additionalProperties",
@@ -18,7 +18,7 @@
 >
 
 const error: KeywordErrorDefinition = {
-  message: "should NOT have additional properties",
+  message: "must NOT have additional properties",
   params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,
 }
 
@@ -60,7 +60,7 @@
         definedProp = nil
       }
       if (patProps.length) {
-        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(gen, p)}.test(${key})`))
+        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))
       }
       return not(definedProp)
     }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/allOf.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/allOf.ts
index ce8c078..cdfa86f 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/allOf.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/allOf.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition, AnySchema} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {alwaysValidSchema} from "../../compile/util"
 
 const def: CodeKeywordDefinition = {
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts
index 87153c6..bd331b5 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts
@@ -8,9 +8,7 @@
   schemaType: "array",
   trackErrors: true,
   code: validateUnion,
-  error: {
-    message: "should match some schema in anyOf",
-  },
+  error: {message: "must match a schema in anyOf"},
 }
 
 export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/contains.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/contains.ts
index f4b2f38..c91e8f5 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/contains.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/contains.ts
@@ -4,11 +4,9 @@
   ErrorObject,
   AnySchema,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, Name} from "../../compile/codegen"
-import {Type} from "../../compile/subschema"
-import {alwaysValidSchema} from "../../compile/util"
-import {checkStrictMode} from "../../compile/validate"
+import {alwaysValidSchema, checkStrictMode, Type} from "../../compile/util"
 
 export type ContainsError = ErrorObject<
   "contains",
@@ -19,8 +17,8 @@
 const error: KeywordErrorDefinition = {
   message: ({params: {min, max}}) =>
     max === undefined
-      ? str`should contain at least ${min} valid item(s)`
-      : str`should contain at least ${min} and no more than ${max} valid item(s)`,
+      ? str`must contain at least ${min} valid item(s)`
+      : str`must contain at least ${min} and no more than ${max} valid item(s)`,
   params: ({params: {min, max}}) =>
     max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,
 }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts
index 6d6436e..f676112 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts
@@ -5,7 +5,7 @@
   SchemaMap,
   AnySchema,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str} from "../../compile/codegen"
 import {alwaysValidSchema} from "../../compile/util"
 import {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from "../code"
@@ -30,7 +30,7 @@
 export const error: KeywordErrorDefinition = {
   message: ({params: {property, depsCount, deps}}) => {
     const property_ies = depsCount === 1 ? "property" : "properties"
-    return str`should have ${property_ies} ${deps} when property ${property} is present`
+    return str`must have ${property_ies} ${deps} when property ${property} is present`
   },
   params: ({params: {property, depsCount, deps, missingProperty}}) =>
     _`{property: ${property},
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/if.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/if.ts
index 02e9a4b..5a40d5e 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/if.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/if.ts
@@ -5,15 +5,14 @@
   AnySchema,
 } from "../../types"
 import type {SchemaObjCxt} from "../../compile"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, not, Name} from "../../compile/codegen"
-import {alwaysValidSchema} from "../../compile/util"
-import {checkStrictMode} from "../../compile/validate"
+import {alwaysValidSchema, checkStrictMode} from "../../compile/util"
 
 export type IfKeywordError = ErrorObject<"if", {failingKeyword: string}, AnySchema>
 
 const error: KeywordErrorDefinition = {
-  message: ({params}) => str`should match "${params.ifClause}" schema`,
+  message: ({params}) => str`must match "${params.ifClause}" schema`,
   params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/index.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/index.ts
index 1ccd6db..fc52716 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/index.ts
@@ -1,6 +1,8 @@
 import type {ErrorNoParams, Vocabulary} from "../../types"
 import additionalItems, {AdditionalItemsError} from "./additionalItems"
+import prefixItems from "./prefixItems"
 import items from "./items"
+import items2020, {ItemsError} from "./items2020"
 import contains, {ContainsError} from "./contains"
 import dependencies, {DependenciesError} from "./dependencies"
 import propertyNames, {PropertyNamesError} from "./propertyNames"
@@ -14,31 +16,33 @@
 import ifKeyword, {IfKeywordError} from "./if"
 import thenElse from "./thenElse"
 
-const applicator: Vocabulary = [
-  // any
-  notKeyword,
-  anyOf,
-  oneOf,
-  allOf,
-  ifKeyword,
-  thenElse,
+export default function getApplicator(draft2020 = false): Vocabulary {
+  const applicator = [
+    // any
+    notKeyword,
+    anyOf,
+    oneOf,
+    allOf,
+    ifKeyword,
+    thenElse,
+    // object
+    propertyNames,
+    additionalProperties,
+    dependencies,
+    properties,
+    patternProperties,
+  ]
   // array
-  additionalItems,
-  items,
-  contains,
-  // object
-  propertyNames,
-  additionalProperties,
-  dependencies,
-  properties,
-  patternProperties,
-]
-
-export default applicator
+  if (draft2020) applicator.push(prefixItems, items2020)
+  else applicator.push(additionalItems, items)
+  applicator.push(contains)
+  return applicator
+}
 
 export type ApplicatorKeywordError =
   | ErrorNoParams<"false schema">
   | AdditionalItemsError
+  | ItemsError
   | ContainsError
   | AdditionalPropertiesError
   | DependenciesError
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items.ts
index 9b46b46..033cb39 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items.ts
@@ -1,8 +1,7 @@
-import type {CodeKeywordDefinition, AnySchema} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
 import {_} from "../../compile/codegen"
-import {alwaysValidSchema, mergeEvaluated} from "../../compile/util"
-import {checkStrictMode} from "../../compile/validate"
+import {alwaysValidSchema, mergeEvaluated, checkStrictMode} from "../../compile/util"
 import {validateArray} from "../code"
 
 const def: CodeKeywordDefinition = {
@@ -11,46 +10,50 @@
   schemaType: ["object", "array", "boolean"],
   before: "uniqueItems",
   code(cxt: KeywordCxt) {
-    const {gen, schema, it} = cxt
-    if (Array.isArray(schema)) {
-      if (it.opts.unevaluated && schema.length && it.items !== true) {
-        it.items = mergeEvaluated.items(gen, schema.length, it.items)
-      }
-      validateTuple(schema)
-    } else {
-      it.items = true
-      if (alwaysValidSchema(it, schema)) return
-      cxt.ok(validateArray(cxt))
-    }
-
-    function validateTuple(schArr: AnySchema[]): void {
-      const {parentSchema, data} = cxt
-      if (it.opts.strictTuples && !fullTupleSchema(schArr.length, parentSchema)) {
-        const msg = `"items" is ${schArr.length}-tuple, but minItems or maxItems/additionalItems are not specified or different`
-        checkStrictMode(it, msg, it.opts.strictTuples)
-      }
-      const valid = gen.name("valid")
-      const len = gen.const("len", _`${data}.length`)
-      schArr.forEach((sch: AnySchema, i: number) => {
-        if (alwaysValidSchema(it, sch)) return
-        gen.if(_`${len} > ${i}`, () =>
-          cxt.subschema(
-            {
-              keyword: "items",
-              schemaProp: i,
-              dataProp: i,
-            },
-            valid
-          )
-        )
-        cxt.ok(valid)
-      })
-    }
+    const {schema, it} = cxt
+    if (Array.isArray(schema)) return validateTuple(cxt, "additionalItems", schema)
+    it.items = true
+    if (alwaysValidSchema(it, schema)) return
+    cxt.ok(validateArray(cxt))
   },
 }
 
-function fullTupleSchema(len: number, sch: any): boolean {
-  return len === sch.minItems && (len === sch.maxItems || sch.additionalItems === false)
+export function validateTuple(
+  cxt: KeywordCxt,
+  extraItems: string,
+  schArr: AnySchema[] = cxt.schema
+): void {
+  const {gen, parentSchema, data, keyword, it} = cxt
+  checkStrictTuple(parentSchema)
+  if (it.opts.unevaluated && schArr.length && it.items !== true) {
+    it.items = mergeEvaluated.items(gen, schArr.length, it.items)
+  }
+  const valid = gen.name("valid")
+  const len = gen.const("len", _`${data}.length`)
+  schArr.forEach((sch: AnySchema, i: number) => {
+    if (alwaysValidSchema(it, sch)) return
+    gen.if(_`${len} > ${i}`, () =>
+      cxt.subschema(
+        {
+          keyword,
+          schemaProp: i,
+          dataProp: i,
+        },
+        valid
+      )
+    )
+    cxt.ok(valid)
+  })
+
+  function checkStrictTuple(sch: AnySchemaObject): void {
+    const {opts, errSchemaPath} = it
+    const l = schArr.length
+    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)
+    if (opts.strictTuples && !fullTuple) {
+      const msg = `"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`
+      checkStrictMode(it, msg, opts.strictTuples)
+    }
+  }
 }
 
 export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items2020.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items2020.ts
new file mode 100644
index 0000000..2a99b08
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/items2020.ts
@@ -0,0 +1,36 @@
+import type {
+  CodeKeywordDefinition,
+  KeywordErrorDefinition,
+  ErrorObject,
+  AnySchema,
+} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, str} from "../../compile/codegen"
+import {alwaysValidSchema} from "../../compile/util"
+import {validateArray} from "../code"
+import {validateAdditionalItems} from "./additionalItems"
+
+export type ItemsError = ErrorObject<"items", {limit: number}, AnySchema>
+
+const error: KeywordErrorDefinition = {
+  message: ({params: {len}}) => str`must NOT have more than ${len} items`,
+  params: ({params: {len}}) => _`{limit: ${len}}`,
+}
+
+const def: CodeKeywordDefinition = {
+  keyword: "items",
+  type: "array",
+  schemaType: ["object", "boolean"],
+  before: "uniqueItems",
+  error,
+  code(cxt: KeywordCxt) {
+    const {schema, parentSchema, it} = cxt
+    const {prefixItems} = parentSchema
+    it.items = true
+    if (alwaysValidSchema(it, schema)) return
+    if (prefixItems) validateAdditionalItems(cxt, prefixItems)
+    else cxt.ok(validateArray(cxt))
+  },
+}
+
+export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/not.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/not.ts
index 3cec06e..8105a48 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/not.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/not.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {alwaysValidSchema} from "../../compile/util"
 
 export type NotKeywordError = ErrorNoParams<"not", AnySchema>
@@ -32,9 +32,7 @@
       () => cxt.reset()
     )
   },
-  error: {
-    message: "should NOT be valid",
-  },
+  error: {message: "must NOT be valid"},
 }
 
 export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts
index 268c237..c25353f 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts
@@ -4,7 +4,7 @@
   KeywordErrorDefinition,
   AnySchema,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, Name} from "../../compile/codegen"
 import {alwaysValidSchema} from "../../compile/util"
 import {SchemaCxt} from "../../compile"
@@ -16,7 +16,7 @@
 >
 
 const error: KeywordErrorDefinition = {
-  message: "should match exactly one schema in oneOf",
+  message: "must match exactly one schema in oneOf",
   params: ({params}) => _`{passingSchemas: ${params.passing}}`,
 }
 
@@ -26,9 +26,10 @@
   trackErrors: true,
   error,
   code(cxt: KeywordCxt) {
-    const {gen, schema, it} = cxt
+    const {gen, schema, parentSchema, it} = cxt
     /* istanbul ignore if */
     if (!Array.isArray(schema)) throw new Error("ajv implementation error")
+    if (it.opts.discriminator && parentSchema.discriminator) return
     const schArr: AnySchema[] = schema
     const valid = gen.let("valid", false)
     const passing = gen.let("passing", null)
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts
index 8ee8679..5255354 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts
@@ -1,10 +1,9 @@
 import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {schemaProperties, usePattern} from "../code"
 import {_, not, Name} from "../../compile/codegen"
-import {Type} from "../../compile/subschema"
-import {checkStrictMode} from "../../compile/validate"
-import {evaluatedPropsToName} from "../../compile/util"
+import {checkStrictMode} from "../../compile/util"
+import {evaluatedPropsToName, Type} from "../../compile/util"
 
 const def: CodeKeywordDefinition = {
   keyword: "patternProperties",
@@ -16,7 +15,8 @@
     const patterns = schemaProperties(it, schema)
     // TODO mark properties matching patterns with always valid schemas as evaluated
     if (patterns.length === 0) return
-    const checkProperties = opts.strict && !opts.allowMatchingProperties && parentSchema.properties
+    const checkProperties =
+      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties
     const valid = gen.name("valid")
     if (it.props !== true && !(it.props instanceof Name)) {
       it.props = evaluatedPropsToName(gen, it.props)
@@ -50,7 +50,7 @@
 
     function validateProperties(pat: string): void {
       gen.forIn("key", data, (key) => {
-        gen.if(_`${usePattern(gen, pat)}.test(${key})`, () => {
+        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {
           cxt.subschema(
             {
               keyword: "patternProperties",
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts
new file mode 100644
index 0000000..008fb2d
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts
@@ -0,0 +1,12 @@
+import type {CodeKeywordDefinition} from "../../types"
+import {validateTuple} from "./items"
+
+const def: CodeKeywordDefinition = {
+  keyword: "prefixItems",
+  type: "array",
+  schemaType: ["array"],
+  before: "uniqueItems",
+  code: (cxt) => validateTuple(cxt, "items"),
+}
+
+export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/properties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/properties.ts
index 13a345a..a55b19c 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/properties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/properties.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition} from "../../types"
-import KeywordCxt from "../../compile/context"
+import {KeywordCxt} from "../../compile/validate"
 import {propertyInData, allSchemaProperties} from "../code"
 import {alwaysValidSchema, toHash, mergeEvaluated} from "../../compile/util"
 import apDef from "./additionalProperties"
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts
index 0463616..1c54d60 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts
@@ -4,14 +4,14 @@
   KeywordErrorDefinition,
   AnySchema,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {_, str, not} from "../../compile/codegen"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, not} from "../../compile/codegen"
 import {alwaysValidSchema} from "../../compile/util"
 
 export type PropertyNamesError = ErrorObject<"propertyNames", {propertyName: string}, AnySchema>
 
 const error: KeywordErrorDefinition = {
-  message: ({params}) => str`property name '${params.propertyName}' is invalid`, // TODO double quotes?
+  message: "property name must be valid",
   params: ({params}) => _`{propertyName: ${params.propertyName}}`,
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts
index d975c19..5055182 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts
@@ -1,6 +1,6 @@
 import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {checkStrictMode} from "../../compile/validate"
+import type {KeywordCxt} from "../../compile/validate"
+import {checkStrictMode} from "../../compile/util"
 
 const def: CodeKeywordDefinition = {
   keyword: ["then", "else"],
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/code.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/code.ts
index 853d4a6..ca1cf5f 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/code.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/code.ts
@@ -1,9 +1,8 @@
 import type {AnySchema, SchemaMap} from "../types"
 import type {SchemaCxt} from "../compile"
-import type KeywordCxt from "../compile/context"
+import type {KeywordCxt} from "../compile/validate"
 import {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from "../compile/codegen"
-import {alwaysValidSchema} from "../compile/util"
-import {Type} from "../compile/subschema"
+import {alwaysValidSchema, Type} from "../compile/util"
 import N from "../compile/names"
 
 export function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {
@@ -81,7 +80,7 @@
 ): Code {
   const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data
   const valCxt: [Name, Code | number][] = [
-    [N.dataPath, strConcat(N.dataPath, errorPath)],
+    [N.instancePath, strConcat(N.instancePath, errorPath)],
     [N.parentData, it.parentData],
     [N.parentDataProperty, it.parentDataProperty],
     [N.rootData, N.rootData],
@@ -91,11 +90,12 @@
   return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`
 }
 
-export function usePattern(gen: CodeGen, pattern: string): Name {
+export function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {
+  const u = opts.unicodeRegExp ? "u" : ""
   return gen.scopeValue("pattern", {
     key: pattern,
-    ref: new RegExp(pattern, "u"),
-    code: _`new RegExp(${pattern}, "u")`,
+    ref: new RegExp(pattern, u),
+    code: _`new RegExp(${pattern}, ${u})`,
   })
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/core/ref.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/core/ref.ts
index 077e449..079cb9b 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/core/ref.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/core/ref.ts
@@ -1,6 +1,6 @@
 import type {CodeKeywordDefinition, AnySchema} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {MissingRefError} from "../../compile/error_classes"
+import type {KeywordCxt} from "../../compile/validate"
+import MissingRefError from "../../compile/ref_error"
 import {callValidateCode} from "../code"
 import {_, nil, stringify, Code, Name} from "../../compile/codegen"
 import N from "../../compile/names"
@@ -11,20 +11,19 @@
   keyword: "$ref",
   schemaType: "string",
   code(cxt: KeywordCxt): void {
-    const {gen, schema, it} = cxt
+    const {gen, schema: $ref, it} = cxt
     const {baseId, schemaEnv: env, validateName, opts, self} = it
-    // TODO See comment in dynamicRef.ts
-    // This has to be improved to resolve #815.
-    if (schema === "#" || schema === "#/") return callRootRef()
-    const schOrEnv = resolveRef.call(self, env.root, baseId, schema)
-    if (schOrEnv === undefined) throw new MissingRefError(baseId, schema)
+    const {root} = env
+    if (($ref === "#" || $ref === "#/") && baseId === root.baseId) return callRootRef()
+    const schOrEnv = resolveRef.call(self, root, baseId, $ref)
+    if (schOrEnv === undefined) throw new MissingRefError(baseId, $ref)
     if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)
     return inlineRefSchema(schOrEnv)
 
     function callRootRef(): void {
-      if (env === env.root) return callRef(cxt, validateName, env, env.$async)
-      const rootName = gen.scopeValue("root", {ref: env.root})
-      return callRef(cxt, _`${rootName}.validate`, env.root, env.root.$async)
+      if (env === root) return callRef(cxt, validateName, env, env.$async)
+      const rootName = gen.scopeValue("root", {ref: root})
+      return callRef(cxt, _`${rootName}.validate`, root, root.$async)
     }
 
     function callValidate(sch: SchemaEnv): void {
@@ -44,7 +43,7 @@
           dataTypes: [],
           schemaPath: nil,
           topSchemaRef: schName,
-          errSchemaPath: schema,
+          errSchemaPath: $ref,
         },
         valid
       )
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/index.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/index.ts
new file mode 100644
index 0000000..f8656d8
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/index.ts
@@ -0,0 +1,102 @@
+import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, getProperty, Name} from "../../compile/codegen"
+import {DiscrError, DiscrErrorObj} from "../discriminator/types"
+
+export type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>
+
+const error: KeywordErrorDefinition = {
+  message: ({params: {discrError, tagName}}) =>
+    discrError === DiscrError.Tag
+      ? `tag "${tagName}" must be string`
+      : `value of tag "${tagName}" must be in oneOf`,
+  params: ({params: {discrError, tag, tagName}}) =>
+    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,
+}
+
+const def: CodeKeywordDefinition = {
+  keyword: "discriminator",
+  type: "object",
+  schemaType: "object",
+  error,
+  code(cxt: KeywordCxt) {
+    const {gen, data, schema, parentSchema, it} = cxt
+    const {oneOf} = parentSchema
+    if (!it.opts.discriminator) {
+      throw new Error("discriminator: requires discriminator option")
+    }
+    const tagName = schema.propertyName
+    if (typeof tagName != "string") throw new Error("discriminator: requires propertyName")
+    if (schema.mapping) throw new Error("discriminator: mapping is not supported")
+    if (!oneOf) throw new Error("discriminator: requires oneOf keyword")
+    const valid = gen.let("valid", false)
+    const tag = gen.const("tag", _`${data}${getProperty(tagName)}`)
+    gen.if(
+      _`typeof ${tag} == "string"`,
+      () => validateMapping(),
+      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})
+    )
+    cxt.ok(valid)
+
+    function validateMapping(): void {
+      const mapping = getMapping()
+      gen.if(false)
+      for (const tagValue in mapping) {
+        gen.elseIf(_`${tag} === ${tagValue}`)
+        gen.assign(valid, applyTagSchema(mapping[tagValue]))
+      }
+      gen.else()
+      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})
+      gen.endIf()
+    }
+
+    function applyTagSchema(schemaProp?: number): Name {
+      const _valid = gen.name("valid")
+      const schCxt = cxt.subschema({keyword: "oneOf", schemaProp}, _valid)
+      cxt.mergeEvaluated(schCxt, Name)
+      return _valid
+    }
+
+    function getMapping(): {[T in string]?: number} {
+      const oneOfMapping: {[T in string]?: number} = {}
+      const topRequired = hasRequired(parentSchema)
+      let tagRequired = true
+      for (let i = 0; i < oneOf.length; i++) {
+        const sch = oneOf[i]
+        const propSch = sch.properties?.[tagName]
+        if (typeof propSch != "object") {
+          throw new Error(`discriminator: oneOf schemas must have "properties/${tagName}"`)
+        }
+        tagRequired = tagRequired && (topRequired || hasRequired(sch))
+        addMappings(propSch, i)
+      }
+      if (!tagRequired) throw new Error(`discriminator: "${tagName}" must be required`)
+      return oneOfMapping
+
+      function hasRequired({required}: AnySchemaObject): boolean {
+        return Array.isArray(required) && required.includes(tagName)
+      }
+
+      function addMappings(sch: AnySchemaObject, i: number): void {
+        if (sch.const) {
+          addMapping(sch.const, i)
+        } else if (sch.enum) {
+          for (const tagValue of sch.enum) {
+            addMapping(tagValue, i)
+          }
+        } else {
+          throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`)
+        }
+      }
+
+      function addMapping(tagValue: unknown, i: number): void {
+        if (typeof tagValue != "string" || tagValue in oneOfMapping) {
+          throw new Error(`discriminator: "${tagName}" values must be unique strings`)
+        }
+        oneOfMapping[tagValue] = i
+      }
+    }
+  },
+}
+
+export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/types.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/types.ts
new file mode 100644
index 0000000..bee5a27
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/discriminator/types.ts
@@ -0,0 +1,12 @@
+import type {ErrorObject} from "../../types"
+
+export enum DiscrError {
+  Tag = "tag",
+  Mapping = "mapping",
+}
+
+export type DiscrErrorObj<E extends DiscrError> = ErrorObject<
+  "discriminator",
+  {error: E; tag: string; tagValue: unknown},
+  string
+>
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/draft2020.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/draft2020.ts
new file mode 100644
index 0000000..47fbf0e
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/draft2020.ts
@@ -0,0 +1,23 @@
+import type {Vocabulary} from "../types"
+import coreVocabulary from "./core"
+import validationVocabulary from "./validation"
+import getApplicatorVocabulary from "./applicator"
+import dynamicVocabulary from "./dynamic"
+import nextVocabulary from "./next"
+import unevaluatedVocabulary from "./unevaluated"
+import formatVocabulary from "./format"
+import {metadataVocabulary, contentVocabulary} from "./metadata"
+
+const draft2020Vocabularies: Vocabulary[] = [
+  dynamicVocabulary,
+  coreVocabulary,
+  validationVocabulary,
+  getApplicatorVocabulary(true),
+  formatVocabulary,
+  metadataVocabulary,
+  contentVocabulary,
+  nextVocabulary,
+  unevaluatedVocabulary,
+]
+
+export default draft2020Vocabularies
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/draft7.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/draft7.ts
index 9590f8b..226a644 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/draft7.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/draft7.ts
@@ -1,14 +1,14 @@
 import type {Vocabulary} from "../types"
 import coreVocabulary from "./core"
 import validationVocabulary from "./validation"
-import applicatorVocabulary from "./applicator"
+import getApplicatorVocabulary from "./applicator"
 import formatVocabulary from "./format"
 import {metadataVocabulary, contentVocabulary} from "./metadata"
 
 const draft7Vocabularies: Vocabulary[] = [
   coreVocabulary,
   validationVocabulary,
-  applicatorVocabulary,
+  getApplicatorVocabulary(),
   formatVocabulary,
   metadataVocabulary,
   contentVocabulary,
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts
index 1f73623..b3e2063 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, getProperty, Code} from "../../compile/codegen"
 import N from "../../compile/names"
 import {SchemaEnv, compileSchema} from "../../compile"
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts
index c641a9c..6a573f3 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, getProperty, Code, Name} from "../../compile/codegen"
 import N from "../../compile/names"
 import {callRef} from "../core/ref"
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts
index ba60669..25f3db9 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts
@@ -1,6 +1,6 @@
 import type {CodeKeywordDefinition} from "../../types"
 import {dynamicAnchor} from "./dynamicAnchor"
-import {checkStrictMode} from "../../compile/validate"
+import {checkStrictMode} from "../../compile/util"
 
 const def: CodeKeywordDefinition = {
   keyword: "$recursiveAnchor",
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/errors.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/errors.ts
index f40aeec..c9ca3f0 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/errors.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/errors.ts
@@ -5,6 +5,7 @@
 import type {UnevaluatedPropertiesError} from "./unevaluated/unevaluatedProperties"
 import type {UnevaluatedItemsError} from "./unevaluated/unevaluatedItems"
 import type {DependentRequiredError} from "./validation/dependentRequired"
+import type {DiscriminatorError} from "./discriminator"
 
 export type DefinedError =
   | TypeError
@@ -14,3 +15,4 @@
   | UnevaluatedPropertiesError
   | UnevaluatedItemsError
   | DependentRequiredError
+  | DiscriminatorError
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/format/format.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/format/format.ts
index e87a068..4b1c13e 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/format/format.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/format/format.ts
@@ -6,8 +6,8 @@
   KeywordErrorDefinition,
   ErrorObject,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {_, str, nil, or, Code, getProperty} from "../../compile/codegen"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, str, nil, or, Code, getProperty, regexpCode} from "../../compile/codegen"
 
 type FormatValidate =
   | FormatValidator<string>
@@ -21,7 +21,7 @@
 export type FormatError = ErrorObject<"format", {format: string}, string | {$data: string}>
 
 const error: KeywordErrorDefinition = {
-  message: ({schemaCode}) => str`should match format "${schemaCode}"`,
+  message: ({schemaCode}) => str`must match format "${schemaCode}"`,
   params: ({schemaCode}) => _`{format: ${schemaCode}}`,
 }
 
@@ -56,7 +56,7 @@
       cxt.fail$data(or(unknownFmt(), invalidFmt()))
 
       function unknownFmt(): Code {
-        if (opts.strict === false) return nil
+        if (opts.strictSchema === false) return nil
         return _`${schemaCode} && !${format}`
       }
 
@@ -80,7 +80,7 @@
       if (fmtType === ruleType) cxt.pass(validCondition())
 
       function unknownFormat(): void {
-        if (opts.strict === false) {
+        if (opts.strictSchema === false) {
           self.logger.warn(unknownMsg())
           return
         }
@@ -92,11 +92,13 @@
       }
 
       function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {
-        const fmt = gen.scopeValue("formats", {
-          key: schema,
-          ref: fmtDef,
-          code: opts.code.formats ? _`${opts.code.formats}${getProperty(schema)}` : undefined,
-        })
+        const code =
+          fmtDef instanceof RegExp
+            ? regexpCode(fmtDef)
+            : opts.code.formats
+            ? _`${opts.code.formats}${getProperty(schema)}`
+            : undefined
+        const fmt = gen.scopeValue("formats", {key: schema, ref: fmtDef, code})
         if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) {
           return [fmtDef.type || "string", fmtDef.validate, _`${fmt}.validate`]
         }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts
index de086b8..f487c97 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts
@@ -1,30 +1,75 @@
-import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {_, getProperty, Name} from "../../compile/codegen"
+import type {CodeKeywordDefinition, KeywordErrorDefinition} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, not, getProperty, Name} from "../../compile/codegen"
 import {checkMetadata} from "./metadata"
 import {checkNullableObject} from "./nullable"
+import {typeErrorMessage, typeErrorParams, _JTDTypeError} from "./error"
+import {DiscrError, DiscrErrorObj} from "../discriminator/types"
+
+export type JTDDiscriminatorError =
+  | _JTDTypeError<"discriminator", "object", string>
+  | DiscrErrorObj<DiscrError.Tag>
+  | DiscrErrorObj<DiscrError.Mapping>
+
+const error: KeywordErrorDefinition = {
+  message: (cxt) => {
+    const {schema, params} = cxt
+    return params.discrError
+      ? params.discrError === DiscrError.Tag
+        ? `tag "${schema}" must be string`
+        : `value of tag "${schema}" must be in mapping`
+      : typeErrorMessage(cxt, "object")
+  },
+  params: (cxt) => {
+    const {schema, params} = cxt
+    return params.discrError
+      ? _`{error: ${params.discrError}, tag: ${schema}, tagValue: ${params.tag}}`
+      : typeErrorParams(cxt, "object")
+  },
+}
 
 const def: CodeKeywordDefinition = {
   keyword: "discriminator",
   schemaType: "string",
   implements: ["mapping"],
+  error,
   code(cxt: KeywordCxt) {
     checkMetadata(cxt)
     const {gen, data, schema, parentSchema} = cxt
     const [valid, cond] = checkNullableObject(cxt, data)
 
-    gen.if(cond, () => {
+    gen.if(cond)
+    validateDiscriminator()
+    gen.elseIf(not(valid))
+    cxt.error()
+    gen.endIf()
+    cxt.ok(valid)
+
+    function validateDiscriminator(): void {
       const tag = gen.const("tag", _`${data}${getProperty(schema)}`)
-      gen.if(_`typeof ${tag} == "string"`, () => {
-        gen.if(false)
-        for (const tagValue in parentSchema.mapping) {
-          gen.elseIf(_`${tag} === ${tagValue}`)
-          gen.assign(valid, applyTagSchema(tagValue))
-        }
-        gen.endIf()
-      })
-    })
-    cxt.pass(valid)
+      gen.if(_`${tag} === undefined`)
+      cxt.error(false, {discrError: DiscrError.Tag, tag})
+      gen.elseIf(_`typeof ${tag} == "string"`)
+      validateMapping(tag)
+      gen.else()
+      cxt.error(false, {discrError: DiscrError.Tag, tag}, {instancePath: schema})
+      gen.endIf()
+    }
+
+    function validateMapping(tag: Name): void {
+      gen.if(false)
+      for (const tagValue in parentSchema.mapping) {
+        gen.elseIf(_`${tag} === ${tagValue}`)
+        gen.assign(valid, applyTagSchema(tagValue))
+      }
+      gen.else()
+      cxt.error(
+        false,
+        {discrError: DiscrError.Mapping, tag},
+        {instancePath: schema, schemaPath: "mapping", parentSchema: true}
+      )
+      gen.endIf()
+    }
 
     function applyTagSchema(schemaProp: string): Name {
       const _valid = gen.name("valid")
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/elements.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/elements.ts
index d67f2cd..983af7c 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/elements.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/elements.ts
@@ -1,21 +1,31 @@
-import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {CodeKeywordDefinition, SchemaObject} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
 import {alwaysValidSchema} from "../../compile/util"
 import {validateArray} from "../code"
-import {_, and, nil} from "../../compile/codegen"
+import {_, not} from "../../compile/codegen"
 import {checkMetadata} from "./metadata"
 import {checkNullable} from "./nullable"
+import {typeError, _JTDTypeError} from "./error"
+
+export type JTDElementsError = _JTDTypeError<"elements", "array", SchemaObject>
 
 const def: CodeKeywordDefinition = {
   keyword: "elements",
   schemaType: "object",
+  error: typeError("array"),
   code(cxt: KeywordCxt) {
     checkMetadata(cxt)
     const {gen, data, schema, it} = cxt
     if (alwaysValidSchema(it, schema)) return
-    const [valid, cond] = checkNullable(cxt, nil)
-    gen.if(and(cond, _`Array.isArray(${data})`), () => gen.assign(valid, validateArray(cxt)))
-    cxt.pass(valid)
+    const [valid] = checkNullable(cxt)
+    gen.if(not(valid), () =>
+      gen.if(
+        _`Array.isArray(${data})`,
+        () => gen.assign(valid, validateArray(cxt)),
+        () => cxt.error()
+      )
+    )
+    cxt.ok(valid)
   },
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/enum.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/enum.ts
index dd582a1..75464ff 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/enum.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/enum.ts
@@ -1,29 +1,35 @@
-import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {_, or, not, Code} from "../../compile/codegen"
+import type {CodeKeywordDefinition, KeywordErrorDefinition, ErrorObject} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, or, and, Code} from "../../compile/codegen"
 import {checkMetadata} from "./metadata"
+import {checkNullable} from "./nullable"
+
+export type JTDEnumError = ErrorObject<"enum", {allowedValues: string[]}, string[]>
+
+const error: KeywordErrorDefinition = {
+  message: "must be equal to one of the allowed values",
+  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,
+}
 
 const def: CodeKeywordDefinition = {
   keyword: "enum",
   schemaType: "array",
+  error,
   code(cxt: KeywordCxt) {
     checkMetadata(cxt)
     const {gen, data, schema, schemaValue, parentSchema, it} = cxt
     if (schema.length === 0) throw new Error("enum must have non-empty array")
     if (schema.length !== new Set(schema).size) throw new Error("enum items must be unique")
     let valid: Code
+    const isString = _`typeof ${data} == "string"`
     if (schema.length >= it.opts.loopEnum) {
-      if (parentSchema.nullable) {
-        valid = gen.let("valid", _`${data} === null`)
-        gen.if(not(valid), loopEnum)
-      } else {
-        valid = gen.let("valid", false)
-        loopEnum()
-      }
+      let cond: Code
+      ;[valid, cond] = checkNullable(cxt, isString)
+      gen.if(cond, loopEnum)
     } else {
       /* istanbul ignore if */
       if (!Array.isArray(schema)) throw new Error("ajv implementation error")
-      valid = or(...schema.map((value: string) => _`${data} === ${value}`))
+      valid = and(isString, or(...schema.map((value: string) => _`${data} === ${value}`)))
       if (parentSchema.nullable) valid = or(_`${data} === null`, valid)
     }
     cxt.pass(valid)
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/error.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/error.ts
new file mode 100644
index 0000000..5069322
--- /dev/null
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/error.ts
@@ -0,0 +1,23 @@
+import type {KeywordErrorDefinition, KeywordErrorCxt, ErrorObject} from "../../types"
+import {_, Code} from "../../compile/codegen"
+
+export type _JTDTypeError<K extends string, T extends string, S> = ErrorObject<
+  K,
+  {type: T; nullable: boolean},
+  S
+>
+
+export function typeError(t: string): KeywordErrorDefinition {
+  return {
+    message: (cxt) => typeErrorMessage(cxt, t),
+    params: (cxt) => typeErrorParams(cxt, t),
+  }
+}
+
+export function typeErrorMessage({parentSchema}: KeywordErrorCxt, t: string): string {
+  return parentSchema?.nullable ? `must be ${t} or null` : `must be ${t}`
+}
+
+export function typeErrorParams({parentSchema}: KeywordErrorCxt, t: string): Code {
+  return _`{type: ${t}, nullable: ${!!parentSchema?.nullable}}`
+}
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/index.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/index.ts
index 2a241f6..f7baebc 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/index.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/index.ts
@@ -1,13 +1,12 @@
 import type {Vocabulary} from "../../types"
-// import definitions from "./definitions"
 import refKeyword from "./ref"
-import typeKeyword from "./type"
-import enumKeyword from "./enum"
-import elements from "./elements"
-import properties from "./properties"
+import typeKeyword, {JTDTypeError} from "./type"
+import enumKeyword, {JTDEnumError} from "./enum"
+import elements, {JTDElementsError} from "./elements"
+import properties, {JTDPropertiesError} from "./properties"
 import optionalProperties from "./optionalProperties"
-import discriminator from "./discriminator"
-import values from "./values"
+import discriminator, {JTDDiscriminatorError} from "./discriminator"
+import values, {JTDValuesError} from "./values"
 import union from "./union"
 import metadata from "./metadata"
 
@@ -28,3 +27,11 @@
 ]
 
 export default jtdVocabulary
+
+export type JTDErrorObject =
+  | JTDTypeError
+  | JTDEnumError
+  | JTDElementsError
+  | JTDPropertiesError
+  | JTDDiscriminatorError
+  | JTDValuesError
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/nullable.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/nullable.ts
index 89e4cc1..c74b05d 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/nullable.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/nullable.ts
@@ -1,7 +1,10 @@
-import type KeywordCxt from "../../compile/context"
-import {_, not, Code, Name} from "../../compile/codegen"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, not, nil, Code, Name} from "../../compile/codegen"
 
-export function checkNullable({gen, data, parentSchema}: KeywordCxt, cond: Code): [Name, Code] {
+export function checkNullable(
+  {gen, data, parentSchema}: KeywordCxt,
+  cond: Code = nil
+): [Name, Code] {
   const valid = gen.name("valid")
   if (parentSchema.nullable) {
     gen.let(valid, _`${data} === null`)
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts
index 1efd043..8e91c8d 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts
@@ -1,10 +1,11 @@
 import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {validateProperties} from "./properties"
+import type {KeywordCxt} from "../../compile/validate"
+import {validateProperties, error} from "./properties"
 
 const def: CodeKeywordDefinition = {
   keyword: "optionalProperties",
   schemaType: "object",
+  error,
   code(cxt: KeywordCxt) {
     if (cxt.parentSchema.properties) return
     validateProperties(cxt)
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/properties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/properties.ts
index b51256d..728c0b9 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/properties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/properties.ts
@@ -1,17 +1,62 @@
-import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {
+  CodeKeywordDefinition,
+  ErrorObject,
+  KeywordErrorDefinition,
+  SchemaObject,
+} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
 import {propertyInData, allSchemaProperties, isOwnProperty} from "../code"
 import {alwaysValidSchema, schemaRefOrVal} from "../../compile/util"
 import {_, and, not, Code, Name} from "../../compile/codegen"
 import {checkMetadata} from "./metadata"
 import {checkNullableObject} from "./nullable"
+import {typeErrorMessage, typeErrorParams, _JTDTypeError} from "./error"
+
+enum PropError {
+  Additional = "additional",
+  Missing = "missing",
+}
+
+type PropKeyword = "properties" | "optionalProperties"
+
+type PropSchema = {[P in string]?: SchemaObject}
+
+export type JTDPropertiesError =
+  | _JTDTypeError<PropKeyword, "object", PropSchema>
+  | ErrorObject<PropKeyword, {error: PropError.Additional; additionalProperty: string}, PropSchema>
+  | ErrorObject<PropKeyword, {error: PropError.Missing; missingProperty: string}, PropSchema>
+
+export const error: KeywordErrorDefinition = {
+  message: (cxt) => {
+    const {params} = cxt
+    return params.propError
+      ? params.propError === PropError.Additional
+        ? "must NOT have additional properties"
+        : `must have property '${params.missingProperty}'`
+      : typeErrorMessage(cxt, "object")
+  },
+  params: (cxt) => {
+    const {params} = cxt
+    return params.propError
+      ? params.propError === PropError.Additional
+        ? _`{error: ${params.propError}, additionalProperty: ${params.additionalProperty}}`
+        : _`{error: ${params.propError}, missingProperty: ${params.missingProperty}}`
+      : typeErrorParams(cxt, "object")
+  },
+}
 
 const def: CodeKeywordDefinition = {
   keyword: "properties",
   schemaType: "object",
+  error,
   code: validateProperties,
 }
 
+// const error: KeywordErrorDefinition = {
+//   message: "should NOT have additional properties",
+//   params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,
+// }
+
 export function validateProperties(cxt: KeywordCxt): void {
   checkMetadata(cxt)
   const {gen, data, parentSchema, it} = cxt
@@ -65,15 +110,15 @@
       gen.if(
         propertyInData(gen, data, prop, it.opts.ownProperties),
         () => applyPropertySchema(prop, keyword, _valid),
-        missingProperty
+        () => missingProperty(prop)
       )
       cxt.ok(_valid)
     }
 
-    function missingProperty(): void {
+    function missingProperty(prop: string): void {
       if (required) {
         gen.assign(_valid, false)
-        cxt.error()
+        cxt.error(false, {propError: PropError.Missing, missingProperty: prop}, {schemaPath: prop})
       } else {
         gen.assign(_valid, true)
       }
@@ -103,8 +148,11 @@
         if (it.opts.removeAdditional) {
           gen.code(_`delete ${data}[${key}]`)
         } else {
-          // cxt.setParams({additionalProperty: key})
-          cxt.error()
+          cxt.error(
+            false,
+            {propError: PropError.Additional, additionalProperty: key},
+            {instancePath: key, parentSchema: true}
+          )
           if (!it.opts.allErrors) gen.break()
         }
       })
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/ref.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/ref.ts
index 4aed9a9..0731b1f 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/ref.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/ref.ts
@@ -1,8 +1,8 @@
 import type {CodeKeywordDefinition, AnySchemaObject} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {compileSchema, SchemaEnv} from "../../compile"
 import {_, not, nil, stringify} from "../../compile/codegen"
-import {MissingRefError} from "../../compile/error_classes"
+import MissingRefError from "../../compile/ref_error"
 import N from "../../compile/names"
 import {getValidate, callRef} from "../core/ref"
 import {checkMetadata} from "./metadata"
@@ -34,7 +34,10 @@
     }
 
     function callValidate(schema: AnySchemaObject): void {
-      const sch = compileSchema.call(it.self, new SchemaEnv({schema, root}))
+      const sch = compileSchema.call(
+        it.self,
+        new SchemaEnv({schema, root, schemaPath: `/definitions/${ref}`})
+      )
       const v = getValidate(cxt, sch)
       const errsCount = gen.const("_errs", N.errors)
       callRef(cxt, v, sch, sch.$async)
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts
index 3e7429c..8745147 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts
@@ -1,9 +1,13 @@
-import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {CodeKeywordDefinition, KeywordErrorDefinition} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, or, Code} from "../../compile/codegen"
-import validTimestamp from "../../compile/timestamp"
-import {func} from "../../compile/util"
+import validTimestamp from "../../runtime/timestamp"
+import {useFunc} from "../../compile/util"
 import {checkMetadata} from "./metadata"
+import {typeErrorMessage, typeErrorParams, _JTDTypeError} from "./error"
+import {_Code} from "../../compile/codegen/code"
+
+export type JTDTypeError = _JTDTypeError<"type", JTDType, JTDType>
 
 export type IntType = "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32"
 
@@ -16,12 +20,36 @@
   uint32: [0, 4294967295, 10],
 }
 
+export type JTDType = "boolean" | "string" | "timestamp" | "float32" | "float64" | IntType
+
+const error: KeywordErrorDefinition = {
+  message: (cxt) => typeErrorMessage(cxt, cxt.schema),
+  params: (cxt) => typeErrorParams(cxt, cxt.schema),
+}
+
+function timestampCode(cxt: KeywordCxt): _Code {
+  const {gen, data} = cxt
+  switch (cxt.it.opts.timestamp) {
+    case "date":
+      return _`${data} instanceof Date `
+    case "string": {
+      const vts = useFunc(gen, validTimestamp)
+      return _`typeof ${data} == "string" && ${vts}(${data})`
+    }
+    default: {
+      const vts = useFunc(gen, validTimestamp)
+      return _`${data} instanceof Date || (typeof ${data} == "string" && ${vts}(${data}))`
+    }
+  }
+}
+
 const def: CodeKeywordDefinition = {
   keyword: "type",
   schemaType: "string",
+  error,
   code(cxt: KeywordCxt) {
     checkMetadata(cxt)
-    const {gen, data, schema, parentSchema} = cxt
+    const {data, schema, parentSchema} = cxt
     let cond: Code
     switch (schema) {
       case "boolean":
@@ -29,8 +57,7 @@
         cond = _`typeof ${data} == ${schema}`
         break
       case "timestamp": {
-        const vts = func(gen, validTimestamp)
-        cond = _`${data} instanceof Date || (typeof ${data} == "string" && ${vts}(${data}))`
+        cond = timestampCode(cxt)
         break
       }
       case "float32":
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/union.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/union.ts
index bd6f142..588f07a 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/union.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/union.ts
@@ -6,6 +6,7 @@
   schemaType: "array",
   trackErrors: true,
   code: validateUnion,
+  error: {message: "must match a schema in union"},
 }
 
 export default def
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/values.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/values.ts
index d36c666..86091b8 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/values.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/values.ts
@@ -1,21 +1,28 @@
-import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {Type} from "../../compile/subschema"
-import {alwaysValidSchema} from "../../compile/util"
+import type {CodeKeywordDefinition, SchemaObject} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
+import {alwaysValidSchema, Type} from "../../compile/util"
 import {not, Name} from "../../compile/codegen"
 import {checkMetadata} from "./metadata"
 import {checkNullableObject} from "./nullable"
+import {typeError, _JTDTypeError} from "./error"
+
+export type JTDValuesError = _JTDTypeError<"values", "object", SchemaObject>
 
 const def: CodeKeywordDefinition = {
   keyword: "values",
   schemaType: "object",
+  error: typeError("object"),
   code(cxt: KeywordCxt) {
     checkMetadata(cxt)
     const {gen, data, schema, it} = cxt
     if (alwaysValidSchema(it, schema)) return
     const [valid, cond] = checkNullableObject(cxt, data)
-    gen.if(cond, () => gen.assign(valid, validateMap()))
-    cxt.pass(valid)
+    gen.if(cond)
+    gen.assign(valid, validateMap())
+    gen.elseIf(not(valid))
+    cxt.error()
+    gen.endIf()
+    cxt.ok(valid)
 
     function validateMap(): Name | boolean {
       const _valid = gen.name("valid")
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts
index 7d00f1b..50bf0e7 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts
@@ -4,15 +4,14 @@
   KeywordErrorDefinition,
   AnySchema,
 } from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, not, Name} from "../../compile/codegen"
-import {Type} from "../../compile/subschema"
-import {alwaysValidSchema} from "../../compile/util"
+import {alwaysValidSchema, Type} from "../../compile/util"
 
 export type UnevaluatedItemsError = ErrorObject<"unevaluatedItems", {limit: number}, AnySchema>
 
 const error: KeywordErrorDefinition = {
-  message: ({params: {len}}) => str`should NOT have more than ${len} items`,
+  message: ({params: {len}}) => str`must NOT have more than ${len} items`,
   params: ({params: {len}}) => _`{limit: ${len}}`,
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts
index 655e645..0e6868f 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts
@@ -5,9 +5,8 @@
   AnySchema,
 } from "../../types"
 import {_, not, and, Name, Code} from "../../compile/codegen"
-import {alwaysValidSchema} from "../../compile/util"
+import {alwaysValidSchema, Type} from "../../compile/util"
 import N from "../../compile/names"
-import {Type} from "../../compile/subschema"
 
 export type UnevaluatedPropertiesError = ErrorObject<
   "unevaluatedProperties",
@@ -16,7 +15,7 @@
 >
 
 const error: KeywordErrorDefinition = {
-  message: "should NOT have unevaluated properties",
+  message: "must NOT have unevaluated properties",
   params: ({params}) => _`{unevaluatedProperty: ${params.unevaluatedProperty}}`,
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/const.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/const.ts
index 2ad06ab..00231bb 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/const.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/const.ts
@@ -1,12 +1,13 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_} from "../../compile/codegen"
-import * as equal from "fast-deep-equal"
+import {useFunc} from "../../compile/util"
+import equal from "../../runtime/equal"
 
 export type ConstError = ErrorObject<"const", {allowedValue: any}>
 
 const error: KeywordErrorDefinition = {
-  message: "should be equal to constant",
+  message: "must be equal to constant",
   params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,
 }
 
@@ -15,12 +16,9 @@
   $data: true,
   error,
   code(cxt: KeywordCxt) {
-    const eql = cxt.gen.scopeValue("func", {
-      ref: equal,
-      code: _`require("ajv/dist/compile/equal")`,
-    })
+    const {gen, data, schemaCode} = cxt
     // TODO optimize for scalar values in schema
-    cxt.fail$data(_`!${eql}(${cxt.data}, ${cxt.schemaCode})`)
+    cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)
   },
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/enum.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/enum.ts
index 8438fe8..4b093fa 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/enum.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/enum.ts
@@ -1,12 +1,13 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, or, Name, Code} from "../../compile/codegen"
-import * as equal from "fast-deep-equal"
+import {useFunc} from "../../compile/util"
+import equal from "../../runtime/equal"
 
 export type EnumError = ErrorObject<"enum", {allowedValues: any[]}, any[] | {$data: string}>
 
 const error: KeywordErrorDefinition = {
-  message: "should be equal to one of the allowed values",
+  message: "must be equal to one of the allowed values",
   params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,
 }
 
@@ -19,10 +20,7 @@
     const {gen, data, $data, schema, schemaCode, it} = cxt
     if (!$data && schema.length === 0) throw new Error("enum must have non-empty array")
     const useLoop = schema.length >= it.opts.loopEnum
-    const eql = cxt.gen.scopeValue("func", {
-      ref: equal,
-      code: _`require("ajv/dist/compile/equal")`,
-    })
+    const eql = useFunc(gen, equal)
     let valid: Code
     if (useLoop || $data) {
       valid = gen.let("valid")
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitContains.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitContains.ts
index 17eee91..8bb43c1 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitContains.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitContains.ts
@@ -1,6 +1,6 @@
 import type {CodeKeywordDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
-import {checkStrictMode} from "../../compile/validate"
+import type {KeywordCxt} from "../../compile/validate"
+import {checkStrictMode} from "../../compile/util"
 
 const def: CodeKeywordDefinition = {
   keyword: ["maxContains", "minContains"],
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitItems.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitItems.ts
index 9bf865e..566de85 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitItems.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitItems.ts
@@ -1,11 +1,11 @@
 import type {CodeKeywordDefinition, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, operators} from "../../compile/codegen"
 
 const error: KeywordErrorDefinition = {
   message({keyword, schemaCode}) {
     const comp = keyword === "maxItems" ? "more" : "fewer"
-    return str`should NOT have ${comp} than ${schemaCode} items`
+    return str`must NOT have ${comp} than ${schemaCode} items`
   },
   params: ({schemaCode}) => _`{limit: ${schemaCode}}`,
 }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitLength.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitLength.ts
index 61eff2c..f4f9472 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitLength.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitLength.ts
@@ -1,12 +1,13 @@
 import type {CodeKeywordDefinition, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, operators} from "../../compile/codegen"
-import ucs2length from "../../compile/ucs2length"
+import {useFunc} from "../../compile/util"
+import ucs2length from "../../runtime/ucs2length"
 
 const error: KeywordErrorDefinition = {
   message({keyword, schemaCode}) {
     const comp = keyword === "maxLength" ? "more" : "fewer"
-    return str`should NOT have ${comp} than ${schemaCode} characters`
+    return str`must NOT have ${comp} than ${schemaCode} characters`
   },
   params: ({schemaCode}) => _`{limit: ${schemaCode}}`,
 }
@@ -20,16 +21,8 @@
   code(cxt: KeywordCxt) {
     const {keyword, data, schemaCode, it} = cxt
     const op = keyword === "maxLength" ? operators.GT : operators.LT
-    let len
-    if (it.opts.unicode === false) {
-      len = _`${data}.length`
-    } else {
-      const u2l = cxt.gen.scopeValue("func", {
-        ref: ucs2length,
-        code: _`require("ajv/dist/compile/ucs2length").default`,
-      })
-      len = _`${u2l}(${data})`
-    }
+    const len =
+      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`
     cxt.fail$data(_`${len} ${op} ${schemaCode}`)
   },
 }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts
index 50f6385..5499202 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, operators, Code} from "../../compile/codegen"
 
 const ops = operators
@@ -22,7 +22,7 @@
 >
 
 const error: KeywordErrorDefinition = {
-  message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,
+  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,
   params: ({keyword, schemaCode}) =>
     _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,
 }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts
index ec5943d..e72124a 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts
@@ -1,11 +1,11 @@
 import type {CodeKeywordDefinition, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str, operators} from "../../compile/codegen"
 
 const error: KeywordErrorDefinition = {
   message({keyword, schemaCode}) {
     const comp = keyword === "maxProperties" ? "more" : "fewer"
-    return str`should NOT have ${comp} than ${schemaCode} items`
+    return str`must NOT have ${comp} than ${schemaCode} items`
   },
   params: ({schemaCode}) => _`{limit: ${schemaCode}}`,
 }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts
index da09f3c..1fd79ab 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {_, str} from "../../compile/codegen"
 
 export type MultipleOfError = ErrorObject<
@@ -9,7 +9,7 @@
 >
 
 const error: KeywordErrorDefinition = {
-  message: ({schemaCode}) => str`should be multiple of ${schemaCode}`,
+  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,
   params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/pattern.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/pattern.ts
index bd9bdd3..7b27b7d 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/pattern.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/pattern.ts
@@ -1,12 +1,12 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {usePattern} from "../code"
 import {_, str} from "../../compile/codegen"
 
 export type PatternError = ErrorObject<"pattern", {pattern: string}, string | {$data: string}>
 
 const error: KeywordErrorDefinition = {
-  message: ({schemaCode}) => str`should match pattern "${schemaCode}"`,
+  message: ({schemaCode}) => str`must match pattern "${schemaCode}"`,
   params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,
 }
 
@@ -17,8 +17,10 @@
   $data: true,
   error,
   code(cxt: KeywordCxt) {
-    const {gen, data, $data, schema, schemaCode} = cxt
-    const regExp = $data ? _`(new RegExp(${schemaCode}, "u"))` : usePattern(gen, schema) // TODO regexp should be wrapped in try/catch
+    const {data, $data, schema, schemaCode, it} = cxt
+    // TODO regexp should be wrapped in try/catchs
+    const u = it.opts.unicodeRegExp ? "u" : ""
+    const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)
     cxt.fail$data(_`!${regExp}.test(${data})`)
   },
 }
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/required.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/required.ts
index 35db529..fea7367 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/required.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/required.ts
@@ -1,5 +1,5 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {
   checkReportMissingProp,
   checkMissingProp,
@@ -8,7 +8,7 @@
   noPropertyInData,
 } from "../code"
 import {_, str, nil, not, Name, Code} from "../../compile/codegen"
-import {checkStrictMode} from "../../compile/validate"
+import {checkStrictMode} from "../../compile/util"
 
 export type RequiredError = ErrorObject<
   "required",
@@ -17,7 +17,7 @@
 >
 
 const error: KeywordErrorDefinition = {
-  message: ({params: {missingProperty}}) => str`should have required property '${missingProperty}'`,
+  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,
   params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,
 }
 
diff --git a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts
index 7fbaeca..765c4d0 100644
--- a/node_modules/table/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts
+++ b/node_modules/table/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts
@@ -1,8 +1,9 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
-import type KeywordCxt from "../../compile/context"
+import type {KeywordCxt} from "../../compile/validate"
 import {checkDataTypes, getSchemaTypes, DataType} from "../../compile/validate/dataType"
 import {_, str, Name} from "../../compile/codegen"
-import * as equal from "fast-deep-equal"
+import {useFunc} from "../../compile/util"
+import equal from "../../runtime/equal"
 
 export type UniqueItemsError = ErrorObject<
   "uniqueItems",
@@ -12,7 +13,7 @@
 
 const error: KeywordErrorDefinition = {
   message: ({params: {i, j}}) =>
-    str`should NOT have duplicate items (items ## ${j} and ${i} are identical)`,
+    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,
   params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,
 }
 
@@ -44,7 +45,7 @@
 
     function loopN(i: Name, j: Name): void {
       const item = gen.name("item")
-      const wrongType = checkDataTypes(itemTypes, item, it.opts.strict, DataType.Wrong)
+      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)
       const indices = gen.const("indices", _`{}`)
       gen.for(_`;${i}--;`, () => {
         gen.let(item, _`${data}[${i}]`)
@@ -61,10 +62,7 @@
     }
 
     function loopN2(i: Name, j: Name): void {
-      const eql = cxt.gen.scopeValue("func", {
-        ref: equal,
-        code: _`require("ajv/dist/compile/equal")`,
-      })
+      const eql = useFunc(gen, equal)
       const outer = gen.name("outer")
       gen.label(outer).for(_`;${i}--;`, () =>
         gen.for(_`${j} = ${i}; ${j}--;`, () =>
diff --git a/node_modules/table/node_modules/ajv/package.json b/node_modules/table/node_modules/ajv/package.json
index e46cf62..8a280fd 100644
--- a/node_modules/table/node_modules/ajv/package.json
+++ b/node_modules/table/node_modules/ajv/package.json
@@ -1,30 +1,29 @@
 {
   "name": "ajv",
-  "version": "7.2.4",
+  "version": "8.3.0",
   "description": "Another JSON Schema Validator",
   "main": "dist/ajv.js",
   "types": "dist/ajv.d.ts",
   "files": [
     "lib/",
     "dist/",
-    "scripts/",
-    ".tonic_example.js"
+    ".runkit_example.js"
   ],
   "scripts": {
     "eslint": "eslint \"lib/**/*.ts\" \"spec/**/*.*s\" scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
     "prettier:write": "prettier --write \"./**/*.{json,yaml,js,ts}\"",
     "prettier:check": "prettier --list-different \"./**/*.{json,yaml,js,ts}\"",
-    "test-spec": "cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register \"spec/**/*.spec.{ts,js}\" -R dot -f \"\\$recursiveRef with no \\$recursiveAnchor in the initial target schema resource\" -i",
+    "test-spec": "cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register \"spec/**/*.spec.{ts,js}\" -R dot -g \\(.recursiveRef.with.no..recursiveAnchor\\|.dynamicRef.with.no..dynamicAnchor\\).in.the.initial.target.schema.resource -i",
     "test-codegen": "nyc cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register 'spec/codegen.spec.ts' -R spec",
     "test-debug": "npm run test-spec -- --inspect-brk",
     "test-cov": "nyc npm run test-spec",
-    "bundle": "rm -rf bundle && node ./scripts/bundle.js ajv ajv7 ajv7 && node ./scripts/bundle.js 2019 ajv2019 ajv2019 && node ./scripts/bundle.js jtd ajvJTD ajvJTD",
-    "build": "rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/jtd-schema.ts",
+    "bundle": "rm -rf bundle && rollup -c",
+    "build": "rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/json-schema-2020-12/index.ts && rm dist/refs/jtd-schema.ts",
     "json-tests": "rm -rf spec/_json/*.js && node scripts/jsontests",
     "test-karma": "karma start",
     "test-browser": "rm -rf .browser && npm run bundle && scripts/prepare-tests && karma start",
     "test-all": "npm run test-cov && if-node-version 12 npm run test-browser",
-    "test": "npm link && npm link ajv && npm run json-tests && npm run eslint && npm run test-cov",
+    "test": "npm run json-tests && npm run prettier:check && npm run eslint && npm link && npm link ajv && npm run test-cov",
     "test-ci": "AJV_FULL_TEST=true npm test",
     "prepublish": "npm run build",
     "benchmark": "npm i && npm run build && npm link && cd ./benchmark && npm link ajv && npm i && node ./jtd",
@@ -41,10 +40,7 @@
       "text-summary"
     ]
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ajv-validator/ajv.git"
-  },
+  "repository": "ajv-validator/ajv",
   "keywords": [
     "JSON",
     "schema",
@@ -57,11 +53,9 @@
   ],
   "author": "Evgeny Poberezkin",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/ajv-validator/ajv/issues"
-  },
-  "homepage": "https://github.com/ajv-validator/ajv",
-  "tonicExampleFilename": ".tonic_example.js",
+  "bugs": "https://github.com/ajv-validator/ajv/issues",
+  "homepage": "https://ajv.js.org",
+  "runkitExampleFilename": ".runkit_example.js",
   "dependencies": {
     "fast-deep-equal": "^3.1.1",
     "json-schema-traverse": "^1.0.0",
@@ -70,21 +64,26 @@
   },
   "devDependencies": {
     "@ajv-validator/config": "^0.3.0",
+    "@rollup/plugin-commonjs": "^18.0.0",
+    "@rollup/plugin-json": "^4.1.0",
+    "@rollup/plugin-node-resolve": "^13.0.0",
+    "@rollup/plugin-typescript": "^8.2.1",
     "@types/chai": "^4.2.12",
     "@types/mocha": "^8.0.3",
-    "@types/node": "^14.0.27",
+    "@types/node": "^15.0.2",
     "@types/require-from-string": "^1.2.0",
     "@typescript-eslint/eslint-plugin": "^3.8.0",
     "@typescript-eslint/parser": "^3.8.0",
     "@vuepress/shared-utils": "^1.8.2",
-    "ajv-formats": "^1.5.0",
-    "browserify": "^17.0.0",
+    "ajv-formats": "^2.0.0",
     "chai": "^4.0.1",
     "cross-env": "^7.0.2",
+    "dayjs": "^1.10.4",
+    "dayjs-plugin-utc": "^0.1.2",
     "eslint": "^7.8.1",
     "eslint-config-prettier": "^7.0.0",
     "glob": "^7.0.0",
-    "husky": "^5.0.9",
+    "husky": "^6.0.0",
     "if-node-version": "^1.0.0",
     "jimp": "^0.16.1",
     "js-beautify": "^1.7.3",
@@ -97,7 +96,8 @@
     "node-fetch": "^2.6.1",
     "nyc": "^15.0.0",
     "prettier": "^2.0.5",
-    "terser": "^5.2.1",
+    "rollup": "^2.44.0",
+    "rollup-plugin-terser": "^7.0.2",
     "ts-node": "^9.0.0",
     "tsify": "^5.0.2",
     "typescript": "^4.2.0",
diff --git a/node_modules/table/node_modules/ajv/scripts/.eslintrc.yml b/node_modules/table/node_modules/ajv/scripts/.eslintrc.yml
deleted file mode 100644
index 16d8b30..0000000
--- a/node_modules/table/node_modules/ajv/scripts/.eslintrc.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-parserOptions:
-  sourceType: script
-rules:
-  no-console: 0
-  no-empty: [2, allowEmptyCatch: true]
diff --git a/node_modules/table/node_modules/ajv/scripts/bundle.js b/node_modules/table/node_modules/ajv/scripts/bundle.js
deleted file mode 100644
index 62560f2..0000000
--- a/node_modules/table/node_modules/ajv/scripts/bundle.js
+++ /dev/null
@@ -1,48 +0,0 @@
-"use strict"
-
-const fs = require("fs")
-const path = require("path")
-const browserify = require("browserify")
-const {minify} = require("terser")
-
-const [sourceFile, outFile, globalName] = process.argv.slice(2)
-
-const json = require(path.join(__dirname, "..", "package.json"))
-const bundleDir = path.join(__dirname, "..", "bundle")
-if (!fs.existsSync(bundleDir)) fs.mkdirSync(bundleDir)
-
-browserify({standalone: globalName})
-  .require(path.join(__dirname, "../dist", sourceFile), {expose: sourceFile})
-  .bundle(saveAndMinify)
-
-async function saveAndMinify(err, buf) {
-  if (err) {
-    console.error("browserify error:", err)
-    process.exit(1)
-  }
-
-  const bundlePath = path.join(bundleDir, outFile)
-  const opts = {
-    ecma: 2018,
-    warnings: true,
-    compress: {
-      pure_getters: true,
-      keep_infinity: true,
-      unsafe_methods: true,
-    },
-    format: {
-      preamble: `/* ${json.name} ${json.version} (${globalName}): ${json.description} */`,
-    },
-    sourceMap: {
-      filename: outFile + ".min.js",
-      url: outFile + ".min.js.map",
-    },
-  }
-
-  const result = await minify(buf.toString(), opts)
-
-  fs.writeFileSync(bundlePath + ".bundle.js", buf)
-  fs.writeFileSync(bundlePath + ".min.js", result.code)
-  fs.writeFileSync(bundlePath + ".min.js.map", result.map)
-  if (result.warnings) result.warnings.forEach((msg) => console.warn("terser.minify warning:", msg))
-}
diff --git a/node_modules/table/node_modules/ajv/scripts/get-contributors.js b/node_modules/table/node_modules/ajv/scripts/get-contributors.js
deleted file mode 100644
index 4778886..0000000
--- a/node_modules/table/node_modules/ajv/scripts/get-contributors.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// Credit for the script goes to svelte:
-// https://github.com/sveltejs/svelte/blob/ce3a5791258ec6ecf8c1ea022cb871afe805a45c/site/scripts/get-contributors.js
-
-const fs = require("fs")
-const fetch = require("node-fetch")
-const Jimp = require("jimp")
-
-process.chdir(__dirname)
-
-const base = `https://api.github.com/repos/ajv-validator/ajv/contributors`
-const {GH_TOKEN_PUBLIC} = process.env
-
-const SIZE = 64
-
-async function main() {
-  const contributors = []
-  let page = 1
-
-  // eslint-disable-next-line no-constant-condition
-  while (true) {
-    const res = await fetch(`${base}?per_page=100&page=${page++}`, {
-      headers: {Authorization: `token ${GH_TOKEN_PUBLIC}`},
-    })
-    const list = await res.json()
-    if (list.length === 0) break
-    contributors.push(...list)
-  }
-
-  const bots = ["dependabot-preview[bot]", "greenkeeper[bot]", "greenkeeperio-bot"]
-
-  const authors = contributors
-    .filter((a) => !bots.includes(a.login))
-    .sort((a, b) => b.contributions - a.contributions)
-
-  const sprite = new Jimp(SIZE * authors.length, SIZE)
-
-  for (let i = 0; i < authors.length; i += 1) {
-    const author = authors[i]
-    console.log(`${i + 1} / ${authors.length}: ${author.login}`)
-    const image_data = await fetch(author.avatar_url)
-    const buffer = await image_data.arrayBuffer()
-    const image = await Jimp.read(buffer)
-    image.resize(SIZE, SIZE)
-    sprite.composite(image, i * SIZE, 0)
-  }
-
-  await sprite.quality(80).write(`../docs/.vuepress/components/Contributors/contributors.jpg`)
-
-  const str = `[\n\t${authors.map((a) => `'${a.login}'`).join(",\n\t")}\n]`
-
-  fs.writeFileSync(
-    `../docs/.vuepress/components/Contributors/_contributors.js`,
-    `export default ${str};`
-  )
-}
-
-main()
diff --git a/node_modules/table/node_modules/ajv/scripts/jsontests.js b/node_modules/table/node_modules/ajv/scripts/jsontests.js
deleted file mode 100644
index 88423d8..0000000
--- a/node_modules/table/node_modules/ajv/scripts/jsontests.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict"
-
-const testSuitePaths = {
-  draft6: "spec/JSON-Schema-Test-Suite/tests/draft6/",
-  draft7: "spec/JSON-Schema-Test-Suite/tests/draft7/",
-  draft2019: "spec/JSON-Schema-Test-Suite/tests/draft2019-09/",
-  tests: "spec/tests/",
-  security: "spec/security/",
-  extras: "spec/extras/",
-  async: "spec/async/",
-}
-
-const glob = require("glob")
-const fs = require("fs")
-
-for (const suite in testSuitePaths) {
-  const p = testSuitePaths[suite]
-  const files = glob.sync(`${p}{**/,}*.json`)
-  if (files.length === 0) {
-    console.error(`Missing folder ${p}\nTry: git submodule update --init\n`)
-    process.exit(1)
-  }
-  const code = files
-    .map((f) => {
-      const name = f.replace(p, "").replace(/\.json$/, "")
-      const testPath = f.replace(/^spec/, "..")
-      return `\n  {name: "${name}", test: require("${testPath}")},`
-    })
-    .reduce((list, f) => list + f)
-  fs.writeFileSync(`./spec/_json/${suite}.js`, `module.exports = [${code}\n]\n`)
-}
diff --git a/node_modules/table/node_modules/ajv/scripts/prepare-site b/node_modules/table/node_modules/ajv/scripts/prepare-site
deleted file mode 100755
index cf33029..0000000
--- a/node_modules/table/node_modules/ajv/scripts/prepare-site
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-function copyReplace {
-  sed "s/](.\/docs\//](.\//g" $1 > $2
-}
-
-copyReplace README.md docs/README.md
-copyReplace CODE_OF_CONDUCT.md docs/code_of_conduct.md
-copyReplace CONTRIBUTING.md docs/contributing.md
-copyReplace LICENSE docs/license.md
-
-echo "preparing contributors..."
-node scripts/get-contributors.js
diff --git a/node_modules/table/node_modules/ajv/scripts/prepare-tests b/node_modules/table/node_modules/ajv/scripts/prepare-tests
deleted file mode 100755
index 1b07896..0000000
--- a/node_modules/table/node_modules/ajv/scripts/prepare-tests
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env sh
-
-set -e
-
-mkdir -p .browser
-
-echo
-echo Preparing browser tests:
-
-find spec -type f -name '*.spec.*s' | \
-xargs -I {} sh -c \
-'export f="{}"; echo $f; ./node_modules/.bin/browserify $f -p [ tsify -p ./spec/tsconfig.json ] -x ajv -u buffer -o $(echo $f | sed -e "s/spec/.browser/" | sed -e "s/.spec.ts/.spec.js/");'
diff --git a/node_modules/table/node_modules/ajv/scripts/publish-bundles b/node_modules/table/node_modules/ajv/scripts/publish-bundles
deleted file mode 100755
index 311c216..0000000
--- a/node_modules/table/node_modules/ajv/scripts/publish-bundles
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-if [[ $GITHUB_REF == refs/tags/v* ]]; then
-  npm run bundle
-
-  echo "About to publish $GITHUB_REF to ajv-dist..."
-
-  git config --global user.name "$GIT_USER_NAME"
-  git config --global user.email "$GIT_USER_EMAIL"
-
-  git clone https://"${GH_TOKEN_PUBLIC}"@github.com/ajv-validator/ajv-dist.git ../ajv-dist
-
-  rm -rf ../ajv-dist/dist
-  mkdir ../ajv-dist/dist
-  cp ./bundle/*.* ../ajv-dist/dist
-  cd ../ajv-dist
-
-  VERSION=${GITHUB_REF#refs/tags/v}
-
-  sed -E "s/\"version\": \"([^\"]*)\"/\"version\": \"$VERSION\"/" package.json > new_package.json
-  mv new_package.json package.json
-
-  if [[ $(git status --porcelain) ]]; then
-    echo "Changes detected. Updating master branch..."
-    git add -A
-    git commit -m "$VERSION: updated by ajv workflow https://github.com/ajv-validator/ajv/actions/runs/$GITHUB_RUN_ID"
-    git push --quiet origin master > /dev/null 2>&1
-  fi
-
-  echo "Publishing tag..."
-  git tag "v$VERSION"
-  git push --tags > /dev/null 2>&1
-
-  echo "Done"
-fi
diff --git a/node_modules/table/node_modules/ajv/scripts/publish-site b/node_modules/table/node_modules/ajv/scripts/publish-site
deleted file mode 100755
index 0e004cf..0000000
--- a/node_modules/table/node_modules/ajv/scripts/publish-site
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-echo "About to publish $GITHUB_REF to gh-pages..."
-rm -rf ../gh-pages
-
-npm run docs:build
-
-git config --global user.name "$GIT_USER_NAME"
-git config --global user.email "$GIT_USER_EMAIL"
-git clone -b gh-pages --single-branch https://"${GH_TOKEN_PUBLIC}"@github.com/ajv-validator/ajv.git ../gh-pages
-
-rsync -a ./docs/.vuepress/dist/ ../gh-pages
-
-cd ../gh-pages
-
-if [[ $(git status --porcelain) ]]; then
-  echo "Changes detected. Updating gh-pages branch..."
-  git add -A
-  git commit -m "updated by ajv workflow https://github.com/ajv-validator/ajv/actions/runs/$GITHUB_RUN_ID"
-  git push --quiet origin gh-pages > /dev/null 2>&1
-fi
-
-echo "Done"
diff --git a/node_modules/table/package.json b/node_modules/table/package.json
index 85036e7..04210d1 100644
--- a/node_modules/table/package.json
+++ b/node_modules/table/package.json
@@ -5,38 +5,41 @@
     "url": "http://gajus.com"
   },
   "dependencies": {
-    "ajv": "^7.0.2",
-    "lodash": "^4.17.20",
+    "ajv": "^8.0.1",
+    "lodash.clonedeep": "^4.5.0",
+    "lodash.truncate": "^4.4.2",
     "slice-ansi": "^4.0.0",
-    "string-width": "^4.2.0"
+    "string-width": "^4.2.0",
+    "strip-ansi": "^6.0.0"
   },
   "description": "Formats data into a string table.",
   "devDependencies": {
-    "@babel/cli": "^7.12.10",
-    "@babel/core": "^7.12.10",
-    "@babel/node": "^7.12.10",
-    "@babel/plugin-transform-flow-strip-types": "^7.12.10",
-    "@babel/preset-env": "^7.12.11",
-    "@babel/register": "^7.12.10",
-    "ajv-cli": "^4.0.1",
-    "ajv-keywords": "^4.0.0",
-    "babel-plugin-istanbul": "^6.0.0",
-    "babel-plugin-lodash": "^3.3.4",
-    "babel-plugin-transform-export-default-name": "^2.1.0",
+    "@types/chai": "^4.2.16",
+    "@types/lodash.clonedeep": "^4.5.6",
+    "@types/lodash.mapvalues": "^4.6.6",
+    "@types/lodash.truncate": "^4.4.6",
+    "@types/mocha": "^8.2.2",
+    "@types/node": "^14.14.37",
+    "@types/sinon": "^10.0.0",
+    "@types/slice-ansi": "^4.0.0",
+    "ajv-cli": "^5.0.0",
+    "ajv-keywords": "^5.0.0",
     "chai": "^4.2.0",
     "chalk": "^4.1.0",
     "coveralls": "^3.1.0",
     "eslint": "^7.16.0",
     "eslint-config-canonical": "^25.0.0",
-    "flow-bin": "^0.141.0",
-    "flow-copy-source": "^2.0.9",
     "gitdown": "^3.1.3",
     "husky": "^4.3.6",
     "js-beautify": "^1.13.0",
+    "lodash.mapvalues": "^4.6.0",
+    "mkdirp": "^1.0.4",
     "mocha": "^8.2.1",
     "nyc": "^15.1.0",
     "semantic-release": "^17.3.1",
-    "sinon": "^9.2.2"
+    "sinon": "^9.2.2",
+    "ts-node": "^9.1.1",
+    "typescript": "4.2.4"
   },
   "engines": {
     "node": ">=10.0.0"
@@ -44,7 +47,7 @@
   "husky": {
     "hooks": {
       "post-commit": "npm run create-readme && git add README.md && git commit -m 'docs: generate docs' --no-verify",
-      "pre-commit": "npm run lint && npm run test && npm run build"
+      "pre-commit": "npm run build && npm run lint && npm run test"
     }
   },
   "keywords": [
@@ -56,30 +59,36 @@
   ],
   "license": "BSD-3-Clause",
   "main": "./dist/index.js",
+  "files": [
+    "dist/**/*.js",
+    "dist/**/*.d.ts"
+  ],
   "name": "table",
   "nyc": {
-    "include": [
-      "src/**/*.js"
+    "extensions": [
+      ".ts"
     ],
-    "instrument": false,
+    "exclude": [
+      "src/generated/validators.js",
+      "test/**/*.ts"
+    ],
     "reporter": [
-      "text-lcov"
-    ],
-    "require": [
-      "@babel/register"
-    ],
-    "sourceMap": false
+      "text-lcov",
+      "text"
+    ]
   },
   "repository": {
     "type": "git",
     "url": "https://github.com/gajus/table"
   },
   "scripts": {
-    "build": "rm -fr ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps && npm run create-validators && flow-copy-source src dist",
+    "compile": "tsc",
+    "prebuild": "rm -fr ./dist && mkdirp dist",
+    "build": "npm run create-validators && npm run compile",
     "create-readme": "gitdown ./.README/README.md --output-file ./README.md",
-    "create-validators": "ajv compile --all-errors --inline-refs=false -s src/schemas/config -s src/schemas/streamConfig -r src/schemas/shared -c ajv-keywords/dist/keywords/typeof -o | js-beautify > dist/validators.js",
-    "lint": "npm run build && eslint ./src ./test && flow",
-    "test": "mocha --require @babel/register"
+    "create-validators": "rm -fr ./src/generated && mkdirp ./src/generated && ajv compile --all-errors --inline-refs=false -s src/schemas/config -s src/schemas/streamConfig -r src/schemas/shared -c ajv-keywords/dist/keywords/typeof -o | js-beautify > ./src/generated/validators.js",
+    "lint": "eslint --ignore-path .gitignore ./src ./test",
+    "test": "npm run create-validators && mocha --require ts-node/register \"./test/**/*.ts\""
   },
-  "version": "6.0.7"
+  "version": "6.7.0"
 }
diff --git a/node_modules/uniq/.npmignore b/node_modules/uniq/.npmignore
deleted file mode 100644
index 0d1b0b0..0000000
--- a/node_modules/uniq/.npmignore
+++ /dev/null
@@ -1,15 +0,0 @@
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-npm-debug.log
-node_modules/*
\ No newline at end of file
diff --git a/node_modules/uniq/LICENSE b/node_modules/uniq/LICENSE
deleted file mode 100644
index 8ce206a..0000000
--- a/node_modules/uniq/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) 2013 Mikola Lysenko
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/uniq/README.md b/node_modules/uniq/README.md
deleted file mode 100644
index 9e0abaf..0000000
--- a/node_modules/uniq/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-uniq
-====
-Removes all duplicates from an array in place.
-
-Usage
-=====
-First install using npm:
-
-    npm install uniq
-    
-Then use it as follows:
-
-```javascript
-
-var arr = [1, 1, 2, 2, 3, 5]
-
-require("uniq")(arr)
-console.log(arr)
-
-//Prints:
-//
-//  1,2,3,5
-//
-```
-
-## `require("uniq")(array[, compare, sorted])`
-Removes all duplicates from a sorted array in place.
-
-* `array` is the array to remove items from
-* `compare` is an optional comparison function that returns 0 when two items are equal, and something non-zero when they are different.  If unspecified, then the default equals will be used.
-* `sorted` if true, then assume array is already sorted
-
-**Returns:** A reference to `array`
-
-**Time Complexity:** `O(array.length * log(arra.length))` or `O(array.length)` if `sorted`
-
-
-## Why use this instead of underscore.uniq[ue]?
-A few reasons:
-
-* This library updates the array in place without making an extra copy (and so it is faster for large arrays)
-* It also accepts a custom comparison function so you can remove duplicates from arrays containing object
-* It is more modular in the sense that it doesn't come with a bazillion other utility grab bag functions.
-
-# Credits
-(c) 2013 Mikola Lysenko. MIT License
diff --git a/node_modules/uniq/package.json b/node_modules/uniq/package.json
deleted file mode 100644
index 9c91dda..0000000
--- a/node_modules/uniq/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "name": "uniq",
-  "version": "1.0.1",
-  "description": "Removes duplicates from a sorted array in place",
-  "main": "uniq.js",
-  "directories": {
-    "test": "test"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "tape": "^2.12.3"
-  },
-  "scripts": {
-    "test": "tape test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mikolalysenko/uniq.git"
-  },
-  "keywords": [
-    "array",
-    "duplicate",
-    "unique",
-    "uniq",
-    "remove",
-    "sort",
-    "in",
-    "place",
-    "no",
-    "copy"
-  ],
-  "author": "Mikola Lysenko",
-  "license": "MIT",
-  "readmeFilename": "README.md",
-  "gitHead": "e9828cfcb97e25a351f95b39fdf3c31876ff3985"
-}
diff --git a/node_modules/uniq/test/test.js b/node_modules/uniq/test/test.js
deleted file mode 100644
index efc4fc8..0000000
--- a/node_modules/uniq/test/test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var unique = require("../uniq.js")
-
-require("tape")("unique", function(t) {
-
-  t.equals(unique([1,1,2,3,5,5,7]).join(), [1,2,3,5,7].join())
-  t.equals(unique([]).join(), [].join())
-  t.equals(unique([1,1,1]).join(), [1].join())
-  t.equals(unique([1,1,1,2,2,2], function(a,b) { return (a^b)&1 }).join(), [2,1].join())
-
-  t.end()
-})
\ No newline at end of file
diff --git a/node_modules/uniq/uniq.js b/node_modules/uniq/uniq.js
deleted file mode 100644
index e86c44b..0000000
--- a/node_modules/uniq/uniq.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict"
-
-function unique_pred(list, compare) {
-  var ptr = 1
-    , len = list.length
-    , a=list[0], b=list[0]
-  for(var i=1; i<len; ++i) {
-    b = a
-    a = list[i]
-    if(compare(a, b)) {
-      if(i === ptr) {
-        ptr++
-        continue
-      }
-      list[ptr++] = a
-    }
-  }
-  list.length = ptr
-  return list
-}
-
-function unique_eq(list) {
-  var ptr = 1
-    , len = list.length
-    , a=list[0], b = list[0]
-  for(var i=1; i<len; ++i, b=a) {
-    b = a
-    a = list[i]
-    if(a !== b) {
-      if(i === ptr) {
-        ptr++
-        continue
-      }
-      list[ptr++] = a
-    }
-  }
-  list.length = ptr
-  return list
-}
-
-function unique(list, compare, sorted) {
-  if(list.length === 0) {
-    return list
-  }
-  if(compare) {
-    if(!sorted) {
-      list.sort(compare)
-    }
-    return unique_pred(list, compare)
-  }
-  if(!sorted) {
-    list.sort()
-  }
-  return unique_eq(list)
-}
-
-module.exports = unique
diff --git a/node_modules/v8-compile-cache/CHANGELOG.md b/node_modules/v8-compile-cache/CHANGELOG.md
index 05c622b..d4da256 100644
--- a/node_modules/v8-compile-cache/CHANGELOG.md
+++ b/node_modules/v8-compile-cache/CHANGELOG.md
@@ -1,5 +1,9 @@
 # `v8-module-cache` Changelog
 
+## 2021-03-05, Version 2.3.0
+
+* Fix use require.main instead of module.parent [#34](https://github.com/zertosh/v8-compile-cache/pull/34).
+
 ## 2020-10-28, Version 2.2.0
 
 * Added `V8_COMPILE_CACHE_CACHE_DIR` option [#23](https://github.com/zertosh/v8-compile-cache/pull/23).
diff --git a/node_modules/v8-compile-cache/package.json b/node_modules/v8-compile-cache/package.json
index cfc665f..f878914 100644
--- a/node_modules/v8-compile-cache/package.json
+++ b/node_modules/v8-compile-cache/package.json
@@ -1,6 +1,6 @@
 {
   "name": "v8-compile-cache",
-  "version": "2.2.0",
+  "version": "2.3.0",
   "description": "Require hook for automatic V8 compile cache persistence",
   "main": "v8-compile-cache.js",
   "scripts": {
@@ -27,7 +27,7 @@
     "rimraf": "^2.5.4",
     "rxjs": "6.6.3",
     "semver": "^5.3.0",
-    "tap": "^10.1.1",
+    "tap": "^9.0.0",
     "temp": "^0.8.3",
     "yarn": "1.22.10"
   }
diff --git a/node_modules/v8-compile-cache/v8-compile-cache.js b/node_modules/v8-compile-cache/v8-compile-cache.js
index b9c0928..f094da4 100644
--- a/node_modules/v8-compile-cache/v8-compile-cache.js
+++ b/node_modules/v8-compile-cache/v8-compile-cache.js
@@ -328,15 +328,15 @@
   return cacheDir;
 }
 
-function getParentName() {
-  // `module.parent.filename` is undefined or null when:
+function getMainName() {
+  // `require.main.filename` is undefined or null when:
   //    * node -e 'require("v8-compile-cache")'
   //    * node -r 'v8-compile-cache'
   //    * Or, requiring from the REPL.
-  const parentName = module.parent && typeof module.parent.filename === 'string'
-    ? module.parent.filename
+  const mainName = require.main && typeof require.main.filename === 'string'
+    ? require.main.filename
     : process.cwd();
-  return parentName;
+  return mainName;
 }
 
 //------------------------------------------------------------------------------
@@ -345,7 +345,7 @@
 
 if (!process.env.DISABLE_V8_COMPILE_CACHE && supportsCachedData()) {
   const cacheDir = getCacheDir();
-  const prefix = getParentName();
+  const prefix = getMainName();
   const blobStore = new FileSystemBlobStore(cacheDir, prefix);
 
   const nativeCompileCache = new NativeCompileCache();
@@ -367,5 +367,5 @@
   slashEscape,
   supportsCachedData,
   getCacheDir,
-  getParentName,
+  getMainName,
 };